[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