From what i understand, both focus on replacing the traditionally implemented proprietary hardware services such as firewalls , NAT ,etc and try to implement it in software. So how do the two differ from each other
They are quite different. What I'm about to write is in high level terms: Google and ETSI can help you with details.
- NFV takes traditional appliances like packet inspection devices, session border controllers and so on and virtualizes them. The earliest NFV implementations did just that- slap the unit on a VM and be done.
But: that's not much of a gain. The real promise of NFV is that you can spin up a function on demand, scale it up and down according to need, and generally be much more cloudy than traditional service providers have been.
Now imagine that you have got to that state, so that you can, say spin up a call control core, or a application server, or a firewall in minutes not months. Now you can do service chaining
In service chaining, you create new products by stringing together functions delivered by NFV. There are some subtleties here best explained by an example. Lets say you (as a service provider) want to sell some new phone product to the government? Ok, you'll need some call control, and a telephony app server. And a firewall or packet inspection engine. With function chaining you string the firewall and the call control/app server together so that the product is defined as the chain of all those things.
The subtlety is that SFC can happen at the IP layer ("send traffic to the firewall, then the call control"). Or it can be a logical construct used by a product designer. Or it can be inherent to the elements being strung together (eg an IMS core using filter criteria to send calls to app servers).
NFV simply describes virtualizing a networking device. Installng a firewall on a VM inside a host, for example. That's NFV.
Service Chaining describes distributing networking device features/services out across several devices (whether physical or virtual) vs having them all centralized in a single box (whether physical or virtual).