
Fundamentals of IP Multicast
왜 멀티캐스트를 쓰는가
- 다중 수신자에게 같은 데이터를 보낼 때 사용
- 더 나은 대역폭 이용
- 더 적은 host/router 처리
- 송신자와 수신자의 중간에 위치하는 라우터의 경우에도 정해진 개수의 데이터만 복제해서 전달하면 됨
- 수신자들의 주소를 모르는 경우
Unicast vs Multicast

- Unicast와 다르게 Multicast는 하나의 데이터를 각 라우터에서 복제하여 각 사용자로 전송하기에 resource 사용률과 기기 부하가 적음
Multicast Advantages

- 효율성 강화
- 네트워크 트래픽 조정
- 서버와 CPU 부하 감소
- 성능 최적화
- 분산된 어플리케이션
Multicast Disadvantages
- Multicast는 UDP Base
- Best Effort Delivery
- Drop이 발생할 가능성이 있음
- Reliable Delivery Multicast가 연구되고 있으나 아직 상용화는 되지 않음
- 혼잡 회피 없음
- slow-start 메커니즘은 네트워크 혼잡으로 이어질 수 있음
- 복제
- 가끔 멀티캐스트 메커니즘은 중복 패킷을 생성할 수 있음
- Out-of-Sequence Packets
- Sequence Number가 없기 때문에 기존 순서와 다르게 패킷이 들어올 가능성이 있음
IP Multicast Service Model
- RFC 1112
- 각 multicast 그룹은 D Class IP 주소로 정의됨
- 각 그룹의 멤버는 인터넷 어디에서든 표현될 수 있음
- 멤버는 그룹에 참여하거나 떠날 수 있으며, 이를 라우터에 표시할 수도 있음
- 전송자와 수신자가 구분됨
- 라우터는 모든 멀티캐스트 주소를 듣고 그룹을 관리하기 위해 멀티캐스트 라우팅 프로토콜 사용
- IP Group 주소들
- D 클래스 주소-고차수 3bit 설정
- 224.0.0.0에서 239.255.255.255의 범위를 지님
- IANA에 의해 Well Known 주소가 설정
- 예약된 사용: 224.0.0.0에서 224.0.0.255
- 224.0.0.1
- 224.0.0.2
- 일시적 주소, 동적으로 할당되고 재요청됨
- Global scope: 224.0.1.0-238.255.255.255
- Limited Scope: 239.0.0.0-239.255.255.255
Multicast Protocol Basics
- 멀티캐스트 분산 트리
- 멀티캐스트 포워딩
- 멀티캐스트 프로토콜의 타입
- Dense Mode Protocols
- Sparse Mode Protocols
Multicast Distribution Trees
Shortest Path or Source Distribution Tree

- 최단 경로 트리라고도 함
- Source에서 Receiver까지 가장 짧은 경로를 이용하도록 트리 구축
- Source에서 Receiver Group으로 최단 거리로 전송
Shared Distribution Tree

- Source가 무엇인지 상관이 없음
- RP(Rendezvous Point)에서 패킷을 공유하여 전송한다는 느낌
- RP에서 Receiver Group으로 전송
Characteristics of Distribution Trees
- Source or Shortest Path trees
- 더 많은 메모리 사용
- Source에서 Receiver까지 최적화된 경로를 이용
- Shared trees
- 더 적은 메모리 사용
- Source에서 Receiver까지 완벽한 최적화 경로를 이용하지 않음
How are Distribution Trees Built
- PIM
- 기존에 존재하는 Unicast 라우팅 테이플을 이용
- Join/Prune/Graft 메커니즘을 이용하여 트리를 생성하기 위해
- DVMRP
- DVMRP 라우팅 테이블 이용
- Poison-Reverse 메커니즘을 이용하여 트리를 생성하기 위해
- MOSPF
- CBT
Multicast Forwarding
- 멀티캐스트 라우팅은 유니캐스트 라우팅에서 거꾸로 적용됨
- 유니캐스트 라우팅은 패킷이 어디로 가고 있는지 고려
- 멀티캐스트 라우팅은 패킷이 어디에서 왔는지 고려
- 멀티캐스트 라우팅은 Reverse Path Forwarding을 사용
Reverse Path Forwarding(RPF)
- RPF란?
- 패킷이 들어왔을 때 패킷의 Source를 보고 up stream에서 수신되었을 경우에만 Forwarding
- RPF Check
- 멀티캐스팅에 사용되는 라우팅 테이블은 멀티캐스트 다이어그램에서 Source 주소와 대조되어 확인됨
- 라우팅 테이블에 정의된 인터페이스로부터 데이터그램이 도착한 경우, RPF check가 Succeed로 정의됨
- 그 외의 경우, RPF check Fail임
- RPF check가 succeed되면, 데이터그램은 포워딩됨
- RPF check가 fail이면, 데이터그램은 아무 공지 없이 사라짐
- 데이터그램이 포워딩되면, 전송 인터페이스 리스트의 각 인터페이스로 나감
- 패킷은 절대로 RPF 인터페이스로 되돌아오지 않음



Types of Multicast
Dense-Mode
- "Push" 모델 사용
- 네트워크로 트래픽이 Flooding됨
- 원하지 않는 곳으로 흘러가면 Pruned back
- Flood & Prune behavior (typically every 3 minutes)
Sparse-Mode
- "Pull" 모델 사용
- 요청된 곳으로만 트래픽 전송
- Explicit Join behavior
Multicast Protocol Review
- 현재는 4개의 프로토콜 사용
- DVMRPv3(Internet-draft)
- DVMRPv1(RFC1075)은 절대 사용되지 않음
- MOSPF (RFC 1584) "제안된 표준"
- PIM-DM (Internet-draft)
- CBT (Internet-draft)
- PIM-SM (RFC 2362) "제안된 표준"
PIM-DM
- 프로토콜 독립
- static, RIP, IGRP, EIGRP, IS-IS, BGP, OSPF를 포함한 모든 유니캐스트 라우팅을 지원
- Reverse Path Forwarding 사용
- 멀티캐스트 그룸 멤버십을 참고하여 네트워크로 Flood & Prunes back
PIM-DM Flood & Prune



PIM-DM Assert Mechanism

PIM-DM Assert Problem




PIM-DM - Evaluation
- 작은 pilot 네트워크에서 가장 효율적
- 이점
- 쉬운 설정 (2개의 명령어로 설정)
- 간단한 flood & prune 메커니즘
- 잠재적 문제점
- 비효율적 flood and prune
- control plane과 data plane의 혼합
- shared trees에서 지원하지 않음
PIM-SM (RFC 2362)
- source and shared trees 모두에서 지원
- 송신자와 수신자는 서로를 알기 위해 Rendezvous함
- host가 요청하지 않는 이상 기본적으로 트래픽을 원하지 않는다고 가정
- Rendezvous Point 사용
- 송신자가 그들의 first-hop 라우터에 의해 RP에 "registered"됨
- 수신자는 그들의 local Designated Router에 의해 Shared Tree에 Joined됨
PIM-SM Shared Tree Joins





PIM-SM SPT Switchover




PIM-SM FFF
- PIM-SM Frequently Forgotten Fact
- PIM-SM의 기본 동작 방식은 바로 연결된 멤버가 있는 라우터가 새로운 멀티캐스트 소스를 감지하는 즉시 Shortest Path Tree에 가입하는 방식
- PIM-SM은 Shared tree를 기반으로 동작한다고 하여 Shortest Path tree로 동작하지 않는다고 생각할 수 있으나 결론적으로는 Dense 모드나 Sparse 모드나 둘 다 Shortest Path 트리를 사용함
PIM-SM Evaluation
- 멀티캐스트 수신자의 경우 sparse / dense 분배에 효과적
- 이점
- 트래픽이 오직 joined 상태의 가지로만 전송됨
- 높은 트래픽 source의 경우 동적으로 최적 source-tree로 전환될 수 있음
- 유니캐스트 라우팅 프로토콜 독립
- 도메인 간 멀티캐스트 라우팅의 기초
결론
- 거의 모든 제품 네트워크는 PIM-Sparse 모드로 설정되어야 함
LAB_1


- 위의 단계까지 설정한 이후, 아래의 명령어로 PC가 그룹에 join하도록 설정
- 명령어는 네트워크와 연결된 인터페이스에서 입력해 주어야 함
ip igmp join-group 224.1.1.1
- join까지 마치면 PC4에서 ping 224.1.1.1 명령어를 입력하여 multicast가 동작하는지 확인
PIM Sparse Mode
PIM Neighbor Discovery
- PIMv2 hellos는 주기적으로 "All-PIM-Router" 그룹 주소(224.0.0.13)로 멀티캐스트됨 (기본 30초 주기)
- DR이 파기될 경우, 새로운 DR이 선출됨
- DR은 네트워크 내 어떠한 전송자/수신자에게 모든 join 메시지와 register 메시지를 전송할 의무가 있음
PIM State
- 네트워크에서 해당 시점에 라우터가 이해하는 멀티캐스트 분배 트리의 상태 표현
- 멀티캐스트 라우팅 테이블의 항목으로 표시됨
- 멀티캐스트 트래픽 포워딩 결정에 사용
- (*,G)와 (S,G) 항목으로 구성
- 각 항목은 RPF 정보를 담고 있음
- 각 항목은 Outgoing Interface List(OIL)를 포함하고 있음
PIM-SM (*,G) State Rules
- (*, G) 생성
- (*,G) Join 또는 IGMP 보고 접수
- (S,G)가 생성되었을 경우 자동적
- (*,G)는 default group forwarding 반사
- IIF = RRF interface toward RP
- OIL = interfaces
- (*,G) Join을 받은 인터페이스 등
- 직접 연결된 멤버들 등
- 수동적으로 구성된 인터페이스
- (*,G) 삭제
- OIL이 NULL일 때
- child (S,G) 상태가 존재하지 않을 때
PIM-SM (S,G) State Rules
- (S,G) 생성
- (S,G) Join 또는 Prune을 접수하면서
- Register 과정 중에
- Parent(*,G)가 생성되었을 때 (만약 존재하지 않는다면)
- (S,G)는 S의 G로 향한 포워딩 반사
- IIF = RRF 인터페이스가 일반적으로 Source를 향할 때
- RR-bit가 설정되어 있을 경우 RRF는 RP를 향함
- (S,G) 삭제
PIM-SM OIL Rules
- OIL 인터페이스 추가
- Join 메시지를 받았을 경우
- (*,G)에 추가된 인터페이스는 모든 (S,G)에 추가됨
- OIL 인터페이스 제거
- Prune 메시지를 받았을 경우
- (*,G)에서 제거된 인터페이스는 모든 (S,G)에서 제거됨
- Interface Expire timer가 0까지 count한 경우
- 타이머는 주기적인 Join 메시지를 받을 경우 리셋됨(3분으로)
- IGMP 멤버쉽 보고를 받을 경우
PIM-SM State Flags

-
J = Join SPT
- (*,G) 항목에서
- SPT-Threshold가 초과되었음을 표시
- 다음 (S,G) 들어올 경우 SPT 가입 동작
- (S,G) 항목에서
- SPT-Threshold에 의해 SPT가 가입되었음을 표시
- rate가 SPT-Threshold보다 작을 경우, Shared Tree로 다시 돌아감
-
F = Register/First-Hop
- (S,G) 항목에서
- "S"는 바로 연결된 Source 의미
- Register 처리 실시
- (*,G) 항목에서
- 적어도 하나의 (S,G) child에서 "F"가 설정될 때 설정
-
R = RP bit
- 오직 (S,G) 항목에서만
- (S,G) RP-bit Prune에 의해 설정됨
- Shared Tree에 정보가 적용됨을 나타냄
- Shared Tree에서 (S,G) 트래픽 Prune에 사용됨
- SPT로 전환된 이후 Last-hop 라우터에 의해 초기화
- (S,G) 포워딩 동작 수정
- IIF = RP를 향한 RPF
- OIL = Prune accordingly
PIM SM Joining





PIM-SM Registering Examples
Receivers Join Group First

- 일단 RP가 본인임
- Sparse Mode로 동작
- RP가 본인임으로 Incoming Interface는 NULL
- neighbor도 0.0.0.0으로 설정되어 있음





- outgoing interface list가 생성되면서 flags의 FTP가 FT(prune 삭제)로 변함

- 유니캐스트로 데이터를 전송하지 말라는 STOP 메시지 전송
- 이후 RP에서는 flags 부분의 FT가 T로 변환
Source Registers First
- Join이 들어오지 않은 상태에서는 모든 flag가 Prune




- 바로 이전 단계인 Receivers Join Group First와 유사
Receivers along the SPT





PIM SM SPT-Switchover
- SPT Thresholds는 모든 그룹에 대해 설정할 수 있음
- 그룹을 정의하기 위해 Access List가 사용될 수 있음
- Default Threshold는 0kbps
- Threshold가 Infinity로 설정되어 있다면 SPT에 절대 join하지 않는다는 의미
- 0과 infinity 사이의 값은 사용하지 말아야 함
- Threshold는 Source Tree의 Join을 동작시킴
- 수신한 G packet 다음 S에 대해 (S,G) SPT에 가입
Rendezvous Point
Auto RP
- 모든 라우터는 자동적으로 RP 주소를 배움
- 아래의 경우를 제외하고는 설정 필요없음
- Mapping Agent가 설정된 경우
- 후보 RP가 존재하는 경우
- 멀티캐스트를 통한 정보 배포
- 두 개의 IANA 할당 그룹이 사용됨
- Cisco-Announce: 224.0.1.39
- Cisco-Discovery: 224.0.1.40
- 일반적으로 해당 그룹을 포워딩 하는 데에 dense 모드 사용
- 백업 RP 구성 허용
- Admin-Scoping과 함께 사용될 수 있음
Auto RP from 10,000 Feet


Auto RP Fundamentals
- All Cisco Routers
- Cisco-Discovery(224.0.1.40) 그룹에 Join
- RP-Discovery 메시지 수신
- local Group-to-RP Mapping cache에 저장
- 그룹 범위에 대해 RP를 결정하는 데에 정보 사용
LAB_2

- LAB_1에서 설정한 ip pim rp-address 삭제

- RP의 loopback을 shutdown했을 때, RP 값이 R3의 정보로 바뀌는가 확인
- autorp-listener 명령어는 도메인 내의 L3 장비에 모두 입력해야 함