본문 바로가기
네트워크

MPLS 쌩초보 기초기초

by Lauren X Ming 2022. 2. 4.

참고 : https://www.youtube.com/watch?v=0kjQ9lbGQG4&list=PLQFHF6cwEgwPiX4mnXA7RJcAn_vTqhav2&index=1 

왜 VPN을 사용을 하는가?

기업의 네트워크 망 <-> DC가 물리적으로 떨어져 있기 때문에 private하게 연결하기 위해서 전용선(dedicate) 사용

  - bandwidth 보장, 둘만 통신이 가능한 물리적 회선이므로 보안 강화

  - 거리가 멀다면 bandwidth당 단가가 높음...ㅠ.ㅠ

  - 현재는 DB 간 통신(DR 구간, 1:1 통신 및 통신 보안이 100% 여야 하는 것) 정도만 전용선을 사용 

회선비에 대한 부담을 줄이기 위해서 VPN이 나옴

IPSEC VPN

- IPSEC protocol을 사용하여 1:1로 통신 보안이 가능해짐

- 품질 보장은 되지 않음...

- 기업이 IPSEC 기능을 제공하는 장비를 구매하여 양쪽 단에 두고 인터넷을 이용하여 터널을 뚫는 것임

품질 보장을 하기 위해 MPLS VPN을 사용

MPLS VPN

- 사설망을 구축해두고 여러 개의 사업자를 받아들임

- MPLS VPN을 사용하여 품질 보장, 통신 보안도 되게 함

- 일반 사업장에서 DC간을 연결할 때는 MPLS VPN 회선 서비스를 사용함

사내 전용망을 어떻게 구성하는가?
1. 전용선
2. shared 회선을 이용하여 VPN 터널을 뚫음
  - 품질 보장 : 1:1 품질 보장이 안됨

MPLS VPN 개념과 아키텍처

특정 사업자가 다수의 기업들에게 전용선 서비스를 제공하기 위해서 사용하는 기술

- customer A의 DC가 멀리 떨어져 있을 때, 전용선을 사용하지 않고 가까운 회선망 사업자의 pop에 연결하여 전용선 서비스를 사용함

- 멀티 사용자간 전용선 구성을 할 수 있음.

   - 위 그림에서 A <-> B랑 통신이 가능해짐

   - 만약, A <-> B 통신을 원치 않으면 통신을 할 수 없어야 함 <- 이게 VPN의 특징

- 위 그림에서, 가운데 사업자는 A, B, C, D의 정보를 모두 가지고 있음.

 - 그냥 라우팅 프로토콜임

 - 라우팅 기본 특성에 따라, MPLS VPN 기술을 사용하지 않으면, A, B, C, D가 다 통신이 될것임

  - MPLS VPN : 라우팅 도메인을 분리하고, 통신이 불가능한 구간은 IP lookup을 할 수 없도록 함


여기서 잠깐...

라우터는

frame을 보고, 자신이 가지고 있는 MAC 정보라면 frame header를 때고, 

ip header를 보고, 자신이 가지고 있는 destination IP라면 라우팅 테이블 룩업을 하고 내보내야 하는 인터페이스로 내보냄


 


MPLS 기술을 구현하는데 있어 필요 사항

1. 라우터의 기능

   : A,B 정보를 모두 받는 PE는 A에서 오는 정보, B에서 오는 정보를 구별할 수 있어야 함

     ==  라우터 가상화(VRF)

2. 라우팅 정보를 망 내에서 전달할 때, 라우팅 정보 전달도 분리되어 전달해야 함

   - IPv4에 고객을 구분하는 구분자를 RD값을 더해서 VPN version 4로 전달하게 됨

       - 라우팅 정보가 전달이 될 때, 정보를 받을거냐/말거냐, 어떤 VRF에 저장할 것인지 구분하기 위해 VPNv4로 전달하게 됨

3. MPLS VPN

- 일반적인 packet 형태가 아니라,  tag(label) 정보가 붙음

- 라벨 기반으로 포워딩이 이루어짐


여기서 잠깐...

control plane : 라우팅 정보 전달

data plane : 실제 사용자의 데이터를 전달

MPLS VPN vs MPLS ?

MPLS : 하나의 수단

VPN : 실제 제공하는 서비스

MPLS VPN : VPN이라는 서비스를 MPLS 기능을 사용하여 제공함



MPLS VPN Lable 기반 통신

1. 기본적 라우터 동작

1.1.1.2 <-> 2.2.2.2가 어떻게 통신을 하는가

header들이 붙어서 프레임을 만듦

1. 응용단에서 데이터 만듦

2. TCP header ( Src:Dest Port)

3. IP header ( Src:Dest IP)

4. Ethernet header ( Src:Dest MAC) - 라우팅 테이블을 뒤져서 ARP request를 던지고 GW의 MAC 정보를 Dest Mac으로 할당함

GW 라우터가 해당 프레임을 받음

1. Ethernet MAC을 보고 자신이 받는 것인지 확인

2. IP header를 보고 라우팅 테이블을 뒤짐

--> 이런 행위들을 반복하면서 2.2.2.2까지 전달하게 됨

2. MPLS의 라벨 기반 라우팅

- IP 기반으로 룩업하는 것이 아니라 Label으로 룩업을 한다

라우터가 기본적으로 하는 것은 깰 수 없음.(OSI 7 layer의 기반을 깰 수 없음)

  - frame header / IP header가 있다면 그 사이에 Label을 집어넣어서, IP 룩업이 아니라 Label을 룩업시킴

  - MPLS 기술을 사용하여 IP 정보가 아닌 label을 보고 포워딩하게 함

MPLS : label기반의 포워딩, Transport 기술이라고 생각하면 될 듯


Label을 어떻게 생성되고 교환되는지(LDP)

Label : 특정 IP prefix와 매핑 됨

- IP prefix에 의해서 172.16.10에 대한 정보를 모든 라우터가 가지고 있음

- destnation 172.16.10 정보에 대한 정보에 대해 각각의 라우터들이 로컬 label 정보를 가지고 있음.

- 이 라벨을 각 라우터들이 받음. 이 라벨을 바인딩하여 정보를 가지고 있음(라우팅 테이블 처럼)..

  - 데이터가 이 정보에 대해 packet을 받는다면, 바인딩된 정보를 보고 tag를 붙여서 보냄

  - Ethernet header를 까고 난 후에 tag(label)을 본 후에 전달하게 됨(IP를 보지 않음)

 


정리하자면...

- 실제 ethernet header / ip header로 데이터가 들어옴

- ethernet header / ip header 사이에 tag가 붙는다 

    - tag를 붙이는 라우터는 ingress PE들이다.

- 마지막 PE로 가면, 첫 번 째 Label이 생략되서 나간다

- Label 교환 : LDP에 의해 교환이 된다

  - 라우터들이 각 라우터 정보에 대한 label을 만듦

  - LDP를 통해 상호 라우터들과 교환을 한다. -> LDP를 enable만 시키면 됨



MPLS 망에서 VPN을 사용하기 위해서는 Lable이 두 개가 필요하다

Inner Lable, Outer Lable

inner(==vpn tag) : 나중에 룩업되는 라벨.

- destination 정보가 inner 정보와 매핑 됨

왜 이렇게 하느냐?

망을 share하고 다수의 사업자들이 독자망처럼 사용을 하는데, 여러 개의 고객의 IP 대역이 똑같다면..?

- 동일한 IP를 사용해도 통신을 해야 하는데, Label만 룩업해서 통신할 수 있도록 함. egress PE도 ip header를 룩업하지 않고 라벨만 룩업해서 특정 인터페이스로 내보내서 통신할 수 있도록!

 

PE들을 iBGP Full Mesh로 구성되어있음

- iBGP는 loopback(router id)으로 neighbor를 맺음

- 이 egress PE의 router id의 Label이 outer Label

 

1. PE1 : A에 대한 정보를 나한테 보내라고 광고 - A에 대한 라벨도 같이 광고

2. PE2 : B에 대한 정보를 나한테 보내라고 광고 - B에 대한 라벨도 같이 광고

3. PE들 간은 OSPF 등으로 정보를 교환함

A->B로 통신할때, A->PE1->라벨 생성하여 header에 붙임(B에 대한 Label, PE2에 대한 라벨)->PE2로 전달->Label 헤더를 떼고 IP header만 붙인 상태로 A로 전달


라우터가상화(VRF)

PE 입장에서 다수의 고객사를 수용하기 때문에, 라우팅 테이블을 분리하여야 함.

MPLS 망에서는 필수요건

pe 들 간에 망 연동을 위한 라우팅 테이블(글로벌 라우팅테이블 영역)

VRF의 정보가 담긴 라우팅 테이블들(고객별로 구분되어있음)

- 인터페이스들이 라우팅테이블에 매핑됨

- Ex. Eth 0/1에는 VRF A(고객사 A), Eth 0/2에는 VRF B(고객사B)가 매핑되어있음.

         --> A, B는 라우팅패스가 잡혀있지 않으면 통신이 안됨

- vrf에 관련된 정보들이 글로벌 라우팅 테이블에 의해 PE들끼리 공유한다.


라우팅 정보 전달

망 내에서 라우팅 정보를 어떻게 공유하는가

- shared망에서 다수의 고객사 정보들이 구분이 되어 전달이 되는가?

MPLS 망에서는 VPNv4 정보를 PE 간에 전달이 됨

VPNv4는 어떻게 생성이 되는가?

- 고객사를 구분하기 위한 RD(Vrf의 구분자) + IPv4

RT

- 꼬리표 : VPNv4 정보를 VRF가 받을지 말지 결정, 다른 PE에게 전달할지 말지..

MP-iBGP

- dynamic protocol이지만, 정책을 적용하여 전달(Attribute Protocol)

   --> 기본적인 정보들 이외에도 다른 정보들을 포함해서 라우팅 프로토콜에 실어서 전달할 수 있음.

   --> PE들간에 iBGP가 맺어져 있기 때문에 rt, rd값을 추가해서 전달

- 보낼 PE는 고객의 IPv4 정보를 , RD값을 붙여서 VPNv4로 만든 후, export RT 꼬리표를 붙여서 MP-iBGP 들로 맺어져 있는 PE들에게 전달함(inner label도 같이 보냄)

- 받는 PE는 위 정보를 받은 후, import RT값과 비교하여 받을지 말지 결정을 한다.

그림으로..

멀리 떨어져 있는 고객 간에 통신

- 1.0/24 -> 2.0/24로 통신 시도

- PE1 -> PE2로 전달을 하기 위해 라우팅 테이블을 가지고 있어야 함

   - 라우팅 테이블(control plane) 을 어떻게 생성하는가?

   - 전 시간에, 데이터를 전달하기 위한 data plane은 inner/outer label을 사용한다고 말했었음....

- PE1에 VRF를 만들고, RD, RT 값을 정의함

      - 위 정보로 VPNv4를 만들 수 있음.

      - 이 정보를 의미하는 라벨을 만듦

- 다른 PE들에게 전달하기 위해서 MP-iBGP로 정보 전달

  - PE들 간에 네이버 또는 RR이 맺어져 있음. 

   - 즉, RD+IPv4(==VPNv4), RT, Label을 묶어서 PE들에게 전달함

   - VRF마다 export / import RT가 정의되어있음.

     - vrf에 import할 RT를 정의하면, 해당 RT값으로 꼬리표로 달고 오면 RD+IPv4(==VPNv4), RT, Label로 구성된 라우팅테이블에 저장을 함.


Example. Control Plane (라우팅 정보 전달 과정)

1. 라우팅 테이블 업데이트

  - CE1 - PE1은 그냥 정보 전달함

1-1. PE는 정보를 전달받으면, RD를 붙여서 VPNv4 정보로 변환하여 VRF에 정보 저장

1-2. RT(고객사를 구별할 수 있는 꼬리표) : export RT를 보고 내보낼지 결정함

1-3. 받은 곳에 대한 ip 정보를 보고 inner Label을 만듦

1-4. 위 정보들을 MP-iBGP로 정보를 전달함

1-5. 받은 PE들은 import RT값을 보고 VRF 라우팅 테이블에 정보를 저장할지 결정함.


Example. 실제 데이터가 어떻게 전달되는가(Data plane)

1. CE2->PE2로 정보를 보냄

1-1. PE2의 인터페이스 정보에는 VRF 정보가 있음. vrf에는 inner label 정보, pe1이 줬다는 next-hop 정보를 있음

1-2. 위 정보를 가지고 outer label 정보를 만듦. 

1-3. 알아낸, inner label, outer label 정보를 붙여서 포워딩 함

2. P2

- MPLS tag를 보고 LDP 바인딩된 정보를 보고 자신의 라벨 정보로 outer label을 변환 시킨 후 전달

3. P1

- P1에는 50 tag 정보가 들어오면 tag header를 때고 100번에 대한 정보만 전달하도록 함

- 무슨...패네그래이션 호파핑?....ㅠ.ㅠ

4. PE1

- 어디로 내보내야할지 알고 있기 때문에 CE1으로 내보냄

5. CE1은 망에서 어떻게 연결되어있는지 모름. 전용선처럼 느껴지게 됨....


MPLS VPN 구축해보기

1. 물리적 구성

 - P, PE라우터 물리 구성

2. P, PE들 간에 IGP 구성

- OSPF 등, router-id도 필요

  - router-id는 loobpack이어야 LDP에서 Label을 binding할 수 있음.

3. LDP구현 : OSPF에 올라오는 모든 정보를 LDP로 구현할 수 있고, BGP next-hop으로 사용하는 loopback 정보만 LDP로 구현할 수 있음

4. PE간 MP-iBGP 연결

- full mesh로 neighbor를 구성하기 어려우면, RR로 구성하여 정보 공유

- VPNv4 정보를 저장할 수 있도록..

5. 고객사 망 설계

- VRF, RD, RT 값에 대해 설계를 해야 함

6. 라우터 연결(CE 연결)


Example. Route-Target

https://www.youtube.com/watch?v=Wusaij8M-pg&list=PLQFHF6cwEgwPiX4mnXA7RJcAn_vTqhav2&index=12

위 그림에서 파란색 고객은 RT값 101, 노란색 고객은 RT 102사용

인터넷과 연결된 곳에 방화벽이 연결되어있어서, 파란색/노란색 고객 각각 default routing이 잡혀있음.

파랑 <-> 노랑이가 통신을 하고싶다면?

- 인터넷을 통해서 통신할 수 있을 듯...

- 만약, DMZ를 통해서 사설망 내에서 통신을 하고 싶다면?

  - IP는 겹치면 안됨

  - 빨간색 vrf를 만들어서 통신을 시키도록 함


마지막 정리

ipsec VPN : end to end bandwidth 보장이 안됨. end to end 보안을 위해 ipsec vpn 장비가 각 사업장 end 단에 있어야 함. 암호화  복호화 때문에 성능 이슈도 있음. 저렴하기는 함. 

전용선 : 비용 높지만 품질 보장은 확실! bandwidth 보장

MPLS VPN : 하나의 통신 사업자의 전용선을 사용하는 것임. 그 사업자가 보장을 해주는 것이기 때문에 품질 및 보안도 어느정도 괜찮음~