BGP 기초 완벽 정리 — iBGP vs eBGP 차이와 경로 광고 흐름
📌 요약 · BGP(Border Gateway Protocol)는 인터넷의 라우팅을 책임지는 거대한 프로토콜입니다. 이 글에서는 AS 개념부터 시작해 iBGP와 eBGP가 어떻게 다른지, 경로가 어떻게 광고되고 어떤 규칙으로 선택되는지, 그리고 시스코에서 실제 어떻게 설정하는지까지 초보자 눈높이로 정리합니다.
📑 목차
BGP는 왜 만들어졌을까
OSPF나 EIGRP 같은 라우팅 프로토콜은 한 조직 안에서 최단 경로를 찾는 데 강합니다. 하지만 ISP끼리, 즉 다른 조직 간 라우팅에는 어울리지 않습니다. 통신사 A가 통신사 B에게 모든 내부 정보를 다 보여줘야 하고, 정책적으로 "이 경로는 안 받아", "이쪽은 비싸니까 우회" 같은 결정을 할 수 없기 때문입니다.
BGP(Border Gateway Protocol, RFC 4271)는 이런 조직 간 라우팅을 위해 만들어졌습니다. 인터넷 전체를 떠받치는 사실상의 표준이라, 우리가 보는 모든 웹 서비스가 BGP를 통해 연결됩니다.
| 특징 | 설명 |
|---|---|
| Path Vector 방식 | 경로가 거쳐온 AS 목록을 보고 판단. 루프 방지에 강함 |
| TCP 179 사용 | 신뢰성 있는 TCP 위에서 동작. 멀티캐스트 사용 안 함 |
| 정책 기반 | 최단 경로보다 정책(돈, 계약, 신뢰)을 우선 |
| 느린 수렴 | 안정성을 위해 의도적으로 느림. 인터넷급 규모를 다루기 위함 |
💡 비유로 이해하기 — 국가 간 외교
OSPF가 한 회사 내부의 부서 간 이메일이라면, BGP는 국가 간 외교입니다. 한국이 일본에게 모든 내부 사정을 다 알리지는 않듯, AS도 다른 AS에게 광고할 정보를 정책적으로 선별합니다. 최단 거리보다 외교 관계와 비용이 우선이라는 점도 똑같습니다.
AS와 AS 번호
AS(Autonomous System, 자율 시스템)는 단일 관리 정책으로 운영되는 네트워크 묶음입니다. 보통 통신사, 대형 기업, 대학, IDC 같은 단위로 하나의 AS를 가집니다.
각 AS에는 AS 번호가 부여됩니다. KT는 4766, SK 텔레콤은 9318, 구글은 15169처럼 인터넷상의 고유 번호입니다. AS 번호 범위는 다음과 같습니다.
| 범위 | 용도 |
|---|---|
| 1 ~ 64495 | 공인 AS 번호. APNIC/KRNIC 등에서 할당 |
| 64512 ~ 65534 | 사설 AS. 내부용으로 자유롭게 사용 (테스트·실습 시 흔히 사용) |
| 65536 이상 (4-byte) | 확장 AS 범위. 공인 부족 문제 해결을 위해 도입 |
iBGP vs eBGP — 핵심 차이
BGP는 같은 프로토콜이지만 네이버가 누구냐에 따라 둘로 나뉩니다.
- eBGP (external BGP) — 서로 다른 AS 간의 BGP 세션
- iBGP (internal BGP) — 같은 AS 내부에서 맺는 BGP 세션
| 항목 | eBGP | iBGP |
|---|---|---|
| AS 번호 | 서로 다른 AS | 같은 AS |
| TTL | 기본 1 (직접 연결만) | 기본 255 (멀티 홉 가능) |
| AS-Path 처리 | 광고 시 자기 AS 번호 추가 | AS 번호 추가 안 함 |
| 광고 규칙 | 받은 경로를 다른 eBGP에 광고 OK | iBGP로 받은 경로를 다른 iBGP에는 광고 안 함 (Split Horizon) |
| Administrative Distance | 20 | 200 |
| 주 용도 | ISP 간, AS 경계 라우팅 | AS 내부로 외부 경로 전파 |
💡 비유로 이해하기 — 외교부 vs 국내 부처
eBGP는 외교부입니다. 다른 나라(AS)와 협상하고, 들어온 정보에 도장(자기 AS 번호)을 찍어 다른 나라에 전달합니다. iBGP는 국내 부처입니다. 외교부가 받아온 정보를 국내에서 공유하지만, 들은 정보를 다시 다른 국내 부처에 재전달하지는 않는 규칙(Split Horizon)이 있습니다.
BGP 경로 광고 흐름
AS 65001에 있는 R1이 어떤 네트워크(10.10.10.0/24)를 가지고 있다고 가정해 봅시다. 이 정보가 옆 AS 65002의 R3까지 전달되는 과정입니다.
[ AS 65001 ] [ AS 65002 ] R1 ────iBGP──── R2 ────eBGP──── R3 │ │ │ 10.10.10.0/24 │ │ │ ① R1: network 10.10.10.0 광고 등록 ② R1 → R2 (iBGP): AS-Path = [empty] ③ R2 → R3 (eBGP): AS-Path에 65001 추가 ④ R3 라우팅 테이블: 10.10.10.0/24 via R2, AS-Path = 65001
핵심 포인트 두 가지가 있습니다.
- iBGP에서는 AS-Path가 변경되지 않습니다. 같은 AS 내부에서 자기 AS 번호를 더할 이유가 없기 때문입니다.
- eBGP로 광고할 때 자기 AS 번호가 AS-Path 맨 앞에 추가됩니다. 이 AS-Path를 보고 받은 쪽이 "내 AS 번호가 이미 들어있다면 받지 않음"으로 루프를 막습니다.
iBGP Full Mesh 규칙
iBGP에는 한 가지 까다로운 규칙이 있습니다. iBGP로 받은 경로는 다른 iBGP 이웃에게 광고하지 않는다(Split Horizon)는 점입니다. 이는 AS 내부에 루프가 생기는 것을 막기 위함입니다.
그런데 이 때문에 AS 안의 모든 BGP 라우터는 서로 다 직접 iBGP 세션을 맺어야 합니다. 이것을 Full Mesh라고 합니다.
AS 내부 BGP 라우터 수에 따른 iBGP 세션 수: 3대 → 3개 세션 5대 → 10개 세션 10대 → 45개 세션 100대 → 4,950개 세션 ← 사실상 불가능 공식: n × (n-1) / 2
규모가 커지면 Full Mesh가 불가능해집니다. 이때 쓰는 해결책이 다음 두 가지입니다.
| 해결책 | 설명 |
|---|---|
| Route Reflector | 대표 라우터(RR)에만 모든 라우터가 iBGP 세션을 맺고, RR이 정보를 반사 전달. 가장 흔한 방식 |
| Confederation | 큰 AS를 작은 sub-AS로 나누고 그 사이를 eBGP처럼 처리. 설정이 복잡해 잘 안 씀 |
BGP 경로 선택 우선순위
BGP는 같은 목적지로 가는 경로가 여러 개일 때 다음 순서로 비교해 단 하나를 고릅니다. 위에서부터 비교해 결정되면 그 이후 단계는 무시합니다.
| 순서 | 속성 | 선택 기준 |
|---|---|---|
| 1 | Weight | 값이 큰 게 우선 (시스코 전용, 로컬 라우터만 적용) |
| 2 | Local Preference | 값이 큰 게 우선 (AS 내부 전체에 영향) |
| 3 | Originate | 로컬 라우터가 광고한 경로 우선 |
| 4 | AS-Path 길이 | 짧은 게 우선 (가장 자주 비교됨) |
| 5 | Origin Type | IGP(i) < EGP(e) < Incomplete(?) |
| 6 | MED (Multi-Exit Disc) | 값이 작은 게 우선 (외부 AS에 힌트 전달) |
| 7 | eBGP > iBGP | eBGP로 배운 경로가 우선 |
| 8 | IGP 메트릭 | Next-hop까지 IGP cost가 작은 게 우선 |
| 9 | Router ID | 낮은 게 우선 (최후의 결정자) |
💡 외울 때 팁 — N · W · L · L · A · O · M · N · I · R
실무에서 가장 자주 만지는 건 Local Preference(들어오는 트래픽을 어디로 빼낼지)와 MED(나가는 트래픽을 어느 입구로 받을지), 그리고 AS-Path(prepend로 인위적으로 길게 만들어 후순위로 밀기)입니다.
시스코 BGP 실제 컨피그
① eBGP 기본 설정
! AS 65001의 R1이 AS 65002의 R3와 eBGP 맺기 R1(config)# router bgp 65001 R1(config-router)# neighbor 192.168.12.2 remote-as 65002 ! 광고할 네트워크 등록 R1(config-router)# network 10.10.10.0 mask 255.255.255.0
⚠️ network 명령은 OSPF와 다릅니다
OSPF는 wildcard로 인터페이스를 매칭하는 방식이지만, BGP의 network는 "이 정확한 네트워크를 광고하겠다"는 선언입니다. 라우팅 테이블에 같은 prefix와 마스크가 이미 있어야 광고됩니다.
② iBGP 설정 (Loopback 활용)
! 같은 AS 65001 내 R2와 iBGP 맺기 (Loopback IP 사용) R1(config-router)# neighbor 2.2.2.2 remote-as 65001 R1(config-router)# neighbor 2.2.2.2 update-source loopback 0
💡 iBGP는 Loopback으로 맺는 게 정석
물리 인터페이스로 맺으면 그 인터페이스가 죽는 순간 BGP 세션도 끊깁니다. Loopback은 가상 인터페이스라 한쪽 회선이 죽어도 다른 경로로 도달 가능하면 세션이 유지됩니다. 대신 양쪽 라우터의 IGP(OSPF 등)가 서로의 Loopback에 도달 가능해야 합니다.
③ Route Reflector 설정
! R1을 RR로, R2/R3/R4를 client로 설정 R1(config)# router bgp 65001 R1(config-router)# neighbor 2.2.2.2 remote-as 65001 R1(config-router)# neighbor 2.2.2.2 route-reflector-client R1(config-router)# neighbor 3.3.3.3 remote-as 65001 R1(config-router)# neighbor 3.3.3.3 route-reflector-client
④ Local Preference 조정
! 특정 이웃에서 들어오는 경로의 Local Preference를 높여 우선 사용 R1(config)# route-map SET_LP permit 10 R1(config-route-map)# set local-preference 200 R1(config)# router bgp 65001 R1(config-router)# neighbor 192.168.12.2 route-map SET_LP in
BGP 점검 명령어
R1# show ip bgp summary ! 이웃 형성 여부 (가장 먼저 확인) R1# show ip bgp ! BGP 테이블 전체 R1# show ip bgp 10.10.10.0 ! 특정 prefix 상세 정보 R1# show ip bgp neighbors 192.168.12.2 advertised-routes R1# show ip bgp neighbors 192.168.12.2 received-routes R1# clear ip bgp * soft ! 정책 변경 후 soft reset
show ip bgp summary 결과 해석
R1# show ip bgp summary Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 192.168.12.2 4 65002 120 115 45 0 0 01:23:45 25 2.2.2.2 4 65001 98 102 45 0 0 01:20:11 10
맨 오른쪽 State/PfxRcd 칸이 숫자면 해당 네이버로부터 받은 prefix 수입니다. 만약 Idle, Active, Connect 같은 글자가 보이면 세션이 정상 형성되지 않은 상태입니다.
자주 묻는 질문
Q. 일반 기업도 BGP를 써야 하나요?
A. 대부분은 안 씁니다. 회선 한 개로 한 ISP만 쓰는 환경이면 default route(ip route 0.0.0.0 0.0.0.0)만으로 충분합니다. 두 개 이상의 ISP를 쓰는 멀티홈(Multi-home) 환경이거나, 공인 IP 대역을 직접 광고해야 할 때 BGP가 필요합니다.
Q. eBGP가 Idle에서 안 넘어갑니다.
A. 거의 항상 (1) ACL/방화벽에서 TCP 179가 막혔거나, (2) update-source IP가 상대 라우터의 ARP/라우팅 테이블에 없거나, (3) AS 번호 입력 오타입니다. ping으로 도달성부터 확인하세요.
Q. 광고는 하는데 상대가 못 받습니다.
A. network 명령에 적은 prefix와 라우팅 테이블의 prefix가 정확히 일치해야 합니다. 라우팅 테이블에 10.10.10.0/24가 있는데 network 10.10.0.0 mask 255.255.0.0으로 광고하면 안 됩니다.
Q. Hard reset과 Soft reset은 뭐가 다른가요?
A. clear ip bgp *는 BGP 세션 자체를 끊고 다시 맺어 서비스에 충격을 줍니다. clear ip bgp * soft는 세션은 유지한 채 정책만 다시 적용해 훨씬 안전합니다. 운영 중에는 가능하면 soft를 씁니다.
Q. Full BGP table을 받으려면 어떤 라우터가 필요한가요?
A. 현재 인터넷 Full Table은 약 95만 prefix 수준이라(2024년 기준) 메모리 2GB 이상, BGP 처리에 강한 CPU가 필요합니다. 일반 엔터프라이즈 라우터로는 Full Table을 받기 어렵고, ISR/ASR/NCS급 또는 Juniper MX 같은 캐리어급 장비가 필요합니다.
#BGP #iBGP #eBGP #AS번호 #라우팅프로토콜 #PathVector #RouteReflector #LocalPreference #네트워크엔지니어 #시스코BGP #네트워크기초 #도담인사이트
댓글
댓글 쓰기