Split Horizon
Split Horizon이란 Routing Loop을 방지 하기위해 iBGP로부터 광고 받은 네트워크는 다른 iBGP neighbor에 광고하지 않는다는 규칙입니다. 그렇기에 IGP와 달리 neighbor 관계를 직접 맺지않으면 네트워크 정보를 교환하지 않게 됩니다.
Split-Horizon을 방지하기 위해서는 3가지 방법이 있으며 대부분 Full-mesh, Route Reflector 방법을 사용합니다. 이번 실습은 대표적인 방법인 Route Reflector에 대해 알아보려고 합니다.
- Full-mesh : iBGP neighbor 관계를 각 각 모든 라우터끼리 연결하는 방식, iBGP neighbor가 늘어날수록 각 라우터 별로 맺어야 하는 neighbor가 증가[n*(n - 1)/2]하는 단점 존재
- Route Reflector : Split-Horizon Rule이 배제되는 Route Reflector로 선정된 라우터가 다른 라우터에게 라우팅 정보를 전달하는 방식
- Confederation : 하나의 AS내에서 AS를 논리적으로 분리하여 eBGP 구성을 합니다. eBGP 구성 시 Split-Horizon Rule ****자체가 적용되지 않습니다.
Route Reflector 관련 용어
Route Reflector | - Split-Horizon 규칙을 면제받은 라우터 - iBGP로 광고 받은 정보를 다른 iBGP 라우터로 광고 할 수 있음 - Route Reflector는 다시 다른 Route Reflector의 Client가 될 수 있음 |
Route Reflector Client | - Route Reflector에서 Client로 지정된 라우터 |
Non-Client | - Route Reflector와 Neighbor 관계지만 Client가 아닌 라우터 |
Cluster | - Route Reflector와 Client의 집합 - 다수 Cluster 설정 시 각 Cluster는 Route Reflector끼리 연결되어야 함 |
Cluster ID | - Route Reflector의 Router-ID가 Cluster-ID로 사용됨 |
Cluster List | - Route가 경유한 Cluster-ID의 List - Route Reflector는 iBGP 정보를 넘겨줄때 Cluster ID를 첨부하여 보내고, 이를 정리한 클러스터 리스트를 작성 - Route Reflector는 Update를 받게 되면 Cluster List를 체크, 자신의 Cluster ID를 발견하는 경우 Update를 무시하여 Routing Loop을 방지 함 |
Originator ID | - Local AS 내에서만 사용되는 BGP 속성 - Route Originator의 Router ID - Route Reflector가 Route를 Update 할 때 Update Message에 추가 - 부가적으로 클러스터 내부에서 Loop를 방지하기 사용 됨 |
Route Reflector 라우팅 업데이트 규칙
- RR은 Client와 Non-Client 모두로부터 Update를 수신합니다.
- Client로부터의 Update는 Client와 Non-Client 모두로 Update 합니다. (Originator에는 Update 하지 않습니다.)
- eBGP Peer로부터의 Update는 Client와 Non-Client 모두로 Update.
- Non-Client로부터의 Update가 다른 Non-Client로는 전달되지 않습니다.
- Non-Client로부터의 Update는 Client들에게만 Update 합니다.
Route Reflector 적용 전
iBGP는 AS내의 Loop을 방지하기 위해 전달받은 라우팅 정보를 다른 neighbor로 전달하지 않는 특성이 있습니다. 이러한 특성을 확인하기 위해 각 라우터는 full-mesh 방식이 아닌 인접한 라우터끼리만 neighbor 관계를 맺도록 설정했습니다.
R2#show run bgp
!
router bgp 200
bgp router-id 2.2.2.2
network 120.2.0.0/24
network 120.2.1.0/24
network 120.2.2.0/24
timers bgp 2 6
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 update-source Loopback 1
neighbor 3.3.3.3 timers 2 6
neighbor 3.3.3.3 next-hop-self
neighbor 3.3.3.3 soft-reconfiguration inbound
neighbor 3.3.3.3 no shutdown
neighbor 10.10.12.1 remote-as 100
neighbor 10.10.12.1 timers 2 6
neighbor 10.10.12.1 soft-reconfiguration inbound
neighbor 10.10.12.1 no shutdown
===================
R3#show run bgp
!
router bgp 200
bgp router-id 3.3.3.3
network 130.3.0.0/24
network 130.3.1.0/24
network 130.3.2.0/24
timers bgp 2 6
neighbor 2.2.2.2 remote-as 200
neighbor 2.2.2.2 update-source Loopback 1
neighbor 2.2.2.2 timers 2 6
neighbor 2.2.2.2 soft-reconfiguration inbound
neighbor 2.2.2.2 no shutdown
neighbor 4.4.4.4 remote-as 200
neighbor 4.4.4.4 update-source Loopback 1
neighbor 4.4.4.4 timers 2 6
neighbor 4.4.4.4 soft-reconfiguration inbound
neighbor 4.4.4.4 no shutdown
===================
R4#show run bgp
!
router bgp 200
bgp router-id 4.4.4.4
network 140.4.0.0/24
network 140.4.1.0/24
network 140.4.2.0/24
timers bgp 2 6
neighbor 3.3.3.3 remote-as 200
neighbor 3.3.3.3 update-source Loopback 1
neighbor 3.3.3.3 timers 2 6
neighbor 3.3.3.3 soft-reconfiguration inbound
neighbor 3.3.3.3 no shutdown
R2, R4 라우터 사이에 있는 R3 라우터는 R2, R4의 라우팅 정보를 모두 수신하고 있고 R2로 부터 받은 eBGP 정보(110.1.x.0/24)도 수신되고 있습니다. 다만 R2를 통해서 iBGP로 수신되었기에 Status code는 iBGP로 출력됩니다. (R2에서 R3에 대한 next-hop-self 적용 됨)
R3#show ip bgp
BGP local RIB : Routes to be Added 0, Replaced 0, Withdrawn 0
BGP local router ID is 3.3.3.3
Status codes: s suppressed, S stale, d dampened, h history, * valid, > best
Path source: I - internal, a - aggregate, c - confed-external, r - redistributed
n - network, D - denied, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>I 110.1.0.0/24 2.2.2.2 0 100 0 100 i
*>I 110.1.1.0/24 2.2.2.2 0 100 0 100 i
*>I 110.1.2.0/24 2.2.2.2 0 100 0 100 i
*>I 120.2.0.0/24 2.2.2.2 0 100 0 i
*>I 120.2.1.0/24 2.2.2.2 0 100 0 i
*>I 120.2.2.0/24 2.2.2.2 0 100 0 i
*>n 130.3.0.0/24 0.0.0.0 0 32768 i
*>n 130.3.1.0/24 0.0.0.0 0 32768 i
*>n 130.3.2.0/24 0.0.0.0 0 32768 i
*>I 140.4.0.0/24 4.4.4.4 0 100 0 i
*>I 140.4.1.0/24 4.4.4.4 0 100 0 i
*>I 140.4.2.0/24 4.4.4.4 0 100 0 i
R2 및 R4의 BGP 테이블 확인 시 서로 인접한 R3에 대한 라우팅 정보 (130.3.x.0/24)는 R3을 통해 수신되고 있습니다. 그러나 R2, R4 라우팅 정보는 R3에서는 수신되고 있으나 iBGP특성으로 R3에서 전달받은 라우팅 정보는 다른 neighbor로 전달하지 않기에 R2, R4 서로는 라우팅 정보를 수신하지 못하고 있습니다.
[R2 - BGP 및 라우팅 테이블]
R2#show ip bgp
BGP local RIB : Routes to be Added 0, Replaced 0, Withdrawn 0
BGP local router ID is 2.2.2.2
Status codes: s suppressed, S stale, d dampened, h history, * valid, > best
Path source: I - internal, a - aggregate, c - confed-external, r - redistributed
n - network, D - denied, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 110.1.0.0/24 10.10.12.1 0 0 100 i
*> 110.1.1.0/24 10.10.12.1 0 0 100 i
*> 110.1.2.0/24 10.10.12.1 0 0 100 i
*>n 120.2.0.0/24 0.0.0.0 0 32768 i
*>n 120.2.1.0/24 0.0.0.0 0 32768 i
*>n 120.2.2.0/24 0.0.0.0 0 32768 i
*>I 130.3.0.0/24 3.3.3.3 0 100 0 i
*>I 130.3.1.0/24 3.3.3.3 0 100 0 i
*>I 130.3.2.0/24 3.3.3.3 0 100 0 i
===============
R2#show ip route
...
Destination Gateway Dist/Metric Last Change
----------- ------- ----------- -----------
C 2.2.2.2/32 Direct, Lo 1 0/0 5d0h
O 3.3.3.3/32 via 10.10.23.3, Vl 23 110/1 4d16h
O 4.4.4.4/32 via 10.10.23.3, Vl 23 110/2 4d16h
C 10.10.12.0/24 Direct, Vl 12 0/0 5d0h
C 10.10.23.0/24 Direct, Vl 23 0/0 5d0h
O 10.10.34.0/24 via 10.10.23.3, Vl 23 110/2 4d16h
B EX 110.1.0.0/24 via 10.10.12.1 20/0 3d23h
B EX 110.1.1.0/24 via 10.10.12.1 20/0 3d23h
B EX 110.1.2.0/24 via 10.10.12.1 20/0 3d23h
C 120.2.0.0/24 Direct, Lo 2 0/0 4d23h
C 120.2.1.0/24 Direct, Lo 3 0/0 4d23h
C 120.2.2.0/24 Direct, Lo 4 0/0 4d23h
B IN 130.3.0.0/24 via 3.3.3.3 200/0 3d1h
O 130.3.0.3/32 via 10.10.23.3, Vl 23 110/1 4d16h
B IN 130.3.1.0/24 via 3.3.3.3 200/0 3d1h
O 130.3.1.3/32 via 10.10.23.3, Vl 23 110/1 4d16h
B IN 130.3.2.0/24 via 3.3.3.3 200/0 3d1h
O 130.3.2.3/32 via 10.10.23.3, Vl 23 110/1 4d16h
O 140.4.0.4/32 via 10.10.23.3, Vl 23 110/2 4d16h
O 140.4.1.4/32 via 10.10.23.3, Vl 23 110/2 4d16h
O 140.4.2.4/32 via 10.10.23.3, Vl 23 110/2 4d16h
[R4 - BGP 및 라우팅 테이블]
R4#show ip bgp
BGP local RIB : Routes to be Added 0, Replaced 0, Withdrawn 0
BGP local router ID is 4.4.4.4
Status codes: s suppressed, S stale, d dampened, h history, * valid, > best
Path source: I - internal, a - aggregate, c - confed-external, r - redistributed
n - network, D - denied, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>I 130.3.0.0/24 3.3.3.3 0 100 0 i
*>I 130.3.1.0/24 3.3.3.3 0 100 0 i
*>I 130.3.2.0/24 3.3.3.3 0 100 0 i
*>n 140.4.0.0/24 0.0.0.0 0 32768 i
*>n 140.4.1.0/24 0.0.0.0 0 32768 i
*>n 140.4.2.0/24 0.0.0.0 0 32768 i
==============
R4#show ip route
...
Destination Gateway Dist/Metric Last Change
----------- ------- ----------- -----------
O 2.2.2.2/32 via 10.10.34.3, Vl 34 110/2 4d16h
O 3.3.3.3/32 via 10.10.34.3, Vl 34 110/1 4d22h
C 4.4.4.4/32 Direct, Lo 1 0/0 5d0h
O 10.10.23.0/24 via 10.10.34.3, Vl 34 110/2 4d22h
C 10.10.34.0/24 Direct, Vl 34 0/0 5d0h
O 120.2.0.2/32 via 10.10.34.3, Vl 34 110/2 4d16h
O 120.2.1.2/32 via 10.10.34.3, Vl 34 110/2 4d16h
O 120.2.2.2/32 via 10.10.34.3, Vl 34 110/2 4d16h
B IN 130.3.0.0/24 via 3.3.3.3 200/0 4d15h
O 130.3.0.3/32 via 10.10.34.3, Vl 34 110/1 4d22h
B IN 130.3.1.0/24 via 3.3.3.3 200/0 4d15h
O 130.3.1.3/32 via 10.10.34.3, Vl 34 110/1 4d22h
B IN 130.3.2.0/24 via 3.3.3.3 200/0 4d15h
O 130.3.2.3/32 via 10.10.34.3, Vl 34 110/1 4d22h
C 140.4.0.0/24 Direct, Lo 2 0/0 5d0h
C 140.4.1.0/24 Direct, Lo 3 0/0 5d0h
C 140.4.2.0/24 Direct, Lo 4 0/0 5d0h
Route Reflector 적용 후
R3에서 Route Reflector로 동작하기 위해 각 neighbor를 Route Reflector Client로 등록합니다.
이렇게 하면 R3은 Route Reflector 규칙에 의해 iBGP로 전달 받은 라우팅 정보를 Route Reflector Client에게 전달하게 됩니다.
그렇기에 R3은 R2에게 받은 정보를 R4에게 전달하고 R4에게 받은 정보를 R2에게 전달함으로써 R2, R4는 서로의 라우팅 정보를 알 수 있게 됩니다.
R3#show run bgp
!
router bgp 200
bgp router-id 3.3.3.3
network 130.3.0.0/24
network 130.3.1.0/24
network 130.3.2.0/24
timers bgp 2 6
neighbor 2.2.2.2 remote-as 200
neighbor 2.2.2.2 route-reflector-client
neighbor 2.2.2.2 update-source Loopback 1
neighbor 2.2.2.2 timers 2 6
neighbor 2.2.2.2 soft-reconfiguration inbound
neighbor 2.2.2.2 no shutdown
neighbor 4.4.4.4 remote-as 200
neighbor 4.4.4.4 route-reflector-client
neighbor 4.4.4.4 update-source Loopback 1
neighbor 4.4.4.4 timers 2 6
neighbor 4.4.4.4 soft-reconfiguration inbound
neighbor 4.4.4.4 no shutdown
[R2 - BGP 및 라우팅 테이블]
R2#show ip bgp
BGP local RIB : Routes to be Added 0, Replaced 0, Withdrawn 0
BGP local router ID is 2.2.2.2
Status codes: s suppressed, S stale, d dampened, h history, * valid, > best
Path source: I - internal, a - aggregate, c - confed-external, r - redistributed
n - network, D - denied, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*> 110.1.0.0/24 10.10.12.1 0 0 100 i
*> 110.1.1.0/24 10.10.12.1 0 0 100 i
*> 110.1.2.0/24 10.10.12.1 0 0 100 i
*>n 120.2.0.0/24 0.0.0.0 0 32768 i
*>n 120.2.1.0/24 0.0.0.0 0 32768 i
*>n 120.2.2.0/24 0.0.0.0 0 32768 i
*>I 130.3.0.0/24 3.3.3.3 0 100 0 i
*>I 130.3.1.0/24 3.3.3.3 0 100 0 i
*>I 130.3.2.0/24 3.3.3.3 0 100 0 i
*>I 140.4.0.0/24 4.4.4.4 0 100 0 i
*>I 140.4.1.0/24 4.4.4.4 0 100 0 i
*>I 140.4.2.0/24 4.4.4.4 0 100 0 i
===============
R2#show ip route
...
Destination Gateway Dist/Metric Last Change
----------- ------- ----------- -----------
C 2.2.2.2/32 Direct, Lo 1 0/0 5d0h
O 3.3.3.3/32 via 10.10.23.3, Vl 23 110/1 4d16h
O 4.4.4.4/32 via 10.10.23.3, Vl 23 110/2 4d16h
C 10.10.12.0/24 Direct, Vl 12 0/0 5d0h
C 10.10.23.0/24 Direct, Vl 23 0/0 5d0h
O 10.10.34.0/24 via 10.10.23.3, Vl 23 110/2 4d16h
B EX 110.1.0.0/24 via 10.10.12.1 20/0 3d23h
B EX 110.1.1.0/24 via 10.10.12.1 20/0 3d23h
B EX 110.1.2.0/24 via 10.10.12.1 20/0 3d23h
C 120.2.0.0/24 Direct, Lo 2 0/0 4d23h
C 120.2.1.0/24 Direct, Lo 3 0/0 4d23h
C 120.2.2.0/24 Direct, Lo 4 0/0 4d23h
B IN 130.3.0.0/24 via 3.3.3.3 200/0 00:04:17
O 130.3.0.3/32 via 10.10.23.3, Vl 23 110/1 4d16h
B IN 130.3.1.0/24 via 3.3.3.3 200/0 00:04:17
O 130.3.1.3/32 via 10.10.23.3, Vl 23 110/1 4d16h
B IN 130.3.2.0/24 via 3.3.3.3 200/0 00:04:17
O 130.3.2.3/32 via 10.10.23.3, Vl 23 110/1 4d16h
B IN 140.4.0.0/24 via 4.4.4.4 200/0 00:02:41
O 140.4.0.4/32 via 10.10.23.3, Vl 23 110/2 4d16h
B IN 140.4.1.0/24 via 4.4.4.4 200/0 00:02:42
O 140.4.1.4/32 via 10.10.23.3, Vl 23 110/2 4d16h
B IN 140.4.2.0/24 via 4.4.4.4 200/0 00:02:41
O 140.4.2.4/32 via 10.10.23.3, Vl 23 110/2 4d16h
[R4 - BGP 및 라우팅 테이블]
R4#show ip bgp
BGP local RIB : Routes to be Added 0, Replaced 0, Withdrawn 0
BGP local router ID is 4.4.4.4
Status codes: s suppressed, S stale, d dampened, h history, * valid, > best
Path source: I - internal, a - aggregate, c - confed-external, r - redistributed
n - network, D - denied, S - stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop Metric LocPrf Weight Path
*>I 110.1.0.0/24 2.2.2.2 0 100 0 100 i
*>I 110.1.1.0/24 2.2.2.2 0 100 0 100 i
*>I 110.1.2.0/24 2.2.2.2 0 100 0 100 i
*>I 120.2.0.0/24 2.2.2.2 0 100 0 i
*>I 120.2.1.0/24 2.2.2.2 0 100 0 i
*>I 120.2.2.0/24 2.2.2.2 0 100 0 i
*>I 130.3.0.0/24 3.3.3.3 0 100 0 i
*>I 130.3.1.0/24 3.3.3.3 0 100 0 i
*>I 130.3.2.0/24 3.3.3.3 0 100 0 i
*>n 140.4.0.0/24 0.0.0.0 0 32768 i
*>n 140.4.1.0/24 0.0.0.0 0 32768 i
*>n 140.4.2.0/24 0.0.0.0 0 32768 i
===============
R4#show ip route
...
Destination Gateway Dist/Metric Last Change
----------- ------- ----------- -----------
O 2.2.2.2/32 via 10.10.34.3, Vl 34 110/2 4d16h
O 3.3.3.3/32 via 10.10.34.3, Vl 34 110/1 4d22h
C 4.4.4.4/32 Direct, Lo 1 0/0 5d0h
O 10.10.23.0/24 via 10.10.34.3, Vl 34 110/2 4d22h
C 10.10.34.0/24 Direct, Vl 34 0/0 5d0h
B IN 110.1.0.0/24 via 2.2.2.2 200/0 00:03:15
B IN 110.1.1.0/24 via 2.2.2.2 200/0 00:03:15
B IN 110.1.2.0/24 via 2.2.2.2 200/0 00:03:15
B IN 120.2.0.0/24 via 2.2.2.2 200/0 00:03:15
O 120.2.0.2/32 via 10.10.34.3, Vl 34 110/2 4d16h
B IN 120.2.1.0/24 via 2.2.2.2 200/0 00:03:15
O 120.2.1.2/32 via 10.10.34.3, Vl 34 110/2 4d16h
B IN 120.2.2.0/24 via 2.2.2.2 200/0 00:03:15
O 120.2.2.2/32 via 10.10.34.3, Vl 34 110/2 4d16h
B IN 130.3.0.0/24 via 3.3.3.3 200/0 00:03:15
O 130.3.0.3/32 via 10.10.34.3, Vl 34 110/1 4d22h
B IN 130.3.1.0/24 via 3.3.3.3 200/0 00:03:15
O 130.3.1.3/32 via 10.10.34.3, Vl 34 110/1 4d22h
B IN 130.3.2.0/24 via 3.3.3.3 200/0 00:03:15
O 130.3.2.3/32 via 10.10.34.3, Vl 34 110/1 4d22h
C 140.4.0.0/24 Direct, Lo 2 0/0 5d0h
C 140.4.1.0/24 Direct, Lo 3 0/0 5d0h
C 140.4.2.0/24 Direct, Lo 4 0/0 5d0h
[참고블로그]
https://louis-j.tistory.com/entry/BGP-Split-Horizon를-방지하는-RRRoute-Reflector란-무엇인가
https://code2501.tistory.com/47
'Network > BGP' 카테고리의 다른 글
[BGP] BGP 연동 실습#3 - Attribute를 이용한 경로 조정 (Local Preference) (0) | 2025.01.27 |
---|---|
[BGP] BGP 연동 실습#2 - 특정 네트워크 광고 허용/거부 정책 적용 (Filtering) (0) | 2025.01.17 |
[BGP] BGP 연동 실습#1 - 네이버 연결 및 라우팅 확인 (0) | 2024.12.19 |
[BGP] BGP Attribute 알아보기 (0) | 2024.12.12 |
[BGP] Neighbor 수립 과정 (0) | 2024.12.05 |