Networking

[NSX] The specific BGP neighbor becomes DOWN frequently.

haewon83 2024. 8. 22. 10:16

 

BGP Neighbor가 위치한 Physical Switch 중 한 쪽 Switch에 위치한 BGP Neighbor와의 연결만 반복적으로 Down/Up 현상이 발생하는 이슈가 있어 Troubleshooting 했던 내용을 공유 드립니다.

 

[Symptom]

Edge Node의 FRR Log에 다음과 같은 BGP Down 메시지가 반복적으로 발생

<TIMESTAMP> BGP: Peer <BGP_NEIGHBOR_IP> fd -1 send BGP_DOWN message to BGP adapter
<TIMESTAMP> BGP: BGP Adapter: Send BGP_DOWN for peer <BGP_NEIGHBOR_IP>

<TIMESTAMP> BGP: <BGP_NEIGHBOR_IP> [Event] BGP connection closed fd 31
<TIMESTAMP> BGP: <BGP_NEIGHBOR_IP> BGP connection fd 31, recieved fatal error, wipe off ringbuf
<TIMESTAMP> BGP: %NOTIFICATION: received from neighbor <BGP_NEIGHBOR_IP> 4/0 (Hold Timer Expired) 0 bytes
<TIMESTAMP> BGP: <BGP_NEIGHBOR_IP> [FSM] Receive_NOTIFICATION_message (Established->Clearing), fd 31
<TIMESTAMP> BGP: %ADJCHANGE: neighbor <BGP_NEIGHBOR_IP>(Unknown) in vrf Down BGP Notification received
<TIMESTAMP> BGP: <BGP_NEIGHBOR_IP>: peer keepalive being removed, acquiring lock
<TIMESTAMP> BGP: <BGP_NEIGHBOR_IP>: peer keepalive removed
<TIMESTAMP> BGP: <BGP_NEIGHBOR_IP>(0x193cdb1b8e10): close file descriptor

 

[Troubleshooting Notes]

1. BGP 구성 환경 파악

Physical Swithch#1 <-> Physical Firewall#1 <-> L2 VXLAN 구간 <-> ESXi Host <-> Edge VM

Physical Swithch#2 <-> Physical Firewall#2 <-> L2 VXLAN 구간 <-> ESXi Host <-> Edge VM

 

2. 문제 증상 확인을 위해 BGP Packet을 Edge VM 내부와 ESXi Host에서 수집

1. Edge Node 내에서는 아래 명령어를 이용하여 BGP 관련 Packet을 수집합니다.
※ 파일은 /image/vmware/nsx/file-store 폴더에 저장
start capture interface <INTERFACE_UUID> file fp-eth1_bgp.pcap expression host <BGP_NEIGHBOR_IP>
 
2. Hypervisor 에서는 아래 명령어를 이용하여 BGP 관련 Packet 을 수집합니다.
pktcap-uw --capture UplinkRcvKernel,UplinkSndKernel --uplink <vmnic#> --tcpport 179 -o /vmfs/volumes/<available_datastore>/vmnic2_bgp.pcap

 

3. 수집된 Packet 확인

※ Edge VM 내에서 수집된 Packet을 보면, BGP Neighbor에서 BGP KeepAlive Packet을 보낸 이후 동일한 Packet에 대해 TCP Retransmission이 발생하는 것을 볼 수 있음

※ 이 후, BGP Neighbor에서 Notification Message에 "Hold Timer Expired" Code를 전달하면서 BGP Connection이 종료

※ ESXi Host의 Uplink에서 수집된 Packet을 보면 Edge VM이 정상적으로 BGP Neighbor에게 Ack를 전달하는 것으로 확인

※ 따라서, Edge VM에 보낸 Ack Packet이 BGP Neighbor가 설정된 Physical Switch에 도달하는 구간 내 이슈로 파악

Edge VM 내에서 수집된 Packet

<TIMESTAMP>       <BGP_NEIGHBOR_IP>    <BGP_LOCAL_IP>    BGP    93    KEEPALIVE Message

<TIMESTAMP>       <BGP_NEIGHBOR_IP>    <BGP_LOCAL_IP>    BGP    93    KEEPALIVE Message
 
<TIMESTAMP>       <BGP_NEIGHBOR_IP>    <BGP_LOCAL_IP>    TCP    93    [TCP Retransmission] 179 → 39623 [PSH, ACK] Seq=23359 Ack=23789 Win=15795 Len=19 MD5
 
<TIMESTAMP>       <BGP_NEIGHBOR_IP>    <BGP_LOCAL_IP>    BGP    95    NOTIFICATION Message
  
     Border Gateway Protocol - NOTIFICATION Message
        Type: NOTIFICATION Message (3)
        Major error Code: Hold Timer Expired (4)
        Minor error Code (Hold Timer Expired): 0

ESXi Host Uplink에서 수집된 Packet

<TIMESTAMP>    <BGP_LOCAL_IP>    <BGP_NEIGHBOR_IP>     TCP    74    34793 → 179 [ACK] Seq=21205 Ack=20711 Win=63661 Len=0 MD5
<TIMESTAMP>    <BGP_LOCAL_IP>    <BGP_NEIGHBOR_IP>     BGP    93    KEEPALIVE Message

 

[Conclusion]

고객사에서 구간 내에 위치한 Firewall을 제거한 후에 BGP Flapping 현상 해소