[NSX] The specific BGP neighbor becomes DOWN frequently.
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 현상 해소