[CISCO 보안 아카데미 1기 Part.2] 19일차 정리(Multicast)

Jin_Hahha·2024년 9월 23일
1


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

  • 멀티캐스트 분산 트리
    • Loop 방지 목적
  • 멀티캐스트 포워딩
  • 멀티캐스트 프로토콜의 타입
    • 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까지 최적화된 경로를 이용
      • delay 최소화
  • Shared trees
    • 더 적은 메모리 사용
    • Source에서 Receiver까지 완벽한 최적화 경로를 이용하지 않음
      • 추가 delay가 발생할 수 있음

How are Distribution Trees Built

  • PIM
    • 기존에 존재하는 Unicast 라우팅 테이플을 이용
    • Join/Prune/Graft 메커니즘을 이용하여 트리를 생성하기 위해
  • DVMRP
    • DVMRP 라우팅 테이블 이용
    • Poison-Reverse 메커니즘을 이용하여 트리를 생성하기 위해
  • MOSPF
    • OSPF의 Link state 메커니즘 이용
  • 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로 전환될 수 있음
    • 유니캐스트 라우팅 프로토콜 독립
    • 도메인 간 멀티캐스트 라우팅의 기초
      • MBGP와 MSDP와 사용될 경우

결론

  • 거의 모든 제품 네트워크는 PIM-Sparse 모드로 설정되어야 함

LAB_1

  • 위의 단계까지 설정한 이후, 아래의 명령어로 PC가 그룹에 join하도록 설정
    • 명령어는 네트워크와 연결된 인터페이스에서 입력해 주어야 함
ip igmp join-group 224.1.1.1
  • join까지 마치면 PC4에서 ping 224.1.1.1 명령어를 입력하여 multicast가 동작하는지 확인
    • 2개의 호스트가 응답하는가?

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 정보를 담고 있음
      • 들어온 인터페이스
      • RPF neighbor
    • 각 항목은 Outgoing Interface List(OIL)를 포함하고 있음
      • OIL은 NULL로 설정되어 있을 것임

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) 삭제
    • 일반 (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

  • Join이 들어올 경우

  • 바로 이전 단계인 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

  • Candidate RPs

    • 224.0.1.39 주소로 자신이 후보라는 메시지를 전송
    • 60초마다 전송 (기본 주기)
  • RP 홍보 메시지는 다음 내용을 포함

    • 그룹 범위(기본 범위는 224.0.0.0/4)
    • 후보 RP의 주소
    • Holdtime = 3 * (rp-announcement-interval)
  • 전역 config 명령어로 구성

    ip pim send-rp-announce (intfc) scope (ttl) [group-list acl]

  • 그룹 리스트에서 Deny는 다양한 의미를 지님

    • 12.0(1.1) 이전의 Deny = 본인은 해당 범위에 대해 C-PR이 아님
    • 12.0(1.1) 이후의 Deny = 그룹 범위를 항상 DM으로 조정

  • Mapping agents

    • RP-Announcements 수신
      • holdtime과 함께 Group-to-RP Mapping Cache에 저장
      • 그룹 범위에 대해 가장 높은 C-RP IP 주소를 RP로 선출
    • 멀티캐스트 RP-Discovery 메시지
      • Cisco-Discovery(224.0.1.40) 그룹으로 전송
      • 기본적으로 매 60초마다 또는 변경이 감지되었을 때
    • RP-Discovery 메시지는 다음의 내용을 포함
      • MA의 Group-to-RP-Mapping Cache로부터 선출된 RP
    • 전역 config 명령어로 구성

      ip pim send-rp-discovery (interface) scope (ttl)


  • All Cisco Routers
    • Cisco-Discovery(224.0.1.40) 그룹에 Join
      • Automatic
      • Config 불필요
    • 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 장비에 모두 입력해야 함

0개의 댓글