Border Gateway Protocol, BGP는 전 세계의 수많은 네트워크들을 연결하고 원활하게 데이터가 흐를 수 있게 하는 글로벌 인터넷 라우팅 인프라의 근간입니다.

이 글에서는 BGP가 어떻게 동작하는지, 어떤 기능을 하는지 자세히 알아보고자 합니다.

AS(Autonomous System)와 ASN(Autonomous System Number)의 기본 개념을 논하고,
이와 관련된 보안 이슈와 RPKI(Resource Public Key Infrastructure) 도입이 필요한 이유를 설명할게요.
그리고 네트워크 운영에 있어 BGP 모니터링이 어떻게 이뤄져야 할지 개략적으로 이야기해보겠습니다.

BGP란 무엇인가?

BGP는 IETF 표준으로 제정된, 글로벌 인터넷에서 서로 다른 네트워크(AS) 간에 라우팅 정보를 교환하는 데 사용하는 프로토콜입니다.

BGP를 사용하면 라우터가 다른 라우터와 피어링 관계를 맺은 뒤, 라우팅 정보를 공유함으로써 네트워크 간에 가장 효율적인 경로를 통해 데이터 패킷을 전달할 수 있습니다.

BGP는 Path-vector 프로토콜로서 네트워크 관리자가 정의한 경로와 정책, 그리고 규칙을 기반으로 라우팅을 결정합니다.

BGP는 인터넷 상 다수의 네트워크(ASes)에서 연결이 가능한지, 즉 "Reachability" 정보를 알려준다고도 말할 수 있습니다. 여기서 Reachability는 라우터가 인터넷을 통해 다른 라우터 또는 그 네트워크와 통신할 수 있는 지를 뜻합니다. 그래서 Reachability는 라우터가 특정 IP 주소가 통신이 가능한지, 가능하다면 어떤 경로를 통해 데이터 패킷을 라우팅해야 할 지 알게 하는 중요한 역할을 합니다.

BGP 라우터가 다른 라우터와 라우팅 정보 및 Reachability 정보를 교환할 때, 두 라우터는 각각의 AS 내에서 사용 가능한 네트워크 경로와 IP 주소의 Reachability에 대한 세부 정보들을 공유합니다.
이 정보들은 라우터가 데이터 패킷을 특정 목적지에 보낼 때, 가장 효율적인 경로를 선택하여 보낼 수 있도록 하여 인터넷🌏을 통해 원활한 데이터 전송이 가능토록 합니다.

BGP 동작 방식

BGP 라우터는 다른 라우터와 피어링 관계를 설정하고,
BGP 업데이트의 형태로 서로의 라우팅 정보들을 교환합니다.

교환되는 라우팅 정보에는 IP Prefix 목록과 최적 경로 선택에 사용되는 BGP Attribute들이 있습니다.

L2 STP와 같이, BGP에서도 Loop 방지 매커니즘이 있습니다.
BGP에서 Looping은 라우팅 경로에서 어떤 AS들을 통과하는지 알려주는 AS Path를 통해 방지됩니다.

그리고 BGP 최적 경로 선택 과정에서는 Local Preference, MED, Next-hop 등의 BGP Attribute들이 사용됩니다.

BGP의 특징

BGP는 안정적이면서도 효과적으로 인터넷 트래픽을 라우팅하기 위해, 몇가지 특징을 가지고 있습니다.

Path-vector 프로토콜

BGP는 "path-vector" 프로토콜로, 경로 상 통과한 AS들의 정보를 순서에 맞춰 보존합니다.
BGP는 이 AS Path 정보를 통해 라우팅 Loop을 방지하고 라우팅 정책에 따라 경로 선택을 할 수 있습니다.

네트워크 엣지(EDGE)에서 동작

BGP는 네트워크의 EDGE에서 다른 네트워크(AS)들과 연결한 뒤 서로의 라우팅 정보를 교환합니다.
이로써 BGP는 글로벌 인터넷 라우팅 환경을 모두가 이해할 수 있도록 합니다.

AS 내부, AS 외부 라우팅 지원

AS 내부에서는 iBGP, 그리고 외부의 다른 AS와는 eBGP를 사용하여 AS 내외부 모두에서 BGP 라우팅을 사용할 수 있습니다. 그래서 BGP는 대규모의 네트워크 내부에서도, 인터넷을 통해서도 효율적인 라우팅을 가능케합니다.

확장성 (Scalability)

BGP는 1989년 설계 단계에서부터 인터넷의 성장에 따라 확장될 것을 예상하고 만들어졌습니다.
그래서 수많은 라우팅 경로와 피어링 관계들을 지원할 수 있도록 설계되었습니다.

아래 이미지는 APNIC에서 발표한 BGP 라우팅 경로들의 성장 추이입니다. 📈
(정말 IPv4 주소 고갈이 얼마 남지 않은 듯 하네요)

유연성 (Flexibility)

BGP는 네트워크 관리자에게 광범위한 라우팅 관련 권한을 제공합니다.
그래서 네트워크 관리자는 라우팅 정책과 Attribute를 설정함으로써 라우팅 경로 선택 프로세스를 제어할 수 있고, 이를 통해 다른 AS의 라우팅에까지 영향을 미칠 수 있습니다.

BGP는 유연한 만큼, 그에 대한 책임도 크다고 볼 수 있겠죠? 🥲

다양한 네트워크 주소 체계 지원

BGP는 IPv4, IPv6를 모두 지원하며 MPLS에 사용되는 VPNv4 등 다양한 네트워크 주소 체계를 지원합니다.

Incremental update & Route aggregation

BGP 라우터는 기존과 다르게 변경된 부분에 대해서만 BGP 정보를 업데이트합니다.
라우팅 정보의 변경 사항만 전달되기 때문에 라우터 간에 전송되는 BGP 데이터의 양이 줄어들 수 있죠.

그리고 BGP는 라우팅 경로를 집계하여 업데이트함으로써 교환하는 라우팅 경로 정보들을 최소화하여 BGP 라우터의 컴퓨팅 리소스를 절약할 수 있습니다.

BGP의 기능

BGP는 아래와 같은 기능들을 통해 인터넷 라우팅에서 중추적인 역할을 합니다.

네트워크 간 트래픽 라우팅

BGP는 BGP 정책에 따라 출발지(Source)와 도착지(Destination) 네트워크 간 트래픽이 흐를 수 있는 최적의 경로를 결정합니다. 이로써 효율적인 라우팅과 네트워크 성능을 보장합니다.

네트워크 가용성 보장

BGP 라우터는 지속적으로 라우팅 경로의 변경 사항들을 교환하기 때문에, 네트워크 토폴로지의 변화에 빠르게 적응할 수 있습니다.
그래서 네트워크 장애나 트래픽 병목 현상이 발생할 때에도 안정적인 네트워크 연결을 유지할 수 있습니다.

트래픽 엔지니어링 : 네트워크 간 트래픽 제어

BGP를 사용하면 네트워크 관리자가 다양한 BGP 정책을 통해 네트워크 간 트래픽 라우팅을 제어할 수 있습니다. 이를 "트래픽 엔지니어링"이라고도 부릅니다.
네트워크 관리자는 트래픽 엔지니어링을 통해 네트워크 성능을 최적화하고, 트래픽으로 인한 부하를 분산하고, 네트워킹에 드는 비용을 관리할 수 있습니다.

로드밸런싱

BGP는 다수의 네트워크 링크를 활용하여 트래픽을 분산할 수 있습니다.
이로써 네트워크 레벨에서 로드밸런싱을 구현하여 네트워크 성능을 최적화할 수 있습니다.

Multihoming

BGP를 통해 네트워크를 여러 Upstream Provider(ex. SKB & KT)에 연결하여 안정성을 높이고 네트워크 성능을 향상시킬 수 있습니다.

AS와 AS 운영자

Autonomous System, AS는 글로벌 인터넷 인프라를 책임지는 중추적인 역할을 합니다.

AS는 하나의 네트워크 도메인을 뜻합니다.
일반적으로 대규모 네트워크를 가지고 있는 대기업, ISP, 그리고 CP에서 AS를 소유하고 운영합니다.

AS는 고유한 AS 번호, AS Number(ASN)를 부여받습니다.
AS 소유자는 자신의 ASN을 사용하여 BGP를 통해 다른 AS와 라우팅 정보를 교환합니다.
그래서 AS 소유자는 전 세계에서 자신의 네트워크에 대한 Reachability를 보장받을 수 있습니다.

AS 운영자들은 네트워크, 즉 AS의 라우팅 정책을 유지하고 글로벌 BGP 라우팅 프로세스에 참여합니다.
단순하게 생각하면 한 기업의 네트워크 운영만을 책임진다고 생각할 수도 있지만, 그렇지 않습니다.

AS 운영자는 BGP 세션을 수립하고 다른 AS와 라우팅 정보를 교환함으로써
인터넷의 전반적인 안정성과 효율성에 기여하는 막중한 임무를 수행하고 있습니다.

AS : 독점적인 관리/제어 권한을 갖춘 네트워크 도메인

AS는 1개 조직이 독점적으로 관리하고 제어하는 네트워크입니다.

이 조직의 AS 운영자는 네트워크가 최적으로 동작할 수 있도록 자체적인 라우팅 정책을 정의합니다.

AS 운영자는 라우팅 정책을 통해 트래픽이 네트워크 AS 내부에서 전달되는 방법과 외부 AS 네트워크에 도달하는 방법을 완벽하게 제어할 수 있습니다. (위에서 말씀드렸던 iBGP, eBGP가 여기서 사용됩니다)

AS 운영자들은 누구일까요?

  • Internet Service Provider (ISP) : KT, SK브로드밴드, LG U+, 드림라인...
  • Contents Provider (CP) : Kakao, Google, Facebook, Amazon...
  • 그리고 일반 대중이 잘 알지는 못하지만,
    인터넷을 가능케하는 수 많은 대규모 네트워크 운영자분들이 있습니다.

ASN : AS를 위한 독점적인 번호 체계

각각의 AS는 글로벌 인터넷 라우팅 시스템 내에서 식별되기 쉽도록 고유한 AS 번호(ASN)를 할당받습니다.

ASN은 IANA에 의해 RIR에 할당된 16비트 또는 32비트의 번호입니다.
이 번호들은 AS를 소유한 ISP나 네트워크 운영자들에게 분배됩니다.
각 AS마다 독점적으로 ASN을 사용하기에, BGP는 AS들을 구별하여 라우팅 정보를 교환할 수 있습니다.

참고 : KISA - 국내 AS번호 사용자현황

AS Announcement와 관련 리스크 & 이슈

AS Announcement(이하 AS 광고)는 AS가 라우팅 정보를 다른 AS에 전달하는 것을 뜻합니다.

예를 들면,

  • 2번 AS는 인접한 1번 AS로부터 라우팅 정보를 업데이트 받으면,
  • 2번 AS의 라우팅 정책에 따라 1번 AS의 라우팅 정보를 업데이트합니다.
  • 그리고 연결된 3번 AS에 업데이트된 정보를 다시 광고합니다.
  • 3번 AS도 4번 AS도 계속해서 반복하여 글로벌 인터넷 라우팅 정보가 모두 변경됩니다.

그러나 위 프로세스는 AS 운영자의 BGP 정책 구성 실수나, Route leak, 그리고 Route Hijacking과 같은 리스크에 심각하게 노출되는 문제를 가지고 있습니다.
(AS 운영자분들도 사람이다보니 실수가 전혀 없을 수는 없으니까요 😭)

  • BGP 정책 구성 실수 (BGP Misconfiguration)
    BGP 라우터 정책 Config 실수는 의도하지 않은 라우팅을 초래할 수 있습니다. 이로 인해 트래픽이 비효율적으로 전달되거나 아예 삭제될 수도 있습니다.
    BGP의 잘못된 구성은 휴먼에러 또는 소프트웨어 버그와 같은 다양한 이유로 발생할 수 있으며, 네트워크의 안정성을 떨어뜨리거나 아예 통신이 불가하게도 만들 수 있습니다.
    (ex. 2021년 KT 전국망 장애)
  • BGP Route Leak
    BGP Route Leak은 1번 AS가 라우팅 정보를 2번 AS로 잘못 광고하는 것을 뜻합니다.
    이럴 경우, 트래픽이 의도하지 않은 2번 AS의 경로로 전달될 수 있습니다. 결국 네트워크 레이턴시가 증가하고, 심각한 경우 1번 AS로의 라우팅이 완전히 끊어질 수도 있습니다.
    (ex. AS7007 Route leak 사건)

위와 같은 취약점으로부터 인터넷, 그리고 AS를 보호하기 위해 AS 운영자는 BGP 라우팅 정보에 민감하게 반응해야합니다. 그래서 AS 운영자라면 누구나 BGP 모니터링이 필요합니다.

BGP 모니터링은 위와 같은 BGP의 취약점을 보완하고 개선할 수 있도록 실시간으로 가시성을 제공합니다. 자세한 내용은 이 글을 읽어보시거나 아래 문의하기 버튼을 활용해주시면 좋을 것 같습니다.

BGPsec & RPKI : BGP 취약점에 대한 대응 방법

BGP는 Route Hijacking, Route leak, IP Spoofing 등 다양한 보안 취약점들을 가지고 있습니다.
이런 위협들에 대응하기 위해 BGPsec과 RPKI가 개발되었습니다. (BGP 모니터링 또한 그렇습니다)

BGPsec (BGP Security)

BGPsec(RFC8205, IETF)은 라우터 간에 교환되는 BGP 라우팅 정보에 암호화된 유효성 검사 과정을 추가하여 보안을 강화하는 BGP의 확장 버전입니다.

BGPsec은 AS 광고에 포함된 라우팅 경로가 AS에 의해 합법적으로 승인된 라우팅 경로임을 보장함으로써 BGP 공격을 방지합니다. BGPsec은 아래에서 언급할 RPKI를 사용하여 BGP 업데이트 정보 중 AS Path Attribute를 검증하여 라우팅 정보의 무결성을 보장합니다.

RPKI (Resource Public Key Infrastructure)

RPKI(RFC6480, IETF)는 인터넷 라우팅 시스템의 보안 강화를 목표로 하는 글로벌한 Public Key Infrastructure(PKI)입니다.

RPKI는 인터넷 라우팅 주소(IP Prefix & ASN)들을 Route Origin Authorization(ROA)이라고 불리는 디지털 인증서와 연관시킵니다. ROA는 광고된 IP Prefix의 Origin AS를 검증하는 암호화 기법을 제공합니다.

그래서 RPKI는 AS 운영자가 다른 AS로부터 업데이트 받는 라우팅 경로들의 유효성에 대해 ROA 데이터에 기반한 결정을 내릴 수 있도록 하고, 악의적인 Route Hijacking을 방지할 수 있도록 지원합니다.

iBGP vs eBGP

BGP는 AS의 내부에서는 iBGP로, AS 외부에서는 eBGP로 각기 다른 버전으로 동작합니다.

eBGP (External BGP)

eBGP는 서로 다른 AS 간 라우팅 정보를 교환하는 데 사용됩니다.

eBGP 세션은 각각의 AS Edge에 있는 라우터 간에 설정됩니다. eBGP는 서로 라우팅 정보를 공유함으로써 AS가 인터넷을 가로질러 데이터 패킷이 전달될 수 있는, 최적의 경로를 결정할 수 있도록 합니다.

eBGP는 서로 다른 AS 간 명확한 독립성을 유지하면서도 AS 간의 라우팅 정보 교환을 용이하게 합니다.

iBGP (Internal BGP)

iBGP는 AS 내부에서 다수의 라우터 간 라우팅 정보를 전파하는 데 사용됩니다.

동일한 AS 내의 라우터들은 서로의 라우팅 정보를 공유하기 위해 서로 iBGP 세션을 맺습니다.
iBGP는 AS 내부의 모든 라우터가 AS의 네트워크 토폴로지와 라우팅 정보를 일관되게 공유받을 수 있도록 합니다.
이로써 AS 내의 모든 라우터가 다른 AS, 외부 네트워크에 효율적으로 트래픽을 라우팅 할 수 있게 됩니다.

eBGP와 iBGP의 차이점

eBGP와 iBGP의 중요한 차이점은 AS Path Attribute를 처리하는 방식입니다.

eBGP에서 라우터는 라우팅 경로 업데이트(AS 광고)를 수신할 때, AS 광고를 이웃에게 전달하기 전에 자신의 AS 번호를 AS Path에 추가합니다.

eBGP의 프로세스는 라우팅 Loop을 방지하는데 큰 도움이 됩니다.
라우팅 Loop 발생 시 eBGP 라우터가 AS Path Attribute에서 자신의 AS 번호를 인식하고 라우팅 경로를 폐기할 수 있기 때문이죠.

반면 iBGP는 라우팅 경로 업데이트가 동일한 AS 내부에서만 전파되기 때문에 AS Path Attribute를 수정하지 않습니다.

결론적으로, eBGP는 서로 다른 AS 간 라우팅 정보를 교환하는 데 사용되고,
iBGP는 하나의 AS 내에서 라우터들이 라우팅 정보를 공유할 때 사용됩니다.

BGP 커뮤니티 (BGP Communities)

BGP 커뮤니티는 BGP 경로의 특성이나 정책 Preference에 따라 라우팅 경로들을 태깅하고 그룹화할 수 있는 옵션 값입니다.

AS 운영자는 BGP 커뮤니티 값을 활용하여 BGP 라우팅 정책을 적용하고, 이에 대해 다른 AS 운영자들과도 커뮤니케이션할 수 있습니다.
BGP 커뮤니티는 AS 운영자의 트래픽 엔지니어링, 선택적 라우팅 경로 광고, 최적 라우팅 경로 선택 프로세스 조정 등 AS 운영자의 다양한 라우팅 Preference를 알리는 데 사용될 수 있습니다.

예를 들어, AS 운영자는 BGP 커뮤니티를 사용하여

  • 10.0.0.0/24 Prefix를 피어 A에게만 광고하거나
  • 라우팅 경로 선택 프로세스에서 후순위로 밀려야 하는 Prefix라고 메세지를 전달할 수 있습니다.

AS 운영자는 BGP 커뮤니티의 유연한 기능을 통해,
전체 BGP 구성을 단순화하면서도 복잡한 BGP 라우팅 정책을 구현할 수 있습니다.

BGP 커뮤니티는 피어링 파트너 간 BGP 라우팅 정책을 효율적으로 관리할 수 있도록 하여 인터넷 피어링의 필수적인 요소로 자리하고 있습니다.

BGP의 미래, 그리고 BGP 모니터링

인터넷 라우팅 인프라에서 BGP는 네트워크 간 효율적인 통신과 라우팅을 가능하게 하는 필수 요소입니다.

그리고 인터넷의 복잡성과 규모가 계속 증가함에 따라 BGP를 효과적으로 모니터링하고 관리하는 것이 점점 더 중요해지고 있습니다.

이에 따라 최근 떠오르고 있는 옵저버빌리티 솔루션들은 대부분 BGP 모니터링 기능을 구현해내고 있습니다. Kentik과 같은 네트워크 옵저버빌리티 플랫폼의 BGP 모니터링 기능을 사용하면 라우팅 결정을 최적화하고 추가 피어링 기회를 찾아내는데 많은 도움을 받을 수 있습니다.

마치며

읽어주셔서 감사합니다.

네트워킹 기술과 시장에 대한 소통, 언제나 환영합니다! 🙌
Coffee chat 신청하기
메모 남겨주시면 간단한 커피챗을 통해 저희 팀의 경험을 공유해드릴게요 😊

에어키는 네트워크 옵저버빌리티 플랫폼, kentik의 파트너로 활동하고 있습니다.
문의처 - 에어키 MSP팀 김상휘 프로 (shkim0730@airquay.com, +82-10-2914-9400)

이 글은 kentik의 kentipedia 문서의 번역/수정본이며 오역이 있을 수 있습니다. (출처)

profile
에어키 MSP팀에서 네트워킹, 보안, 옵저버빌리티를 지원하고 있습니다 :)

0개의 댓글