본문 바로가기
네트워크

5.4 인터넷 서비스 제공업자(ISP) 간의 라우팅: BGP

by 학식러 2023. 4. 8.

 

패킷이 여러 AS를 통과하도록 라우팅할 때,

자율 시스템 간 라우팅 프로토콜(inter-autonomous system routing protocol)이 필요하다.

 

통신하는 AS들은 같은 AS 간 라우팅 프로토콜을 수행해야만 한다.

 

실제로 인터넷의 모든 AS는 경계 게이트웨이 프로토콜(Border GateWay Protocol, BGP)을 사용하며,
이는 거리 벡터 라우팅과 같은 줄기에서 나왔다고 볼 수 있는 분산형 비동기식 프로토콜이다.

 

 

5.4.2 BGP 경로 정보 알리기

 

아래의 단순한 네트워크는 3개의 자율 시스템 AS1, AS2, AS3를 가지며, AS3는 주소 프리픽스가 x인 서브넷을 포함한다.

 

 

-게이트웨이 라우터(gateway router) : 

AS의 경계에 있는 라우터

다른 AS들에 있는 하나 또는 여러 개의 라우터와 직접 연결된다.

ex) AS1의 라우터 1c

 

-내부 라우터(internal router) : 

자신의 AS 내에 있는 호스트 및 라우터와만 연결된다.

ex) AS1의 라우터 1a, 1b, 1d

 

 

-외부 BGP(external BCP, eBGP) 연결 : 

2개의 AS를 연결하는 BGP 연결

 

-내부 BGP(internal BGP, iBGP) 연결 : 

같은 AS 내의 라우터를 연결하는 BGP 연결

 

 

위 예시에서 프리픽스 x에 대한 도달 가능성 정보를 AS1과 AS2의 모든 라우터에게 알리는 작업을 생각해보자.

 

아래의 과정이 완료되면 AS1과 AS2의 각 라우터들은 x의 존재와 x로 향하는 AS 경로를 알게 된다.

 

1) 먼저 게이트웨이 라우터 3a는 게이트웨이 라우터 2c에게 ‘AS3 x’라는 eBGP 메시지를 보낸다.
(’x가 존재하고 AS3 내에 있다’는 의미)

 

2) 게이트웨이 라우터 2c는 iBGP 메시지 ‘AS3 x’를 게이트웨이 라우터 2a를 포함한 AS2 내부의 모든 라우터에게 전송한다.

 

3) 게이트웨이 라우터 2a는 eBGP 메시지 ‘AS2 AS3 x’를 게이트웨이 라우터 1c에게 보낸다.
(’x가 존재하고 x에 도달하기 위해서는 먼저 AS2를 통과하고 그 후 AS3으로 갈 수 있다’는 의미)

 

4) 마지막으로, 게이트웨이 라우터 1c는 iBGP를 사용하여 AS1 내의 모든 라우터에게 메시지 ‘AS2 AS3 x’를 전달한다.

 

 

 

아래 그림은 라우터 1c에서 3a로 연결되는 물리적인 링크를 추가한 것이다.

 

이 경우에 AS1에서 x로는 2개의 경로가 존재한다.

 

1) 라우터 2a를 통과하는 경로 ‘AS2 AS3 x’

 

2) 라우터 3a를 통과하는 새로운 경로 ‘AS3 x’

 

 

5.4.3 최고의 경로 결정

 

BGP 관련 용어들

 

-라우터가 BGP 연결을 통해 주소 프리픽스를 알릴 때 몇몇 BGP 속성(attribute)을 함께 포함한다.

-BGP의 용어로는 프리픽스와 그것의 속성 경로(route)라고 한다.

-AS-PATH 속성 : 

1) 알림 메시지가 통과하는 AS들의 리스트를 담는다.

프리픽스가 어떤 AS에 전달되었을 때 그 AS는 자신의 ASN을 AS-PATH 내 현재 리스트에 추가한다.

ex) 위 그림에서 AS1부터 X까지 2개의 경로 : AS-PATH 'AS2 AS3' , AS-PATH 'AS3'

 

2) 메시지의 루프를 감지하고 방지하기 위해 활용한다.

어떤 라우터가 자신의 AS가 경로 리스트에 포함되어 있는 것을 발견하면 그 알림 메시지를 버린다.

 

-NEXT-HOP 속성 : 

AS-PATH가 시작되는 라우터 인터페이스의 IP 주소

 

예시 그림

 

AS1에서 AS2를 통과하여 x로 가는 ‘AS2 AS3 x’ 경로의 NEXT-HOP 속성은 라우터 2a의 왼쪽 인터페이스의 IP 주소다.

 

AS1에서 AS2를 우회하여 x로 가는 ‘AS3 x’ 경로의 NEXT-HOP 속성은 라우터 3d의 맨 왼쪽 인터페이스의 IP 주소다.

 

 

즉, AS1의 각 라우터는 프리픽스 x로 가는 2개의 BGP 경로를 알게 된다.
라우터 2a의 맨 왼쪽 인터페이스의 IP 주소; AS2 AS3; x
라우터 3d의 맨 왼쪽 인터페이스의 IP 주소; AS3; x

 


NEXT-HOP 속성은 AS1에 속하지 않는 라우터의 IP 주소이다.

그러나 이 IP 주소를 포함하는 서브넷이 AS1에 직접적으로 연결된다.

 

 

1. 뜨거운 감자 라우팅(hot potato routing)

 

가능한 모든 경로 중, 경로 각각의 시작점인 NEXT-HOP 라우터까지의 경로 비용이 최소가 되는 경로를 선택한다.

-라우터 포워딩 테이블에 AS 외부의 목적지를 추가하는 과정

 

여러 게이트웨이를 통해 서브넷 x에 도달할 수 있다는 사실을 AS 간 프로토콜로부터 알게 된다.

 

각 게이트웨이까지의 최소 비용 경로를 정하기 위해 AS 내부 프로토콜을 통해 얻은 라우팅 정보를 이용한다.

 

뜨거운 감자 라우팅: 가장 적은 비용의 게이트웨이를 선택한다.

 

포워딩 테이블로부터 최소 비용 게이트웨이로의 인터페이스 I를 결정한 후 포워딩 테이블에 (x, I)를 추가한다.

 

예시 그림

예시)

 

1) 라우터 1b는 주소가 x로 시작하는 서브넷으로 가는 2개의 BGP 경로를 안다.

 

2) 경로 각각의 시작점인 NEXT-HOP 라우터까지의 경로 비용이 최소가 되는 경로를 찾는다.

라우터 1b는 NEXT-HOP 라우터 2a와 3d 각각에 대해 최소 비용을 가진 AS 내부 경로를 찾기 위해 AS 내부 라우팅 정보를 조사한다.

 

3) 이들 최소 비용 경로 중에서도 가장 적은 비용을 가진 경로를 선택한다.

 

 

비용을 거쳐가야 하는 링크의 수로 정의하면,

 

라우터 1b에서 라우터 2a까지의 최소 비용 : 2

라우터 1b에서 라우터 3d까지의 최소 비용 : 3

 

따라서 라우터 2a가 선택된다.

 

4) 라우터 1b는 자신의 (AS 내부 알고리즘에 의해 설정된) 포워딩 테이블을 관찰하여 라우터 2a로 가기 위한 인터페이스 I를 찾아내고, 엔트리 (x, I)를 자신의 포워딩 테이블에 추가한다.

 

 

기본 아이디어는 라우터가 목적지까지의 경로 중 자신의 AS 바깥에 있는 부분에 대한 비용은 신경 쓰지 않고
최대한 신속하게(가능한 한 최소의 비용으로) 패킷을 자신의 AS 밖으로 내보내는 것이다.

 

 

2. 경로 선택 알고리즘

 

실제로 BGP는 뜨거운 감자 라우팅을 포함하는 더 복잡한 알고리즘을 사용한다.

 

 

하나의 목적지에 대해 2개 이상의 경로가 존재한다면 BGP는 하나의 경로가 남을 때까지 다음의 제거 규칙을 계속 수행한다.

 

 

1. 지역 선호도의 값은 온전히 AS 네트워크 관리자에 의한 정책적인 결정이다.

최고 지역 선호 값을 가진 경로가 선택된다.

2. 최고 지역 선호 값을 가진 경로가 여러 개 있다면 이들 중에서 최단 AS-PATH를 가진 경로가 선택된다.

3. (같은 최고 지역 선호 값 및 같은 AS-PATH 길이를 가진) 모든 남은 경로들에 대해 뜨거운 감자 라우팅을 수행한다.

4. 만일 아직도 하나보다 많은 경로가 남아 있다면 라우터는 BGP 식별자를 사용하여 경로를 선택한다.

 

 

5.4.5 라우팅 정책

 

라우터가 목적지까지의 경로를 선택하려고 할 때
AS 라우팅 정책은 최단 AS-PATH나 뜨거운 감자 라우팅 등의 다른 모든 고려사항보다 우선시된다.

 

아래 그림에서는 A, B, C, W, X, Y 이렇게 6개의 자율 시스템(AS)이 서로 연결되어 있다.

 

-W, X, Y 사용자 접속 ISP

-A, B, C 백본 제공자 네트워크 : 

트래픽을 서로에게 직접 보낸다.

그들의 사용자 네트워크에 완전한 BGP 정보를 제공한다.

 

 

W와 Y는 명백히 접속 ISP다.

X는 각기 다른 두 제공자를 통해 네트워크의 다른 부분들과 연결되어 있으므로 다중 홈 접속 ISP(multi-homed access ISP)라고 한다.

 

X가 B와 C간 트래픽을 전달하는 것을 방지하는 것은 BGP 경로의 알림 방식을 제어하는 것으로 가능하다.

즉, X는 이웃인 B와 C에게 자기 자신을 제외하고는 다른 어떤 목적지로도 경로가 없다고 알리는 것이다.
(X가 Y까지 가는 XCY라는 경로를 알고 있더라도 이 경로를 B에게 알리지 않음)

따라서 B는 X가 Y로의 경로를 갖고 있음을 모르기 때문에 C 또는 Y로 가야 하는 트래픽을 X에게 절대 전달하지 않을 것이다.

 

 

서비스 제공자 네트워크 B는 (A로부터) A가 W까지의 경로 AW를 갖고 있음을 알게 되었다고 가정하자.

그러면 B는 경로 AW를 자신의 라우팅 정보 테이블에 기록하고,
자신의 고객인 X가 B를 통해 W로 갈 수 있음을 알게 하기 위해 경로 BAW를 X에게 알리길 원할 것이다.

 

하지만 B는 C에게도 BAW 경로를 알려야 할까?

만약 그렇게 한다면, C는 해당 경로를 통해 W까지 트래픽을 보낼 수 있게 되는데, (C->B->A->w)
A, B, C가 모두 백본 제공자라면 B는 당연히 A와 C 사이의 트래픽을 전달하는 짐을 져서는 안 된다고 생각할 것이다.

 

현재는 백본 ISP들 사이의 경로를 결정하는 방법에 대한 공식적인 표준은 없지만,

상업적 ISP들이 따르는 대략적인 규칙은 ISP 백본 네트워크를 통해 흐르는 트래픽은 해당 ISP의 고객 네트워크를 출발지로 하거나 목적지로 해야 한다는 것이다(또는 둘 다).

 

 

-왜 AS 간 라우팅과 AS 내부 라우팅 프로토콜이 다를까?

 

1) 정책 : 

 

AS 간 라우팅은 정책 이슈가 지배한다.

 

반면, 하나의 AS 안에서는 모든 것이 동일한 관리 통제하에 있으므로 정책 문제는 경로 선택에 그리 중요하지 않다.

 

2) 확장성 : 

 

AS 간 라우팅에서 수많은 네트워크로, 또는 네트워크 간 경로 설정을 처리하기 위한 라우팅 알고리즘과 자료 구조의 능력은 매우 중요한 문제다.

 

반면, 한 AS 내에서는 확장성이 중요하지 않다.

하나의 ISP가 너무 커지면 이를 2개의 AS로 분리하고, 이 새로운 두 AS 사이에서 AS 간 라우팅을 수행할 수 있다. (OSPF가 하나의 AS를 여러 영역으로 나눔으로써 계층을 만드는 것을 허용함)

 

3) 성능 : 

 

AS 간 라우팅은 정책 지향형이므로 사용하는 라우터의 품질(e.g., 성능)은 부수적인 관심사에 지나지 않는다.

 

단일 AS에서는 이러한 정책의 고려가 중요하지 않으므로, 경로의 성능 수준에 좀 더 초점을 두고 라우팅을 한다.

 

댓글