BGP
Border Gateway Protocol
서로 다른 AS(자율 시스템) 사이에서 경로 정보를 교환하는 인터넷의 표준 라우팅 프로토콜이다.
OSPF나 EIGRP 같은 IGP가 하나의 AS 내부에서 최단 경로를 찾는 데 집중한다면, BGP는 AS와 AS 사이(외부) 를 잇는다. 그래서 BGP를 EGP(Exterior Gateway Protocol) 라고 부른다.
통신사, 대형 기업, 클라우드 사업자가 자신의 네트워크 블록을 인터넷에 알리고, 서로의 경로를 주고받는 일이 모두 BGP로 이루어진다.
IGP와 BGP
| 구분 | IGP (OSPF, EIGRP 등) | BGP |
|---|---|---|
| 범위 | AS 내부 | AS 간 (인터넷) |
| 목표 | 최단·최적 경로 | 정책 기반 경로 선택 |
| 경로 기준 | 메트릭(비용, 홉, 대역폭) | AS 경로 + 다양한 속성(정책) |
| 알고리즘 | Link-State / Distance Vector | Path Vector |
| 수렴 속도 | 빠름 | 느림 (대신 안정성 중시) |
| 규모 | 수백~수천 경로 | 수십만~100만 경로(전체 인터넷) |
BGP는 최적 경로가 아니라 정책(policy) 으로 경로를 고른다. 예를 들어 "비싼 회선보다 싼 회선으로 먼저 보낸다" 같은 사업적 판단이 경로에 반영된다.
eBGP와 iBGP
BGP는 어디에 쓰이느냐에 따라 두 종류로 나뉜다.
| 구분 | eBGP (External BGP) | iBGP (Internal BGP) |
|---|---|---|
| 대상 | 서로 다른 AS 사이 | 같은 AS 내부의 BGP 라우터끼리 |
| AS 번호 | 다름 | 같음 |
| 기본 TTL | 1 (직접 연결 이웃) | 보통 멀리 떨어진 이웃 가능 |
| 용도 | 인터넷 경로 교환 | AS 내부에 외부 경로 전파 |
eBGP로 외부에서 받은 경로를 AS 내부의 다른 라우터들에게 알리려면 iBGP가 필요하다. 이때 iBGP는 full-mesh 로 모두 연결해야 한다는 제약이 있어, 규모가 커지면 Route Reflector나 Confederation으로 이 부담을 줄인다.
동작 방식
BGP는 TCP 179번 포트 위에서 동작한다. 라우팅 프로토콜인데도 전용 전송 방식을 만들지 않고 TCP의 신뢰성에 얹은 것이 특징이다.
이웃(peer/neighbor)을 맺는 과정은 정해진 상태를 순서대로 거치며 진행되는데, 이를 BGP FSM(Finite State Machine) 이라 한다.
Idle → Connect → Active → OpenSent → OpenConfirm → Established
└ 이 상태에서 경로 교환
Established 상태가 되면 그때부터 경로 정보를 주고받는다. 주고받는 메시지는 네 종류다.
| 메시지 | 역할 |
|---|---|
| OPEN | 세션 시작. AS 번호, 보유 시간(hold time) 협상 |
| UPDATE | 경로 광고/철회 (실제 경로 정보) |
| KEEPALIVE | 세션 유지 확인 |
| NOTIFICATION | 오류 발생 시 세션 종료 |
한 번 경로를 교환한 뒤에는 변경분(증분, incremental)만 UPDATE로 주고받는다. 전체 테이블을 반복 전송하지 않아 효율적이다.
Path Vector: AS-Path로 경로싣기
BGP는 Path Vector 프로토콜이다. 경로 정보에 그 경로가 거쳐 온 AS들의 목록(AS-Path) 을 함께 싣는다.
목적지 203.0.113.0/24 의 AS-Path: [AS 100, AS 200, AS 300]
↑ 이 경로는 100→200→300을 거쳐 도달
AS-Path는 두 가지 핵심 역할을 한다.
- 루프 방지: 자신의 AS 번호가 이미 AS-Path에 들어 있으면 그 경로를 버린다. IGP의 복잡한 루프 방지 없이 단순하게 해결한다.
- 경로 선택: AS-Path가 짧을수록 보통 더 선호된다(거쳐 가는 AS가 적음)
경로 선택 기준
같은 목적지로 가는 경로가 여러 개일 때, BGP는 여러 속성(attribute) 을 순서대로 비교해 하나를 고른다. 주요 속성과 대략적인 우선순위는 다음과 같다(벤더마다 세부 순서 차이 있음).
| 순위 | 속성 | 의미 | 방향 |
|---|---|---|---|
| 1 | Weight (Cisco 전용) | 값이 클수록 선호 | 로컬 라우터 한정 |
| 2 | Local Preference | AS 내부에서 나가는 경로 선호도. 클수록 선호 | AS 내 공유 |
| 3 | Locally Originated | 자기가 만든 경로 우선 | — |
| 4 | AS-Path 길이 | 짧을수록 선호 | 전역 |
| 5 | Origin | IGP < EGP < Incomplete | — |
| 6 | MED (Multi-Exit Discriminator) | 이웃 AS에게 "이 입구로 들어와" 힌트. 작을수록 선호 | 인접 AS |
실무에서 트래픽 경로를 조정할 때 주로 쓰는 것은 Local Preference(나가는 트래픽 제어) 와 MED / AS-Path Prepend(들어오는 트래픽 제어) 다.
- 나가는 트래픽(outbound): Local Preference를 높여 원하는 회선으로 내보냄
- 들어오는 트래픽(inbound): AS-Path Prepend(자기 AS 번호를 일부러 여러 번 붙여 경로를 길게 보이게 함)로 덜 쓰고 싶은 회선을 회피하게 유도
활용 사례
BGP는 인터넷 백본뿐 아니라 여러 곳에서 쓰인다.
- 인터넷 연동: ISP와 기업이 공인 IP 블록을 인터넷에 광고
- 멀티홈(Multi-homing): 여러 ISP에 동시에 연결해 회선 이중화와 트래픽 분산
- MPLS VPN: 통신사 VPN 서비스에서 고객 경로를 전달(MP-BGP)
- 데이터센터: 대규모 데이터센터의 Leaf-Spine 패브릭에서 IGP 대신 BGP를 내부 라우팅에 사용(BGP in the Data Center)
- 클라우드 연동: 온프레미스–클라우드 간 전용선/VPN 연결에서 동적 경로 교환
한계와 보안
- 느린 수렴: 정책 비교가 많고 TCP 기반이라 Convergence time이 IGP보다 길다
- 검증 부재: BGP는 광고된 경로를 그대로 믿기 때문에, 잘못된 광고 하나가 인터넷 전체 장애로 번질 수 있다
- Route Hijacking: 남의 IP 대역을 자기 것이라 광고해 트래픽을 가로채는 사고
- Route Leak (경로 누설): 받은 경로를 의도하지 않은 방향으로 잘못 전파해(주로 설정 실수) 대규모 장애를 유발
이러한 취약점을 막기 위해 최근에는 RPKI(경로 광고의 정당성을 암호로 검증)와 경로 필터링이 표준으로 자리잡는 중이다.