Network/CCNP

Multicast

JI12 2020. 6. 11. 10:05

Multicast

IPv4 의 DATA 전송 유형

                       DATA 수 client 수
unicast                      1 : 1
broadcast                  1 : 불특정 다수  -> LAN 구간 성능저하를 가져온다.
multicast                   1 : 특정 다수

 

multicast 는 특정한 group에게만 트래픽을 전송할때 사용 한다.

 

[참고]

broadcast주소, multicast주소, unicast 주소는 정해져 있다.

broadcast ip : 255.255.255.255

broadcast mac : ffff.ffff.ffff or ffff-ffff-ffff or ff-ff-ff-ff-ff-ff

 

multicast ip : 224.0.0.0 ~ 239.255.255.255

multicast mac : 0100.5e~~~~~~~

 

- multicast ip 주소는 224.0.0.0 ~ 239.255.255.255 로 범위만 정해져 있고 network-id 와 host-id 구분하지 않는다.

중요한건 같은 group 인지 다른 group인지 구분한다.

 

Multicast mac 주소

multicast ip 가 multicast mac 주소로 변환을 한다.

 

변환 기준

 

[참고] ip는 8bit씩 4개의 옥텟으로 구분 ex> X.X.X.X

1> multicast ip 주소의 첫번째 옥텟은 항상 0100.5e로 진행된다.

2> multicast ip 주소의 두번째 옥텟은 2진수로 변환한후 첫번째 bit만 0으로 바뀌고 나머지는 16진수로 변환한다.

3> multicast ip 주소의 세번째, 네번째 즉 나머지는 16진수로 변환한다. (3~4번째는 그대로 진행)

 

주소 변환 예제

224.211.139.7                                                         239.83.139.7

 

224 : 0100-5e                                                        239 : 0100-5e

 

211 : 11010011 -> 01010011 -> 0101 0011 -> 53             83 : 01010011 -> 0101 0011 -> 53

 

139 : 10001011 -> 1000 1011 -> 8b                              139 : 10001011 -> 1000 1011 -> 8b

 

7 : 00000111 -> 0000 0111 -> 07                                 7 : 00000111 -> 0000 0111 -> 07

 

0100.5e53.8b07                                                      0100.5e53.8b07

 

=> 이 규칙에 의해 변환을 해주면 동일한 multicast mac 주소가 나올 수 있다.

그래서 다른 group 이지만 multicast 스트림을 모두 수신하는 경우도 있다.

그러나 multicast ip가 다르므로 본인 group 패킷만 처리한다.

 

[참고]

broadcast 주소, multicast 주소는 목적지 주소이며, 출발지 주소는 항상 unicast 이다.

multicast 를 동작시키기 위해서는 반드시 unicast routing이 완성이 되어야 한다.

이유는 multicast 는 loop 를 방지하기 위해서 RPF check를 사용하기 때문이다.

 

RPF check : muiticast 는 항상 패킷의 출발지 주소를 확인한다

즉 수신한 muiticast packet의 출발지가 자신의 routing table과 일치하면 수신

수신한 multicast packet의 출발지가 자신의 routing table과 일치하지 않으면 수신하지 않는다.

 

만약에 경로가 여러개 이면 next-hop' ip 의 숫자가 큰 경로가 선택된다

 

[참고]

만약 RPF랑 다른 경로로 multicast packet 을 수신하려면 unicast routing 조절하거나 혹은

multicast 정적 경로를 설정한다. 

Multicast 기본 동작

1> client가 server(source) multicast(ex>영상)을 요청하면 server는 client에게 요청한 multicast 주소를 알려준다.

client는 연결된 router에게 server에게 요청한 multicast 주소로 packet을 보내라고 요청한다. 요청한 client와 router사이에 동작하는 multicast protocol을 IGMP 라고 한다.

 

2> router는 client에게 받은 (server에게 요청한) multicast 주소를 어느 router에게 요청해야 하는지 알아야 한다.

그때 사용하는 대표적인 multicast protocol 이 PIM 이다

대표적인 PIM 종류는 PIM-Dense-Mode, PIM-Sparse-Mode 이다.

 

[참고]

PIM 은 unicast routing protocol 과 상관없는 multicast라는 뜻이다.

PIM 기능을 이용하여 멀티케스트 트래픽 전송이 발생되었을 경우에만 멀티케스트 상태 테이블을 구성하여 경로를 관리하고 멀티케스트 트래픽 전송이 없다면 상태 테이블에서 경로가 삭제하기 때문에 멀티케스트 라우팅 정보관리를 최적화하였다

 

기존에는 unicast routing protocol 과 multicast routing protocol 같이 구동하여 table 들이 각자 구동되어서 장비 부하현상이 많았다

 

3> router 로 부터 multicast frame 을 수신한 스위치는 해당 정보를 요청한 client에게만 frame을 전송해야 한다.

이 때 사용하는 protocol이 IGMP snooping , CGMP 가 있다. 만약 사용하지 않으면 flooding 된다.

 

Multicast에서 사용하는 protocol 종류

IGMP

> multicast 가 동작하는 client와 router 사이에 동작하고 group에 참여하거나 탈퇴할 때 사용된다.

> client가 multicast 패킷을 요청하거나 multicast 방송을 그만 볼때 사용된다.

> 1,2,3 버전이 있고 버전 1은 중지 메세지를 보내는 기능이 없다. (시스코는 기본적으로 버전2)

> 모든 버전은 protocol 번호 2를 사용하고 TTL은 1로 설정되어 있다.(Scope을 통해 TTL을 적용ex)scope 16 = TTL이 16)

> 중지 메세지를 보낼 수 있는 버전이라 해도 못보내는 경우가 나올 수 있다.

> router는 주기적으로 IGMP을 이용해 확인한다

> interface에서 multicast protocol을 구동하면 자동적으로 활성화 된다.

 

IGMP_snooping

> client가 요청한 multicast ip 에 대한 multicast mac 주소를 기억하고 있다가 기억한 multicast mac 주소를 수신했을때, 요청한 client가 연결된 port로만 multicast frame을 전송한다. 즉 불필요한 flooding 방지를 한다.

 

CGMP

> IGMP-snooping가 비슷하지만 스위치 대신 router 가 동작

> 특정 multicast mac 주소를 가진 frame은 특정 client(mac주소)에게만 unicast로 전송하라고 알려준다.

 

Multicast routing protocol

=> client가 multicast packet을 수신하기 위해서 IGMP를 이용해서 router에게 요청을 하고 요청을 받은

router는 어느 router에게 요청해야 하는지 알아야 할때 사용

즉 특정 multicast group이 연결 되는 경로를 알기 위해서 사용한다.

 

mutlicast routing protocol 종류

1> PIM-Dense-Mode

2> PIM-Sparse-Mode

 

[참고]
PIM-Dense-Mode 는 LAN 구간에서 적합하다(밀집) source-tree 방식 : 서버에서 client 까지 최단거리(SPT)
PIM-Sparse-Mode 는 WAN 구간에서 적합하며(분산) shared-tree 방식 : RP 라는 라우터를 통하는 경로(RPT),

단 처음에는 RPT 두번째부터는 SPT로 전송
최적화하여 LAN 환경에서도 사용하는 경우가 많다(기능이 많음)

 

1>PIM-Dense-Mode
주기적으로 mutlciast 정보를 update 하고 수신한 router 들은 mulitcast routing table 에 등록
일정시간동안 mutlciast 정보를 수신하지 못하면 mulitcast routing table에서 정보를 삭제한다
(Rip과 비슷)

 

[동작방식]

1. multicast 가 동작하는 모든 interface 로 224.0.0.13(All PIM Routers) 주소를 사용해서 30초마다 Hello packet 을 전송하고 인접성을 맺는다 hold time 은 90초 즉 3배임

 

2. router 들은 Server 에게 수신한 정보를 3분마다 PIM-Dense-Mode가 설정된 interface 로 플러딩한다
이를 수신한 네이버 router 들은 prune(중지)메시지를 전송 해서 전송을 막아준다 하지만 multicast routing table 에는 내용(해당 패킷의 source ip주소,group 번호)이 등록이 된다

 

3. 추가적으로 패킷이 플러딩 되지 않으면 3분후에 multicast routing table에서 삭제가 된다


4.하지만 multicast 서비스가 계속되면 3분후에 플러딩하고 중지하는 과정이 반복되면서
multicast routing table 유지가 된다 => 불필요한 과부하가 발생한다
=> state refresh 기능(플러딩대신 제어메시지 전송하여 중지상태 유지)을 이용한다

 

5.이후에 router 가 client 한테 IGMP(membership report) 내용을 받으면 multicast group 에 다시 합류해야 한다 이때 router 는 multicast routing table에서 해당 source 와 연결되는 interface로 합류 메시지 보냄

이를 수신한 router 가
-해당 group 패킷을 수신하고 있으면 요청한 router 에게 중계
-해당 group 패킷을 수신하고 있지않으면 multicast routing table을 확인해서 해당 source 와 연결되는 interface로 합류 메시지 보냄

=> 만약 multicast routing table에 존재하지 않으면 서비스 할수 없고 플러딩이 일어나야 할수 있다 최대 3분

 

6.client 가 연결을 종료하면 IGMP(leave)메시지를 router 에게 전송하고 이를 수신한 router 는 동일 group 안에 다른 host 가 있는지 IGMP(group-specific:그룹 질의) 메시지로 확인한다 응답 없으면 prune(중지)메시지를 보내서 해당 group 으로 multicast 가 전송되지 않도록 한다

이후에는 state refresh 기능이 동작하면서 multicast routing table을 유지한다

 

 

2>PIM-Sparse-Mode

multicast 수신 장비들이 분산되어 있을때 사용하게 만들어졌지만 기능이 많아서 LAN 환경에서도
많이 사용됨
RP라고 하는 router 에게 동작중인 장비들의 source 주소와 multicast 주소를 등록한다
그 이후에 요청이 오면 RP 에게 요청해서 multicast packet 을 받아온다 즉 dense mode와 다르게 RP에게만 주기적으로

소스 등록메시지를 전송하고 다른 라우터들에게는 RP를 통해서 요청을 받을때만 패킷을 전송한다

 

[참고]
multicast routing protocol 에 따라서 routing table 생성하는 방법이 다르나
완성이 되면 패킷을 전송하는 방식은 동일하다 -> SPT

 

[동작방식]

1. multicast 가 동작하는 모든 interface 로 224.0.0.13(All PIM Routers) 주소를 사용해서 30초마다
Hello packet 을 전송하고 인접성을 맺는다

2. 모든 multicast router 에게 RP 의 주소를 알린다(정적, auto-RP(cisco), BSR(표준)을 이용)

Server와 가장 가까운 DR이 RP에 source ip와 multicast group 등록을 하고, 이를 위해 DR은 처음에만 multicast source가 보내는 전체 패킷을 unicast로 캡슐화해서 전송(출발지는 DR'ip 목적지는 RP'ip) 지연을 최소화하기 위해 캡슐화한다.

Server를 사용하는 host가 없으면 등록 중지 메시지를 전송한다(출발지는 RP'ip 목적지는 DR'ip)

 

3. 이 정보를 이용해서 RP 는 multicast routing table을 생성하고 DR에게 그만이라고 한다

4. DR 은 주기적으로(2분) source정보를 RP 에게 전송함으로써 multicast routing table이 유지되도록 한다

 

5. client 가 IGMP 를 이용해서 필요한 multicast 패킷 전송을 요청한다

인접 router가 client에게 요청 받은 group에 대한 join 메시지를 RP에게 전송하고

Rp는 Multicast routing table을 보고 해당 group을 등록한 DR에게 join 메시지를 보낸다.

 

6. DR이 요청받은 multicast 정보를 RP 에게 전송하고 RP 는 client와 연결된 router에게 전송한다 즉 shared-tree완성

더 좋은 경로가 있으면 source-tree 방식으로 변경할 수 있다.

시스코 장비는 기본적으로 첫번째 패킷만 shared-tree 바로 source-tree로 변경된다

변경 방법은 RP쪽으로 prune(중지)보내고 Server방향으로 join 메시지를 보내 구성한 이후 패킷이 전송된다.

 

7. Client가 수신을 중지한다는 IGMP Leave 메시지를 전송하면 인접 라우터가 Server방향으로 prune(중지)를 보내

source-tree가 제거된다.

 

RP 지정 방식

 

> 정적 RP : 설정을 통해 RP로 지정한 주소가 RP로 동작한다.

               단, 모든 multicast router, L3 switch 모두 설정해줘야 한다.

 

> Auto RP : 자동으로 RP가 선출되게 한다. Cisco 전용

1> RP 후보가 224.0.1.39(cisco-rp-announce) 를 이용하여, 자신이 RP후보임을 RP 매핑 에이전트에게 알림.

2> RP 매핑 에이전트가 RP 후보들을 확인하고, multicast group 별로 RP를 지정하여 224.0.1.40(cisco-rp-discovery)로 다른 router들에게 알린다.

3> multicast 가 동작하는 router 들은 매핑 에이전트가 전송한 주소를 RP로 지정한다.

4> RP후보들은 기본적으로 60초 마다 RP 매핑 에이전트에게 RP정보를 광고를 하고 만약에 180초 안에 RP매핑 에이전트가 RP 후보 광고 메시지를 수신하지 못하면 삭제한다.

5> RP매핑 에이전트도 기본적으로 60초마다 router에게 RP매핑 에이전트 정보를 광고 하고 만약에 180초 안에 router가 RP매핑 에이전트 광고를 수신하지 못하면 삭제한다.

6> 주의점 : 동일한 multicast group 번호에 대해서는 오직 하나의 RP만 사용된다. 만약 RP주소가 여러개일 경우, IP주소가 높은것이 선출 된다.

또한 복수개의 RP매핑 에이전트를 사용하는 경우에도 RP주소는 동일하고 이를 전송하는 RP매핑 에이전트만 달라진다.

그래서 RP매핑 에이전트 중에서 하나가 장애가 발생을 해도 나머지 RP매핑 에이전트들이 계속 광고를 해서 계속 동작한다.

 

[참고]

보통 RP 후보와 RP매핑 에이전트를 동일 장비에서 설정한다.

 

[참고]

interface mode 에서는 기본적으로 sparse-dense-mode 로 지정한다.

이유는 RP정보는 sparse-mode에서는 안되고 dense-mode에서 전달이 되기 때문이다.

그래서 RP정보는 dense-mode로 전파, multicast-packet sparese-mode!!를 이용한다.

아니면 추가적인 설정이 필요하다.

 

추가적인 설정
'ip pim autorp listener' 명령어를 이용하여 인접 라우터에게 RP 정보가 전달되도록 해야 한다.
단, 연결된 인접 라우터, 인접 라우터의 인접 라우터들에서 설정을 다 해줘야 하는 단점을 갖게된다

 

> BSR : 자동으로 RP가 선출된다. 표준 프로토콜이다.

 

1> BSR이 224.0.0.13 으로 자신이 BSR 임을 알린다.

2> RP후보가 BSR 에게 RP 후보임을 알린다. 이때 BSR 주소는 unicast로 지정된다.

3> BSR이 224.0.0.13 을 이용하여 RP 후보를 다른 router 에게 알리고 각 router 들이 RP를 선출한다.

4> RP 들은 기본적으로 60초마다 광고를 하고 150초안에 BSR 에서 수신하지 못하면 BSR 에서 RP 삭제

그리고 기본적으로 60초마다 BSR도 기본적으로 RP를 광고한다.

 

[참고]

BSR 선출 기준

1> 우선순위 높은 라우터 (기본값 0)

2> IP주소가 높은 라우터

 

[참고]

interface mode 에서는 기본적으로 sparse-mode로 지정된다. RP정보가 sparse-mode에서 전달되기 때문이다.

 

[참고]

RP 지정 방식 우선순위

auto-RP > BSR > 정적 RP

 

Sparse-Dense-Mode

1. Sparse-Mode가 동작하지 못할 경우, Dense-Mode로 동작하는 모드이다.
2. Auto-RP 환경에서 RP 정보를 전달하기 위해서 사용하는 모드이다. 이때, RP 정보는 Dense-Mode로 전송되고
멀티케스트 트래픽은 Sparse-Mode로 전송된다

처음에는 RP를 모르니 Dense-Mode로 동작하고, auto-rp를 통해 RP를 알게되면 Sparse-Mode로 동작한다.

3. Dense-Mode' 동작을 중지하려면 no ip pim dm-fallback 명령어를 사용하면 된다.

 

[참고]

PIM-DR : multi-access 환경에서 multicast packet 을 전송하는 router
+Dense mode 에서는 모든 router 가 전송하므로 의미가 없지만 sparse mode 에서는 중요

PIM-Assert : multi-access환경에서 특정한 multicast source주소에 대해서 하나의 전송 router (Forwarder)를 지정

 

정보확인

sh ip pim neighbor

sh ip pim interface detail

 

[참고]

multicast ping 동작 방식

 

합류 그룹이 설정된 interface의 ip 주소를 사용하는 것이 아니라 multicast packet을 수신한 interface의 ip로 응답