본문으로 바로가기
반응형
MPLS VPN (MultiProtocol Label Switching)

MPLS (MultiProtocol Label Switching)는 L3(IPv4/IPv6) 패킷 또는 L2 프레임에 라벨(label)을 첨부하여 전송하는 기술을 말한다. MPLS가 설정되어있는 라우터들이 MPLS 패킷을 수신하면 목적지 IP 주소 대신 라벨을 참조하여 해당 패킷을 스위칭한다.


MPLS를 사용하는 가장 큰 이유는 MPLS VPN (Virtual Private Network, 가상 사설망) 구성을 위해서다. ISP 입장에서는 대규모의 VPN을 MPLS을 통해서 쉽게 구축할 수 있어서 MPLS VPN을 선호한다. 고객 입장에서도 '인터넷'을 사용하는 VPN과 달리 내부 VPN과 외부 VPN 트래픽이 완전히 분리되어서 비교적 안전한 망을 구성할 수 있다.


예를 들어, 인터넷을 이용한 VPN의 경우 ISP 내부에서는 특정 목적지로 가는 패킷을 차단하지 않아 내부 사용자 뿐만 아니라 공격자의 패킷도 고객 장비에 도달할 수 있으므로 보안에 문제가 발생한다. 그러나 MPLS는 통신회사 내부에서 사전에 설정된 경로 간에만 트래픽 전송을 허용하므로 트래픽이 완전히 분리된다. 고로 MPLS VPN을 사용하면 공격자의 패킷이 목적지에 도달하는 것 자체가 불가능하다.


MPLS VPN은 사용자가 MPLS 망 가입자로 제한되어 있으므로 아무나 다른 조직의 망으로 패킷을 전송할 수 없다. 그러나 MPLS VPN 자체는 인증 또는 암호화 기능을 제공하지 않아 인증, 암호화, 무결성 확인 기능을 제공하는 IPSec VPN 등을 함께 사용한다.


MPLS 헤더 구조

MPLS는 L2 헤더와 L3 헤더 사이에 4바이트 (32Bit) 길이MPLS 헤더를 추가한다.

L2 Header

MPLS 헤더 (32Bit)

L3 Header

Data

라벨 (20 bit)

EXP (3 bit)

BoS (1 bit)

TTL (8 bit)


ⅰ. 라벨 (Label) : MPLS에서 사용하는 라벨을 표시하는 필드이다. 라벨 값은 0 ~ 1,048,557 사이의 값을 가질 수 있다. 이 중 0~15 사이의 값은 특별한 용도로 사용되고 실제 사용하는 값은 16 이상이다. IOS에서는 주로 16~100,000 사이의 값을 사용한다.

ⅱ. EXP (EXPerimental) : EXP 비트는 QoS(Quality of Service) 값을 표시할 때 사용하며, 0에서 7 사이의 값을 가진다.

ⅲ. BoS (Bottom of Stack) : Bos 비트 값이 1이면 마지막 라벨임을 나타낸다. 이 때 의미하는 라벨은 4바이트의 MBPS 헤더를 말한다. 이 값이 0이면 현재의 MPLS 라벨 다음에 또 다른 MPLS 라벨이 있음을 의미한다.

ⅳ. TTL (Time To Live) : IP 헤더에 있는 TTL의 의미와 동일하다. 패킷의 루프 방지를 위한 필드이다.


MPLS VPN 라우터의 종류

R1~R4는 MPLS VPN 서비스를 제공하는 ISP (Internet Service Provider)의 라우터이고, R5~R8는 고객사의 라우터다.

ⅰ. PE(Provider Edge) : 고객사의 라우터와 물리적으로 연결되는 MPLS 라우터를 말한다.

ⅱ. P(Provider) : 고객사의 라우터와 물리적 연결이 없는 MPLS 라우터를 말한다.

ⅲ. CE(Customer Edge) : ISP의 MPLS 라우터와 물리적으로 연결되는 고객사 라우터를 말한다. PE라우터와 P 라우터는 MPLS 관련 설정이 필요하나 CE 라우터는 MPLS 설정이 필요없다. 즉, CE 라우터는 자신이 MPLS 망과 접속되어있는지 모른다.


MPLS VPN에서 사용하는 프로토콜

MPLS 라우터인 R1~R4(P, PE) 라우터 사이에는 IGP 및 LDP(Label Distribution Protocol)를 동작시킨다. IGP는 대부분 종류 상관없이 가능하다. 특정 주소(IP 등)와 MPLS 라벨 값의 조합을 의미하는 MPLS의 라벨 바인딩 정보 전송을 위해서 LDP를 사용한다. PE 라우터간에는 MBGP(Multi Protocol BGP)를 사용하여 고객사 정보를 교환한다. ISP와 고객사 사이에는 어떠한 라우팅 프로토콜을 사용해도 무방하다. 만약 고객사 라우터에서 OSPF를 사용한다면 CE와 PE 사이의 네트워크를 모두 Area 0으로 설정해야하며 이 부분을 OSPF 슈퍼 백본 (Super Backbone)이라고 한다.


MPLS 라벨 부여 & 패킷 전송 과정

MPLS가 동작하게 되면 자신의 MPLS 라우터 ID에 대해 라벨값을 부여한 다음 인접 라우터에게 부여한 라벨 값을 전송한다.

최종 MPLS 라우터에게 패킷을 전송할 때는 그 직전에서 라벨을 제거한다. 그래서 R4가 자신의 인터페이스에 속해있는 MPLS 라우터 ID가 들어가있는 패킷에는 라벨값을 부여하지 말고 자신에게 전송하라고 하는 LDP 바인딩 정보(IP 주소와 라벨값의 조합)를 보내는 것이다. R3는 특정 목적지 패킷에 라벨 값을 부여하여 자신에게 전송하라는 LDP 바인딩 정보를 R2에게 보내고, R2도 라벨 값을 부여하여 자신에게 전송하라는 LDP 바인딩 정보를 전송하라고 한다. 이처럼 특정 라우터 자신이 부여한 라벨 바인딩 정보로컬 바인딩(Local Binding)이라고 하며 다른 라우터에서 요청받은 라벨 바인딩 정보리모트 바인딩(Remote Binding)이라고 한다.


위 토플로지처럼 R1이 R4로 정보를 전송할 때는 LDP 바인딩 정보에 따라 라벨 값을 부여한 다음 R2에게 전송한다. 이 과정을 푸시(Push)라고 한다. 이를 수신한 R2는 패킷의 라벨값을 확인한 후 넥스트 홉에서 요청한 라벨값으로 교체한 후 전송한다. 이 과정을 스왑(Swap)이라고 한다. 도착지 R4의 전인 R3에서는 라벨값을 제거하고 패킷을 전송하는데 이 과정을 팝(Pop)이라고 한다. 이런식으로 MPLS 라우터들은 Push -> Swap(n)- > Swap(n-1) -> ... -> Swap(1) -> Pop 과정을 거치게 된다. 결론적으로 MPLS 라우터들은 목적지 주소 대신에 라벨값을 참조하여 패킷을 전송한다.


반응형