Unix 전문가는 ip-멀티캐스트가 IPv4 멀티캐스트 대신 이더넷 멀티캐스트(MAC 주소 전파에 의존)를 사용한다고 말했습니다.
이게 진짜야? 커널이나 버전에 따라 달라지나요?
답변1
여기에는 용어상의 혼란이 있는 것 같습니다. 실제로 IP 계층과 링크 계층은 함께 작동하여 멀티캐스트 작업을 수행합니다.
IPv4와 IPv6 모두 멀티캐스트 IP 주소는 링크 계층 멀티캐스트 MAC 주소에 매핑됩니다. 전용 멀티캐스트 전용 MAC 주소가 있습니다. IPv4의 경우 MAC 주소 형식은 01:00:5e:xx:yy:zz
IPv6의 경우 MAC 주소 형식은 입니다 33:33:ww:xx:yy:zz
.
기본적으로 이러한 MAC 주소로 전송된 프레임은 이더넷 스위치를 통해 VLAN의 모든 포트로 플러딩되지만, 최적화로 스위치는 IGMP 스누핑을 구현하여 실제로 멀티캐스트 그룹에 가입된 포트를 기반으로 하는 포트를 제한할 수 있습니다. 프레임.
호스트가 멀티캐스트 그룹 수신을 시작하면 해당 이더넷 MAC 계층은 적절한 MAC 주소로 전송된 프레임이 통과할 수 있도록 프로그래밍됩니다. 그렇지 않으면 이더넷 하드웨어는 무차별 모드가 아닌 한 이러한 프레임을 삭제합니다.
멀티캐스트 프레임이 호스트에 의해 수신되면(이더넷 스위치가 프레임을 전달하고 MAC 계층이 프레임 수신을 허용했기 때문에) IP 계층은 IP 주소를 보고 패킷을 적절한 소켓으로 보냅니다.
개인 멀티캐스트 MAC 주소에 대한 추가 정보
서로 다른 멀티캐스트 주소에 대해 서로 다른 MAC 주소를 사용하면 호스트는 해당 호스트가 가입된 멀티캐스트 그룹과 관련된 이더넷 프레임만 쉽게 수신할 수 있습니다(즉, 그룹에 가입된 호스트에 활성 소켓이 하나 이상 있음을 의미). 다른 것들은 호스트 자체 이더넷 칩이나 네트워크의 이더넷 스위치를 통해 하드웨어에서 효과적으로 폐기됩니다.
개인 MAC 주소보다 멀티캐스트 그룹이 더 많기 때문에 실제로는 많은 IP 멀티캐스트 주소가 동일한 MAC 주소에 매핑됩니다. 이는 위의 필터링이 완벽하지 않음을 의미합니다. 하드웨어가 MAC 주소를 허용하도록 구성된 경우 이는 실제로 IP 멀티캐스트 주소 집합으로 전송되는 패킷을 허용합니다. 그럼에도 불구하고 하드웨어는 여전히 대부분의 필터링을 수행하므로 충분히 효율적입니다.
IPv4의 경우 IP 멀티캐스트 주소는 268435456개이고 MAC 주소는 8388608개만 있으므로 매핑은 32:1(IP 주소 32개당 MAC 주소 1개)입니다.RFC 1112 섹션 6.4를 참조하세요..
IPv6의 경우 수많은 IP 멀티캐스트 주소와 4294967296개의 MAC 주소만 있으므로 매핑은 다대일입니다.RFC 2464 섹션 7을 참조하세요.. 이 매핑을 최소한 1:1에 가깝게 유지하면 좋겠지만 IPv6 주소 공간의 크기 때문에 불가능합니다. 몇 년 전, 나는 32비트 MAC 주소를 유지하는 것조차 이미 부담스럽다는 이야기를 구두로 들었습니다. 이야기는 IEEE의 MAC 주소 할당 체계(IEEE가 MAC 주소 할당을 담당함)에 따르면 이 MAC 주소 수는 256개의 OUI 할당에 해당하며 IEEE는 OUI 할당에 드는 금전적 비용의 256배를 요구한다는 것입니다. ; IETF가 IEEE가 너무 많은 돈을 지불하여 IETF가 올바른 크기와 정렬의 명백히 사용되지 않은 블록을 선택하고 가져가는 것은 불가능합니다.