Protocol Independent Multicast (PIM)
멀티캐스트를 서비스하는 토폴로지를 간략하게 표현해보면 아래와 같다. 그리고 바로 알 수 있는 부분은 L2 구간은 IGMP가 L3 구간에서는 PIM이 사용되는 점이다.
즉, 멀티캐스트 traffic을 수신하는 receiver는 IGMP join을 이용해 항상 동일한 router에 multicast traffic을 요청하면 되지만 local router 입장에서는 multicast stream을 요청하기 위해 multicast routing protocol이 필요하다. 우선, PIM에 대한 이해를 위해서는 distribution tree를 이해해야 하는데 source trees (또는 shortest path tress) 그리고 shared trees가 있다.
[Source Trees / Shortest Path Trees]
Source tree는 source가 root가 되는 multicast distribution tree이다. 즉, 상위 root를 기준으로 멀티캐스트를 서비스받는 수신자까지 branch를 구성하여 트리를 만든다. 이렇게 tree를 구성하면, root부터 말단 leave까지 최단 경로를 이용하기에 shortest path tree (SPT)라고도 불린다. SPT의 forwarding state는 (S, G) 표기 방법을 사용한다. S는 multicast server의 source를 의미하고, G는 multicast group address를 말한다.
위의 그림처럼 forwarding state는 (10.1.1.2, 239.1.1.10을 가진다. 즉, source가 10.1.1.2, group address가 239.1.1.1이라는 의미이다.
[Shared Trees / RP Trees]
Shared tree에서는 source가 root가 multicast source 자체가 아닌 Rendezvous point(RP)라 불리는 지정된 라우터이다. 따라서, (*, G) 처럼 source address는 상관없이 group address만 지정된 forwarding state를 갖는다.
위의 그림에서 보듯이 R2는 RP이다. source tree 구조에서 R3는 R1에서 multicast traffic을 수신했으나 shared tree 구조에서는 RP인 R2에서 multicast traffic을 수신한다. shared tree의 장점은 last hop router인 R3와 R4에서는 더 많은 multicast source가 추가되더라도 (*, 239.1.1.1)의 forwarding state을 유지한다는 점이다. 하지만 동일한 multicast group의 주소라면 모든 source에서 traffic을 수신한다는 점이다. 위의 그림에서 보는 것 처럼, 동일한 stream 정보라 할지라도 multicast source 1과 2 모두의 traffic을 수신하기에 대역폭 낭비를 초래한다.
PIM 용어정리
1) Reverse Path Forwarding (RPF) - RPF를 이용하여 router가 올바른 incoming 인터페이스에서 멀티캐스트 패킷 수신여부를 확인한다. 다시 말해서, unicast routing의 최적 경로의 interface로 multicast source가 수신 되는지를 확인해 데이터 전송 여부를 결정한다.
2) Incoming Interface (IIF) - upstream interface라고도 하며 multicast source로 향하는 interface이다. 즉, 해당 interface를 이용해서 PIM join을 보내는 것.
3) Outgoing Interface (OIF) - Multicast traffic을 전달하는 interface를 말한다. OIF들의 group을 OIL (Outgoing interface List)라고 한다.
4) Last-Hop Router (LHR) - multicast를 수신하는 host와 직접 연결되어 있는 router를 의미한다. 이 router는 RP로 PIM join을 요청한다.
5) First-Hop Router (FHR) - LHR와 반대로 multicast source와 직접 연결되어 있는 router를 의미하며 root router라고도 한다.
6) Designated Router (DR) - LAN segment 내에 여러 대의 PIM-SM 라우터가 존재하면, hello message를 통해서 DR을 선출한다. 이를 통해 불필요한 중복 multicast traffic이 흐르는 것을 막는다. DR의 선출조건은 높은 우선순위 (priority)를 갖는 경우이며 우선순위의 기본값은 1이다. 선출 과정중 모든 것이 동일하다면 높은 IP 주소를 갖는 것이 DR로 선출된다. FHR에서는 multicast traffic 캡슐화를 통한 register messaeg를 RP에게 전달하는 것이고, LHR에서는 PIM join를 보내거나 RP로 prune message를 보내는 역할을 수행한다.
PIM 동작방식
PIM이 enable된 interface로 매 30초 마다 224.0.0.13 주소로 hello messaege를 보낸다. Hello messaeg는 DR을 선택하기 위한 용도로도 사용된다.
[PIM Dense Mode (PIM-DM)]
Multicast group이 network 내에서 밀집해 있는 환경에서 사용한다. 예를 들면, 기업이나 학교와 같이 특정 장소에 밀집된 형태의 네트워크를 생각하면 된다. PIM-DM에서 각 라우터는 multicast traffic을 수신하면 해당 stream을 수신하려는 receiver가 있는지 항상 확인해야 한다. 만약 LHR에서 더 이상 해당 group에 대한 수신자가 없다면 prune message를 보낸다. 아래 그림의 왼쪽처럼 source로 받은 multicast traffic은 전체 네트워크로 flooding 된다. RPF interface를 통해서 수신된 multicast traffic은 PIM-DM neighbor로 forwarding된다. 이는, R3 입장에서 R2를 통해서도 multicast traffic을 수신하는 현상이 발생한다. (R3에서 R2로 향하는 interface는 RFP interface가 아님). LHR인 R4는 서비스 할 대상이 없기에 multicast traffic을 수신하지 않아도 된다. 이때 pruning mechanism을 사용하여 non-RPF interface에서 traffic을 수신하지 않도록 한다. 한 가지 알아두어야 할 점은 PIM-DM에서 prune은 3분 후 만료가 된다. 다시 말하면, 아래 그림과 같이 initial flooding과 pruning 과정을 3분마다 반복하며 이는 정상적인 동작 방식이다. 이러한 동작 특성때문에 작은 규모의 네트워크에서 사용하는게 좋으며 일반적으로 production 환경에서는 추천하지 않는 방식이다.
[PIM Sparse Mode (PIM-SM)]
앞서 설명한 PIM-DM과 다르게 PIM-SM은 multicast를 수신하려는 host가 네트워크 전반에 흩어져 있는 구조에서 사용한다. multicast를 수신하려는 host가 명시적으로 stream을 요청하기 전까지는 모든 host는 multicast stream을 수신하지 않는다라는 가정을 하고 있으며 PIM-SM 이긴 하지만 multicast stream을 수신하려는 host가 밀집해 있는 네트워크 환경에서도 잘 동작한다. PIM-SM은 명시적으로 join해 multicast stream을 수신하는 모델이다. Host에서 IGMP join을 local router로 보내면 local router는 PIM join을 Shared Tree의 경우면 RP로 보내고 Shortest Path Tree면 FHR로 보낸다. PIM-DM에서 사용하는 flood & prune 방식과는 큰 차이가 있음을 알 수 있다.
위의 왼쪽 그림을 간단하게 살펴보자. Multicast source에서는 FHR로 multicast stream을 보내고 있다. FHR은 다시 RP로 multicast stream을 보내고 있다. 그리고 Receiver A에서는 IGMP Join을 LHR로 보내고 있고, LHR에서는 RP로 PIM Join 메시지를 (*, G)로 보낸다. 이후, RP에서는 FHR로 PIM Join 메시지를 보내며 (S, G) 각각 RP와 LHR 사이에는 shared tree로 FHR과 RP사이는 shared tree가 만들어진다. 굉장히 단순화해서 표현했지만 그 중에 중요한 과정을 간단하게 정리해보고자 한다.
1) Source registration - FHR은 Multicast source를 받으면 해당 그룹을 RP와 등록하고 RP에게 tree 구성을 요청한다. FHR은 multicast data를 캡슐화해서 register message라는 것을 RP에게 단방향 터널을 통해 보낸다. RP가 이 메시지를 수신하면, 디캡슐화를 통해서 register message를 해석한다. 만약 shared tree를 검색해 수신받은 multicast group을 수신하는 host가 없다면 RP는 FHR로 stop message를 바로 보낸다. 앞서 설명한 바와 같이 터널은 FHR에서 RP로 향하는 단 방향 터널이므로 stop message는 이 터널을 이용해 전달되지 않는다. 반대로 수신받은 multicast group을 수신하는 host가 있는 경우에는 downstream으로 해당 stream을 forwarding한다. 더불어, source로 향하는 최단거리인 shortest path tree (SPT)를 구성하기 위해 join back을 보낸다. 이렇게 SPT가 구성된 이후에는 multicast source부터 RP로 바로 stream이 흐른다 (natively flow). RP 입장에서 source로 부터 직접 multicast traffic을 수신하 상태가 되면 (natively get multiccast traffic from the source) FHR에게 register message를 보내지 않아도 된다고 알려준다.
2) PIM SPT Switchover - PIM-SM은 LHR이 shared tree에서 SPT로 변경하는 것을 허용한다. 물론, Cisco 라우터는 이러한 동작 방식이 기본값이다. LHR이 첫 multicast traffic을 RP로 부터 수신하면, LHR은 unicast routing table을 확인해서 FHR로 향하는 SPT 구성을 위해 (S, G) PIM join을 보낸다. 이렇게 SPT를 구성한 이후에는 RP로 prune message를 보내서 중복으로 multicast traffic을 수신하지 않도록 한다.
PIM Forwarder
[PIM Sparse Mode (PIM-SM)]
Assert mechanism을 통해서 multicast traffic을 포워딩하는 라우터를 말한다. R2와 R3는 R1을 통해서 동일한 (S, G) traffic을 수신한다. 이는 R2와 R3의 각 OIF를 통해서 forwarding되는데 R2와 R3의 OIF에서는 상대가 보낸 동일한 traffic을 수신하게 된다. 이 경우 assert mechanism이 동작해 PIM Forwarder를 선출한다. R2와 R3는 PIM assert message를 보내고 이 messaege에는 AD값과 source로 향하는 metric이 담겨있다. 선출의 기준은 AD가 낮고, 낮은 routing metric을 갖고, 마지막으로 가장 높은 IP 주소를 갖는 라우터가 선택된다. PIM Forwarder는 PIM-SM과 PIM-DM 구조 모두에서 적용이 되지만 일반적으로 PIM-DM 시나리오에서 많이 발생한다.
Rendezvous Points (RP)
PIM-SM 구조에서는 RP가 꼭 필요한 root이다. RP는 정적으로 설정하거나 동적 알고리즘에 의해 설정될 수 있다.
[Static RP]
한 두 줄의 설정만으로 간단하게 RP를 설정할 수 있다. RP가 많이 바뀌는 네트워크 구조가 아니거나 네트워크 내에서 RP가 많이없는 토폴로지라면 (작은 규모의 네트워크) 사용하기 쉬운 설정이다. 하지만 정적인 설정은 확장이나 변화에 유연하지 않다. 모든 router는 동일한 RP 주소를 가지고 있는데 만약 이 RP가 바뀐다면 해당 RP의 주소를 가진 모든 라우터들은 설정이 변경되어야 한다. 더불어, RP를 수동으로 설정했을 경우, failover 메커니즘이 존재하지 않는다. 따라서, RP가 문제가 생겼다면 앞서 설명한 많은 설정 변경들을 요구한다.
[Auto RP]
시스코 전용 프로토콜로 PIM 네트워크에서 multicast group과 RP를 매핑해주는 과정을 자동화해준다. Auto RP의 장점은
1) 여러 RP가 여러 multicast group을 지원하기 위해 네트워크 내에 존재하더라도 쉽게 관리할 수 있다.
2) 다른 RP간의 load splitting이 가능하며 각 multicast group에 대해 다른 라우터의 백업의 기능도 가능하다.
3) RP 선정을 multiccast group 참여자의 위치에 따라 단순화 할 수 있다.
4) static RP 구조와 같은 configuration 불일치로 발생할 수 있는 연결성 문제를 방지한다.
Auto RP는 두 가지 동작 요소가 있다. 구체적인 설명에 앞서 간략하게 요약하면 특정 라우터에서 RP가 되겠다는 메시지를 MA에게 보내면 MA에는 해당 정보를 취합 후 RP 정보를 다른 라우터로 다시 전달하는 방식이다.
1) Candidate RPs - C-RP는 RP announcement messaege를 통해서 자신의 라우터가 RP가 되기를 희망한다고 MA에게 알린다. 기본값인 60초 마다 224.0.1.39 (Cisco-RP-Announce)의 주소로 네트워크 내에 알리는데, 여러 라우터가 존재할 경우네는 높은 IP 주소를 가진 라우터를 선호한다.
2) RP Mapping agents (MAs) - RP MAs는 RP announcement messaege를 수신하기 위해서 224.0.1.39 그룹으로 join한다. RP MAs는 선정된 RP를 광고하기 위해서 224.0.1.40 주소를 사용해 전달한다. 이 메시지는 60초마다 전달되거나 구성된 RP의 변화가 있을 경우 보내진다. MA의 announcement message에는 선정된 RP와 group-to-RP mapping 정보가 담겨있다. 동일 네트워크에는 여러 RP MA가 설정될 수 있다. RP MA 모두 동일한 gorup-to-RP maapping 정보를 갖고 있기 때문에 하나의 MA가 문제가 생겼다 할지라도 서비스의 장애없이 운용할 수 있으며 RP MA는 독립적으로 동작한다.
[Bootstrap Router (BSR)]
Auto RP가 시스코 전용 프로토콜이라면 BSR은 타 벤더에서 사용가능한 프로토콜이다. Auto-RP와 마찬가지로 fault-tolerant 기능과 자동으로 RP를 선정한다. 앞서 설명한 RP MA의 역할을 해당 프로토콜에서는 BSR이 담당한다. BSR에서 RP의 정보가 담긴 메시지는 BSR에서 발생한다. 이 메시지는 hop-by-hop으로 PIM-enabled된 interface로 flooding 된다. 이 때, 224.0.0.13의 주소로 TTL은 1로 세팅하여 전달한다. Single point of failure를 막기 위해서 여러 cadidate BSR (C-BSRs)을 배치할 수 있다. C-BSR 간에는 PIM BSR 메시지를 통해서 BSR 선정 과정을 진행하며 해당 메시지에는 priority값이 담겨있으며 높은 우선순위를 갖는 라우터가 BSR로 선정되고 우선순위가 같다면 높은 IP 주소를 갖는 것이 우선한다.
BSR 방식을 사용하는 경우에서 C-RP는 BSR로 부터 BSR 메시지를 받는 라우터를 의미한다. BSR에서 C-RP는 BSR의 IP 주소를 알고 있기 때문에 unicasty를 이용하여 C-RP-Adv 메시지를 BSR로 보낸다. 이 메시지에는 groupd address의 항목들과 마스킹 정보를 담고 있다. 이를 통해서 어떤 group 범위에 대한 RP를 희망하는지 명시한다. BSR은 모든 C-RP-Adv 메시지를 저장하고 60초 마다 모든 PIM router에게 group-to-RP mapping cache를 전달한다.
Auto-RP에서는 MA가 active RP를 선정하는 과정이 있지만 BSR에서는 RP 선택과정이 배제되어 있다. 즉, 이 RP 선정과정은 router가 스스로 담당하게 된다. 각 라우터는 hashing 알고리즘을 RP를 선정하는데 사용한다. C-RP 모두가 동일한 hashing 알고리즘을 실행하기 때문에 특정 multicast group range에 대해서 동일한 RP를 선택합니다. 낮은 우선순위를 갖는 라우터가 RP가 되며 동일한 우선순위라면 높은 IP를 갖는 경우가 특정 multicast group에 대해 RP가 된다.
Reference: CCNP and CCIE Enterprise Core ENCORE 350-401 Guide
'<개인공부> - IT > [Network&Security]' 카테고리의 다른 글
Application Programming Interfaces (API 란?) (0) | 2022.08.27 |
---|---|
ASA의 Failover에 대한 정리 (0) | 2022.02.24 |
멀티캐스트 정리 #2 (IGMPv2 & IGMPv3) (0) | 2022.01.06 |
멀티캐스트 정리 #1 (0) | 2022.01.05 |
스패닝 트리 프로토콜 (Spanning Tree Protocol, STP) (0) | 2021.10.15 |