소개
이 문서에서는 재귀 라우팅 장애로 인해 발생하는 플래핑 Border Gateway Protocol(BGP) 경로 문제를 해결하는 방법을 설명합니다.
사전 요구 사항
요구 사항
이 문서에 대한 특정 요건이 없습니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
배경 정보
이 문서에서는 재귀 라우팅 장애로 인해 발생하는 플래핑 Border Gateway Protocol(BGP) 경로 문제를 해결하는 방법을 설명합니다.
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 피어로 전송되면, TCP가 실패한 메시지를 백업 경로를 통해 재전송하더라도 인접 BGP 피어는 더 이상의 킵얼라이브 패킷을 수락하지 않으며, 결국 대기 시간 만료로 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 dampeningcommand는 Halftime= 15분, reuse = 750, Suppress = 2000 및 Max Suppress Time= 60과 같은 댐프닝 매개변수의 기본값을 설정합니다. 이러한 값은 사용자가 구성할 수 있지만 변경되지 않는 것이 좋습니다.
관련 정보