BGP
상위 문서: Network Layer
개요
BGP(Border Gateway protocol)은 수많은 AS들을 하나로 연결하는 역할을 하는 inter-AS 라우팅 프로토콜의 사실상의 표준이다.
역할
BGP의 역할을 이해하기 위해 하나의 AS와 그 안에 있는 임의의 라우터를 가정하자. 각 라우터는 forwarding table을 가지고 있으며, 이 테이블은 도착한 패킷을 어떤 출력 링크로 전송할지 결정하는 역할을 한다. 이때, 어떤 패킷의 출발지와 목적지가 동일한 AS 내에 속해 있다면, 해당 테이블의 항목은 AS 내부의 경로를 결정하는 intra-AS 라우팅 프로토콜에 의해 결정된다. 목적지가 반대로 AS 외부에 있다면, 이 경우에 BGP가 사용된다.
BGP에서는 패킷이 특정 목적지 주소로 라우팅되는 것이 아니라, CIDR prefix로 라우팅된다. 이때 각 CIDR prefix는 하나 이상의 subnet을 나타낸다. 예를 들어 임의의 패킷의 CIDR prefix는 138.16.68/22일 수 있으며, 이 경우 1024개의 인터페이스에 대한 IP 주소를 포함한다. 따라서, 라우터의 forwarding table은 (x, I)의 항목으로 구성되며, x는 prefix를 표현하고 I는 라우터의 인터페이스 번호를 표현한다.
BGP 프로토콜은 각 라우터에게 다음과 같은 기능을 제공한다:
- prefix reachability에 대한 정보를 이웃 AS로부터 얻는다.
- BGP는 각각의 subnet이 자신의 존재를 인터넷 전역에 "광고(advertise)"할 수 있도록 한다. 예를 들어 하나의 subnet이 "나는 여기 있어요!"라고 외치면, BGP는 인터넷 상의 모든 라우터가 이를 알게 한다.
- eBGP: 다른 AS와 연결된 라우터들[1] 간에 각 subnet의 reachability 정보를 교환하는데 사용되는 BGP 운용 방식이다.
- iBGP: 동일한 AS 내의 라우터들 사이에서 eBGP로부터 얻은 정보를 공유하는데 사용되는 BGP 운용 방식이다.
- 만약 BGP가 없다면, 각 subnet은 고립된 섬처럼 존재하며, 인터넷의 나머지와 연결되지 않는다.
- 어떤 prefix에 대한 최적의 경로를 설정한다.
- 하나의 라우터는 특정 prefix가 가리키는 subnet으로 가는 경로를 여러 개 가질 수 있다. 이 경우, 라우터는 이웃의 라우터들로부터 얻은 reachability에 대한 정보를 BGP 프로토콜을 통해 활용하여 자체적으로 최적의 경로를 설정한다.
- 이 경우, 최적의 경로를 결정하는 것은 단순히 shortest path 뿐만 아니라, 정치(policy)로부터도 영향을 받는다. 예를 들어, 한국에서 미국으로 향하는 패킷이 단순히 짧은 경로라고 해서 북한을 거쳐 간다는 것은 상상도 할 수 없다.
Advertising BGP Route Information
Figure 1과 같이 세 개의 AS인 AS1, AS2, AS3로 구성되어 있는 네트워크를 생각해보자. 모든 라우터들은 내부(internel) 라우터이거나, 게이트웨이(gateway) 라우터이며, AS1에는 1a, AS2에는 2a, 2c, AS3에는 3a가 게이트웨이 라우터이다. 이때, prefix x에 대한 정보를 모든 라우터에게 광고하는 과정을 고수준(higher-level)에서 살피면 다음과 같다:
- AS3이 AS2에 BGP 메시지를 보내며, 이 메시지는 "x는 AS3에 있다"(AS3 x)는 내용을 담는다.
- AS2는 AS1에 "x는 존재하며, AS2를 거쳐 AS3로 가면 된다"(AS2 AS3 x)는 메시지를 보낸다.
이런 방식을 통해 각 AS는 x의 존재와, x까지 이어지는 AS 경로도 알게 된다. 하지만, 이는 너무 단순화되어 있는 설명이며, 실제로는 각 AS 사이에서가 아니라, 라우터 수준에서 메시지가 송수신된다.
BGP에서는 라우터 쌍이 TCP 연결을 통해서 라우팅 정보를 교환되며, 교환되는 BGP 메시지이 사용하는 TCP 연결들을 통틀어 BGP 연결(connection)이라고 한다. 이때 두 AS에 걸친 BGP 연결은 eBGP 연결이라 하고, 동일 AS 내에서 이루어지는 BGP 연결은 iBGP라고 한다. 이는 figure 2에 잘 나타나 있다. 보통 서로 다른 AS의 게이트웨이 라우터를 직접 연결하는 링크마다 하나의 eBGP 연결이 존재하며, figure 2에는 c와 2a 사이, 그리고 2c와 3a 사이에 eBGP 연결이 존재한다. 또한 figure 2는 AS 내부의 모든 라우터 쌍마다 BGP 연결이 이루어진 일반적인 형태를 보여준다.[2] 이를 통해 prefix x에 대한 reachability에 대한 정보를 광고하는 과정을 아래와 같이 더 자세히 살펴볼 수 있다:
- 게이트웨이 라우터 3a가 eBGP 메시지 "AS3 x"를 게이트웨이 라우터 2c에 보낸다.
- 2c는 그 정보를 iBGP를 통해 AS2의 다른 모든 라우터들(2a 포함)에게 전달한다.
- 2a는 "AS2 AS3 x"라는 eBGP 메시지를 게이트웨이 라우터 1c에 보낸다.
- 1c는 iBGP를 통해 AS1 내의 모든 라우터에게 "AS2 AS3 x" 메시지를 전달한다.
이러한 과정을 통해 AS1과 AS2 내에 있는 모든 라우터는 x의 존재와, x로 가는 AS 경로를 알게 된다.
==HOT
실제 네트워크에서는, 어떤 라우터에서 특정 목적지로 가는 여러 경로가 있을 수 있다. 예를 들어 Figure 3는 기존 Figure 1에 1d에서 3d로 가는 물리적인 링크를 추가한 것이다. 이 경우 AS1에서 x로 가는 두 가지 경로가 존재한다. 하나는 1c를 통해 "AS2 AS3 x" 경로이고, 다른 하나는 1d를 통해 바로 "AS3 x" 경로이다. 이러한