BGP

개요

Border Gateway Protocol, 경계 관문 프로토콜은 라우팅 프로토콜의 일종으로, L3 계층에 위치한다.
인터넷에서 데이터를 전송하는데 가장 적합한 네트워크 경로를 결정하는 일련의 규칙이다.[1]
인터넷을 타고다니면서 가급적 효율적인 경로를 선택하는데 도움을 준다는 것이다.
가장 간단하게 요약하자면 라우터들이 자신이 속한 네트워크 경로를 주변 라우터에 전파하고 공유하는 프로토콜이다.

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

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

인터넷은 결국 패킷의 경로를 안내하는 라우터들의 연결로 이뤄져 있다.
이곳저곳 패킷이 들쑤시지 않도록, 효율적으로 갈 수 있도록 이 라우터 간의 연결을 관리하는 프로토콜이 라우팅 프로토콜이다.
라우팅 경로를 지정하는 방식에 따라 사람이 직접 설정하는 정적 라우팅, 경로를 알아서 결정하는 동적 라우팅이 있다.
[3]
동적 라우팅에서는 내부에 대한 건지 외부에 대한 건지를 기준으로 크게 두 가지로 나뉜다.
그리고 경로를 결정하는 기준에 따라서 또 두 가지로 또 분류되어 최종적으로 RIP, IGRP, OSPF, BGP 등의 프로토콜로 나뉘는 것이다.
(근데 BGP는 지금까지 이해한 바에 따르면 내부용으로도 사용 가능한 프로토콜이다.)

내외부가 무얼 말하는지 이해하기 위해 용어에 대해서 간략하게 이해해보자.

간단하게 IGP와 EGP의 차이가 정리된 표다.
Pasted image 20250108104526.png

Internal Gateway Protocol

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

Distance Vector

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

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

External Gateway Protocol

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

기능

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

특징

bgp 프로토콜은 몇 가지 특징을 가지고 있다.

Path Vector

하이브리드 경로 선택 방식으로, 위에 본 distance vector와 link state를 둘다 쓴다는 것이다.
다양한 정책이 들어갈 수 있어, policy based routing protocol이라고도 한다.

link state 방식이 컨버전스가 빨라서 좋다고 하나, BGP는 대규모 라우팅 정보 교환을 위해 하이브리드를 쓴다.
BGP는 여러 AS 간, 기업 간 사용하는 프로토콜이기에 여기에서 발생하는 문제는 곧 인터넷 단위 규모의 네트워크의 문제로 이어질 수 있다.
그래서 안정성과 신뢰성 확보가 중요하다.

동작 구조

BGP는 라우터들에 대해 설정하는 프로토콜로, 각 라우터는 동료(peer, neighbor) 개념을 사용해 자신과 연결된 라우터를 분류할 수 있다.
가령 A 라우터에서 B 라우터가 연결돼있다 할 때, 설정 상으로도 BGP 동료 설정을 해주어야 한다는 것이다.
C 라우터는 A 라우터에 바로 연결돼있지 않더라도 B라우터와 연결돼 있다면 A에서 C에 대해 동료 설정을 하는 것도 가능하다.
즉 홉을 건너뛰는 라우터 간에도 연결 설정이 가능하다는 것이다.
(연결 설정 자체는 수작업으로 해야 한다.)
BGP는 근본적으로 이 동료 간의 통신에 대한 설정을 하는 프로토콜이라 보면 된다.
이때 TCP 179 포트로 연결을 수립하며, 동료로 맺어지면 60초마다 keepalive 메시지로 상태를 확인한다.

오른쪽의 라우터가 자신의 AS의 경로를 광고하는 과정이다.[4]

AS1에는 경계에 해당하는 두 개의 라우터가 있고, 각각 AS2, AS3에 연결돼있다.
AS2가 경로를 광고하고, 이를 통해 AS1의 AS3로 향하는 라우터도 이 경로를 알게 된다.
그래서 이걸 또 AS3로 전파한다.
이때 점차 앞에 AS번호가 붙는 게 보이는데, 이를 통해 다른 곳에서 저 IP로 어떤 전달을 하고 싶다면 해당 AS들을 걸쳐야 한다는 것을 알 수 있다.

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

유형

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

규칙

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

관련 문서

EXPLAIN - 파생 문서

이름0related생성 일자

Dataview: No results to show for table query.

기타 문서

Z0-연관 knowledge, Z1-트러블슈팅 Z2-디자인,설계, Z3-임시, Z5-프로젝트,아카이브, Z8,9-미분류,미완
이름0코드타입생성 일자

Dataview: No results to show for table query.

# 참고 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 ↩︎