BGP(Border Gateway Protocol)는 인터넷을 이루는 수만 개의 독립 네트워크가 "어디로 가려면 나를 거쳐라"라고 서로에게 알려주는 라우팅 프로토콜이다. 우리가 쓰는 인터넷은 사실 하나의 거대한 네트워크가 아니라, AS(Autonomous System)라 부르는 자율 네트워크들이 BGP로 경로 정보를 교환하며 얼기설기 이어진 구조다. 이 프로토콜이 흔들리면 특정 사이트가, 때로는 나라 하나가 통째로 인터넷에서 사라진다.
솔직히 웹 개발만 하던 시절엔 BGP를 몰라도 아무 문제 없었다. 그런데 대형 장애 뉴스마다 "BGP 설정 실수"가 원인으로 나오는 걸 보고, 이게 인터넷의 뼈대구나 싶어 파고들었다. 개념 자체는 생각보다 어렵지 않다.
AS: 인터넷의 나라들
AS는 하나의 정책 아래 운영되는 IP 네트워크 묶음이다. 통신사, 대형 클라우드, 큰 대학 등이 저마다 AS를 갖고 AS 번호(ASN)로 식별된다. 예를 들어 어떤 통신사가 AS9999라면, 그 회사가 관리하는 IP 대역 전체가 그 AS에 속한다. 인터넷은 이런 AS 약 7만 개가 서로 연결된 그래프다.
AS끼리 관계는 크게 둘이다. 돈을 내고 인터넷 전체로 나가는 길을 사는 트랜짓(transit), 그리고 서로 트래픽을 무료로 직접 교환하는 피어링(peering). BGP는 이 관계 위에서 "내가 아는 목적지들"의 목록을 이웃 AS에 광고한다.
경로가 정해지는 법
BGP의 정보 단위는 프리픽스(prefix)다. 203.0.113.0/24 같은 IP 대역과, 거기 도달하기까지 거쳐야 할 AS들의 목록인 AS-PATH가 한 세트로 전파된다. 라우터는 같은 목적지에 대해 여러 경로를 받으면 정책에 따라 최적 하나를 고른다.
목적지 203.0.113.0/24 로 가는 경로 후보:
경로 A: AS65010 -> AS65020 -> AS65099 (3홉)
경로 B: AS65010 -> AS65099 (2홉, 더 짧음)
=> 다른 조건이 같다면 AS-PATH가 짧은 B 선택
선택 우선순위는 대략 이렇게 흐른다. 관리자가 준 로컬 선호도(local preference)가 가장 세고, 그다음이 AS-PATH 길이, 그다음이 여러 세부 규칙이다. 즉 "홉이 짧은 길"이 항상 이기는 게 아니라, 돈과 정책이 먼저다. 유료 트랜짓보다 무료 피어링을 선호하도록 로컬 선호도를 조정하는 식이다.
| 속성 | 역할 | 방향 |
|---|---|---|
| LOCAL_PREF | 나가는 트래픽 경로 선호 | 내 AS 내부 |
| AS_PATH | 경로 길이·루프 방지 | 전 구간 |
| MED | 들어오는 트래픽 유도 | 이웃 AS에게 |
| 프리픽스 길이 | 더 구체적 경로 우선 | 전 구간 |
BGP가 위험한 이유
BGP는 태생적으로 신뢰 기반이다. 어떤 AS가 "이 IP 대역은 내 거야"라고 광고하면, 이웃들은 기본적으로 그 말을 믿는다. 여기서 두 가지 대형 사고가 난다.
- 프리픽스 하이재킹 — 남의 IP 대역을 자기 것처럼 광고해 트래픽을 가로챈다. 과거 유튜브 트래픽이 실수 광고로 엉뚱한 나라로 빨려 들어간 사건이 유명하다.
- 경로 누수(route leak) — 받기만 해야 할 경로를 잘못 재광고해, 감당 못 할 트래픽이 작은 AS로 쏟아지며 대규모 장애가 난다.
대형 클라우드가 몇 시간씩 먹통이 된 사고 상당수가 실제로는 애플리케이션 버그가 아니라 BGP 설정 실수였다. 잘못된 광고 한 줄이 전 세계 라우팅 테이블에 퍼지는 데 몇 분이면 충분하다.
이런 사고를 줄이려고 RPKI가 확산 중이다. IP 대역과 그걸 광고할 자격이 있는 AS를 암호학적으로 서명해 두고, 자격 없는 광고를 라우터가 걸러내는 구조다. 지금 BGP 보안의 핵심 흐름이다.
운영자가 알아둘 것
- 내 서비스가 특정 지역에서만 느리거나 안 되면, 애플리케이션 이전에 BGP 경로를 의심해볼 수 있다.
traceroute로 어느 AS에서 막히는지 본다. - 멀티홈(업스트림 2개 이상)으로 붙이면 한 통신사가 죽어도 BGP가 다른 경로로 자동 우회한다. 가용성의 핵심이다.
- 직접 BGP를 돌릴 일이 없어도, 클라우드의 리전·엣지 동작을 이해하려면 이 그림을 알아야 한다.
자주 묻는 질문
BGP는 라우터끼리 얼마나 자주 전체 경로를 주고받나요?
처음 연결될 때 전체 경로 테이블을 한 번 교환하고, 이후에는 바뀐 부분만 증분으로 갱신합니다. 그래서 평소 트래픽은 적지만, 대형 장애로 경로가 요동치면 갱신 폭풍이 일어나 라우터에 부하가 걸립니다.
BGP와 OSPF는 어떻게 다른가요?
OSPF는 하나의 조직 내부(같은 AS 안)에서 최단 경로를 계산하는 IGP이고, BGP는 서로 다른 AS 사이를 잇는 EGP입니다. 내부는 속도, 외부는 정책이 우선이라는 설계 철학의 차이가 있습니다.
내가 웹 개발자인데 BGP를 알아야 하나요?
직접 다룰 일은 드뭅니다. 다만 원인 모를 지역별 지연·장애를 진단하거나, 대형 클라우드 장애 뉴스를 이해하거나, 멀티홈 가용성 설계를 검토할 때 개념을 알고 있으면 큰 도움이 됩니다.
RPKI를 켜면 하이재킹이 완전히 막히나요?
출처 검증(origin validation)까지는 막아주지만, 경로 중간을 위조하는 공격은 별도 대책(ASPA, BGPsec 등)이 필요합니다. 그래도 현실에서 가장 흔한 실수·하이재킹을 크게 줄여주는 실효적인 첫걸음입니다.

댓글 0