BGP

개요

Border Gateway Protocol.

라우팅 프로토콜의 일종으로, L3 계층에 위치한다고 보면 된다.
인터넷에서 데이터를 전송하는데 가장 적합한 네트워크 경로를 결정하는 일련의 규칙이다.[1]
인터넷을 타고다니면서 가급적 효율적인 경로를 선택하는데 도움을 준다는 것이다.

External Gateway Protocol(외부 게이트웨이 프로토콜)의 일종인데, 조금은 더 발전된 형태라는 듯(확실치는 않다).[2]

기능

라우터 간에 최적의 경로를 탐색한다.
그리고 연결 변경 사항 검색을 검색하거나, 정책을 관리하는데 사용된다.

기본 지식 - 라우팅 프로토콜의 종류와 용어

라우팅 프로토콜에 대해 아직 많이 아는 바가 없어, 간단하게 요약을 먼저 진행한다.
인터넷은 결국 패킷을 세상 곳곳에 흘러가게 하는 라우터들의 연결로 이뤄져 있다.
이곳저곳 패킷이 들쑤시지 않도록, 효율적으로 갈 수 있도록 이 라우터 간의 연결을 관리하는 프로토콜이 라우팅 프로토콜이다.
라우팅 경로를 지정하는 방식에 따라 사람이 직접 설정하는 정적 라우팅, 경로를 알아서 결정하는 동적 라우팅이 있으나, 우리네 세상은 자동화를 효율적으로 하는 방식으로 항상 진화한다!

라우터를 내부,외부로 나눌 수 있다.
라우터들은 계층적으로 이뤄졌다고 이해해도 무방할 것 같다.
먼저 용어에 대해서 간략하게 이해해보자.

Internal Gateway Protocol

IGP는 같은 영역, AS 내에서 라우팅을 결정하는 프로토콜이다.
여기에는 경로를 추적하거나 업데이트하는 방식에 따라 또 두 가지로 나뉜다.

Distance Vector

최단거리를 찾는데 집중하는 방식이다.
즉, 홉을 줄이는 것에 초점이 맞춰져 있다.
여기에서는 벨만 포드 알고리즘이 대표적이라고 한다.

상태 업데이트, 컨버전스를 신경쓴다.
최단 시간을 중시하는데, 다익스트라 알고리즘이 주로 사용된다고 한다.

External Gateway Protocol

EGP는 다른 영역 간의 라우팅을 결정한다.
EGP라는 이름의 프로토콜이 따로 존재했는데, 지금은 더 발전된 형태인 BGP만이 쓰인다고 보면 된다.

특징

Path Vector

하이브리드 방식인데, 위에 본 distance vector와 link state를 둘다 쓴다는 것이다.
후자가 컨버전스가 빨라서 좋다고 하나, bgp는 대규모 라우팅을 위해 하이브리드를 쓴다.
bgp의 문제는 대규모 네트워크의 문제로 이어지기에 안정성과 신뢰성 확보가 중요하다.
하이브리드 방식인데, 이게 왜 이유인지는 모르겠으나 그래서 path vector라고도 부른다고 합니다..
그리고 다양한 정책이 들어갈 수 있어, policy based routing protocol이라고도 한다.

동작 구조

피어링이라는 매커니즘을 쓴다.
라우터들이 대상이 되는데, 이때 특정 라우터를 BPG 피어, 혹은 스피커 라우터로 할당한다.
피어는 as의 엣지, 혹은 경계에 있는 디바이스이다.
이 피어가 하는 일은 이렇다.

IGP보다 컨버전스(정보 수렴, 종합 등의 작업) 속도가 느리지만, 대용량 라우터 정보를 교환
tcp 179 포트를 이용해 이웃을 맺는다.
라우터에 연결돼 라우팅 정보를 교환하는 인접 라우터는 이웃이라 칭해진다.
바로 연결된 놈들이 이웃이라고 생각하지만, 홉을 통해 연결되도 이웃이다.
tcp 세션을 기반으로 ip 주소로 이웃을 맺기에 가능한 방식이다.
달리 말해 ping만 된다면 이웃이 될 수 있다.
그러나 자동 탐지가 되는 건 아니라 수동으로 설정해줘야 한다.
이웃이 맺어지면 60초마다 keepalive메시지로 상태를 확인한다.

[4]
오른쪽의 as이 자신의 경로를 광고하는 과정이다.
as1에는 경계에 해당하는 두 개의 라우터가 있고, 각각 as2, as3에 연결돼있다.
as2가 경로를 광고하고, 이를 통해 as1의 as3로 향하는 라우터도 이 경로를 알게 된다.
그래서 이걸 또 as3로 전파한다.
이때 점차 앞에 as번호가 붙는 게 보이는데, 이를 통해 다른 곳에서 저 ip로 어떤 전달을 하고 싶다면 해당 as들을 걸쳐야 한다는 것을 알 수 있다.

근데 그림 상에서도 as 내에 여러 라우터가 있다.
그럼 어떤 경로를 통해 다른 as로 넘어갈 걸 아나?
이때는 Hot Potato Routing을 쓴다.
뜨거운 감자를 잡으면 헐레벌떡 던져버리듯이, next hop 기준으로 cost가 낮은 라우터로 일단 던져버린다.

유형

라우팅 되는 위치에 따라 두 가지로 나뉘는데, 실질적인 차이는 bgp 경로가 다른 피어로 전파되는 방식이다.

규칙

세 가지 조건이 충족돼야 bgp가 정상적으로 동작한다.

관련 문서

이름 noteType created
BGP knowledge 2025-01-08

참고

https://blog.naver.com/taeheon714/222384978033 이 블로그가 정리는 잘 돼있는 편 같은데, 내 수준에서 조금 어렵다.


  1. https://aws.amazon.com/ko/what-is/border-gateway-protocol/ ↩︎

  2. https://blog.naver.com/taeheon714/222384978033 ↩︎

  3. https://velog.io/@yh_lee/라우팅-프로토콜-RIP-BGP-OSFP ↩︎

  4. https://ddongwon.tistory.com/97 ↩︎