소개
이 문서에서는 재귀 라우팅 실패로 인해 발생하는 BGP(Border Gateway Protocol) 경로 플래핑을 해결하는 방법에 대해 설명합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
이 문서에서는 재귀 라우팅 실패로 인해 발생하는 BGP(Border Gateway Protocol) 경로 플래핑을 해결하는 방법에 대해 설명합니다.
BGP에서 재귀 라우팅 실패의 일반적인 증상은 다음과 같습니다.
이 문서를 사용할 때 이 네트워크 다이어그램을 참조하십시오.
네트워크 다이어그램
이 문서를 사용할 때 다음 컨피그레이션을 참조하십시오.
Rtr-A |
hostname RTR-A
!
interface Loopback0
ip address 10.10.10.10 255.255.255.255
!
interface Serial8/0
ip address 192.168.16.1 255.255.255.252
!
router bgp 1
bgp log-neighbor-changes
neighbor 10.20.20.20 remote-as 2
neighbor 10.20.20.20 ebgp-multihop 2
neighbor 10.20.20.20 update-source Loopback0
!
ip route 10.20.20.0 255.255.255.0 192.168.16.2
|
Rtr-B |
hostname RTR-B
!
interface Loopback0
ip address 10.20.20.20 255.255.255.255
!
interface Ethernet0/0
ip address 172.16.1.1 255.255.255.0
!
interface Serial8/0
ip address 192.168.16.2 255.255.255.252
!
router bgp 2
no synchronization
bgp log-neighbor-changes
network 10.20.20.20 mask 255.255.255.255
network 172.16.1.0 mask 255.255.255.0
neighbor 10.10.10.10 remote-as 1
neighbor 10.10.10.10 ebgp-multihop 2
neighbor 10.10.10.10 update-source Loopback0
no auto-summary
!
ip route 10.10.10.0 255.255.255.0 192.168.16.1
! |
표기 규칙
문서 규칙에 대한 자세한 내용은 Cisco 기술 팁 표기 규칙을 참고하십시오.
문제
증상
재귀적 라우팅 실패에서 다음과 같은 두 가지 증상이 관찰됩니다.
RTR-A#show ip route
Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
i - IS-IS, L1 - ISIS level-1, L2 - ISIS level-2, ia - ISIS inter are
* - candidate default, U - per-user static route, o - ODR
P - periodic downloaded static route
Gateway of last resort is not set
10.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
B 10.20.20.20/32 [20/0] via 10.20.20.20, 00:00:35
S 10.20.20.0/24 [1/0] via 192.168.16.2
172.16.0.0/24 is subnetted, 1 subnets
B 172.16.1.0 [20/0] via 10.20.20.20, 00:00:35
10.0.0.0/32 is subnetted, 1 subnets
C 10.10.10.10 is directly connected, Loopback0
192.168.16.0/30 is subnetted, 1 subnets
C 192.168.16.0 is directly connected, Serial8/0
참고: show ip route를 사용하면 유용합니다 대형 라우팅 테이블을 처리할 때 경로를 플래핑하는 것을 관찰하려면 , 00:00 명령을 포함합니다.
약 1분 정도 기다리면 show ip route 명령 결과가 다음과 같이 변경됩니다.
RTR-A#show ip route
[..]
Gateway of last resort is not set
10.0.0.0/24 is subnetted, 1 subnets
S 10.20.20.0 [1/0] via 192.168.16.2
10.0.0.0/32 is subnetted, 1 subnets
C 10.10.10.10 is directly connected, Loopback0
192.168.16.0/30 is subnetted, 1 subnets
C 192.168.16.0 is directly connected, Serial8/0
참고: 이전 라우팅 테이블에 BGP 경로가 없습니다.
재귀 라우팅 실패
Rtr-A에서 BGP 피어 10.20.20에 대한 경로를 관찰합니다. 그 길은 1분 정도 간격으로 계속해서 두 개의 다음 홉 사이를 날아다닌다.
RTR-A#show ip route 10.20.20.20
Routing entry for 10.20.20.20/32
Known via "bgp 1", distance 20, metric 0
Tag 2, type external
Last update from 10.20.20.20 00:00:35 ago
Routing Descriptor Blocks:
* 10.20.20.20, from 10.20.20.20, 00:00:35 ago
Route metric is 0, traffic share count is 1
AS Hops 1
BGP 피어 IP 주소로 향하는 경로는 BGP 자체를 통해 학습되므로 재귀적 라우팅 실패가 발생합니다.
약 1분 후 경로가 다음으로 변경됩니다.
RTR-A#show ip route 10.20.20.20
Routing entry for 10.20.20.0/24
Known via "static", distance 1, metric 0
Routing Descriptor Blocks:
* 192.168.16.2
Route metric is 0, traffic share count is 1
재귀 라우팅 실패의 원인
다음 단계에서는 재귀 라우팅 실패의 원인을 설명합니다.
-
Rtr-A의 컨피그레이션을 참조하십시오. 이 컨피그레이션에서는 직접 연결된 next-hop 192.168.16.2를 가리키도록 고정 경로 10.20.20.0/24을 구성합니다. 이 고정 경로를 통해 피어 Rtr-B 10.20.20.20과의 BGP 세션이 설정됩니다.
-
Rtr-B는 루프백 IP 주소 10.20.20.20을 다음 홉으로 사용하여 Rtr-A에 대한 BGP 경로 172.16.1.0/24 및 10.20.20.20/32을 알립니다.
-
Rtr-A는 Rtr-B에서 발표한 BGP 경로를 수신하고 10.20.20.20/32을 설치하려고 시도합니다. 이는 Rtr-A에서 고정 경로로 이미 구성된 10.20.20.0/24보다 더 구체적입니다. 가장 긴 일치 경로가 우선하므로 10.20.20.20/32이 10.20.20.0/24보다 우선합니다. 자세한 내용은 Cisco 라우터의 경로 선택을 참조하십시오. 설치된 경로 10.20.20.20/32의 next-hop은 라우팅 테이블에서 10.20.20.20(Rtr-B 피어링 IP 주소)입니다. 10.20.20.20/32에 대한 경로에 다음 홉이 있기 때문에 재귀적 라우팅 실패가 발생합니다.
이 특정 상황에서 재귀 라우팅이 실패하는 이유를 이해하려면 라우팅 알고리즘이 어떻게 작동하는지 이해해야 합니다. 다음 홉 IP 주소가 라우터의 직접 연결된 인터페이스가 아닌 라우팅 테이블에서 직접 연결되지 않은 경로의 경우, 알고리즘은 패킷을 전달할 수 있는 직접 연결된 인터페이스를 찾을 때까지 라우팅 테이블을 재귀적으로 검색합니다.
이러한 상황에서 Rtr-A는 직접 연결되지 않은 네트워크 10.20.20.20/32으로의 경로를 학습합니다. 이때 직접 연결되지 않은 다음 홉은 10.20.20.20(자체)입니다. 라우팅 알고리즘은 10.20.20.20/32으로 향하는 패킷을 보낼 직접 연결된 인터페이스를 찾을 수 없기 때문에 재귀적 라우팅 루프 실패로 실행됩니다.
-
라우터는 직접 연결되지 않은 이 경로 10.20.20.20/32에 재귀적 라우팅 오류가 있음을 감지하고 10.20.20.20/32을 라우팅 테이블에서 제거합니다. 따라서 next hop IP 주소가 10.20.20.20인 모든 BGP 학습 경로도 라우팅 테이블에서 철회됩니다.
-
전체 프로세스가 1단계에서 반복됩니다. debug ip routing 명령을 실행하면 이를 확인할 수 있습니다.
참고:디버그 명령을 실행하기 전에 디버그의 출력을 제한하기 위해 특정 네트워크의 ACL(액세스 제어 목록)에 대해 debug 명령을 실행합니다. 이 예에서는 디버그 출력을 제한하기 위해 ACL을 구성합니다.
RTR-A(config)#access-list 1 permit 10.20.20.20
RTR-A(config)#access-list 1 permit 172.16.1.0
RTR-A(config)#end
RTR-A#debug ip routing 1
IP routing debugging is on for access list 1
00:29:50: RT: add 10.20.20.20/32 via 10.20.20.20, bgp metric [20/0]
00:29:50: RT: add 172.16.1.0/24 via 10.20.20.20, bgp metric [20/0]
00:30:45: RT: recursion error routing 10.20.20.20 - probable routing loop
00:30:45: RT: recursion error routing 10.20.20.20 - probable routing loop
00:30:45: RT: recursion error routing 10.20.20.20 - probable routing loop
00:30:46: RT: recursion error routing 10.20.20.20 - probable routing loop
00:30:46: RT: recursion error routing 10.20.20.20 - probable routing loop
00:30:48: RT: recursion error routing 10.20.20.20 - probable routing loop
00:30:48: RT: recursion error routing 10.20.20.20 - probable routing loop
00:30:50: RT: del 10.20.20.20/32 via 10.20.20.20, bgp metric [20/0]
00:30:50: RT: delete subnet route to 10.20.20.20/32
00:30:50: RT: del 172.16.1.0/24 via 10.20.20.20, bgp metric [20/0]
00:30:50: RT: delete subnet route to 172.16.1.0/24
-
경로 재귀가 계속 실패하면 다음 오류 메시지가 나타납니다.
%COMMON_FIB-SP-6-FIB_RECURSION: 10.71.124.25/32 has too many (8) levels of
recursion during setting up switching info
%COMMON_FIB-SP-STDBY-6-FIB_RECURSION: 10.71.124.25/32 has too many (8)
levels of recursion during setting up switching info
이는 MPLS 지원 네트워크에서 TCP 재전송이 발생하기 때문입니다. 전송 링크가 다운되어 BGP 피어로 BGP keepalive 메시지를 보내지 못한 경우, TCP가 백업 경로를 통해 실패한 메시지를 재전송하더라도 인접 BGP 피어는 추가 keepalive 패킷을 허용하지 않으며, 결국 holdtime 만료로 BGP 피어가 다운됩니다. 이 문제는 Catalyst6500 또는 Cisco7600에서 MPLS가 구성된 경우에만 나타납니다. 이 정보는 Cisco 버그 ID CSCsj89544에 포함되어 있습니다.
참고: 등록된 Cisco 사용자만 내부 버그 정보 및 기타 툴에 액세스할 수 있습니다.
솔루션
이 문제의 해결 방법은 다음과 같습니다.
BGP 피어 IP 주소(이 경우 10.20.20.20)에 대해 Rtr-A에 특정 고정 경로를 추가합니다.
RTR-A#configure terminal
Enter configuration commands, one per line. End with CNTL/Z.
RTR-A(config)#ip route 10.20.20.20 255.255.255.255 192.168.16.2
접두사 10.20.20.20/32에 대한 고정 경로를 구성하면 동적으로 학습된 BGP 경로 10.20.20.20/32이 라우팅 테이블에 설치되지 않으므로 재귀적 라우팅 루프 상황을 방지할 수 있습니다. 자세한 내용은 Cisco 라우터의 경로 선택을 참조하십시오.
참고: EBGP 피어가 기본 경로를 통해 서로 연결되도록 구성된 경우 BGP 인접 관계가 나타나지 않습니다. 이 작업은 경로 플래핑 및 라우팅 루프를 방지하기 위해 수행됩니다.
172.16.1.1에 대한 ping으로 솔루션이 확인됩니다.
RTR-A#ping 172.16.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 172.16.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/24/40 ms
경로 댐프닝
경로 댐프닝은 네트워크 간 경로 플래핑 전파를 최소화하도록 설계된 BGP 기능입니다. ISP에서 권장하는 값은 Cisco IOS®의 기본값이며 이 명령을 활성화하려면 이 명령만 구성하면 됩니다.
router bgp <AS number>
bgp dampening
bgp dampeningcommandhalftime= 15분, reuse = 750, Suppress = 2000 및 Max Suppress Time= 60과 같은 댐프닝 매개변수의 기본값을 설정합니다. 이러한 값은 사용자가 구성할 수 있지만 변경되지 않는 것이 좋습니다.
관련 정보