아래 글은 예전에 Netmanias Magazine에 기고했던 글의 일부로써, L3 Switch(예. Cisco 6500 series, Juniper MX series)의 구조에 대한 설명입니다.
Protocol Reference Model
아래 그림은은 네트워크 장비의 기능을 크게 3개의 기능 블록으로 분리해 놓은 것이다.
- Control Plane: 네트워크 장비로 유입되는 패킷이 올바른 물리적 포트로 출력 될 수 있도록, 경로를 설정, 관리 및 해제하는 기능(Routing, Signaling)을 수행한다.
- Data Plane(User Plane): 수신된 패킷의 L2, L3 헤더 필드를 검사하여, Control Plane에서 의도 했던 출력 포트로 패킷을 송신하는 기능을 담당하며, 패킷 처리 과정에서 Packet Modification, QoS, Filtering등의 기능을 함께 수행하게 된다.
- Management Plane: Control Plane 및 Data Plane의 동작 상태 및 성능을 관리하는 기능을 담당한다.
본 3개의 Plane은 실제 네트워크 장비에서 2개의 블록으로 매핑된다.
- Control Point(Non-Steady State Function): 보통 CPU 또는 Host Processor라 불리기도 하는, Control Plane 기능과 Management Plane의 일부 기능(SNMP, CLI)을 수행하는 블록이다. (이하 CP라 칭함)
- Network Processor(Steady State Function): Data Plane과 Management Plane의 일부 기능(상태 및 성능 관리 정보(MIB)를 Control Point의 Management Plane에 제공)을 수행하는 블록이다. (이하 NP라 칭함)
Control Plan
- Layer 3 IP Protocols
- Basic Protocol Stack(IPv4, ARP/RARP, ICMP, TCP, UDP)
- 대부분의 IP 및 MPLS 시그널링 프로토콜은 IP, IP/TCP 또는 IP/UDP 헤더로 encapsulation되어 송수신 되기 때문에 기본적인 IP/TCP/UDP stack을 가지고 있다.
- NP가 ICMP 패킷을 수신하면 본 패킷을 CP로 전달하여, Control Plane의 ICMP 블록에서 이 패킷을 처리한다.
- NP가 IP Forwarding을 하기 위해서는 Next Hop의 MAC 주소를 알아야 하며, 본 기능은 Control Plane에서 처리하기 때문에 ARP 블록이 존재한다.
- Unicast IP Routing Protocols(RIP, OSPF, BGP4, IS-IS, VRRP): 네트워크 장비간에 라우팅 정보를 주고 받아 데이터 패킷의 경로를 결정하고 그 결과를 NP에 존재하는 IP Forwarding Table에 기록하여, NP가 CP의 관여 없이 패킷을 포워딩 할 수 있도록 한다. 이 IP Forwarding Table은 CLI에 의해서 관리(Static Route라 함)될 수도 있다.
- Multicast IP Routing Protocols(IGMP, DVMRP, PIM-SM, PIM-DM): 멀티캐스트 패킷에 대한 경로를 결정하는 프로토콜로써 NP의 IP Multicast Table에 그 결과를 기록하며 이 역시 CLI에 의해서 관리 될 수도 있다.
- Layer 2 Ethernet Protocols
- GVRP: 스위치 장비(Destination MAC 주소를 참조하여 패킷을 송신하는 장비)간에 VLAN Membership 정보를 주고 받는데 사용된다.
- GMRP: 스위치 장비간에 멀티캐스트 그룹 정보를 주고 받는데 사용된다.
- STP/RSTP/MSTP: 루프가 존재하는 이더넷 망을 루프가 없는 하나의 예측 가능한 Tree Topology로 구성함과 동시에, 일부 링크 장애 발생시에 대체 경로를 자동으로 찾아 망을 스스로 복구할 수 있는 기능을 제공한다.
- LACP: 하나 이상의 이더넷 포트들을 하나의 논리적인 포트로 묶어 동작시킴으로써 대역폭을 증가시키는 기능을 Link Aggregation(Data Plane에서 담당)이라 하며, 이를 위해서 스위치간 주고 받는 프로토콜이 LACP이다.
- IGMP Snoop: 호스트(단말)와 라우터간 주고 받는 IGMP 패킷을 스위치가 가로채(NP에서 CP로 IGMP Packet Redirection) 이를 해석하여, 포트 별 Multicast Group Membership을 NP의 L2 Multicast Table에 기록하는 기능을 담당한다. 이렇게 함으로써 스위치가 불필요하게 멀티캐스트 패킷을 모든 포트로 브로드캐스팅 시킴을 방지할 수 있다.
- Port-based Network Access Control(IEEE 802.1x): 외부의 인증 서버(RADIUS Server)를 통해 인증된 사용자(Host)에게만 스위치의 Physical Port 사용권을 부여하여 Network Access를 허용하는 프로토콜이다.
- MPLS Signaling Protocols(LDP, CR-LDP, RSVP-TE): MPLS 망의 경로 설정을 위한 Label 할당 및 분배 기능을 담당하며(LDP), 이와 더불어 Traffic Engineering 기능 지원을 위해서 Explicit Route, QoS 등의 기능을 제공한다(CR-LDP, RSVP-TE).
그런데 [DP그림에서] Data Plane(User Plane)은 Packet 이 들어오면
Packet Decoder -> Address Lookup -> Multi-Field Classifier -> Packet Editor -> Traffic Manager 순서를 통해
출력 포트로 전송하는 기능을 한다는 건가요??
2000년대 초반에 IBM NP(Network Processor)를 이용해서 스위치/라우터를 개발한 적이 있었는데, 그 당시 IBM에서 제공하는 Microcode(NP에서 Data Plane 기능을 수행하는 코드) 분석 결과 본 블로그 설명과 같은 흐름을 탔었습니다.
Cisco, Juniper와 같은 상용 네트웍크 장비의 Data Plane 로직(패킷 처리 순서)은 좀 다를 수도 있을 것 같네요.
궁금한게 몇가지 있습니다.
CP에서 만든 패킷(예를 들어 OSPF LSA 메시지같은)은 NP로 전달해서 flooding이 되는 건가요? 수신된 패킷이 패킷 디코더를 제일 먼저 통과하는데 이와 동일한 절차를 거치는 건가요? 아니면 다른 전달 방법이 있나요?
라우팅 테이블이 만들어지기 전에 포워딩은 어떻게 동작하나요?
1. NP의 포워딩 테이블에 의한 패킷 전송: CP는 그냥 IP 패킷을 NP로 전달하고 NP가 포워딩 테이블을 참조하여 특정 인터페이스로 패킷을 전송합니다. 보통 목적지 주소가 Unicast IP인 경우(예. ping)에 사용됩니다.
2. CP에서 특정 인터페이스를 명시하여 패킷 전송: 예를 드신 OSPF LSA와 같이 목적지 주소가 Reserved Multicast IP(224.0.0.X)인 패킷은 NP의 포워딩 테이블 참조를 통해 패킷 전송이 불가능합니다. 따라서 이 경우, CP가 NP로 패킷 전달시 해당 패킷이 송출된 인터페이스를 명시하여 전달하고 NP는 이 경우 포워딩 테이블 참조 없이 CP가 요청한 인터페이스로 패킷을 전송합니다.
설명 감사드립니다.
https://www.netmanias.com/ko/?m=view&id=blog&page=6&no=5515