본문 바로가기
네트워크/BGP

BGP Neighbor State

by 최개미의 세계 2024. 5. 22.
728x90
반응형

1. BGP Timer

Timer Description
Connect
Retry Counter
❍ BGP Peer가 Peer Session을 설정하려고 시도한 횟수를 의미
Connect
Retry Timer
❍ TCP Session이 설정되면 Connect Retry Timer가 중지
❍ TCP Session을 설정하려는 첫 번째 시도가 실패하면 Connect Retry Timer가 만료된 후 BGP는 다시 TCP Session을 설정하려고 시도
❍ Connect Retry Timer를 길게 설정하면 Peer 관계가 Flapping으로 인한 Route Flapping이 억제
❍ Nokia 7750 SR OS Default Value : 120s
Delay
Open Timer
❍ TCP Session Flapping 발생 시, Resource를 소비하는 문제를 보완하고자 Open Message를 전송하기 전 Delay Time을 지정
❍ RFC에는 Delay Open Timer의 내용이 있지만 Google Search 결과 Nokia, Cisco, Juniper 등 여러 Vendor에서 구현이 안 된 것으로 파악
Hold Time ❍ BGP Session 종료 전, Keepalive 또는 Update Message 수신을 기다리는 시간
❍ RFC 4271에 따라 0 또는 3s 이상이어야 구동 가능
 - 0s로 설정 시, Peer와의 연결이 영구적으로 구성
 - 0s로 설정 시, Keepalive Message는 미송신
❍ Hold Time은 Open Message를 통해 전송
 - Nokia 7750 SR OS Default Value : 90s
 - Cisco Default Value : 180s
Keepalive ❍ 해당 Timer가 만료되면 Keepalive Message를 송신
❍ 해당 Timer 구성이 잘못된 경우, Hold Timer의 1/3로 자동 설정
 - Keepalive 값이 Hold Timer 값보다 클 경우, 해당
❍ Hold Time 값이 0일 경우, Keepalive 값은 무시
❍ 일반적으로 Keepalive Timer는 Hold Timer의 1/3
 - Nokia 7750 SR OS Default Value : 30s
 - Cisco Default Value : 60s
❍ Keepalive Timer는 Peer 간에 협상되지 않으며 Local에서 구성
❍ Nokia 7750 SR OS는 자동으로 Active Hold Timer의 1/3로 구성

 

 

2. BGP Neighbor State

1) BGP Neighbors Phase

  • BGP Neighbor는 2단계로 성립
Phase Description
TCP BGP Peering을 시작하기 위해 TCP 179번을 사용해 BGP Peer IP Address로 TCP Session을 시도
BGP Neighbor State 중에 Idle, Connect, Active State가 이에 해당
BGP BGP Neighbor State 중에 Open Sent, Open Confirm, Established State가 이에 해당

 

2) BGP Neighbor State Diagram

State Description
Idle Initial BGP Peer State를 의미
 - New BGP Peer를 구성하거나 BGP Peer 재설정

Remote BGP Neighbor에 대해 TCP 연결을 시도하는 단계
 - TCP 연결 시도가 성공하면 Connect State로 변경
 - TCP 연결 시도에 실패하면 Idle State를 유지 (라우팅 테이블에 BGP Peer에 대한 Network IP 정보가 없는 경우)
TCP 연결 시도 성공이란 TCP Packet(SYN Flag)를 전송한 것을 의미
Connect 해당 상태에서 TCP Connect가 완료되기를 기다리는 상태
Remote Peer와 TCP Connect를 설정하려고 시도할 때 BGP State
Active TCP Connect가 실패한 경우
Passive TCP Establishment Option이 활성화된 경우
Open Sent Open Message를 보내고 Peer의 Open Message를 기다리는 BGP State
Negotiated Hold Time 값이 0이면 Hold Timer 및 Keepalive Timer가 시작되지 않음
수신한 Open Message에서 Error가 없으면 Keepalive Message를 전송하고 Keepalive 및 Hold Timer가 시작
 - Error란 Open Message에 잘못된 정보(Version, ASN 등 Error Code)가 있는 경우를 의미
BGP가 ASN을 확인하기 때문에 eBGP 또는 iBGP를 사용할지 여부를 결정하는 상태
 - 수신한 AS Field가 Local AS와 같으면 ‘Internal’이고, 다르면 ‘External’
Open Confirm Open Message를 수신하고 Keepalive Message를 전송한 후 Peer로부터 Keepalive Message를 기다리는 BGP State
Established BGP Peer로부터 Keepalive Message를 수신한 BGP State
BGP Peer에게 Update Message 전송이 가능한 상태
  • RFC 4271에는 Negotiated Hold Timer의 값은 양단의 Peer에 구성된 Hold Timer 중 큰 값으로 결정된다고 표시
  • Nokia 7750 SR Negotiated Hold Timer의 값은 양단의 Peer에 구성된 Hold Timer 중 작은 값으로 결정

 

 

 

3. Detailed BGP Neighbor State

1) Idle State

State Description
Idle
→ Idle
TCP Connect 시도 실패
Idle
→ Connect
TCP Connect 시도 성공
 - BGP Resource 초기화
 - Connect Retry Counter를 0으로 변경
 - Connect Retry Timer를 초깃값에서 시작
Idle
→ Active
Passive TCP Establishment Option이 활성화된 경우
 - BGP Resource 초기화
 - Connect Retry Counter를 0으로 변경
 - Connect Retry Timer를 시작

 

2) Connect State

State Description
Connect
→ Connect
Connect Retry Timer Expires
 - TCP Session 종료
 - Connect Retry Timer 재시작
 - TCP Connect 재시도
❍ TCP Connect 성공(Delay Open Timer Disable)
 - Connect Retry Timer를 중지하고 0으로 설정
 - Peer에게 Open Message를 전송
 - Open Sent State로 변경

TCP Connect 성공
 - Connect Retry Timer를 중지하고 0으로 설정
 - Delay Open Timer를 초깃값으로 설정
 - Connect State를 유지
Connect
→ Idle
관리자가 Peer Connection을 수동으로 중지
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer 및 Connect Retry Counter를 0으로 설정
Connect
→ Active
TCP Connect 실패
 - Connect Retry Timer를 초깃값으로 재시작
Connect
→ Open Sent
Delay Open Timer Expires
 - Connect Retry Timer 및 Delay Open Timer를 0으로 고정
 - Peer에게 Open Message를 전송
 - Hold Timer Negotiate

 

3) Active State

State Description
Active
→ Active
TCP Connect 성공 시, Delay Open Timer를 확인
 - Connect Retry Timer를 중지하고 0으로 변경
 - Delay Open Timer를 초깃값으로 변경
 - Active State를 유지
Active
→ Idle
관리자가 Peer Connection을 수동으로 중지
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer 및 Connect Retry Counter를 0으로 설정
Active
→ Connect
Connect Retry Timer Expires
 - Connect Retry Timer를 초깃값으로 재시작
 - TCP Connect 재시도
Active
→ Open Sent
❍ TCP Connect 성공(Delay Open Timer Disable)
 - Connect Retry Timer를 0으로 설정
 - BGP Resource 초기화
 - Peer에게 Open Message를 전송
Delay Open Timer Expires

 - Connect Retry Timer 및 Delay Open Timer를 0으로 고정
 - Peer에게 Open Message를 전송
 - Hold Timer Negotiate

 

4) Open Sent State

State Description
Open Sent
→ Idle
관리자가 Peer Connection을 수동으로 중지
 - Cease Error Code가 포함된 Notification Message를 전송
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer 및 Connect Retry Counter를 0으로 설정
BGP Message에서 Event 발견 / Hold Timer Expires Event
 - 적절한 Error Code가 포함된 Notification Message를 전송
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer를 중지하고 0으로 설정
 - Connect Retry Counter를 1씩 증가
Notification Message 수신
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer를 중지하고 0으로 설정
 - Connect Retry Counter를 1씩 증가
Open Sent
→ Active
TCP Connection Failure Notice를 수신
 - BGP Session 종료
 - Connect Retry Timer를 재시작
 - 예시) Peer가 TCP FIN Flag를 전송하여 FIN/ACK로 응답하는 경우
 - 예시) TCP Session Timeout이 발생하는 경우
Open Sent
→ Open Confirm
Open Message 수신 후, Message에 Error가 없을 경우
 - Keepalive Message를 전송
 - Hold Timer 및 Keepalive Timer를 결정

 

5) Open Confirm State

State Description
Open Confirm
→ Open Confirm
Keepalive Timer Expires
 - Keepalive Message 전송
 - Keepalive Timer 재시작
Open Confirm
→ Idle
관리자가 Peer Connection을 수동으로 중지
 - Cease Error Code가 포함된 Notification Message를 전송
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer를 중지하고 0으로 설정
 - Connect Retry Counter를 0으로 설정
BGP Message에서 Event 발견 /  Hold Timer Expires Event
 - 적절한 Error Code가 포함된 Notification Message를 전송
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer를 중지하고 0으로 설정
 - Connect Retry Counter를 1씩 증가
Notification Message 수신
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer를 중지하고 0으로 설정
 - Connect Retry Counter를 1씩 증가
TCP Session Connection Failure Notice를 수신
 - BGP Session 종료
 - Connect Retry Timer를 재시작
 - 예시) Peer가 TCP FIN Flag를 전송하여 FIN/ACK로 응답하는 경우
 - 예시) TCP Session Timeout이 발생하는 경우
Open Confirm
→ Established
Keepalive Message 수신
 - Hold Timer 초깃값으로 재시작

 

6) Established State

State Description
Established
→ Idle
공통적으로 해당 Connection과 관련된 모든 Route를 삭제
관리자가 Peer Connection을 수동으로 중지
 - Cease Error Code가 포함된 Notification Message를 전송
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer를 중지하고 0으로 설정
 - Connect Retry Counter를 0으로 설정
BGP Message에서 Event 발견 / Hold Timer Expires Event
 - 적절한 Error Code가 포함된 Notification Message를 전송
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer를 중지하고 0으로 설정
 - Connect Retry Counter를 1씩 증가
Notification Message 수신
 - TCP Session을 종료
 - Delay Open Timer를 포함한 모든 BGP Resource 해제
 - Connect Retry Timer를 중지하고 0으로 설정
 - Connect Retry Counter를 1씩 증가
TCP Session Connection Failure Notice를 수신
 - BGP Session 종료
 - Connect Retry Timer를 재시작
 - 예시) Peer가 TCP FIN Flag를 전송하여 FIN/ACK로 응답하는 경우
 - 예시) TCP Session Timeout이 발생하는 경우
Established
→ Established
Keepalive Timer Expires(Negotiated Hold Time이 0이 아닌 경우)
 - Keepalive Message 전송 및 Keepalive Timer 재시작
Keepalive, Update Message 수신
 - Negotiated Hold Time이 0이 아닌 경우, Hold Timer를 재시작
Keepalive, Update Message 송신
 - Negotiated Hold Time이 0이 아닌 경우, Keepalive Timer를 재시작

 

 

4. BGP Neighbor 확인(Nokia 7750 SR)

1) show router bgp neighbor

  • 'Last Error' Field : BGP Neighbor에서 마지막으로 발생한 BGP Error 및 Sub-Code를 표시

 

'Last Event' Field List
State Description
Start BGP Peer를 초기화
Stop BGP Peer를 비활성화
Open TCP Connection Opened
Close TCP Connection Closed
OpenFail TCP Connection Failure
Error TCP Connection Error
ConnectRetry Connect Retry Timer Expire
HoldTime Hold Time Timer Expire
KeepAlive Keepalive Timer Expire
RecvOpen OPEN Message 수신
RevKeepalive Keepalive Message 수신
RecvUpdate Update Message 수신
RecvNotify Notification Message 수신
None Event가 발생하지 않음

 

 

5. BGP Session Clear(Nokia 7750 SR)

  • 'clear router bgp neighbor x.x.x.x' 명령어로 Neighbor Clear 가능
  • 'clear router bgp protocol' 명령어로 BGP Protocol Clear 가능

1) Soft Option

  • clear 명령어로 인한 서비스 영향을 감소
Option Description
Soft 지정된 BGP Neighbor는 Local-RIB의 모든 경로를 재계산
Soft-Inbound 지정된 BGP Neighbor는 RIB-In의 모든 경로를 재계산

 

728x90
반응형