먼저 기초 용어에 대해 알아봅시다

  • 자율(자치) 시스템(autonomous system, AS): 단일 기업 또는 서비스 공급자에 의해 관리되는 네트워크
    • 인터넷은 여러 개의 AS로 구성되어 있음
    • 인터넷을 AS 간 연결 경로(Path)로 이루어진 방향성 그래프의 집단으로 봄
  • 피어(peer): 이웃에 있는 AS
  • 유니캐스트: 고유 주소로 식별된 하나의 네트워크 목적지에 1:1로 트래픽 또는 메시지를 전송하는 프로토콜
  • ISP(Internet Service Provider): 인터넷 서비스를 제공하는 업체
  • IPv4: 인터넷에서 사용되는 패킷 교환 네트워크상에서 데이터를 교환하기 위한 32비트 주소체계를 갖는 네트워크 계층의 프로토콜
  • IPv6: IPv4가 가지고 있는 주소 고갈, 보안성, 이동성 지원 등의 문제점을 해결하기 위해서 개발된 128Bit 주소체계를 갖는 차세대 인터넷 프로토콜
  • CIDR(Classless Inter-Domain Routing): 클래스 없는 도메인 간 라우팅 기법

#. BGP

Border Gateway Protocol
= EGP(Exterior Gateway Protocol) cf. IGP(Interior Gateway Protocol)
= Interdomain Routing Protocol

인터넷은 전 세계 호스트들이 고유한 IP 주소를 기반으로 언제 어디서나 데이터를 주고받을 수 있는 글로벌 네트워크이다. 서로 다른 IP 주소를 가진 호스트들은 최단 이동거리를 관리하고, 서로에게 자신이 관리하고 있는 IP 대역을 알려주는 라우터에 의해 통신이 가능해지는데, 이러한 IP 대역을 프리픽스(prefix)로 관리하는 것이 바로 AS(Autonomous System)이다. 이로 인해 AS들은 IP 프리픽스(예, 128.6.0.0/16)를 관리하는 최신 라우팅 테이블이 정기적으로 업데이트되어야 하는데, 이처럼 자신의 라우팅 테이블을 서로에게 공유할 때 BGP(Border Gateway Protocol)라는 프로토콜이 사용된다.

  1. 인터넷의 글로벌 라우팅 시스템 기반이 되는 프로토콜입니다.
  1. 서로 다른 조직(AS)의 네트워크 연결, 트래픽을 연동, 네트워크 정보를 교환할 때 사용하는 라우팅 프로토콜입니다.
  1. AS 영역별로 상호 간의 라우팅 정보 교환과 어떠한 AS를 통해 목적지까지 가는지를 결정하기를 위한 라우팅 프로토콜로 서로 다른 AS들을 연결합니다.
    즉 물리적인 라우터 간에 라우팅하는 관점이 아니라, AS 영역 간 라우팅이 이루어집니다.
  1. 라우팅 정보를 사용해 다른 BGP 시스템과 교환하는 네트워크 정보 DB를 관리합니다.
  1. 독립적으로 운용되는 대규모 네트워크에 주로 사용됩니다.
  1. 1989년 BGP version 1을 시작으로 1995년부터 현재까지 BGP version 4를 활용합니다. BGP라 함은 현재의 BGP-4를 의미합니다.


특징

  • 변경 발생 시 대상까지의 가장 짧은 경로를 경로 벡터 알고리즘을 통해 선정합니다. Distance Vector Routing Protocol(거리 벡터 라우팅 프로토콜)의 발전된 형태로 Path Vector Routing Protocol(경로 벡터 라우팅 프로토콜) 이라고도 불립니다. 여기서 AS 경로(AS Path)는 목적지 네트워크(AS)까지 거쳐야하는 AS Path를 나타냅니다. BGP는 최적/최단의 경로를 찾는 라우팅 정보라기 보다 도달 가능성(Network Reachability)을 알리는 프로토콜이며 최적의 경로 정보(라우팅 테이블)를 상호 교환합니다.

BGP는 ‘동적 경로’를 설정하는 프로토콜이다. 무슨 뜻이냐면, 라우팅 테이블 상에 올라있는 정보가 변할 때마다 자동으로 업데이트 한다는 것이다. 인터넷 상에서 A 지점으로부터 B 지점까지 가는 데에는 다양한 경로가 있을 수 있다. BGP는 이 다양한 경로 중 최고의 경로, 즉 가장 짧은 경로를 파악하는 것이다. 이 경로가 바뀔 때마다 라우팅 테이블을 업데이트 한다. 인터넷에 연결된 누군가가 라우터를 끄고 다시 켤 때마다 이 경로들이 전부 바뀔 수 있다. 이런 소소한 변화까지 다 고려해 라우팅 테이블을 업데이트 하는 게 BGP의 몫이다.

  • 네트워킹의 BGP는 TCP/IP를 기반으로 합니다. OSI 트랜스포트 레이어(레이어 4)로 동작해 네트워크 레이어(레이어 3)를 제어합니다. BGP는 신뢰성 있는 통신인 TCP 포트 179번을 사용하여 유니캐스트 방식으로 라우팅 정보를 전송합니다. 보안을 중시하여 피어 관계 설정 및 네트워크 정보 생성, 전달이 분리됩니다.
  • ISP 사업자들 상호 간 주로 사용되는 라우팅 프로토콜입니다.
    • 싱글 호밍(Single homing): 하나의 링크만을 사용해서 연결하는 것
    • 멀티 호밍(Multi homing): 두 개 이상의 링크를 연결해서 사용하는 것, 대부분의 BGP는 멀티 호밍을 사용합니다.
  • BGP를 설정할 때 하나의 BGP 번호인 AS (Autonomous System) 번호를 부여합니다.
    • iBGP(internal BGP, 내부 BGP)
      동일한 네트워크 내부에서 사용하는 BGP
      같은 AS에 존재하는 Border router끼리 다른 AS의 reachability information를 알려주는 상호작용을 하는 것
      일부 네트워크는 OSPF를 iBGP로 대체
    • eBGP(external BGP, 외부 BGP)
      서로 다른 네트워크에서 사용하는 BGP
      라우터가 속해 있는 서브넷의 reachability information을 다른 인접 AS에게 알려주는 것
  • ISP 업체는 내 컴퓨터로부터 나온 요청을 제대로 목적지에 전달하기 위해 인터넷을 가로질러야 합니다. 이 때 매번 새로운 경로를 개척할 수 없으니 ISP 업체나 인터넷 기반 시설을 담당하는 조직들은 라우팅 테이블이라는 것을 보관합니다. 라우팅 테이블 유지 및 관리에 사용되는 기준 규정을 경계 경로 프로토콜(Border Gateway Protocol, BGP)이라고 말합니다.
  • 순환을 피할 수 있게 목적지까지 가는 경로 정보를 제공합니다. BGP는 Looping-free 하는 라우팅을 보장합니다.
  • BGP는 경로 벡터 라우팅 프로토콜이기 때문에 네트워크 토폴로지의 전체 맵을 유지하지 않습니다. BGP는 경로에 루프가 없는지 확인하는 데 있어 거리 벡터 프로토콜처럼 작동합니다. BGP 라우터가 AS_PATH 속성에 자체 ASN이 포함된 광고를 수신하면 패킷이 이미 네트워크를 통과했다고 생각해 라우팅 광고를 폐기합니다.
  • 최상의 경로 선택을 위해 다양하고 풍부한 Routing Metric을 사용합니다. 우선순위가 있는 각 Metric을 차례대로 참조하여 최상의 경로를 선택합니다.
  • IGP와 다르게 BGP는 조직간에 계약 Policy(정책)에 따라 최적 경로를 결정합니다. IGP는 다른 조직에 관여받지 않고 라우팅 정책을 설정할 수 있으나 BGP는 수많은 AS로 구성되어 있고 그 중 하나인 해당 조직의 AS에서 라우팅 정책을 설정하여 원하는 라우팅이 이루어지게 해야합니다. BGP는 상대 영역의 라우팅 정책을 침범하지 않고도, 자신의 라우팅 정책을 구현할 수 있습니다. 본인의 피해를 예방하기 위해 최소한으로 정보를 공유하거나 선택적으로 무시하는 등 정책적인 가중치 부여가 가능합니다. 만약 정책에 따라 변경이 발생하면 라우팅 테이블을 지속적으로 업데이트합니다.
  • BGP는 장애가 발생하면 하나의 국가, 크게는 전 세계의 네트워크에 영향을 미칠 수 있습니다. 일반적인 조직에서 IGP의 네트워크 수는 많아봐야 수천개를 넘지 않지만 BGP는 보통 수만 개에서 수십만 개 이상의 네트워크가 라우팅 테이블에 설치됩니다. 따라서 자원의 효율적 처리를 위한 많은 요소들을 제공합니다.
  • 주기적으로 정보를 갱신하지 않고 변화가 있을 때 이웃 라우터에게 갱신 정보를 Advertising 합니다. 전체 라우팅 정보는 처음 BGP session을 맺은 직후만 필요합니다. 또한 빈번한 업데이트를 방지하기 위해 일정시간 대기합니다. 이때 iBGP는 5초, eBGP는 30초입니다. 만약 네트워크 변화가 전혀 없다면 주고 받는 정보가 없게 되므로 자신이 살아있음을 알리는 BGP 킵얼라이브메세지를 60초 마다 교환합니다.
  • 피어들과의 연결을 통해 AS들은 자신들이 보유하고 있는 경로를 바깥으로 알립니다. 각 AS가 보유하고 있으며, 다른 AS에 알려주는 경로를 ‘네트워크 프리픽스(network prefix)’라고 하며 AS가 네트워크 프리픽스를 이웃 AS인 피어들에 전파하면 전파를 받은 피어들은 이 정보를 다시 자신들의 피어에 전달합니다. 이렇게 인터넷 상의 경로들이 이어지고 이 때문에 한국에 있는 ISP 회사가 호주에 있는 서버로 웹 요청을 보낼 수 있습니다.
  • BGP는 Border Gateway Protocol의 약자이며, 인터넷의 라우팅 프로토콜입니다. 즉, 트래픽이 한 IP 주소에서 다른 IP 주소로 최대한 효율적으로 이동하도록 방향을 제공합니다. IP 주소는 지정된 웹 사이트의 실제 웹 주소입니다. 사용자가 웹 사이트 이름을 입력하고 브라우저가 이를 찾아 로드하면 사용자의 IP 주소와 웹 사이트의 IP 주소 간에 요청과 응답이 오갑니다. DNS(도메인 이름 시스템) 서버는 IP 주소를 제공하지만 BGP는 해당 IP 주소에 가장 효율적으로 연결하는 방법을 제공합니다. 대략적으로 말하면, DNS가 인터넷의 주소록이라면, BGP는 인터넷의 로드맵입니다.
  • 현재의 BGP-4 버전은 IPv6과 클래스 없는 주소체계(CIDR (Classless Inter-Domain Routing))를 지원합니다. 양쪽 모두를 지원하고 있기 때문에 IPv4를 지속적으로 실행할 수 있습니다. CIDR를 사용하는 것은 현재의 IP 주소 할당 방식보다 네트워크내에 많은 주소를 가지는 방법입니다. BGP는 각 주소 정보에 덧붙여 Prefix의 길이도 함께 전달합니다.

장점

  • BGP는 라우터가 루트 장애에 적응할 수 있도록 함으로써 네트워크의 안정성을 확보합니다. 만약 1개의 인터넷 패스가 다운되었을 경우 라우터가 다른 재접속을 개입시켜 패킷을 송신하도록 신속히 적응할 수 있습니다. BGP는 네트워크 관리자가 설정한 경로, 규칙 또는 네트워크 정책에 따라 루팅을 결정합니다. 각 BGP 라우터는 전송 중인 패킷을 전송하기 위해 사용되는 표준 라우팅 테이블을 유지합니다. BGP는 클라이언트 서버 토폴로지를 사용하여 라우팅 정보를 통신합니다. 클라이언트 서버는 서버에 요구를 송신함으로써 BGP 세션을 시작합니다.
  • BGP는 인터넷의 대규모 성장을 가능하게 합니다. 인터넷은 상호 연결된 여러 개의 대규모 네트워크로 구성됩니다. 분산되어 있기 때문에 데이터 패킷이 원하는 IP 주소 대상으로 전송될 수 있는 최적의 경로를 지정하는 관리 기관이나 트래픽을 지키는 역할을 하는 주체가 없습니다. 이때 BGP가 이 역할을 수행합니다. BGP가 아니라면 비효율적인 라우팅으로 인해 웹 트래픽이 대상에 도달하는 데 많은 시간이 걸릴 수 있으며 의도한 대상에 전혀 도달하지 못할 수도 있습니다.

단점

  • 라우팅 비용(CPU 부하)이 많이 듭니다.
  • 라우팅 테이블 크기가 커서 메모리 사용량이 많습니다.
  • 정보의 형식이 잘못되거나 잘못된 데이터가 포함될 수 있으므로 정보 교환이 항상 성공하는 것은 아닙니다. 라우터의 메모리 또는 스토리지가 부족하거나 업데이트에 대한 응답이 너무 느릴 수 있습니다. 라우터는 에러 코드와 서브 코드를 송신해 타임 아웃, 부정한 형식의 요구, 처리의 문제 등이 발생할 수 있습니다.
  • BGP는 잘못된 정보에 근거한 공격에도 취약합니다.
    • BGP Hijacking
      AS 간에 라우팅 테이블을 공유하는 BGP 프로토콜을 악용하여 공격자가 임의로 설정한 라우팅 테이블을 인접한 AS에 퍼뜨리는 것을 의미합니다. BGP 프로토콜은 신뢰도를 고려하지 않고 가장 빠른 경로만을 따라가기 때문에 공격자는 공격 대상의 라우팅 경로를 분석한 후, 원하는 경로로 네트워크의 흐름을 변경해 중간에 있는 AS를 공격하거나 자신의 의도대로 라우팅 정책을 설정함으로써 네트워크 마비, 데이터 가로채기 등의 행위가 가능합니다.

      이 사건이 우리에게 알린 교훈은 무엇일까? 인터넷이라는 구조 전체를 지탱하고 있는 약한 지점이 드러났다는 것이다. 라우팅 테이블, 즉 여러 경로를 관리하는 ‘지도’의 기반인 BGP는 ‘신뢰’를 바탕으로 만들어져 있다. 피어와 피어 사이의 연결 역시 ‘신뢰’를 바탕에 깔고 있다. 옆 AS에서 오는 정보는 무조건 정확하고 옳을 거라는 전제다. 그래서 그 정보를 의심하지도 않고, 거르지도 않았을 때, 나이지리아의 작은 회사가 구글을 사실상 마비시킬 수 있었던 것이다. 누군가 악의적으로 이 BGP를 하이재킹했다고 생각해보라. 인터넷에 무슨 일이 일어날까 상상하는 게 그리 어렵지 않을 것이다.


BGP Hijacking 공격기법의 대응방안

  1. 모니터링
  • 통신망의 동일 프로토콜 계층에서 대등한 지위로 동작하는 Peer 중 IP Prefix의 대역에 맞지 않는 IP Prefix를 통보(announcement)받아 네트워크에 딜레이나 이상이 생기는지 확인하는 방법
  • 특정 시간대에 갑자기 양방향 또는 응답 패킷의 양이 현저히 적어지거나 잘못 연결되어 리다이렉트되는 트래픽이 있는지 주기적으로 모니터링하는 방법
  1. IP Prefix Filtering
    특정 IP Prefix만 허용하는 화이트리스트를 생성해 새로운 경로 생성을 위한 통보를 차단
  1. RPKI(Resource Public Key Infrastructure)
    자원 공개 키 인프라
    웹사이트의 인증과 비슷한 구조
    BGP 정보를 인증하는 데 필요한 시그니처를 암호화 해서 보호
    AS Number와 IP Prefix 등의 인터넷주소 자원에 대해 PKI 표준 기반을 사용해 해당 라우팅 정보의 무결성을 보장하는 인증서를 발행하는 기술을 의미
    BGP Peer에 대한 통보가 신뢰성이 있는지 검증함으로써 비정상 경로를 사전에 탐지 및 차단할 수 있음
  • 지원방식
    • 위임(Delegation)
      각 주소 관리 기관에서 각각의 인증서버(CA)를 구축해서 리소스 및 ROA 인증서를 관리
    • 통합(Hosted)
      RIR에서 RPKI 시스템을 구축하고 소속된 하위 인터넷주소 관리기구에서 이 시스템에 접근
  1. ROV(Route Origin Validation)
    경로 출처 확인
    프리픽스 광고 정보가 실제 보유자로부터 나온 것인지 확인하는 방식

#. OSPF와 비교

cf) OSPF(Open Shortest Path First)
노드 간에 사용 가능한 최단 루트를 찾아 가능한 한 단시간에 최단 루트로 페일오버하는 데 중점

비교OSPFBGP
게이트웨이 프로토콜내부외부
디자인계층메쉬
네트워크의 크기소규모(ex. 중앙에서 관리)대규모(ex. 인터넷)
함수가장 빠른 경로가 최단 경로보다 선호데이터 그램에 대한 최상의 경로가 결정
사용 된 알고리즘Dijkstra 알고리즘최적 경로 알고리즘
프로토콜IPTCP
작동프로토콜 번호 89포트 번호 179
유형링크 상태경로 벡터

이와 같이 라우팅 방식이 다르게 적용되는 이유는 인터넷에서 중추적인 역할을 하는 AS들이 KT, SK Broadband와 같은 ISP(Internet Service Provider)에 의해 관리된다는 점에 있다. 즉 AS 간의 연결 여부는 사기업인 ISP 간의 계약에 따라 좌우되며 이러한 점에서 항상 최단 경로를 택하는 것이 보장되지 않는다. 반면 AS 내부에서는 무조건 빠르게 원하는 목적지까지 패킷을 전달하는 것이 네트워크의 부하, 반응속도 측면에서 좋기 때문에 최단 경로를 선택하는 알고리즘이 사용된다. 이와 같은 차이를 두고 BGP는 Policy-oriented한 특성을 가지고, OSPF는 Mechanism-oriented한 특성을 가진다고도 표현한다.



참고 자료

[이해하기] 라우팅 프로토콜 - BGP
BGP (Border Gateway Protocol)
실제 사례로 풀어본 BGP 유출의 정의와 위험성
What is BGP hijacking?
OSPF와 BGP의 차이점
Routing Protocol: BGP & OSPF

0개의 댓글