Internet inter-AS routing: BGP
BGP
inter-AS routing으로 널리 사용되는 protocol이다. 전체 인터넷을 하나로 붙여주는 역할을 한다.
BGP는 두가지 타입이 있다.
- eBGP : 이웃 AS 간에 도달할 수 있는가 등에 대한 정보들을 이웃AS끼리 주고받는 것이다.
- iBGP : 한 AS 내부에서 어디에 갈 수 있는가 등에 대한 정보들을 내부에서 전파하는 것이다.
BGP를 통해서 인터넷 전체에 "나 여기 있어"라고 나의 존재에 대해 알릴 수 있다.
1c - 2a 와 2c - 3a 가 서로 메시지를 주고 받아서 연결을 만들었다. 이웃 AS간에 연결이 만들어졌는데, 이것을 만드는 것이 eBGP에서 하는 것이다.
1c 입장에서는 2a가 내게 연결되었다는 사실을 AS1 내부에 공유할 필요가 있다. 그래야 내부에서 외부로 나가는 어떤 데이터를 받았을 때 1c 라우터를 통해 밖으로 내보낼 수 있다는 것을 알 수 있기 때문이다. AS 내부에서 하는 것이 iBGP에서 하는 것이다.
BGP session : 두개의 BGP 라우터가 semi-permanent TCP connection을 통해서 서로 메시지를 교환하는 것. 이것을 통해 다른 destination으로 가는 경로를 advertising할 수 있다.
BGP를 "path vector"라고도 한다. 아래 예시를 보자.
X라는 네트워크가 3d에 붙은 상황이다. 그러면 3d는 X하고 붙었다고 iBGP를 통해서 내부에 broadcast한다. 3a가 이를 받고, 3a는 2c에게 AS3는 X하고 연결되어 있다고 알려준다. (AS3,X) 즉, 3a는 2c에게 X로 데이터를 forward할 수 있다고 약속하는 것이다.
Path attributes
내가 붙어있는 것에 대한 속성에 대해서 하나의 route를 형성하게 된다. 그래서 이 속성에는 두가지 종류가 있다.
1. AS-PATH : prefix advertisement하는 것을 통해서 AS들의 list가 붙는 것.
2. NEXT-HOP : 어떤 특정 내부의 AS 라우터가 그 다음 HOP AS로 간다는 정보.
Policy-based routing
어떤 route에 대한 advertisement를 gateway가 받았을 때, 이 path를 수용할 건지 policy를 가지고 결정할 수 있다. (이 prefix를 붙일지 안붙일지. 붙여서 알릴지 말지.) AS policy를 통해서 다른 이웃한 AS로 가는 path를 전달할 건지 결정하게 된다. (policy에 대해선 뒤에서 배울 것임)
BGP path advertisement
X가 AS3에 붙은 상황이다.
3a는 X와 연결되었다는 정보(AS3,X)를 2c에게 알려주고 2c는 이를 받는다. AS2는 AS2 policy를 가지고 이것을 받아서 X로 가는 경로를 AS2 내부에 퍼트릴지 말지 결정한다. 퍼트린다고 하면 AS2 routers는 AS3,X를 accept한다.
그러면 같은 policy를 가지고 2a는 이것을 다른 AS에게 보낼지 말지 결정한다. 결정되면은 바깥에 advertise를 한다. 그래서 AS2,AS3,X를 전파한다. 경로를 하나씩 붙여나가는 것이다. AS1은 X로 보내는 데이터는 우선 AS2로 보내면 되겠다고 알게 된다.
AS1에서 AS3로 가는 길이 있는 경우. 1c 입장에서는 X로 가는 경로를 AS2와 AS3로부터 받아 X로 가는 경로가 두개가 있다. AS2와 AS3로부터 정보를 받았다. 둘 중에 어느 경로로 보낼까? 1c는 어떤 경로를 선택해서 iBGP를 통해 내부에 알린다. 자세한 것은 뒤에서 배운다.
BGP message
BGP message는 TCP로 라우터들 간에 연결되어 있다. BGP message에는 네가지 타입이 있다.
- OPEN : TCP conntection을 open하는 메시지. 다른 라우터와 연결하게 되는 경우, 상호 인증을 하게 된다.
- UPDATE : 새로운 path에 대한 advertise를 업데이트라는 메시지를 통해 전달된다.
- KEEPALIVE : 업데이트가 없는 경우에 서로 주고받는게 없다면, 서로 살아있는지 죽어있는지 알 수가 없다. 그래서 서로 살아있다는 사실을 주기적으로 가끔 메시지를 보내서 알려준다.
- NOTIFICATION : 이런 메시지를 보냈는데 에러가 나거나, connection을 닫을 때 사용한다.
BGP & OSPF
BGP, OSPF가 적용됐을 때 forwarding table entries를 살펴보자.
1a, 1b, 1d는 전부 X로 가는 경로를 1c를 통해 알게 된다.(iBGP). 1d에서 OSPF를 통해 X로 가려면 1번 인터페이스로 가는 것이 기록되어 있다. 1a는 X로 가는 것은 2로 가면 된다는 table이 있다.
그 다음 경로 선택을 BGP에서는 어떻게 해줄까? 복수의 경로가 있는데 어느 경로를 선택할까. 이것은 여러가지 기술로 가능하다.
1. 어떤 policy를 가지고 결정한다. 내부 policy를 만들어서 이 규칙으로 결정한다.
2. 가장 가까운 AS-PATH를 통해 간다.
3, hot potato routing이라고 해서 자신의 AS를 기준으로 가장 빠른 경로로 결정되는 것.
4. 다른 추가적인 기준을 가지고 할 수 있다. 기타 등등..
Hot Potato Routing
AS1과 AS3로부터 X의 연결 정보를 받는 상황.
2d는 2a와 2c로부터 정보를 받아, 2d는 2a와 2c 양쪽으로 보내도 된다는 것을 알게 된다. Hot Potato Routing에서는 자신의 라우터를 기준으로 적은 cost의 길을 선택한다. 여기선 2a의 cost가 적으니 2a에게 보내게 된다. 그러면 최종 경로는 2d-2a-1c-3a-3d-X 가 된다.
뜨거운 감자를 손에 쥐면 빨리 내던지게 된다. 이것과 같은 원리로 2d도 빨리 내던져야 하는데, 일단 cost가 가장 적은 2a한테 던져버리는 것이다.
BGP : Policy
A는 w와 연결되어 있다는 것을 B,C에게 알려준다. (Aw). 그러면 B,C는 w한테 가기 위해선 A한테 가면 되겠다는 것을 알게 된다.
B는 BAw라는 것을 C한테 알려줄 수도 있는데, 이것을 advertise하지 않도록 정할 수 있다. B는 B의 customer만 서비스해주면 되는데, 내가 왜 남의 customer까지 라우팅 해 줄 필요가 없다는 policy를 가질 수 있다. 그래서 이 policy에 의해서 B는 전파를 하지 않는다.
그러면 C는 CBAw라는 path가 있는지 알지 못한다. 물리적으로 연결되어 있지만, 경로를 알지 못한다. B가 전파하지 않아도 라우팅에는 문제가 되지 않는다. C는 CAw를 알고 있기 때문이다.
policy는 inter-AS 간에 유효한 것이다. 자기를 통과하는 것에 대한 control을 어떻게 해줄것인지에 대해 inter-AS간에 policy를 통해서 control할 수 있다. intra-AS는 같은 서비스 사업자가 하기 때문에 이런 policy에 대해 필요가 없다.
inter-AS와 intra-AS routing이 구분되어 있기 때문에 scale문제. 즉 table size가 너무 커지는 것을 해결할 수 있게 되었다. hierarchical routing. 구분해서 라우팅 해놨기 때문에 업데이트가 되었을 때의 오버헤드를 줄일 수 있다.
performance 측면에서도 intra-AS는 내부에서 performace만 가지고 하면 된다. inter-AS는 performance는 모르겠고, policy로 결정한다. 어차피 inter-AS는 AS 간에 라우팅이기 때문에 performance를 같이 해줄 이유가 없다.
[참고]
Computer Networking A Top-Down Approach 7-th Edition / Kurose, Ross / Pearson
'IT > 네트워크' 카테고리의 다른 글
[ 네트워크 ] ICMP (0) | 2020.07.03 |
---|---|
[ 네트워크 ] SDN - (2) (1) | 2020.07.03 |
[ 네트워크 ] SDN 요약정리 (0) | 2020.06.08 |
[ 네트워크 ] Control plane의 형태 (0) | 2020.05.27 |
[ 네트워크 ] SDN (Software Defined Network) (0) | 2020.05.24 |
댓글