Network/L3

CCNP ENASRI(300-410) - MPLS

junoshon 2025. 5. 16. 09:17

안녕하세요. 

이번 글에서는 CCNP ENASRI 트랙의 MPLS 파트에 대해 알아보겠습니다.

자격증 공부와 더불어, 최근 진행하게 된 사업에 IP-MPLS 장비가 도입되어서 고객의 환경을 더 잘 이해하기 위해 MPLS에 대해 공부해 보았습니다.

MPLS

들어가며

최근에는 취업을 준비할 때 취득한 CCNA 자격증의 상위 단계인 CCNP 자격증 취득을 위해 공부 중입니다.

Cisco 사의 Professional 자격증인 CCNP는 여러 분야로 나뉩니다. ISP 네트워크의 운영을 위한 SP 트랙, 데이터센터 네트워크 운영을 위한 DC트랙, 무선 네트워크 운영을 위한 Wireless 트랙 등 여러 가지가 있습니다. 

저는 현재 공공사업부에 소속되어 주로 군부대, 혹은 철도(지하철, 고속철 등) 네트워크를 구축 및 유지보수 하는 사업에 참여하고 있습니다.  즉, 제 고객들에 맞는 환경은 Enterprise 네트워크 환경일 것이라 생각하여 CCNP 트랙을 ENCOR과 ENASRI로 선택하게 되었습니다.

 

자격증 취득에 대한 갑론을박은 늘 있어왔지만 개인적으로는 긍정적으로 생각하는 편입니다. 자격증을 공부하며 공부 방향을 설정할 수도 있고, 기본적으로 문제들이 해당 서비스를 더 잘 사용하는 법, 사용하면 안 되는 사례 등을 제시하기 때문입니다. 이는 추후 관련된 내용으로 일을 하게 될 때 좋은 사례가 됩니다.

 

OSI 7 Layer, TCP/IP Networking

현대 네트워킹의 빠질 수 없는 통신 모델, TCP/IP 모델입니다. 

대부분의 네트워킹은 TCP/IP 모델로 통신합니다. 이 모델에 따라 통신에 필요한 정보들을 붙이고(Encapsulation), 떼는(Decapsulation) 작업을 수행하며 통신하죠. 

 

Encap & Decap

OSI 7 Layer에 의해 캡슐화와 역 캡슐화가 진행됩니다. 사용자가 naver.com이라는 주소로 접속한다고 가정하면, 사용자는 “내가 naver.com에 접속하고 싶다.”라는 정보를 패킷에 담아 네이버 서버에 요청합니다. 그 과정에서 아래의 정보들이 포함됩니다.

  • 응용 계층 — HTTPS 프로토콜을 사용한다. GET 메서드를 사용해 네이버 웹 페이지의 리소스를 받아오고 싶다. 나는 iPhone을 사용하고 있고, safari 브라우저를 사용한다.
  • 표현 계층 — 문자 인코딩은 UTF-8로 인코딩한다. SSL /TLS 프로토콜을 사용해 암호화한다. 암호화 키는 RSA 알고리즘을 사용해 교환하고, 데이터는 AES-256 알고리즘으로 암호화한다.
  • 세션 계층 — SSL/TLS 핸드셰이크를 수행한다. 이미 수행했으면 이전에 협상했던 방법으로 암호화한다.
  • 전송 계층 — TCP 프로토콜을 사용한다. 포트 번호로는 443번(HTTPS)을 사용한다.
  • 네트워크 계층 — 내 ip 주소는 211.109.6.249이고 목적지 ip 주소는 172.217.25.174이다. 출발지 포트는 49152번이고 목적지 포트는 443이다. 프로토콜 번호는 6번(TCP의 프로토콜 번호)이다.
  • 데이터 링크 계층 — 나의 MAC 주소는 9a:ab:b6:dc:19:18이고, 목적지 MAC 주소는 4c:a9:19:2 a:d5:a4이다. 이더 타입은 0x0800(IPv4의 이더 타입)이다.
  • 물리 계층 — 전송 속도는 100 Mbps이다. 통신 방식은 Full-Duplex로 한다.

 

하지만, 이런 과정을 거치며 필연적으로 오버헤드가 생길 수밖에 없습니다. 지난 글에서 알아봤듯이 패킷이 한 번에 전송될 수 있는 최대 크기는 제한이 있으며, 이 크기를 넘어서면 패킷을 쪼개었다 붙였다가, 중간에 잃어버리기도 하죠. 그러면 재전송을 해야 하고 네트워크 회선이 낭비될 뿐 아니라 그 패킷이 지나가는 장비들의 부하로 이어지게 됩니다.

그래서 MPLS 기술이 등장하게 됩니다.

 

Multi Protocol Label Switching(MPLS)

MPLS 프로토콜은 L2 헤더와 L3 패킷 사이에서 동작합니다. 여담으로 MPLS는 IP 프로토콜 말고도 다른 프로토콜에서도 동작할 수 있습니다. 과거에 WAN 연결 기술로 사용되었던 ATM, Frame relay 등에서도 사용할 수 있기 때문에 Multi Protocol이라는 이름이 붙었습니다.

MPLS는 긴 네트워크 주소 대신 짧은 경로 레이블을 사용하여 한 노드에서 다른 노드로 데이터를 전송하는 고성능 네트워크 기술입니다.
이러한 접근 방식은 기업 및 통신 사업자 네트워크 전반의 트래픽 흐름을 가속화하고 형상화합니다.

출처 : https://www.cisco.com/c/ko_kr/support/docs/multiprotocol-label-switching-mpls/mpls/13733-mpls-vpn-basic.html

 

 

Header 항목 전체 명칭 설명
Label - - 경로정보를 식별하기 위한 값이며 사용 범위는 16 ~ 1,048,561 사용 가능
TC Traffic Class - QoS 사용 시 참조되는 값

- Class of Service 또는 IP Precedence 값 설정 시 해당 값이 표기 됨.

- RFC 5462(2009년) 이후 Traffic Class로 명명, ECN(Explicit Congestion Notification) 지원
S Bottom-of-stack - Label을 중첩하여 사용할 경우 사용 되는 Field 정보

- 0 1 2개의 값을 사용하며 해당 값이 1일 경우 마지막 Label임을 알린다.
TTL Time-to-Live - Loop 방지용도로 사용되는 값

 

MPLS 헤더의 각 필드는 위와 같은 역할을 합니다. CCNP ENCOR 교재와 같은 과거의 문서에서는 21비트부터 시작하는 필드를 EXP라고 불렀지만, 2009년 이후 RFC 5462가 발표되며 ECN기능을 지원하면서 필드명이 TC로 변경되었습니다.

ECN에 대한 내용은 지난 글(TCP 통신에서의 VPC Flow Logs 해석 문제)에서 다루었습니다. 궁금하신 분들은 RFC 3168과 함께 참고 부탁드립니다.

 

MPLS 토폴로지 구현

CCNP ENARSI

CCNP 가이드 교재의 토폴로지를 기준으로 MPLS 토폴로지를 구현해 보겠습니다. MPLS가 동작하기 위해서는 먼저 IP 라우팅이 선행되어야 합니다. 위 그림에서는 OSPF Area 0으로 학습했으나, Static 라우팅으로 구성해도 무방합니다.

 

먼저, MPLS에  참여하는 라우터를 Label Switching Router, LSR이라고 합니다. 또한 같은 MPLS 도메인 중, MPLS 도메인의 경계에 있는 라우터(위 그림에서는 R1과 R5)를 Edge LSR이라고 합니다. R1과 R5사이에서는 MPLS로 통신하다가, 그 이후에는 원래대로 IP 라우팅으로 통신하는 방식이지요.

 

 

다음으로, MPLS가 동작하기 위해서는 Label Distrivution Protocol, LDP 가 필요합니다. MPLS의 라벨을 교환하기 위한 프로토콜이고, 646번 포트를 사용합니다. 

먼저 전송 계층으로 UDP를 사용해 멀티캐스트 주소(224.0.0.2)로 LDP Hello 메시지를 송신하고, LDP 이웃을 발견합니다.

 

 

conf t
mpls label protocol ldp
int GigabitEthernet 0/0
 mpls ip​

위와 같은 컨피그로 ldp 프로토콜을 활성화하고 원하는 인터페이스에 mpls를 활성화할 수 있습니다.

 

이후 LDP 이웃을 찾았으면, TCP 프로토콜을 사용해 세션을 수립합니다. TCP 3-way handshake로 세션이 맺어지면, TCP 646 포트를 사용해 라우터들끼리 라벨을 교환하고, 그 정보를 라우팅 테이블에 반영합니다. 이때 반영되는 라우팅 테이블은, Label Forwarding Information Base, LFIB라고 합니다.

 

Penultimate Hop Popping (PHP) 기능

Penultimate Hop Popping (PHP)

Penultimate Hop Popping (PHP), 번역하면 "끝에서 두 번째 홉 popping(라벨 제거)"입니다.

즉, 목적지 바로 직전에 라벨을 제거해서  IP 패킷으로 포워딩하는 MPLS의 최적화 기능입니다.

 

위 그림에서, 10.0.23.0/24 대역은 R2 가 가지고 있습니다. R1이 10.0.23.0/24 대역으로 패킷을 보내려고 하는데, 어차피 다음 홉인 R2로 가야 하니 굳이 라벨을 붙일 필요가 없습니다. 따라서 PHP기능이 동작하여 해당 라벨을 제거하고 IP 패킷을 포워딩하게 됩니다.

여담으로, Popping이라고 명명하는 이유는 MPLS 라벨 구조가 스택(Stack) 자료구조로 되어있기 때문입니다. RFC 3032에서는 라벨이 32bit 크기이며, 스택 구조로 인코딩 되어있다고 명시하고 있습니다.

 

MPLS 사례

철도망 IP-MPLS

 

이렇게 알아본 MPLS는 어느 사례에서 사용되고 있을까요? 대표적인 사례는 국가철도공단이나 각 시의 교통공사에서 MPLS를 사용하곤 합니다. 혹은 ISP에서 기업 고객의 전용망을 구성하기 위해 L3 MPLS VPN을 구성하기도 하지요.

 

철도에는 언제든지 문제가 생길 수 있습니다.

열차가 탈선하거나, 전복될 수도 있죠. 철로에 사람이 떨어져 있거나, 인부가 작업중일 수도 있습니다. 더 큰 2차 사고를 막으려면 제때 조치를 취해야 합니다. 뒤따라 오는 열차를 다른 선로로 우회시키거나, 신호를 주어 멈추게 해야 합니다. 또는 선로에 사람이 있는지 없는지 CCTV로 감시해 조치를 취해야 하고요.

 

만약 명절이라 승객들의 트래픽이 많거나, 철도 역무원들의 업무 트래픽이 많아진다면 열차/신호 제어 트래픽, CCTV 모니터링 트래픽 등의 중요한 트래픽이 뒷순서로 밀릴 수 있습니다. 이처럼 QoS 가 중요한 서비스나 IP기반의 패킷 전송보다 빠른 속도가 필요할 때 MPLS가 사용되곤 합니다.

 

마치며

CCNP 자격증을 준비하며 공부한 MPLS와 해당 기술이 나의 고객에게 어떤 장점을 전달할 수 있는가를 생각하며 글을 써봤습니다.

최근 업계 선배 엔지니어분과 인연이 닿아 조언을 몇 가지 들었는데, 그중 "항상 내가 하는 일은 누군가를 위한 일이라는 생각. 당장 옆의 동료를 비롯하여 고객들이 하는 말과 겪는 어려움에 공감하는 능력을 꼭 갖고 업무를 하셔야 합니다."라는 말이 와닿았습니다. 

긴 글 읽어주시어 감사합니다.

'Network > L3' 카테고리의 다른 글

CCNP ENASRI(300-410) - VRF  (0) 2025.05.25
서브넷 마스크 쉽게 이해하기  (4) 2024.08.22
MTU, 진짜 1500 Byte 일까?  (0) 2024.08.14
L3 단의 부하분산, ECMP와 UCMP  (0) 2024.08.11