BGP
개요
Border Gateway Protocol.
라우팅 프로토콜의 일종으로, L3 계층에 위치한다고 보면 된다.
인터넷에서 데이터를 전송하는데 가장 적합한 네트워크 경로를 결정하는 일련의 규칙이다.[1]
인터넷을 타고다니면서 가급적 효율적인 경로를 선택하는데 도움을 준다는 것이다.
External Gateway Protocol(외부 게이트웨이 프로토콜)의 일종인데, 조금은 더 발전된 형태라는 듯(확실치는 않다).[2]
기능
라우터 간에 최적의 경로를 탐색한다.
그리고 연결 변경 사항 검색을 검색하거나, 정책을 관리하는데 사용된다.
기본 지식 - 라우팅 프로토콜의 종류와 용어
라우팅 프로토콜에 대해 아직 많이 아는 바가 없어, 간단하게 요약을 먼저 진행한다.
인터넷은 결국 패킷을 세상 곳곳에 흘러가게 하는 라우터들의 연결로 이뤄져 있다.
이곳저곳 패킷이 들쑤시지 않도록, 효율적으로 갈 수 있도록 이 라우터 간의 연결을 관리하는 프로토콜이 라우팅 프로토콜이다.
라우팅 경로를 지정하는 방식에 따라 사람이 직접 설정하는 정적 라우팅, 경로를 알아서 결정하는 동적 라우팅이 있으나, 우리네 세상은 자동화를 효율적으로 하는 방식으로 항상 진화한다!
라우터를 내부,외부로 나눌 수 있다.
라우터들은 계층적으로 이뤄졌다고 이해해도 무방할 것 같다.
먼저 용어에 대해서 간략하게 이해해보자.
- Autonomous System
- 하나의 네트워크 관리자에 의해 관리되는 라우터 집단.
- 자율 시스템, 관리 도메인
- 허브나 스위치로 확장이 되었든 어떻든 간에, 라우팅을 통해 나가도 되지 않는, 같은 대역 내의 네트워크라고 나는 이해했다.
- 프로토콜마다 이름과 개념이 조금씩은 다른 듯하다.
- 한 AS에는 ASN, 망식별 번호가 또 부여된다.
- AS는 65000개 정도 사용되며, 이중 64512~65534가 사설 AS, 또 65535는 예비용으로 사용된다.
- BGP의 AS 번호는 IANA에서 관리되며 또 국가 별로 AS 번호를 할당하는 KISA가 있다.
- 3대 통신사 KT, SK, LG는 9659, 10059, 9318이라고 한다.
- Hop
- 라우터를 몇 개나 지나가는지를 나타내는 용어
- 라우터를 두 개 걸쳐서 패킷이 전달됐으면 홉이 2인 것이다.
- 컨버전스
- 네트워크 변화, 상태 업데이트를 하는 일련의 동작을 말한다.
[3]
동적이니 방식에서도 크게 두 가지로 나뉜다.
간단하게 IGP와 EGP의 차이가 정리된 표다.
- 네트워크 변화, 상태 업데이트를 하는 일련의 동작을 말한다.
Internal Gateway Protocol
IGP는 같은 영역, AS 내에서 라우팅을 결정하는 프로토콜이다.
여기에는 경로를 추적하거나 업데이트하는 방식에 따라 또 두 가지로 나뉜다.
Distance Vector
최단거리를 찾는데 집중하는 방식이다.
즉, 홉을 줄이는 것에 초점이 맞춰져 있다.
여기에서는 벨만 포드 알고리즘이 대표적이라고 한다.
- Routing Information Protocol
- 최소 홉을 파악하여 라우팅
- 이 홉을 기준으로 거리를 재는 방식이다.
- 최대 카운트가 15로 짧아서 IGP로 사용된다.
- udp 세그먼트에 캡슐화되어 있다.
- 홉만 사용하니 실제 속도가 고려되지 않는다.
- 30초마다 데이터를 업데이트한다.
Link-State
상태 업데이트, 컨버전스를 신경쓴다.
최단 시간을 중시하는데, 다익스트라 알고리즘이 주로 사용된다고 한다.
- Open Shortest Path First
- 최저 시간(cost)을 기준으로 최적 라우팅 경로를 설정한다.
- SPF(최단 거리 우선 알고리즘)을 기반으로 라우팅 테이블을 생성한다.
- 여기에서는 Area 개념을 이용해 한 AS 안에서도 네트워크를 작은 영역으로 나눠 효율적으로 관리한다.
- RIP와 다르게 상태 변화가 있을 때 바로 Flooding을 해서 컨버전스가 빠르다.
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 경로가 다른 피어로 전파되는 방식이다.
- 외부 - eBGP
- 외부 피어에서 학습한 경로는 모든 피어에 다시 알려진다.
- 내부 - iBGP
- 내부 피어에서 학습한 경로는 모든 외부 피어에만 다시 알려진다.
- 이건 아래 규칙에서 보면 왜 이리 되는지 알 수 있다.
규칙
세 가지 조건이 충족돼야 bgp가 정상적으로 동작한다.
- BGP Split Horizon(ibgp 속 3개의 라우터 간)
- ibgp에서 라우터 간 루핑을 방지하기 위한 조건
- 같은 정보를 지네끼리 계속 주고받지 못하게 하고자 하는 것이다.
- ibgp로 광고받은 네트워크는 ibgp로 광고하지 못한다.
- 같은 as 안에 라우터가 3개 있다고 쳤을 때, a가 b에게 c의 정보를 줬다면, b는 이렇게 받은 정보를 광고하지 않는다.
- link state는 목적지까지의 모든 경로를 알고 있어서 이게 필요 없지만, distance vector에서는 홉만 따지기에 이게 필요하다.
- 이를 위해 세가지 방식(full mesh, route reflector, confederation)이 있다고 하나, 여기는 일단 패스
- ibgp에서 라우터 간 루핑을 방지하기 위한 조건
- BGP Next Hop(2 as 간)
- next hop은 목적지로 가기 위한 다음 라우터를 말하는데, 일반적으로는 연결된 라우터를 말한다.
- 근데 이웃으로 설정되면 이걸 next hop으로 변경할 수도 있다.
- BGP 동기화 법칙
- 다른 라우터로부터 전송된 네트워크 정보를 자신의 라우터에 등록하는 것
관련 문서
이름 | noteType | created |
---|---|---|
BGP | knowledge | 2025-01-08 |
참고
https://blog.naver.com/taeheon714/222384978033 이 블로그가 정리는 잘 돼있는 편 같은데, 내 수준에서 조금 어렵다.