Search code examples
cnetwork-programmingipvirtualizationethernet

Why can an NIC have a changeable mac address?


For uniquely identifying an NIC on the network, each NIC will be assigned a unique mac address by the manufacturer and it's unchangeable. We call this type of mac address as "permanent mac address". I can understand its necessity.

However, there is also another type of mac address: "current mac address"; it's programmatically changeable; I cannot understand its necessity.

According to the wikipedia, the current mac address can be used in network virtualization and "mac spoofing". I think that's not necessary.

If one want to make a virtual NIC over a real one, assume the real NIC's mac address is "id1", and that of the virtual one's is "id2", then they can simultaneously receive/response both frames whose destination address is "id1" or "id2". By this means, the real NIC doesn't have to require a current mac address.

If one implemented a virtual NIC, then "mac spoofing" is easy to implement too.

Am I correct?

PS: the following article gives some reasons for changing mac addresses:

http://blog.technitium.com/2011/06/why-you-need-to-change-mac-address.html


Solution

  • The MAC address provided by the manufacturer is the only one identifying the physical NIC - it's usually burnt in device ROM. Any other MAC is a pure virtual one that can be added and used by the SW stack that operates the device. There is no rule how to do this, as long as 2 communicating parties agree on the protocol which includes the additional MAC address (es ) that can be used for virtualization