Identifying Ethernet Multicast
Just like there are 3 different Ethernet header types, there are also 3 different types of Ethernet addresses:
- Unicast
- Broadcast
- Multicast
A unicast frame contains the unique MAC address of the destination receiver. A broadcast frame contains all binary 1’s as the destination address (FFFF.FFFF.FFFF). A multicast frame contains the unique multicast MAC address of an application, protocol, or data stream.
Why is it important to be able to distinguish between the 3 types of Ethernet address type? In an Ethernet switch, each of the three are treated differently.
A unicast addressed frame is only sent out the specific port leading to the receiver. A broadcast frame is flooded out all ports. A multicast addressed frame is either flooded out all ports (if no multicast optimization is configured) or sent out only the ports interested in receiving the traffic.
It’s easy for the ethernet switch to identify a broadcast frame because there is only one universally known broadcast address, FFFF.FFFF.FFFF (all binary ones). Therefore it is easy for the switch to know these frames need to be flooded out all ports.
However, given there is such a wide variety of possible unicast and multicast Ethernet addresses, how does the switch distinguish between the two? It is important to properly make the distinction because the the two are handled so differently within the switch (a unicast frames goes to only one port, a multicast frame goes to some or all ports).
Does the switch have a database of all possible multicast MAC addresses it references for each frame? No, that would be inefficient.
How this is done efficiently is there is one specific bit in a Ethernet MAC address that signifies if the frame is unicast or multicast. The switch need only look at this one bit to make the distinction.
The IEEE has specified that the most significant bit of the most significant byte be used for this purpose. If its a 1, that means multicast, 0 means unicast. The most significant byte is the left most byte in the address, and the most significant bit is the right most bit of the byte (this is counter intuitive to most binary implementations where the left most bit usually labeled most significant).
Some quick examples of multicast MAC addresses:
- 0100.CCCC.DDDD
- 0900.AAAA.BBBB
Some quick examples of unicast MAC addresses:
- 0001.4455.6677
- 0800.2233.4455
Each of the bolded numbers represents a 1 or 0 present in the most significant bit of the most significant byte.
This bit is also referred to as the Individual/Group bit.
From the perspective of an Ethernet hub device, none of this matters, as all frames are flooded out all ports regardless of their address being unicast, broadcast, or multicast. It makes no sense for an Ethernet hub to distinguish between the three.