본문 바로가기

프로그래밍/네트워크

[화웨이] 네트워크 과제 5 - BGP 학습

개요

BGP 과제를 하기 전에 BGP에 대해 알아야 하는 내용들을 정리해보고자 한다.

 

BGP 과제에서는 iBGP 와 eBGP를 이용하여 네트워크를 구성해 볼 예정이다.

 

BGP 란?

 인터넷 전체를 연결하는 EGP. 국가와 통신사별로 독립된 네트워크가 각자의 AS를 가지고 IGP를 운영하고 각 AS 사이에서 경로를 지나가야 할 때 사용하는 것이 BGP이다.
 정책 기반 프로토콜로 경로를 필터링/우선순위 설정할 수 있으며, 아무 정책이 없을 경우 AS-Path가 짧은 경로를 기본적으로 택한다 (Path Vector 구조)
 유일한 TCP 기반 통신으로 전 세계 규모의 경로를 오래 유지해야하기 때문에 신뢰성이 높은 TCP를 사용한다. 따라서 IP 통신이 가능하면 피어링이 가능하다

 

AS / AS Number / AS Path

 as
  하나의 관리 주체에 의해 운영되는 IP 네트워크의 집합. bgp 의 라우팅 정책을 독립적으로 운영하는 블록


 as number(ASN)
  as 를 식별하기 위한 고유 번호(ID) 1~64495의 public asn 이 있고, 64512~65534의 private asn 이 있음. 65535 등 나머지 일부 값은 iana(인터넷 할당 번호 관리 기관)의 예약어로 사용 금지


 as path
  목적지까지의 as 목록. 특정 경로가 거쳐온 여러개의 AS를 as-path 필드에 담겨서 bgp update 메시지로 전파됨. 자신의 AS 번호가 AS-PATH에 중복 포함되면 루프로 간주하고 해당 경로는 폐기하고, 특정 as를 필터링하거나 우선하도록 하는 정책이 없다면 as-path가 짧은 경로를 우선한다.

 

ebgp & ibgp

 ebgp
  서로 다른 AS 간 경로를 연결하주는 bgp. 기본적으로 직접 연결된 이웃간 세션을 전제로 하기 때문에 기본 TTL이 1이다. 따라서 중간 장비/인터페이스를 경유하는 경우 ebgp-max-hop 명령을 추가하여 TTL 범위를 확장해야 한다. eBGP는 기본적으로 받은 경로의 next-hop을 자신으로 바꾸지만, iBGP는 next-hop을 유지하므로 내부 라우터가 외부 경로의 next-hop까지 도달할 수 없을 경우 `next-hop-local` 설정이 필요하다.


 ibgp
  같은 AS 안에서 내부의 경로를 전달해주는 bgp, 경로를 재전파 할 수 없기 때문에 Full-Mesh 혹은 RR 이 필요하다.

 

Full Mesh / Route Reflector / Confederation

ibgp 는 내가 받은 경로를 다른 라우터에게 전달하지 않도록 되어있기 때문에(split horizon이라고 부른다) 선택해서 구성해야 한다.
 full mesh 
  as 내부의 ibgp 로 연결된 라우터들이 서로 모두 직접 peer를 맺는 구조. 단순하고 경로가 정확하지만 장비수가 많아지면 peer의 개수가 n*(n-1)/2 개가 되기 때문에 유지보수와 설정이 복잡해진다.


 route reflector(rr)
  중앙 장비가 ibgp 경로를 다른 peer 들에게 반사하여 전파하는 방식. 해당 장비가 RR, 예하 장비가 route reflector client 가 된다. 피어 수가 n개로 설정이 단순해지지만 RR 장비의 의존성이 높아져 장애 시 문제가 커진다.


 confederation
  하나의 AS 를 여러 개의 작은 Sub-AS로 나누고 이들끼리 eBGP처럼 구성하는 방식. 외부에서는 단일한 AS 인 것처럼 보이지만 내부는 여러 개의 AS로 나뉘어 있기 때문에, 대규모 네트워크에서의 복잡성을 완화하여 정책 설정이 자유로워지는 장점이 있다.

 

Peer & Neighbor / bgp session

 peer/neighbor 는 bgp session 을 맺거나 맺으려는 상대방 라우터를 뜻함.
 bgp session 은 bgp peer 사이에 연결 상태를 의미한다. tcp 179번 포트로 연결을 구성하며, 세션이 성립되면 peer 관계가 활성화된다.
  Idle            : 대기 중. 아무것도 안 함
  Connect     : TCP 연결 시도 중     
  Active         : 연결 재시도
  OpenSent   : Open 메시지 보냄
  OpenConfirm :상대 응답 대기 
  Established : 세션 성립/경로 교환 가능

 

next-hop-local ( = next-hop-self)

 ibgp 는 받은 경로의 next-hop을 그대로 유지한다. 그래서 외부에서 받은 경로의 next-hop 이 변경되지 않고 내부로 전달되면, 받은 장비에서는 해당 next hop으로 가는 경로를 알 수 없기 때문에 문제가 생김
 따라서 ebgp로 받은 경로를 ibgp 로 전파할 때나, route-reflector를 사용할 때에는 해당 설정을 지정해 줘서 외부 경로로 가는 길은 해당 장비가 받아서 처리하도록 지정해 주는 설정.

 

 

약어 정리

bgp  : Border Gateway Protocol
as  : Autonomous System
egp  : Exterior Gateway Protocol
igp  : Interior Gateway Protocol
tcp  : Transmission Control Protocol
ebgp  : External BGP
ibgp  : Internal BGP
ttl  : Time To Live
iana  : Internet Assigned Numbers Authority