이전 정리글까지는 intra-AS 라우팅 프로토콜 중 하나인 OSPF까지 살펴보았다. 이번 글에서는 ISP 사이의 라우팅 방식인 BGP에 대해서 정리해 보려고 한다.
1. BGP(Border Gateway Protocol) 프롤로그
먼저, BGP에 대해서 간단히 정리해보려고 한다. BGP는 inter-domain 라우팅 프로토콜의 표준이다. 표준이라는 말은, 사용할지 말지는 네트워크 운영자의 선택에 달려 있지만, 현실적으로 현재 인터넷에서는 BGP를 사용하지 않는 곳이 거의 없다.
만약, BGP를 사용하지 않겠다는 것은, AS 내부에서 외부로 트래픽이 나갈 일이 없고, 외부에서 AS 내부로 트래픽이 들어올 일도 없다는 뜻이다. 이는 곧 해당 AS가 인터넷에 참여하고 있지 않다는 의미다.
BGP는 subnet이 자신의 존재와, 자신이 도달할 수 있는(=reachable) 목적지 정보를 전체 Internet에게 알릴 수 있도록 해주는 프로토콜이다. (즉, "내 위치는 여기고, 내가 도달할 수 있는 목적지는 여기고 어떻게 도달할 수 있는지 알려줄게")
BGP에는 AS에게 다음과 같은 두 가지 경로 정보 전달 수단을 제공한다
- eBGP: 외부 BGP로, 이웃한 다른 AS로부터 reachability 정보를 전달받는 프로토콜이다. 즉, AS 간의 경로 정보를 주고받을 때 사용된다.
- iBGP: 내부 BGP로, 같은 AS 내부 라우터들끼리 reachability 정보를 공유하는 프로토콜이다. 전달받은 외부 경로 정보와 내부 정책을 바탕으로 최적의 경로를 결정하게 된다.
이때 중요한 점은, BGP는 policy을 우선시하는 프로토콜이라는 점이다. 지금까지 정리한 대부분의 네트워크 프로토콜은 효율성, 속도, 최단 경로 등을 중심으로 설계되었지만, BGP는 정책에 따라 경로를 선택하거나 차단할 수 있는 구조를 가진다.
예를 들어, A,B,C,D 나라가 있는데, 지리상 최단경로는 D-A-B-C라고 하자. 이때, A와 B 나라 사이에 전쟁이 났다고 가정하자. 당연히 각 국가는 독립된 AS를 운영할 것이다.
전쟁 이전에는 B 나라는 A 나라를 통해 D 나라로 트래픽을 보냈을 것이고, A 나라는 반대로 C 나라로 트래픽을 보낼 때 B 나라의 네트워크를 경유했을 것이다. 하지만 전쟁이 발발하면, 양측은 상대 국가의 AS를 사용하지 않도록 경로를 차단할 필요가 생긴다. 이때 사용되는 것이 바로 BGP의 policy 설정 기능이다. A와 B는 서로 상대 AS를 거쳐가는 경로를 필터링하거나 광고하지 않도록 설정할 수 있고, 그 결과 트래픽은 다른 경로(C-D 등)로 우회하게 된다.
다음 그림은 eBGP와 iBGP가 연결되어 있는 상태의 그림이다.
.

이때, 1c, 2a, 3a는 각각 gateway 라우터로, eBGP와 iBGP 모두가 동작한다.
2. Basic BGP
이제 본격적으로, BGP가 어떻게 동작하는지 정리해 보려고 한다.
BGP는 session 기반으로 동작하는데, 두 개의 BGP 라우터가("peer"라고 한다) BGP 메세지를 semi-permanent TCP 연결(연결해 놓고 특별한 경우 없으면 close를 안하는 상태)을 통해 주고 받는다.
다음 예시를 한 번 살펴보자.

위 그림에 대해서 설명하면, AS 3 semi-permanet TCP를 통해 AS 3는 “내가 목적지 X에 도달할 수 있다”는 BGP 메세지를 AS2에게 전달한다. 즉, AS3는 AS2에게 "목적지 X로 가는 datagram이 나를 통해 전달될 수 있다"는 것을 약속한다.
즉, 위에서 볼 수 있듯이, BGP 메세지는 경로를 광고한다. 이 광고 메세지는 prefix + attributes로 이루어 져있는데,
- prefix : 목적지 정보
- attributes:
- AS-PATH: 목적지까지 가기 위해서 AS들의 path 리스트(위의 예시로 들면, AS2는 AS1에게, AS2-AS3-X로 광고할 것이다.)
- NEXT-HOP: 다음 경로를 책임지는 router의 IP 주소. 보통 외부 AS에서 온 경로라면, 해당 경로로 가기 위한 gateway router를 의미한다. (위 예를 들어, 목적지 X로 가는 경로가 두 개(AS3 경유, AS4 경유)가 존재할 경우, AS2는 각각의 NEXT-HOP 정보를 비교해 AS4를 통해 갈지, AS3를 통해 갈지를 결정할 수 있다. 정책에 따라 다르지만, 보통 PATH 경로가 짧은 경로를 선택한다.)
추가적으로, BGP는 policy-based routing을 기반으로 한다. 이는 단순히 shortest-path(최단 경로)를 선택하는 것이 아니라, 관리자가 설정한 정책(policy)에 따라 경로를 선택하거나 거부할 수 있다는 뜻이다.
예를 들어 앞서 설명한 전쟁 중인 A-B 국가 상황도 BGP의 정책 기반 경로 선택의 대표적인 사례다. 또한 위의 그림처럼, 어떤 경로로 X에 도달할 수 있더라도, AS2 관리자가 특정 경로를 사용하지 않기로 policy를 설정했다면, 해당 경로는 무시되고 다른 경로가 선택될 수 있다.
다음은 BGP의 메세지에 대해서 정리해 보려고 한다. BGP는 BGP 메세지를 통해 peers끼리 TCP connection을 통해 정보를 주고 받는다고 했다. 이 BGP 메세지에는 4가지 종류가 있다.
- OPEN : 보통, semi-permanent TCP 연결이지만, 새로운 AS가 생겼을 경우, TCP 연결 설정을 하기 위한 메세지이다.
- UPDATE : 새로운 path를 광고하거나 오래된 path를 버린다.
- KEEPALIVE : TCP connection을 UPDATE 메세지가 없는 경우에도 끊기지 않게 하기 위해 주기적으로 전송되는 메세지다.(또는 OPEN 메세지에 대한 ACK 요청으로도 쓰인다.)
- NOTIFICATION : 이전 메세지에 대한 error를 보고하거나 연결을 닫기위한 메세지이다. (잘못된 메세지 형식 또는 인증 실패, 또는 이전 메세지 경로에 트래픽이 몰렸을 때 더 이상 보내지 말라고 하기 위해 보내는 메세지 등)
그럼, 이 BGP는 forwarding table을 어떻게 작성할까? 다음 예시를 통해 한 번 살펴보자

AS1에 목적지 X에 대한 정보가 두 가지 들어왔고, AS1의 policy에 따라 path길이가 짧은 AS3,X를 택했다고 가정하자. 그렇다면 이때, AS1의 1d의 router에 forwarding table은 어떻게 작성되었을까? 다음 그림처럼 작성될 것이다.

먼저, OSPF(link-state) intra-domain routing을 통해 1c로 가기 위해서는 interface 1로 나가야 한다는 정보가 적힐 것이다.
그 다음으로, 1d는 iBGP를 통해 1c가 가지고 있는 정보(AS3,X)를 전달받아, X로 가기 위해서는 1c를 거쳐야 한다는 경로 정보를 기반으로 interface 1로 나가야한다는 정보가 적힐 것이다.
이때까지, BGP와 OSPF는 intra와 inter, 즉 내부와 외부 AS로 프로토콜을 구분해서 사용했다. 그 이뉴는 뭘까? 다음 3가지 관점에서 평가해 보자.
- policy:
- inter-AS : 앞서 반복해서 강조했듯이, policy를 중요하게 생각한다.
- intra-AS : 하나의 관리자가 존재하기 때문에 policy의 영향을 상대적으로 덜 받는다.(OSPF의 최단 경로 프로토콜이 사용되는 이유)
- scale:
- inter-AS와 intra-AS로 나누면, 확장성 측면에서도 유리하다. 계층적 구조로 나누어서 사용했기 때문에, 전 세계의 라우팅 정보를 한 번에 정리해서 사용하는 경우보다 table size와 update 트패픽을 줄일 수 있다.
- performance:
- inter-AS : policy>>>performance
- intra-AS : performance에 집중
3. Hot Potato Routing
누군가가 손에 방금 삶은 감자, 아주 뜨거운 감자를 손에 쥐어줬다면 식탁에 빨리 내려놓거나, 또는 다른 사람에게 빠르게 전달하고 싶을 것이다. 즉, 손에서 빨리 뜨거운 감자를 빠르게 벗어나게 해야된다는 것이다.
Hot potato routing은 위의 아이디어를 기반으로 만들어진 라우팅 방식이다.
다음 그림을 한 번 살펴보자.

위 그림을 설명하면, AS2 내부에서는 OSPF를 통해 각 링크의 비용(link cost)이 계산되었고, 라우터 2d는 iBGP를 통해 2a와 2c를 거쳐 목적지 X에 도달할 수 있다는 경로 정보를 이미 알고 있는 상태이다.
이때, 2d의 관점에서 생각해보면, path길이가 짧은 AS3를 통해 X에 도달하는 경로가 보통의 경우이다. 그렇지만, hot potato 방식은 다르다.
Hot poatato 라우팅 방식으로 이루어진다면, local link-cost까지 고려해서 link-cost가 짧은 경로로 빠르게 전송한다. 즉, 2d는 AS hops로 가는 X가 더 많아도 local link-cost가 높은 2c 보다는 2a로 통하는 path를 택한다는 것이다. 즉, AS 내부에서는 트래픽을 오래 가지고 있지 않고, 가능한 빨리 외부 AS로 넘기려는 라우팅 방식이다.
4. BGP Achieving Policy via Advertisements
다음과 같은 상황을 가정해보자.

그림에 대해 설명하면, A,B,C는 ISP이고, w,x,y는 각각 연결된 ISP의 고객들이다.
ISP들은 오직 본인들의 customer들에게만 서비스를 제공하고 싶을 것이다. 그런데, 아래 두 가지 상황처럼 원치 않는 path가 형성되는 문제가 발생할 수 있다.
- 첫번째 상황
- A가 w로 가기 위해서는 본인을 거쳐야 한다고 B와 C에게 광고한다.
- B는 C에게 w로 가기 위해서 B-A-w라는 path를, C는 B에게 w로 가기 위해서 C-A-w라는 path를 또 광고한다.
이때, 만약, y에서 w로 가는 트래픽을 전송한다고 했을 때, C는 C-A로 바로 갈 수 있는 path가 있음에도 불구하고, C-B-A라는 path를 택할 수도 있다. 반대로 w에서 y로 가는 트래픽을 전송한다고 했을 때도 마찬가지이다.
그렇지만 이때, w와 y 모두 B의 customer가 아니지만, B를 경유하게 된다. 이는 B 입장에서 무료 서비스를 제공하는 것과 마찬가지라는 것이고, B가 손해를 보는 구조이다.
- 두번째 상황
- 네트워크 설정 오류로, C에서 B로 가는 트래픽 또는 B에서 C로 가는 트래픽이 x경유하게 되는 경우
이 경우는, x가 목적지가 아니지만, 단순히 경유지로 사용된다는 것이다. x는 돈을 주고 ISP B와 C를 사용하고 있는데 자신의 트래픽도 아닌 ISP 간 트래픽에 자신의 자원이 사용되는 말도 안되는 상황이다.
따라서 이 경우에는 B>C/C>B로 가는 트래픽은 본인은 거치지 않게 정책(policy)을 반드시 적용해야 한다.
5. BGP 경로 설정
이제, BGP가 경로 설정을 어떻게 하는지 정리해 보겠다.
만약, 목적지까지, 2개 이상의 AS-path가 주어졌다면, 어떤 path를 사용할지 우선순위는 다음과 같다.
- 현재 사용하고 있는 정책 1순위로 사용(보통 모든 AS-PATH가 같은 정책을 갖는 경우가 많아 다음 기준으로 넘어간다.)
- AS-PATH가 가장 짧은 것을 택한다.
- OSPF link-cost가 짧은(즉, 제일 가까운) NEXT-HOP 라우터(=hot potato routing)
- 추가적인 정책(보통 이 단계까지 오는 경우는 많지 않다.)
'학교공부 > [컴퓨터 네트워크]' 카테고리의 다른 글
| [컴퓨터 네트워크] - Network Layer_OSPF (1) | 2025.06.08 |
|---|---|
| [컴퓨터 네트워크] - Netowrk Layer_Distance vector (1) | 2025.06.07 |
| [컴퓨터 네트워크] - Network Layer_link-state (0) | 2025.06.07 |
| [컴퓨터 네트워크] - Network Layer_Control Plane (0) | 2025.06.06 |
| [컴퓨터 네트워크] - Network Layer_Middleboxes (0) | 2025.06.06 |