본문 바로가기
네트워크

MPLS 초보 탈출 1차

by Lauren X Ming 2022. 2. 13.

MPLS
- best path 알고리즘이 없음.
- 그래서 라우터 간에 라우팅 프로토콜이 있어야 함.
- mpls 기술을 적용하기 위해서는 link-state 라우팅 프로토콜만 가능함. ==> 그래서 라우터 간에 ospf/is-is로 맺음
---> 자기들끼리 라우팅 프로토콜을 돌리면 라우팅 테이블이 만들어짐.
- 이상태에서 MPLS가 동작되면 Label Information Binding 테이블이 생성(아래 테이블 생성과정 설명)
-> BGP 네트워크를 제외하고 모든 네트워크에 대해 Label 생성
-> 즉, OSPF/IS-IS 등으로 받은 정보에 대해 Label이 생성됨.
- 그 이후, 인터페이스에 LDP를 enable : 자기들끼리 hello packet를 던져서, (hello packet에는 transport address가 생성되어있음) transport address 끼리 tcp 세션을 맺고 Label 정보를 교환함.
-> 이렇게 되면, 어떤 라우터들이 자신의 neighbor가 어떤 label을 가지고 있는지 모두 알게 됨.
-> 이게 LIB 테이블이라고 함
- LIB 테이블도 CEF 스위칭이 동작하게 되면, data plane으로서 Label 기반으로 포워딩 하는 LFIB(Lable Forwarding Information Binding) 생성됨.
- 이건, Label / Action / NextHop으로 테이블 컬럼이 생성됨.
--> 내가 할당한 A라는 네트워크의 레이블이 17번이라면, 누군가 나에게 17번을 달고 보내면 나는 어떤 action을 취할 것인가에 대해 정의된 테이블
--> ex. 17번 달고 들어오면 18번쪽 next hop으로 보내주면 됨. 만약, 자기가 도착지점이라면, action은 label untag가 발생함.
--> label은 L2 / L3 header 사이에 붙음. 즉, MPLS는 L3 header를 볼 필요 없이 Label header만 보게 됨.
- Lable이 달린 패킷이 들어오면 LFIB 테이블이 처리하고, Label이 없는 패킷이 들어오면 FIB 테이블이 처리함

1번째 문제
- MPLS / IP 망의 경계선에 있는 애는?
- Best가 던져준 Label 정보는 FIB도 갖게 함.
- 즉, 처음에 일반 packet이 들어옴. (IP packet) --> FIB가 처리함. Best가 던져준 Label 정보가 FIB에 있기 때문에 Label을 달고 던짐 --> Label이 달려있기 때문에 다음 라우터는 그냥 LFIB가 처리함 --> 마지막에 Label이 untagged된다면, L3 header를 보고 FIB 테이블이 포워딩을 하게됨.
- 그런데,,,, 마지막 장비는 LFIB / FIB 테이블 모두 보는게 싫음. ㅠ.ㅠ(아래 PHP 기술 사용하면서 극뽁)
- 그래서,, direct connect 된 네트웤에 대해서는 전부 Label을 3번으로 할당해서 LIB에 저장함.
- 즉, A라는 네트워크를 a' 라우터가 connected로 가지고 있다면, Label을 3번을 달고 다른 라우터들에게 전달함.
- 3번은 Label을 떼는 의미로 간주함.(Label을 Pop 한다)
- 3번 Label로 전달받은 a' 옆의 b' 라우터는 A 네트워크를 전달할때, Label 3번을 보고 아예 Label을 붙이지 않고 보냄
- 이렇게 되면 a' 라우터는 처음 전달 받을 때부터, Label이 붙어있지 않아서 바로 FIB 테이블만 봄.
- 실제로는 untagged가 더 많이 사용됨..ㅎ.ㅎ

untagged VS Pop

- b' 라우터는 라우팅 테이블을 보고 Label 을 생성함.(LIB)
- a는 connected이기 때문에 Label을 3으로 할당
- LFIB 테이블은 ??
- b , c, d가 들어오면 untagged해라.
- a' 라우터의 LFIB는??
- a 라는 네트워크의 Label을 생성하여 LIB에 저장(Label은 20이라고 생각) -> b'라우터에서 A의 라벨 정보를 3으로 보낸것을 알고있는 상태...
- LFIB : 20번 달고 들어온거는 Pop 시켜서 b'으로 보내라.
- pop vs untagged
- Label을 여러개 붙일 수 있는데, Label이 여러 개 붙어있다면 그 중 하나만 떼는 것을 pop,
- 상대방에게 Label정보를 받지 못하면 (상대방이 그 Label을 할당하지 못한 상태이면), Label을 달고 보내면 상대방이 처리할 수 있을지는 미지수임. 그래서 상대방이 mpls를 동작하고 있는지 모르기 때문에 레이블을 다 떼어버림 ==> 이게 untagged


정통적인 라우팅 프로토콜
- ip header 존재 : src / dest IP를 확인하여, 라우팅 테이블을 lookup
- 라우터를 거칠 때마다, 독립적으로 항상 라우팅 테이블을 보고 처리를 해야 함.
MPLS
- best path 알고리즘이 없기 때문에, ip routing이 먼저 돌아야 함
- Label 기반으로 패킷을 포워딩해야하기 때문에 CEF switching이 반드시 동작해야함.
- MPLS는 Label을 기반으로 패킷을 포워딩
- Multiple Layer 3로 패킷을 스위칭 함 : 어떤 기술이든 Label로 변환만 할 수 있으면 패킷을 스위칭할 수 있음.
- 스스로 best path를 찾을 수 없기 때문에, 기존의 정통적인 destnation network과 정확하게 동일한 경로로 포워딩함.

라우팅 프로토콜 : 라우팅 프로토콜에 의해서 best path를 찾음
라우팅 테이블을 만든 후, LIB 테이블을 neighbor와 정보를 exchanged함.
RIB 테이블에 의해 FIB 테이블 생성 / LIB 테이블에 의해서 LFIB 테이블 생성
- IP packet으로 들어왔는데, FIB에 best가 던져준 label 정보가 있으면 바로 LFIB를 거치지 않고 바로 포워딩함
- LFIB 로 패킷이 들어왔는데 untagged 라면, FIB에 넘겨줘서 포워딩을 함

위에 그림으로 정리를 하자면,,, 이렇게...


LSR
- edge LSR : mpls 망의 마지막 단에 있는 라우터 == PE
- LSR : mpls의 코어에 있는 라우터 == P
다시 정리....untagged
첫 PE가 FIB 보고 전달 -> P가 LFIB를 보고 전달 -> 끝 PE가 LFIB를 보고 FIB를 보고 전달
pop
첫 PE가 FIB 보고 전달 -> P가 LFIB를 보고 pop을 해서 전달 -> 끝 PE가 FIB를 보고 전달
-> 즉, untagged이든 pop이든 PE에서만 라우팅 테이블을 보면 됨(FIB)
-> ip->mpls, mpls->mpls, mpls->ip 모든 곳으로 보낼 수 있는 애는 edge LSR임