I have a video stream sent from an FPGA.
When I analyse this multicast stream with Wireshark, I see the destination mac address : 01:00:5E:A9:A9:0A
. The FPGA is configured to send to this multicast IP address : 239:169:169:10
.
Everywhere on the Internet I see that the multicast mac address is supposed to start with 01:00:5E
followed by a bit 0
, then the last 23 bits of the IP address. In the mac address I receive though, the 25th bit is set to 1
instead of 0
. I expected : 01:00:5E:29:A9:0A
00000001:00000000:01011110:x yyyyyyy:yyyyyyyy:yyyyyyyy
( header 01:00:5E ) ^ (23 last bits of the IP)
|
25th bit
I cannot find anywhere a good explanation of what this bit does but I understand that it is a special bit that split the address into two ranges.
In my case, it causes a problem with the multicast mac table filter in the ethernet switch, which I configured with the 25th bit to 0
. (Because any other streamer has a good header with the 0
bit when configured with the same IP address)
When I set the multicast IP address to 239.64.169.10
now the mac is 01:00:5E:40:A9:0A
so I suspect that the FPGA mismanages the 25th bit and does not force a 0 and takes 24 bits from the IP address. Maybe it's just a bug on their side, but I wondered if this bit to 1
can cause issues, other than the mac table filter on the switch.
I found the answer in the norm. RFC 1112 - 6.4
An IP host group address is mapped to an Ethernet multicast address by placing the low-order 23-bits of the IP address into the low-order 23 bits of the Ethernet multicast address 01-00-5E-00-00-00 (hex).
I contacted the company with this information and they fixed their IP.