IPv6 Solicited Node Multicast

(Last Updated On: November 20, 2019)

IPv6 Solicited Node Multicast

  • 사전에 의하면 간청된 Node Multicast

간청된 Node Multicast가 뭔 뜻이냐?

ipv6 node solicited multicast address
인터넷에서 퍼왔음

위 사진을 보면, 타 네트워크 (Router A)에서 Router B의 한 호스트로 ping을 할 때, 2001:DB8::AB:2 에 ping을 한다.

Router B는 2001:DB8::/64 가 인터페이스에 할당되어있으므로 자신의 네트워크로 식별하기 때문에, Layer 2 의 통신 (MAC)을 해야한다. 그러나 IPv6 에서는 ARP 도, 브로드캐스트라고 할 것도 없다. MAC주소를 어떻게 가져오는가?
IPv6 에서도 All-node Multicast (FF02::1) 라고 사실상의 브로드캐스트가 있긴 하지만, IPv6 체계에서는 기본 64bit 크기의 호스트 비트를 채택하여, 한 네트워크의 호스트가 많아진다. 그래서 네트워크 전체에 브로드캐스트를 하지 않기 위해, 또 하나의 영역이 제한된 멀티캐스트를 만들게 되었다고 추측한다. (멀티캐스트 주소를 보면 왜 제한된 영역인지 알 수 있다.)

모든 IPv6 Unicast Address가 참여해야만 하는 Multicast Address는 다음과 같다.

  • All-node Multicast Group (모든 IPv6 장치가 참여한다. 라우터도 포함. IPv6 만 활성화 되어있는 경우도 포함.)
  • Solicited Node Multicast Group
  • All-routers Multicast Group (라우터만)

주소 체계

  • FF02::1:FF00:0/104 (FF02:0000:0000:0000:0000:0001:FF00:0000/104)
  • MAC Address : IPv6 Multicast 33-FF-FF-00-00-00

상위 104비트는 FF02::1:FF00 이 들어간다.
남은 하위 24비트 (00:0000) 는 무엇이 들어가나?
IPv6 Unicast 주소의 하위 24비트가 그대로 들어간다.
마찬가지로 MAC주소 (48bit 체계)의 절반인 하위 24bit에도 같은 값이 들어간다.

IPv6 유니캐스트 주소 : 2001:1:1:1::1234:5678

IPv6 Solicited Node Multicast Group : FF02::1:FF34:5678
IPv6 Multicast MAC Address : 33-FF-FF-34-56-78

IPv6 유니캐스트 활성화 장치는 멀티캐스트 그룹에 무조건 가입해야한다. 만? Link-Local 주소에서도 마찬가지로 쓰이는 것으로 보인다.

2001:ABC:1 장치는 FF02::1 및, FF01::1, FF02::1:FF00:0001 에 가입하게 될 것이고,
2001:ABC:2 장치는 FF02::1 및, FF01::1, FF02::1:FF00:0002 에 가입하게 될 것이다.

간청 (Solicit)

IPv6 네트워크에서, 같은 네트워크 주소의 경우 Layer 2 MAC주소를 얻어야, 장치간 통신이 가능하다. 유니캐스트 주소로 상대 MAC주소를 얻기 위해, ICMPv6 135 Neighbor Soliciation 을 사용해서 묻는다.

유니캐스트 주소가 fd33::5ce1:e0ff:fe43:a213 이 있으면, Multicast 그룹 FF02::1:FF43:A213 및 IPv6 Multicast MAC (33-33-FF-43-A2-13) 으로 ICMPv6 를 보낸다.

C:\Users\J>netsh interface ipv6 show joins
Scope       References  Last  Address
----------  ----------  ----  ---------------------------------
0                    0  Yes   ff01::1
0                    0  Yes   ff02::1
0                    1  Yes   ff02::c
0                    2  Yes   ff02::fb
0                    1  Yes   ff02::1:3
0                    1  Yes   ff02::1:ff9b:35d6
0                    2  Yes   ff02::1:fff3:647a
[[email protected]localhost ~]# ip maddr show
OMITTED
....
        link  33:33:ff:43:a2:13
        link  33:33:ff:00:00:01
        inet  224.0.0.1
        inet6 ff02::1:ff00:1
        inet6 ff02::1:ff43:a213 users 2
        inet6 ff02::2 users 2
        inet6 ff02::1
        inet6 ff01::1

자신이 FF02::1:FF43:A213 그룹에 가입되었다면,  IP 패킷까지 확인한 뒤, ICMPv6 에 실린 target Address가 본인의 주소가 맞으면 본인의 MAC주소를 유니캐스트 주소로 돌려줄 것이다 (ICMPv6 136 Neighbor Advertisement). 그룹에 가입되어있지 않다면, Layer 2 Multicast Address 부터 패킷을 버려, IP 프로토콜에서 불필요한 트래픽을 받지 않거나, 무시할 수 있다.

이로써 IPv4 와 달리, IPv6에서는 ICMPv6을 차단하면 통신을 차단한다는 것과 같은 기능을 할 지도 모른다. MAC주소를 돌려주지 않기 때문에

IPv6 Host 인터페이스 주소 선점

IPv6 은 기본적으로 SLAAC라고, 라우터가 prefix (네트워크 주소)만 알려 나머지 호스트/인터페이스 주소를 호스트가 선정할 수 있다. 호스트가 맘대로 선정할 수 있다면, 264– x 의 확률로 주소가 중복될 수 있다. 중복된 IP를 피하기 위해서도 Node Solicitation을 사용할 수 있다.

situation

Host A : 2001:330::A111 – FF02::1:FF00:A111
Host B : 2001:330::A222 – FF02::1:FF00:A222
두 호스트가 네트워크에 존재했다고 가정하자,
그러나 Host C가 랜덤(!!)으로 2001:330::A222 를 선정하게 되었다. 그러면, Host B와 Host C는 IP가 중복되어 네트워크를 사용할 수 없게된다.
이 때도 마찬가지로, Host C는 IP를 할당하기 전에 FF02::1:FF00:A222 주소에 Node Solicitation을 보낸 뒤, 응답이 없으면 IP가 중복되지 않는다는것으로 간주한 뒤 해당 IP를 사용하게 된다.

Broadcast? Multicast?

기본적으로 멀티캐스트 주소는 스위치(L2) 장비가, IGMP Snooping (IPv6에서는 MLD Snooping)을 하지 않으면, 모든 멀티캐스트 트래픽을 브로드캐스팅 해버린다. 물론 스누핑 환경을 갖추면, IPv4 에서는 UDP multicast membership join 패킷을. IPv6 에서는…….. ICMPv6 Multicast Listener Query/Report Message를 스누핑한다. IPv6 에서 Solicited Node multicast는 Listener Query/Report 메시지가 발생하지 않는다. 이 때 MLD Snooping이 작동하지 않는지는 잘 모르겠다.