본문 바로가기
네트워크

MPLS 초보탈출 8차

by Lauren X Ming 2022. 3. 6.

VRF Table

VRF를 만들고나면, 해당 VRF에 연결된 고객이 누구랑 연결을 해야하는지 그 정보를 확인을 해서 우리가 rt값을 가지고 어떤 네트워크를 전달하고 가져올지 관리를 하게 됨.
하나의 vrf는 별도의 라우팅 테이블을 가지고 있으며, VRF별로 FIB 테이블을 가지고 있음. VRF와 CE 간에 라우팅 프로토콜이 돌아야 함.
- routing protocol contexts : VRF에 도는 라우팅 프로토콜.
vrf에게 인터페이스를 할당해줘야 함
mpls를 구성하기 위해서 rd값을 세팅해주고, import/export rt값을 세팅해줘야 함.
- rd는 vrf가 동작하기 위해 반드시 존재해야함. RT는 mpls vpn용도임


고객 A, B가 있는데 둘 다 같은 프로토콜을 쓰고, 같은 네트워크를 가지고 있다면 해당 프로토콜의 테이블에서 충돌나지 않을까?
- 그래서 데이터베이스를 구분을 해야 함.

VPN-Aware Routing Protocol

Routing Context : VRF 안에서 동작하는 라우팅 프로토콜.
- 고객하고 나하고 bgp, eigrp, ospf 등등등 를 돌릴 수 있음.
- 다만, 라우팅 프로토콜 간의 방식의 차이가 있음.
- EIGRP, EBGP, RIP, IS-IS는 하나의 라우팅 프로세스에서 여러 개의 인스턴스로 나누어서 사용함.
- 하나의 크롬 창에서 새 탭열기 같은 느낌?!!!
- 하나의 프로세스 내에서 동작할 뿐이지 완벽하게 다르게 동작을 함.
- OSPF는 VRF 별로 모두 다른 프로세스를 동작시킴.
- 인스턴스로 나누든, 프로세스로 나누든 각각 독립적으로 동작을 함.

VRF Table

- 어떤 route들을 해당 site와 통신할 수 있도록 export할 것이나 import 할 것이냐
- 인터페이스를 할당을 할 때, vrf에 하나에는 여러 개의 인터페이스가 할당 될 수 있다. 하지만 하나의 인터페이스에 여러 개의 vrf를 할 수 없다.
- 만약, 하나의 인터페이스에 여러 vrf를 연결하고 싶다면???!!! subinterface로 나눠서 할당을 할 수 있음.


<상태>
PE 장비에 VRF가 두 개가 동작하고 있음.
하나의 VRF A에는 EIGRP 동작, 다른 VRF B는 eBGP를 동작시키고 있음.
또한 PE에 BGP를 올림. -> 멀리 떨어진 PE 장비와 iBGP를 맺고 있음.
<상황>
VRF B는 IPv4 BGP가 동작함
PE 간의 iBGP는 ipv4테이블이 기본적으로 있음. vrf에서 가져온 정보로 vpnv4 테이블이 생성됨
이때 vrf B와 글로벌 vpnv4는 둘 다 bgp가 동작 중이기 때문에 정보를 가져가는게 자동임. 특별히 세팅할 것은 없음.
문제는 VRF A는 EIGRP가 동작 중임. pe는 bgp로 정보를 가지고 있음. 또한 vrf A는 ipv4로 정보로 가지고 있고, pe bgp테이블을 vpnv4로 정보를 가지고 있기 때문에 주소 체계가 다름.
- 그래서 vrf를 만든 후에 각각의 vrf별로 자동으로 bgp 프로세스를 돌리도록 만듦
- 그리고 같은 vrf 간에 eigrp, bgp에서 redistribute을 함.
- 이 상태의 configuration

router bgp 10
      neighbor 1.1.1.1 remote-as 10        <-- session을 맺기 위한 것(네이버를 맺기 위한 것)
      neighbor 1.1.1.1 update-source lo0       <-- session을 맺기 위한 것(네이버를 맺기 위한 것)
      neighbor 1.1.1.1 next-hop-self       <-- 정책을 위한 것
      
      address-family vpnv4
                neighbor 1.1.1.1 activate           
                neighbor 1.1.1.1 next-hop-self

      address-family ipv4 vrf B
                neighbor 200.1.1.1 remote-as 65000

      address-family ipv4 vrf A
                redistribute eigrp 20    <-- eigrp의 정보를 가지고 와야 하기 때문에 redi를 함

- bgp는 default로 ipv4만 전달함. 그래서 vpnv4 정보도 전달하기 위해서 address family도 세팅 함.
- global의 모든 정책은 ipv4에만 적용이 됨. ipv4에 대해서만 next-hop-self가 되는 것임.
- vpnv4에서는 next-hop-self를 주기 위해서는 address family 안에서 줘야 함.
- 고객의 vrf와 neighbor를 맺어야 함.
- activate명령어가 들어가야 서로 정보를 교환하는데, neighbor 명령어가 들어가면 자동으로 activate 이 설정됨
- vpnv4는 rt값은 전달해야 함.
- community값이 필요하기 때문에 send community 정보가 필요함.
- 그래서 neighbor가 선언되면 자동으로 send-community extended가 들어가며 삭제 안됨.
- 그런데, 나는 mpls vpn으로 사용하려고 함. 즉, ipv4테이블을 전달할 이유가 없음. 그래서 default로 ipv4 bgp가 동작되는게 싫음
- 이런 경우에 no bgp default ipv4-unicast라는 명령어 사용
- no bgp default ipv4-unicast를 하고 나면 ipv4에 대해서도 vpn 세팅하는 것과 동일하게 address-family ipv4에서 설정을 해줘야 함.

<정보가 나갈때...>

- 외부에서 고객한테 bgp로 정보를 전달받으면 -> bgp로 받은 정보를 vrf table에 넣어주고 -> vpnv4 address로 가지고 오면서 rd값이 추가가 됨. -> export rt값이 attatch 됨.
<정보가 들어올 때...>

- 외부에서 네트웤 정보가 오면 import rt 값을 확인한 후에 vrf 테이블에 넣어주고 -> ipv4에 넣어주기 위해서 rt, rd값이 떨어짐
<고객이 IGP를 돌릴 때>
고객하고 IGP를 돌리고 있을 때, 직접 vpnv4 테이블에 가지고 올 수 없기 때문에 vrf별로 default로 bgp가 동작됨 <-- 이것만 위와 다름.
igp ipv4->bgp ipv4로 redi되고, rd, rt가 붙어서 vpnv4에 전달된.


<RR>

내가 모든 정보를 본사와 통해 통신하겠다고 정함.
근데 RR이 중간에 생긴다면?
오른쪽 아래의 네트워크가 모든 곳에 전달이 됨.
이때 RD값이 모두 같다면? RR에서 같은 RD값 같은 ip대역이면 충돌 남.
그래서 RR이 존재하면 같은 회사라고 하더라도 서로 다른 RD값을 줘야 함.
- 서로 다른 RD값을 주기 위해서 ASN(앞에는 ASN : 뒤에는 site ID) 이나 route-id값(Ex. lo0)를 줌.

VRF는 서로 다른 테이블을 가지고 있는데, vrf 또는 글로벌 인터페이스의 address를 서로의 테이블에 넣어줄 때 같은 address라면 충돌이 됨.
그래서 vrf를 생성해서 interface를 할당해줄 때, 기존의 interface address가 떼어지기 때문에 새롭게 할당해주어야 함.

'네트워크' 카테고리의 다른 글

mpls 초보탈출 10차  (0) 2022.03.12
MPLS 초보탈출 9차  (0) 2022.03.06
MPLS 초보탈출 7차  (0) 2022.03.05
MPLS 초보탈출 6차  (0) 2022.02.16
MPLS 초보탈출 5차  (0) 2022.02.14