[L7] Border Gateway Protocol (BGP)

인터넷 라우팅의 이층 구조

  • Border gateway: 한 기관 네트워크에서 외부 인터넷으로 나가는 관문 라우터
  • Autonomous system(AS): 한 기관의 네트워크
    • 자신의 prefix를 전 세계에 광고하는 네트워크
    • AS는 BGP로 prefix를 광고하고 ASN을 부여받음

 

Tracert 예시

더보기

 

  • KT, HE, FLRNET, UFL 네 개 망을 거치며 각 망 내부에서 여러 라우터를 통과함
  • Hurricane Electric (HE) 망 내부: 7개 라우터 경우
  • KT망 내부: 7개 라우터 경우

 

프로토콜 목적
망 단위(Inter‑AS) BGP 정책 기반 경로 제어
망 내부(Intra‑AS) OSPF / IS‑IS 최단거리 (효율) 라우팅

 

  • 망 단위 라우팅은 BGP + 망 내부는 OSPF/IS‑IS 최단거리 기반
  • 이층 구조 덕분에 인터넷 규모가 커도 라우팅이 가능하고 내부 변화가 외부에 미치는 영향이 작음

 

 

망 수준의 인터넷 연결 구조

  • BGP의 역할: 네트워크의 prefix를 전세계의 core 라우터에 심는 것
  • 방법: 전세계의 core 라우터들로 prefix 정보를 보냄

AS

  • 종류
    • Stub: 외부로 트래픽을 내보내지만 타임즈 중계 X
    • Transit: 다른 AS 트래픅을 전달, 중계
  • AS 사이의 관계
    • 상-하 관계: 작은 AS가 큰 AS에게 접속료 지불
    • Peer 관계: Private Peering / Public Peering

BGP

  • BGP peering: 망 단위 라우팅을 결정하기 위해 인접한 AS 사이에서 BGP로 대화하는 라우터 쌍

BGP 프로토콜 특성

  • 정책 기반 프로토콜: 최단경로가 아니라 비용·계약·성능 등 내부 정책에 따라 경로 수용/폐기 결정.
  • Path‑Vector 프로토콜: Announcement가 거쳐온 AS‑Path를 검사하여 loop 제거.
    • 예) AS‑Path가 너무 길거나, 금지 AS가 포함되면 해당 경로를 버린다.

 

BGP 메시지 형식

  • 마커: 인증 용도(초기 값 1111....1) 또는 BGP 메시지 사이 경계 표시
    • 상호 인증 후 고유 패턴으로 변경
    • BGP 세션 해킹 방지
  • 길이 = 헤어 + 바디

  • 타입
Type 기능
1 Open – 세션 협상
2 Update – 경로 광고/철회
3 Notification – 오류 통보
4 Keepalive – 세션 유지(헤더만)

 

 

Open 메시지

  • 필드: Version(4), ASN, Hold Time(기본 180 s), BGP Identifier(라우터 IP), 옵션 파라미터(예: 인증 방법)
  • Open 응답: Keepalive(성공) / Notification(실패)
  • Hold Time의 1/3마다 Keepalive를 주고받아 세션 생존을 확인.

메시지 예시

 

더보기

 


필드 설명
Marker ff…ff (16 바이트) 세션 초기엔 전부 1로 채워 인증·동기화용 “가드 패턴” 역할. (MD5 · TCP‑AO 인증을 쓰면 이후 16바이트 해시로 대체)
Length 45 전체 메시지 길이. BGP 헤더(19B) + OPEN 바디(26B) = 38B가 일반적이지만, 이 예시는 옵션 7B가 더 있어 45B.
Type 1 (OPEN) 1 = OPEN, 2 = UPDATE, 3 = NOTIFICATION, 4 = KEEPALIVE
Version 4 현재 표준인 BGP‑4 사용을 나타냄
My AS 65300 발신 라우터가 속한 자신의 AS 번호. 64512~65534 범위는 private AS(랩 실습·테스트용).
Hold Time 180 초 이 시간(+ 1/3마다 Keepalive)을 넘겨 아무 패킷도 못 받으면 세션 종료. 두 라우터는 더 작은 값으로 동기화.
BGP Identifier 4.4.4.4 / 3.3.3.3 라우터를 유일하게 식별하는 32비트 IP 주소(대개 Loopback). Best‑Path Tie‑break 단계에서 사용.
Optional Parameters Length 16 다음 TLV(Parameter)들의 총 바이트 수
Optional Parameter #1 Type 2 (Capability), Length 6 Capability TLV 안에 여러 기능 광고
 Capability.Code 1 Multiprotocol Extensions(RFC 4760): AFI/SAFI 값을 통해 “IPv4 Unicast(0x00 0x01)” 같은 추가 주소‑패밀리를 지원한다고 알림.

OPEN → KEEPALIVE 순서

  1. TCP 179 번 포트에서 3‑way handshake.
  2. 양쪽이 OPEN 패킷 교환 & 버전/Capability 협상.
  3. 내용에 문제가 없으면 KEEPALIVE(Type 4, 길이 19B) 즉시 응답 → 세션 성공.
  4. 이후 Hold‑Time/3(여기선 60 초)마다 Keepalive를 보내 세션 유지.문제가 생기면 NOTIFICATION(Type 3) 으로 에러 코드 전송 후 세션 종료

 

Update 메시지

  • NLRI(Network Layer Reachability Info): 도달 가능 프리픽스 + 애트리뷰트 세트
  • 두 종류
    1. Announcement – 새로운 경로 + 애트리뷰트
    2. Withdrawal – 더 이상 유효하지 않은 프리픽스
  • Update 수신 → 로컬 BGP 테이블 갱신 → 필터링 후 다른 피어로 재전파

  1. 세션이 Established 상태가 되면, 양쪽 라우터는 Complete BGP Table을 UPDATE로 한 번 쏟아낸다.
  2. 그 이후엔 변화가 있을 때마다 해당 프리픽스만 부분 UPDATE(announcement 또는 withdrawal)로 전송.
  3. 경로가 바뀔 때마다 위 선택 규칙을 즉시 재적용해 Best‑Path를 정하고, 필요하면 다른 피어들에게 다시 UPDATE.
  4. 연속된 변화가 많아 CPU를 잡아먹을 때는 Route‑Flap Damping 기능으로 광고를 잠시 묶어 둔다.

 

패킷 설명

더보기


Path‑Attribute 맥락

  1. ORIGIN = INCOMPLETE → 정적 경로나 OSPF 등 IGP 외부에서 가져온 정보.
  2. AS‑PATH = 빈값 → iBGP 내부 광고라 AS 번호를 추가하지 않았다.
  3. MED = 86 → 이 경로로 우리 AS로 들어올 때는 비용 86로 계산해 달라는 추천값이다.
  4. LOCAL‑PREF = 100 → 우리 AS 내부에서 나갈 때 기본 우선순위.
  5. EXTENDED_COMMUNITIES → Route‑Target 같은 MPLS‑VPN 정책 태그가 여기에 숨어 있을 가능성이 높다.
  6. MP_REACH_NLRI → 오늘 설명의 주인공. 이 한 덩어리에 다중 프로토콜용 Next‑Hop  VPNv4 NLRI 가 함께 담겨 있다.

 

MP_REACH_NLRI 세부 해부

  • Flags 0x80 → Optional, Non‑transitive, Complete. 즉 다른 AS로 넘길 의무는 없고, 이 BGP 라우터가 이해 못하면 드롭해야 한다.
  • Type‑Code 14 → ‘MP_REACH_NLRI’ 라는 것을 나타낸다.
  • Length 33 → 현재 TLV 전체 길이(33바이트).

헤더 필드

  • AFI 1 → IPv4 계열.
  • SAFI 128  Labeled VPN Unicast, 즉 VPNv4 주소‑패밀리. MPLS 라벨 + Route Distinguisher(RD) + IPv4 프리픽스 조합으로 하나의 128‑bit 경로를 만든다.
  • Next‑Hop (12바이트) → PE 라우터가 자신을 가리키며 넣어 준 IPv4 주소(+ IPv4‑내부용 전역 주소가 하나 더). 디코더가 값은 생략했지만 길이로 보아 두 개 주소(4 + 8) 구성.
  • SNPA 수 0 → Frame‑Relay 등에서 쓰는 서브네트워크 포인트; MPLS‑VPN에선 0이 일반적.

NLRI(네트워크 레이어 도달성 정보)

  • Prefix‑Length 120 → 이 길이는 라벨(20) + RD(64) + IPv4‑Prefix(36?) 를 비트 단위로 합친 결과. 실제 IPv4 주소는 뒤에 32비트만 쓰이고, 라벨/RD가 앞에 붙으므로 총길이가 120.
  • Label Stack 25(b) → MPLS Label 25, bottom‑of‑stack 비트(b) 가 1. 전달 면에서 이 라벨 하나로 스택이 끝난다.
  • Route Distinguisher 100:100 → 64‑bit RD를 “100:100” 형태로 사람이 읽기 좋게 표시. RD가 다르면 IPv4 주소가 같아도 다른 VPN으로 간주된다.
  • IPv4 Prefix 170.0.0.0 → 고객 쪽 실제 네트워크. RD와 결합해 100:100:170.0.0.0/?? 라는 VPNv4 경로가 완성된다.

 

 

NOTIFICATION 메시지

 

  • 세션 중 오류가 발견되면 즉시 전송  Error Code / Sub‑code / 문제 패킷 일부를 담는다. 
  • 패킷을 보낸 직후 TCP 연결을 끊어 BGP Finite‑State‑Machine을 Idle로 되돌린다.

 

KEEPALIVE

  • OPEN 패킷을 정상 수락했다는 확인용
  • 이후 Hold-Time의 ${1/3}$ 간격으로 주고 받으며 세션이 살아있음을 알림

 

 


BGP Path Attributes

 

  1. Well‑known Mandatory: 모든 라우터가 반드시 이해 + 모든 경로에 필수 포함 -> ORIGIN, AS‑PATH, NEXT‑HOP
  2. Well‑known Discretionary:  모든 라우터가 이해해야 하지만 포함은 선택 -> LOCAL‑PREF, ATOMIC‑AGGREGATE
  3. Optional Transitive: 포함 여부는 자유, 몰라도 그대로 전달 -> AGGREGATOR, COMMUNITY
  4. Optional Non‑transitive: 포함 여부는 자유, 몰라서 이해 못 하면 전파 금지 ->MULTI‑EXIT‑DESC (MED)

 

  • BGP announcement가 전달되어 온 AS 경로
  • BGP는 path vector 프로토콜
  • 라우팅 loop 탐지

1. ORIGIN  (Well‑known Mandatory)

  • 값 0 = IGP, 1 = EGP, 2 = INCOMPLETE.
  • 숫자가 작을수록 믿음직하다고 간주되어 경로 선택 3단계에서 우선.

2. AS‑PATH  (Well‑known Mandatory)

  • 경로가 거쳐 온 AS를 왼→오 순으로 나열.
  • 루프 탐지 & 두 번째 선택 기준(짧을수록 선호).
  • 필요하면 AS‑Prepend 로 일부러 길게 만들어 우선순위를 낮출 수 있다.

3. NEXT‑HOP  (Well‑known Mandatory)

  • 이 경로로 패킷을 보낼 때 첫 번째로 만나야 할 IPv4/IPv6 주소.
  • eBGP Peer라면 같은 링크에 붙은 상대 주소가 들어간다.
  • iBGP 내부에선 BGP‑NEXT‑HOP‑SELF 명령으로 자신을 재지정해 정합성을 유지한다.

4. LOCAL‑PREF  (Well‑known Discretionary)

  • 현 AS를 빠져나가는 경로 선호도. 값이 크면 Best‑Path 1순위.
  • iBGP 내부만 돌아다니고 외부(다른 AS)로는 전파되지 않는다.

5. ATOMIC‑AGGREGATE  (Well‑known Discretionary)

  • 여러 프리픽스를 한데 묶어 집약(aggregate) 할 때 세부 정보가 일부 사라졌을 수 있다는 경고 플래그.
  • 루프 방지를 위해 일부 라우터가 원시 경로를 그대로 유지할지 결정할 때 참고.

6. MULTI‑EXIT‑DESC(MED)  (Optional Non‑transitive)

  • 상대 AS에게 우리로 들어오는 여러 링크 중 이 링크가 더 낫다고 추천.
  • 값이 작을수록 우선이며, AS 경계 내부 비교에만 쓰이고 다른 AS로 퍼지지 않는다.

 

7. COMMUNITY  (Optional Transitive)

  • 32‑bit 라벨(0:0 ~ 65535:65535). 복수 개를 붙일 수 있다.
  • no‑export(0xFFFFFF01), local‑AS(0xFFFFFF02) 같은 예약값으로 배포 범위를 제어하거나,
    사업자마다 자의적인 번호 체계를 두어 대량 정책(프리픽스 필터, MED 변경 등) 을 손쉽게 구사한다.

8. AGGREGATOR  (Optional Transitive)

  • 프리픽스를 집약한 라우터 ID와 AS를 명시.
  • 다단 집약 시 디버깅용 메타데이터 역할.

ORIGIN

  •  Prefix 정보가 애초에 어느 source로부터 얻어졌는지 표현

종류

  • IGP 생성
  • EGP 생성 (더 이상 쓰이지 않음)
  • 기타:OSPF, 정적 경로로부터 유입

 

높은 LOCAL‑PREF → 짧은 AS‑PATH → 작은 ORIGIN → 작은 MED → [eBGP 습득 > iBGP 습득] → IGP distance to NEXT‑HOP → 작은 Router‑ID

'Computer Science > Network' 카테고리의 다른 글

[L3] Internetworking Protocol(IP)  (2) 2025.04.17
[L3] IP Address system  (0) 2025.04.17
[L2] ARP  (0) 2025.04.16