본문 바로가기

네트워크/multicast

Multicast

Munticast MAC 

 -  Multicast 전달자로 사용되는 MAC address 01:80:C2 의 OUI 값을 가지며 Link를 넘어갈수 없다

-   BPDU,LACP,LLDP등에 사용되며 인접된 장비 모두로 전달의 의미를 가진다

    특정용도로 정해진 멀티캐스트용 MAC 주소 例)
     - 0180 C200 0000 : Spanning Tree Protocol (for bridges) IEEE 802.1D, RSTP, MSTP
     - 0180 C200 0008 : Spanning Tree Protocol (for provider bridges) IEEE 802.1AD
     - 0180 C200 0010 : All Bridge (802.1D에서 모든 브리지에게 브로드캐스트 전파용)
     - 0180 C200 0003 : 802.1X
     - 0180 C200 000E : 802.1ab (LLDP)

 

-  Multicast IP와 matching 되는 MAC address 로서 01:00:5e의 OUI 값을 가지며 뒷자리는 IP address와 matching 된다

-  Multicast IP          239.            18.  158.  78    ( 239.0.0.0/24 는 사설 Multicast address로서 192.168.0.0/24와 같은 의미)

                                224.                                    ( IP를 16진수로 변환시켜 MAC address를 생성한다)

-  Multicast MAC     01:00:5e:    12:   9e:   49

-  Multicast MAC 은 01:00:5e 가 고정되기 때문에 MAC address의 중복이 생기지만 서비스에는 문제가 없다

 

IGMP는 Host(Client)가 Multicast domain에 Join 되어 Traffic을 수신하기 위한 프로토콜이며 일반적으로 PIM이 enable 되면 IGMP 또한 자동으로 enable이 되기 때문에 별도로 활성화 작업이 필요하진 않다.

 

Multicast Protocol인 PIM은 3개의 전송방식을 가진다

 PIM-DM (dense mode)

 PIM-SM (sparse mode)

 PIM-SSM (Source-specific mode)

 

Multicast Protocol인 PIM은 2개의 Distribution Tree를 가진다 

  - (S.G) : Short Path Tree or Source Tree (SPT)

                Source를 기반으로 생성되는 Tree, Source가 명황할때 사용된다

                       (Source로가는 가장 가까운 경로를 Routing Table에서 Look up하여 사용한다

                        경로가 중첩될경우 IP가 가장 높은 것을 우선한다.)

  - (*.G) : Shared Tree

               Source를 기준을 만들어 지는 Tree가 아니라 RP(Rendezvous Point)를 기준으로 생성 되는 Tree

               Source는 RP로 Traffic을 전송하고 Destination은 RP로부터 Traffic을 수신한다.

 

  - IGMP가 PIM으로 Report Message를 통해서 Multicast Traffic을 수신하며 연결을 끊을때는 Leave message를 사용한다

  - PIM은 Source에게 Join을 통해 Multicast를 수신하며 수신대기 상태를 Prune상태라 한다

 

PIM Protocol Mode

  - Dense Mode : Push Model Multicast domain에 있는 모든 맴버로 Traffic을 Flooding 하는 모드

                            같은 Domain내에 있는 모든 맴버들이 multicast traffic을 수신하며 3분마다 전송하며 수신이 불필요한

                            대상은 Source 또는 RP로 Prune 메시지를 전송하여 Muticast traffic 전송을 거부한다

                            전송을 거부하여도 3분 후 Multicast flooding 시 모든 맴버는 Muticast를 수신하게 된다.

 

  - Sparse Mode : Pull Model Multicast 맴버 즉 Multicast traffic을 수신해야 되는 대상이 RP 또는 Source에 Join 하여 

                             multicast traffic을 수신하는 방식 Join된 맴버 외에는 Multicast traffic을 수신하지 않는다.

 

Multicast Forwording

  - Unicast : Destination IP check -> RIB Lookup -> Outgoing interface check -> forwording

  - Multicast : Source IP check -> RIB Lookup -> Incoming interface check -> receiving

   위의 Traffic 전송 방식의 차이를 보면 Unicast와 Multicast의 동작 방식은 근본적으로 다르다고 이야기할 수 있다.

   Unicast는 목적지 기반으로 동작하며 Multicast는 출발지 기준으로 동작함을 알수있다.

 

RPF

  - Unicast RPF : Traffic유입시 RIB를 확인하여 Best path 가 아닌 다른경로로 Traffic이 유입되면 Block 하는 기능 

     Strict mode : interface와 IP 모두 확인 

     Loose mode : 목적지 IP 만 확인

  - Multicast RPF : Traffic 유입시 Source를 RIB와 비교하여 Best Path에서 Traffic이 유입되는지 체크

 

PIM-SM : (*.G)와 (S.G)를 생성하는데 (*.G)는 RP와 가장 가까운 Interface가 Incoming Interface가 되고

                 (S.G)는 Source와 가장 가까운 Interface가 Incoming interface가 된다

                 Outgoing interface list(OIL)은 초기에는 Null 상태이며 Service Traffic이 Join 되면 생성된다

                 (*.G)는 IGMP report를 받거나 (S.G)가 생성되거나 (*.G)Join을 받을 경우 생성된다.

                     (*.G)의 Outgoing interface list는 

                               - (*.G) Join을 받은 경우

                               - IGMP Report 를 받은경우

                               - ip igmp joingroup이라는 설정을 통하여 생성된다.

                (S.G)는 Prune 을 받거나 IGMP나 PIM Join을 받거나(*.G)가 생성되는 경우 생성된다.

                (S.G)는 Sourrce로 가는 interface 와 RP로 가는 Interface가 다를 경우 RP bit를 생성한다.

 

(*.G)의 OIL은 (S.G)의 OIL로 Copy가 되는데 (S.G)의 OIL은 (*.G)로 Copy되지 않는다.

(*.G)에서 (S.G)로 Copy된 OIL은 (*.G)에서 삭제가 되면 (S.G)에서도 삭제가 된다.

 

Multicast routing table의 Flag 

   - C : 해당 테이블이 IGMP에 의해 생김

   - L : ip igmp joingroup 명령어로 강제 Join 시킨경우

   - P : Table은 있는데 OIL이 없는 경우

   - T : SPT에 의해 서비스 하고 있는경우

   - J : SDT로 서비스를 하다가 Threshold를 넘는 경우 SPT를 사용하기 위해 (S.G)를 만드는데 이때 SDT의Threshold를

          넘어서 생성된 (S.G)라는 의미로 Flag에 J를 표시한다

   * Cisco의 경우 threshold값을 0(zero) 또는 무제한 값을 주는 것을 권장하고 있다.

 

PIM-SM Join Process

   - IGMP로 Join이 들어오면 (*.G)를 생성

   - (*.G)가 생성되면 RP를 찾는다

  - RP를 찾으면 RP로 가는 가장 가까운 Interface를 찾고 해당 interface의 Neighbor 장비 IP를 확인 후 OIL에 등록 한다

  - OIL 등록 후 이제 확인된 RP와 가장 가까운 Interface로 (*.G) Join을 시도한다

위의 일련의 과정이 하나의 라우터에서 이루어 지며 RP와 가장 가까운 Interface로 Join해 나가다 보면 SDT가 만들어 진다

 

RP Process 

    - (*.G)를 만들고 RP를 체크 했을때 자기 자신이고 IIF(Incoming Interface)와 Neighbor가 확인되지 않으면 (*.G)로 Join

      들어온 Interface를 OIL에 등록시킨다.

 

First Hop Router Process

   - Local interface에서 Multicast를 받은경우 (S.G)가 생성되며 (S.G)생성후 RFP체크를 진행하여 Incoming interface와 

     Source가 같은경우 Flag 정보에 T를 생성 그리고 Neighbor를 확인하여 Neighbor가 통신장비가 아닐경우 자기 자신이

     FHR임을 확인

  - 이때 OIL이 없기 때문에 Flag 정보에 추가로 P를 생성함

  - RP에 Join 하기위해 (*.G)를 만들고 RP를 찾는다. 

  - RP를 찾으면 RP와 가장 가까운 Interrface와 Neighbor를 RPF 체크한다.

  - RP로 Unicast로 Multicast 정보를 전송하고 이때 (S.G)에서 registering으로 상태정보가 출력 된다

 

RP Process

  - RP가 Unicast로 (S.G)에 대한 정보를 받았기 때문에 RP에서 (S.G)가 생성된다..

  - (S.G)가 생성되면 IIF와 Neighbor를 확인 후 (*.G)의 OIL을 (S.G)로 복사한다

  - 이때 (S.G)가 OIL을 알게되면서 Flag 정보에 P가 삭제 된다.

  - Flag 정보에서 P가 삭제 되면서 (S.G)정보를 Unicast로 받았기 때문에 Unicast Header를 제거 후

    OIL로 받은 (S.G)를 전송한다.

  - 이때 FHR에서는 RP를 확인 하고

  - RP는 (S.G)로 join을 시도한다.