Network/BGP

[BGP] Neighbor 수립 과정

chan10 2024. 12. 5. 18:45

 

BGP Neighbor 수립 과정

  • 자동으로 Neighbor 관계를 맺는 IGP와 달리 BGP는 Neighbor 관계를 맺기위해 관리자가 직접 설정을 해야합니다.
  • Neighbor 관계를 맺기 위해 TCP Port 179번 사용합니다.
  • BGP는 Finite-State Machine(FSM)을 이용하여 BGP Peer와 운영 상태를 관리

 

전체 과정 : Idle → Connect → OPEN sent → Open Confirm → Established → Update

 

Idle

BGP 활성화 초기 단계로 BGP Peer 연결을 위해 BGP는 일부 리소스를 초기화하고, ConnectRetry 타이머를 재설정하고, 원격 BGP 이웃에 대한 TCP 연결을 송신 및 수신대기 합니다.

Idle 상태에서는 Router-ID가 존재(1)하는지 Peering 연결(2)을 위한 TCP Port를 할당 받을 수 있는지 확인하며 없을 경우 Idle 상태를 유지합니다.

최초 연결 여부(3) 및 iBGP, eBGP인지 판단(4)하여 유형에 따라 요청하는 방식이 달라집니다.

 

Connect

설정된 Neighbor IP 주소로 BGP Peering 연결을 시도하는 단계입니다.

Connect 상태는 TCP Session이 완성되기를 기다리는 상태고 Active 상태는 TCP Session 연결을 수행하는 단계입니다. 그래서 Connect 상태가 되자마자 Active 상태가 되어 TCP Session 연결을 시작합니다.

BGP Neighbor와 TCP 3-way 핸드셰이크 연결을 시도 합니다. 만약 TCP 세션 설정이 실패하거나 응답이 없으면, ConnectRetryTimer가 만료된 뒤 재시도를 시작합니다. (ConnectRetryTimer : 보통 60초)

TCP 연결에 성공하면 Open 메시지 전송 후 OpenSent 상태로 이동하며 실패 시 Active 상태로 이동해 계속 시도합니다.

 

Active

Connect 단계에서 실패 후 BGP는 Active 단계에서 새로운 TCP 연결을 시도 합니다.

연결이 성공하면 Open 메시지를 전송하고 OpenSent 단계로 상태를 변경합니다.

연결에 실패시 Connect 단계로 변경되며 ConnectRetryTimer가 초기화됩니다.

 

OPEN sent

TCP 연결이 정상적으로 수립되었고 BGP 라우터가 Open Message를 정상적으로 보낸 상태입니다.

BGP OPEN Message는 BGP Session을 맺기 위한 협상 정보를 전송합니다.

  • The BGP Version Number
    • Binary: 00000100, Decimal: 4(IPv4 용도로 Version 4 사용)
  • The AS Number
    • Open Message에 있는 AS Number와 수신한 라우터의 AS Number가 다를 경우 Neighbor 관계가 수립되지 않습니다.
  • The Hold Down Time value
    • Hold Time은 기본적으로 KeepAlive 값의 3배수의 Timer값을 가지며 BGP Peer 간 Hold Time이 서로 다를 경우 협상을 통해 값을 선택합니다.
    • BGP Peer 간 Hold Time 값이 다를 경우 두 값중 Minimum 값으로 적용되며 만약 Hold time 값이 0일 경우 BGP Peer 사이에 KeepAlive 메시지를 전송하지 않습니다.
  • The BGP Identifier(management IP address of the router) and Optional Parameters
    • BGP를 식별하기 위한 유일한 정보인 Router ID(RID)이 포함

OPEN Message에 오류가 없을 경우 Open Confirm 단계로 넘어가지만 오류가 발생할 경우 Notification 메시지 전송 후 Idle 전환 됩니다.

 

Open Confirm

Open Message를 주고 받은 후 Neighbor로 부터 Keepalive를 기다리는 상태입니다.

Neighbor에게 Keepalive 메시지를 받으면 Established 상태로 넘어가고 Hold Time을 초기화합니다.

Neighbor로 부터 Notification 메시지나 Hold Time이내 Keepalive 메시지를 받지 못하면 Idle 상태로 전환됩니다.

 

Established

정상적으로 BGP Session 수립이 완료되어 Neighbor로 부터 라우팅 정보를 교환할 수 있는 상태입니다.

Neighbor로 부터 Keepalive 또는 Update 메시지를 받으면 Hold Time을 초기화합니다.

Neighbor로 부터 Notification 메시지나 Hold Time이내 Keepalive 메시지를 받지 못하면 Idle 상태로 전환됩니다.

Update 메시지는 경로 변경, 최적 경로 변경, 정책 변경(as-path 등 설정 변경)이 있을 경우에만 전송하고 평소에는 Keepalive 메시지로 Neighbor관계를 유지합니다.

 

 

[참고 블로그]

https://white-polarbear.tistory.com/91

https://pado-n-wave.tistory.com/58

https://blog.naver.com/h2nhiro/221354495956

https://networklessons.com/bgp/bgp-neighbor-adjacency-states