[1] BGP 테이블 생성과 전달 과정
지난호에 소개한 BGP(Border Gateway Protocol) 세팅 방법에 이어서 이번호에는 BGP 테이블이 어떤 식으로 전달되는지 살펴보자.
BGP 테이블은 (그림 2)의 과정을 거쳐서 전달된다.
·Adj-RIB-in
Adj-RIB-in(Adjacency-Routing Information Base-Input)은 BGP 네이버(neighbor)로부터 받은 라우팅 정보를 말한다.
"show ip bgp neighbors x.x.x.x received-routes" 명령어로 확인.
이 부분은 라우터에서 기본적으로 저장하지 않기 때문에 볼 수 없다. 이 부분을 보기 위해서는 "Inbound soft reconfiguration" 명령어를 이용해야 한다. 이 명령어를 적용할 때 인접한 라우터에서 받은 BGP 테이블까지 모두 보관하게 되므로 메모리 사용량이 몇 배 이상 늘어날 수도 있으므로 메모리가 충분하지 않은 라우터에서는 주의해야 된다.
·Adj-RIB-ip
Adj-RIB-ip(Adjacency-Routing Information Base-Input Policy)는 인풋 정책(Input Policy)을 통과한 라우팅 정보를 말한다. 실제로 라우터는 이 단계부터 저장한된다.
"show ip bgp neighbor x.x.x.x route" 명령어로 확인.
·Local-RIB
BGP 베스트 경로 알고리즘(best path algorithm)을 통과한 라우팅 정보. 즉, BGP 테이블에서 가장 좋은 경로값을 가진 것을 뜻한다. BGP 테이블에서 ">"로 표시됨.
·Adj-RIB-op
Adj-RIB-op(Adjacency-Routing Information Base-Onput Policy)는 아웃풋 정책(Output Policy)을 통과한 라우팅 정보를 말한다. 라우터C와 라우터D는 이 정보를 수신한다.
"show ip bgp neighbor x.x.x.x advertised-routes" 명령어로 확인.
[2] 실제 네트워크에서의 BGP 전달과정 확인
(그림 3)의 네트워크는 현재 인접한 라우터와 BGP로 구성돼 있고, (표 1)에서 나온 것과 같이 필터링이나 라우트 맵 등은 설정돼 있지 않고 기본 설정만 설정돼 있다. 지금부터 나오는 예는 AS100의 라우터를 기준으로 살펴보도록 한다.
·Adj-RIB-in
(그림 2)의 번에 나와 있는 인접한 BGP 라우터로부터 전달되는 BGP 테이블을 보기 위해 다음과 같은 명령어를 이용했다.
Router# show ip bgp neighbors 2.2.2.1 received-routes
% Inbound soft reconfiguration not enabled on 2.2.2.1
이 에러는 "soft reconfiguration enable"을 해야 볼 수 있다는 경고 메시지다. 이 부분을 보기 위해 "soft-reconfiguration" 명령어를 추가해보자.
Router#
router bgp 100
network 100.0.0.0
neighbor 2.2.2.1 remote-as 20
neighbor 2.2.2.1 soft-reconfiguration inbound
neighbor 4.4.4.1 remote-as 30
neighbor 5.5.5.2 remote-as 40
다음은 인접한 라우터 2.2.2.1로부터 받은 BGP 정보를 확인하는 내용이다.
Router#show ip bgp neighbors 2.2.2.1 received-routes
....
Network Next Hop Metric LocPrf Weight Path
* 10.0.0.0 2.2.2.1 0 20 10 i
*> 20.0.0.0 2.2.2.1 0 0 20 i
* 30.0.0.0 2.2.2.1 0 20 10 30 i
·Adj-RIB-ip
인바운드 정책(Inbound Policy)을 다음과 같이 추가한 후 살펴보자.
Router#
router bgp 100
network 100.0.0.0
neighbor 2.2.2.1 remote-as 20
neighbor 2.2.2.1 filter-list 20 in
neighbor 4.4.4.1 remote-as 30
neighbor 5.5.5.2 remote-as 40
ip as-path access-list 20 permit ^20$
여기서 살펴본 바와 같이 인접한 라우터 2.2.2.1로부터는 AS20에서 발생한 BGP 정보만 받는다고 설정한 것이다. 이제 BGP 정보를 살펴보자. 다음은 인풋 정책(Input Policy) 변경 후의 BGP 테이블이다.
Router#show ip bgp
Network Next Hop ....... Path
*> 10.0.0.0 4.4.4.1 ....... 30 10 i
* 2.2.2.1 ....... 20 10 i
* 20.0.0.0 4.4.4.1 ....... 30 10 20 i
*> 2.2.2.1 ...... 20 i
*> 30.0.0. 4.4.4.1 ....... 30 i
* 2.2.2.1 ....... 20 10 30 i
*> 40.0.0.0 5.5.5.2 ....... 40 i
*> 100.0.0.0 0.0.0.0 ....... i
인풋 정책을 변경했는데도 불구하고 위에서 소개한 변경 후의 BGP 테이블에서는 정책이 적용되지 않았다. 왜 그럴까?
BGP에서 인풋 정책을 변경한 후 이것이 BGP 테이블에 적용되기 위해서는 Adj-RIB(그림2의 번)를 다시 받아와야 한다. 다시 받아오기 위한 명령어로 아래의 두 가지가 있다.
① hard clear(clear ip bgp * in)
이것은 TCP 오픈부터 모든 BGP 연결을 다시 시작하라는 명령어이다. 이것을 실행할 시 'TCP open', 이웃한 BGP 라우터 간 협상, 라우팅 테이블 처음부터 재전송 등의 과정을 통하게 되므로 라우터가 일시적으로 과부하가 걸릴 수 있으며 복구시간이 많이 걸린다. 따라서 현장에서는 거의 사용하지 않는다.
② soft clear(clear ip bgp * soft in)
'hard clear'와는 달리 라우터에 부담이 거의 되지 않으므로 현장에서는 주로 이 방법이 이용된다. 단, 이것을 이용하기 위해서는 'soft reconfiguration'이 설정돼 있거나 'route refresh'가 지원돼야 한다. 'route refresh'가 지원되는지 확인하기 위해서는 "show ip bgp neighbors x.x.x" 명령어를 통해 확인할 수 있다. 'route refresh'는 IOS 12.1 이상에서 지원한다. 시스코에서는 'route refresh'를 이용할 것을 권장한다. 'route refresh'가 지원되는지는 다음과 같이 확인할 수 있다.
Router#show ip bgp neighbors 2.2.2.1
BGP neighbor is 2.2.2.1, remote AS 20, external link
BGP version 4, remote router ID 20.0.0.1
BGP state = Established, up for 00:18:04
Last read 00:00:03, hold time is 180, keepalive interval is 60 seconds
Neighbor capabilities:
Route refresh: advertised and received(old & new)
....
clear 후의 BGP 테이블은 다음과 같다. clear를 한 후 확인하면 인풋 정책이 적용됨을 알 수 있다.
Router# clear ip bgp * soft in
Router# show ip bgp
Network Next Hop ...... Path
*> 10.0.0.0 4.4.4.1 ...... 30 10 i
* 20.0.0.0 4.4.4.1 ...... 30 10 20 i
*> 2.2.2.1 ...... 20 i
*> 30.0.0.0 4.4.4.1 ...... 30 i
*> 40.0.0.0 5.5.5.2 ...... 40 i
*> 100.0.0.0 0.0.0.0 ...... i
·Local-RIB
Local-RIB는 인풋 정책을 통과한 BGP 테이블에서 가장 좋은 경로값(Best Path)을 말한다. 다음은 BGP 테이블에서 가장 좋은 경로 값을 말한다.
Router# show ip bgp
Status codes: s suppressed, d damped, h history, * valid, > best,
i - internal, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop ..... Path
*> 10.0.0.0 4.4.4.1 ..... 30 10 i
* 2.2.2.1 ..... 20 10 i
* 20.0.0.0 4.4.4.1 ..... 30 10 20 i
*> 2.2.2.1 ..... 20 i
*> 30.0.0.0 4.4.4.1 ..... 30 i
* 2.2.2.1 ..... 20 10 30 i
*> 40.0.0.0 5.5.5.2 ..... 40 i
*> 100.0.0.0 0.0.0.0 ..... I
위에서 소개한 내용 중 BGP 테이블에서 가장 좋은 경로 값은 꺽쇠(>)로 표시된 부분을 말하며, 이 부분만 라우팅 테이블에 올라간다.
·Adj-RIB-op
이웃 라우터에서 전달되는 라우팅 정보는 다음과 같다.
Router# show ip bgp neighbors 5.5.5.2 advertised-routes
Status codes: * valid, > best, i - internal,
Origin codes: i - IGP, e - EGP, ? - incomplete
Network Next Hop ..... Path
*> 10.0.0.0 4.4.4.1 ..... 30 10 i
*> 20.0.0.0 2.2.2.1 ..... 20 i
*> 30.0.0.0 4.4.4.1 ..... 30 i
*> 100.0.0.0 0.0.0.0 ..... i