OSPF는 intra-AS routing protocol이다. 즉, OSPF는 같은 AS 내에서 패킷을 라우팅하는 프로토콜인 것이다. 그런 반면 BGP는 inter-AS routing protocol로, 패킷을 여러 개의 AS를 거쳐 라우팅할 때 쓰는 인터넷 프로토콜이다. 이때, 여러 개의 AS를 거친다는 것은 AS들이 소통해야 하는데 이를 위해선 AS들이 동일한 inter-AS routing protocol을 써야 한다. 그렇기에 현 인터넷에선 모든 AS들이 동일한 inter-AS routing protocol을 쓰고 있는데, 그것이 바로 BGP이다.
Forwarding table은 (x, l) 형태의 entry로 구성되어 있다. 이때, x는 목적지, l은 link(interface nubmer)를 의미한다. 즉, (x, l)은 패킷이 x라는 특정 목적지로 가려고 할 때, l link로 가야한다는 의미이다.
OSPF이나 BGP 모두 라우팅 알고리즘으로써 라우터의 forwardig table을 결정한다. 특정 목적지로 가는 데 있어 최적의 경로를 파악하고, 그 경로를 바탕으로 다음에 어딜 가야하는지를 forwarding table에 작성한다. 이때, OSPF는 동일한 AS 내에 있는 목적지를 다루고 있기 때문에 forwarding table에는 구체적 목적지 주소를 적어놓는다. 그러나 BGP는 다른 AS에 있는 목적지로 패킷을 라우팅해야 하기 때문에 OSPF처럼 특정 목적지를 작성하지 않고 CIDR된 prefix를 작성한다. 각 prefix는 서브넷이나 서브넷 그룹을 가리킨다. 가령, BGP는 목적지를 138.16.68/22와 같은 형태로 작성하는데, 이는 1024개의 IP 주소를 가지고 있는 서브넷을 가리키고 있는 것이다. 그래서 BGP는 forwarding table에 (CIDR prefix, link) 형태의 entry를 작성한다.
BGP는 구체적으로 두 가지 기능을 제공하고 있다.
1. 주변 AS들의 prefix 정보 알아오기
BGP가 라우팅 정보를 전달하는 방식을 설명하기 앞서, AS에서의 라우터 종류와 BGP connection 종류에 대해 알 필요가 있다.
AS에서 라우터는 두 종류로 나뉜다.
한 쌍의 라우터들은 라우팅 정보를 TCP connection(port 179)을 통해 전달한다. 이 TCP connection을 통해 BGP 메시지도 보내는데, 이런 connection을 BGP connection이라고 부른다. 이런 BGP connection은 여러 개의 AS를 연결하는지에 따라 종류가 나뉜다.
서로 다른 AS를 연결하는 Gateway router들 사이에선 주로 한 개의 eBGP connection이 있으며, 위 이미지에선 1c-2a, 2c-3a 링크들에서 eBGP connection이 각각 있다고 생각하면 된다.
그러면 실제로 BGP 정보(prefix)를 다른 AS에 있는 라우터들에게 어떻게 전달하는가? AS3는 prefix x를 쓰고, 이 x 정보를 AS1과 AS2에게 전달하려는 시나리오를 가정해보자. 그럼 3a gateway router는 2c gateway router에게 eBGP 세션을 이용해 “AS3 x” 메세지를 보낸다. AS3의 prefix는 x라는 의미의 메세지이다. 그럼 2c는 AS2에 있는 모든 라우터들에게 iBGP를 이용해 똑같은 “AS3 x”를 보낸다. 2a gateway router는 그 메세지를 받고 1c gateway router에게 "AS2 AS3 x"(AS3는 prefix x를 쓰고 AS3를 가기 위해선 AS2를 거쳐야 한다의 메세지)를 보낸다. 그러고 나서 1c는 AS1 내 모든 라우터들에게 "AS2 AS3 x"를 보낸다. 이젠 AS1와 AS2의 모든 라우터들이 AS3의 존재를 알게 된 것이다.
BGP에서 최적 경로를 결정하기 전 BGP 관련 용어들을 알 필요가 있다.
BGP 용어들을 바탕으로 대표적인 BGP 라우팅 알고리즘인 hot potato routing 알고리즘에 대해 알아보겠다. 이 알고리즘은 현재 라우터에서 NEXT-HOP 라우터까지의 비용이 가장 적은 경로를 택한다. 즉 여러 개의 경로가 존재할 때, 경로 중 현재 라우터에서 NEXT-HOP 라우터까지의 비용이 가장 적은 경로를 최적의 경로라고 판단하는 것이다.
가령, 1b router에서 3d router로 간다고 했을 때, intra-AS routing 알고리즘을 바탕으로 3d까지 가는 경로 중 가장 가까운 NEXT-HOP 라우터(gateway 라우터)를 찾는다. 이때, 비용이 거쳐야 하는 링크 개수라 할 때, 1b에서 2a로 갈 것이다.
hot potato routing 알고리즘은 현재 라우터에서 다음 라우터까지의 최소 비용만 고려하기 때문에 그리디 알고리즘이라 할 수 있다.
BGP의 라우팅 알고리즘은 hot potato routing보다 복잡하지만 여전히 그 알고리즘 원리를 내포하고 있다. 만약 목적지까지의 경로가 하나면 BGP는 그 경로를 택하겠지만, 여러 개의 경로가 존재할 경우 다음과 같이 소거법으로 최적 경로를 결정한다.
IP-Anycast는 여러 서버에 같은 주소를 할당하는 기술이다. 이것은 동일한 기능을 하는 여러 서버를 가지고 있을 때, 패킷을 가장 가까운 서버로 전달하는 방식이다. 예를 들어, 여러 개의 DNS 서버가 같은 IP 주소를 가질 수 있다. 사용자가 DNS 쿼리를 보내면 가장 가까운 DNS 서버가 응답한다. 이런 IP-Anycast를 이용하면 서비스를 빠르고 안정적으로 제공할 수 있다.