본문 바로가기

Ryu's Tech

[CCNP Rotue] BGP - 재분배 [ Redistribute ]





이번에는 BGP안으로 네트워크를 재분배 하는 방법을 알아 보도록 하겠습니다.
위의 0~4의 루프백에서 일정 주소를 제외하고 재분배를 통한 광고를 하는 것을 보여드리겠습니다.

먼저 Access-list 를 Loopback_AD 라는 이름으로 생성하겠습니다.


R5(config)#no ip access-list standard Loopback_AD   
R5(config)#ip access-list standard Loopback_AD      
R5(config-std-nacl)#deny 200.1.4.0
R5(config-std-nacl)#deny 200.1.5.0
R5(config-std-nacl)#permit any
R5(config-std-nacl)#exit

ACL 을 만들었으면, 이번에는 재분배시 참조할 route-map을 생성하여 줍니다.
Filter 라는 이름으로 생성한 뒤 route-map 안에는 match ip add Loopback_ADD 만
해주시면 됩니다.


R5(config)#route-map Filter

R5(config-route-map)#match ip address Loopback_AD
R5(config-route-map)#exit
R5(config)#exit
R5#

R5#sh  route
R5#sh  route-map
route-map Filter, permit, sequence 10
  Match clauses:
    ip address (access-lists): Loopback_AD
  Set clauses:
  Policy routing matches: 0 packets, 0 bytes



R5#sh ac

R5#sh access
R5#sh access-list
R5#sh access-lists Loopback_AD
Standard IP access list Loopback_AD
    20 deny   200.1.5.0
    10 deny   200.1.4.0
    30 permit any
R5#


위와 같이 route-map 이 설정된 것을 확인 하실 수 있습니다.

자 이제 이를 bgp로 넣어 보도록 하겠습니다.


R5(config)#router bgp 6500
R5(config-router)#redis
R5(config-router)#redistribute
R5(config-router)#redistribute
R5(config-router)#redistribute ?
  bgp        Border Gateway Protocol (BGP)
  connected  Connected
  dvmrp      Redistribution of DVMRP into BGP IPv4 Multicast
  eigrp      Enhanced Interior Gateway Routing Protocol (EIGRP)
  isis       ISO IS-IS
  iso-igrp   IGRP for OSI networks
  mobile     Mobile routes
  odr        On Demand stub Routes
  ospf       Open Shortest Path First (OSPF)
  rip        Routing Information Protocol (RIP)
  static     Static routes

R5(config-router)#redistribute conne
R5(config-router)#redistribute connected ?   
  metric     Metric for redistributed routes
  route-map  Route map reference
  <cr>

R5(config-router)#redistribute connected route
R5(config-router)#redistribute connected route-map Filter
R5(config-router)#

connected 된 주소를 재분배 하는데, route-map Filter를 사용해서 재분배를 해준다는 명령어 입니다.
올바르게 재분배를 한 뒤 bgp를 보겠습니다.

역시나 bgp는 시간이 꽤나 걸리므로, 기다려 보시길 바랍니다.

R5#sh ip bgp
BGP table version is 4, local router ID is 200.1.6.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 50.1.1.0/24      0.0.0.0                  0         32768 i
R5#


R5#show ip bgp
BGP table version is 9, local router ID is 200.1.6.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 5.5.5.5/32       0.0.0.0                  0         32768 ?
*> 10.1.45.0/30     0.0.0.0                  0         32768 ?
*> 50.1.1.0/24      0.0.0.0                  0         32768 i
*> 200.1.1.0        0.0.0.0                  0         32768 ?
*> 200.1.2.0        0.0.0.0                  0         32768 ?
*> 200.1.3.0        0.0.0.0                  0         32768 ?
R5#

BGP는 전체적으로 매우 느린 프로토콜이라서 기다리다보면 약 1분? 내로 아마 제대로 올라올 것입니다.
결과적으로 보게 되면 access-list에서 deny 된 아이피를 제외하고는 route-map에 의해서 나머지 connected된 주소들이 제대로 광고 된 것을 볼 수 있습니다.

앞에서 no auto-summary에 대해서 말씀드렸었는데, 12.2(8)T 이전 버전에서는 auto-summary가 기본으로 켜져 있엇지만
그 뒤의 버전에서부터는 자동으로 no auto-summary가 적용된다고 합니다.



R5(config)#ip access-list standard Loopback_AD
R5(config-std-nacl)#permit 200.1.1.0
R5(config-std-nacl)#permit 200.1.2.0
R5(config-std-nacl)#permit 200.1.3.0
R5(config-std-nacl)#permit 200.1.4.0
R5(config-std-nacl)#permit 200.1.5.0
R5(config-std-nacl)#exit

자 이제 앞의 ACL을 지우고 다시 위와 같이 설정해보겠습니다. 역시나 한...참... 기다리면..

R5#sh ip bgp
BGP table version is 13, local router ID is 200.1.6.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 50.1.1.0/24      0.0.0.0                  0         32768 i
*> 200.1.1.0        0.0.0.0                  0         32768 ?
*> 200.1.2.0        0.0.0.0                  0         32768 ?
*> 200.1.3.0        0.0.0.0                  0         32768 ?
*> 200.1.4.0        0.0.0.0                  0         32768 ?
*> 200.1.5.0        0.0.0.0                  0         32768 ?
R5#

이렇게 제대로 라우팅 테이블이 올라오는 군요

자 이제 R1에서 한번 보겠습니다.
R1#sh ip bgp
BGP table version is 1, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
* i50.1.1.0/24      10.1.45.2                0    100      0 6500 i
* i200.1.1.0        10.1.45.2                0    100      0 6500 ?
* i200.1.2.0        10.1.45.2                0    100      0 6500 ?
* i200.1.3.0        10.1.45.2                0    100      0 6500 ?
* i200.1.4.0        10.1.45.2                0    100      0 6500 ?
* i200.1.5.0        10.1.45.2                0    100      0 6500 ?
R1#

뭔가 좀 다르죠?
그런데 한가지 부족한게 있는 것 같군요...
R4에서 한번 봅시다.


R4#sh ip bgp
BGP table version is 15, local router ID is 10.1.45.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*> 50.1.1.0/24      10.1.45.2                0             0 6500 i
*> 200.1.1.0        10.1.45.2                0             0 6500 ?
*> 200.1.2.0        10.1.45.2                0             0 6500 ?
*> 200.1.3.0        10.1.45.2                0             0 6500 ?
*> 200.1.4.0        10.1.45.2                0             0 6500 ?
*> 200.1.5.0        10.1.45.2                0             0 6500 ?
R4#

뭔가 좀 다르다 했더니 > 가 빠졌죠? 이건 매우 중요합니다.
그렇다면 R1에서 라우팅 테이블을 한번 보죠


R1#sh ip route
Codes: C - connected, S - static, 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
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     1.0.0.0/32 is subnetted, 1 subnets
C       1.1.1.1 is directly connected, Loopback1
     4.0.0.0/32 is subnetted, 1 subnets
O       4.4.4.4 [110/129] via 10.1.12.2, 06:07:28, Serial1/0
     10.0.0.0/30 is subnetted, 4 subnets
C       10.1.13.0 is directly connected, Serial1/1
C       10.1.12.0 is directly connected, Serial1/0
O       10.1.24.0 [110/128] via 10.1.12.2, 06:07:28, Serial1/0
O       10.1.34.0 [110/192] via 10.1.12.2, 06:07:28, Serial1/0
R1#

이런...... 역시나 하나도 라우팅 테이블에 올라오지 않는군요.



//////////////////////////////////
//////////////////////////////////
//////////////////////////////////
//////////////////////////////////
///////////내용추가 예정////////////

//////////////////////////////////
//////////////////////////////////
//////////////////////////////////
//////////////////////////////////

  • BGP Synchronization
    • Do not use or advertise a route learned via iBGP until the same route has been learned from the internal routing protocol.
    • 12.2(8)T 이전의 버전에서는 ON 이었고,
    • 12.2(8T) 이후의 버전에서는 OFF가 default로 설정되었다.


제 버전은 ROM: 3600 Software (C3640-JK9O3S-M), Version 12.3(8)T3, RELEASE SOFTWARE (fc1) 입니다.
그렇다면 당연히 no synchronizatino 이 적용되어 있겠네요 한번 확인해 보겠습니다.

router bgp 5500
 no synchronization
 bgp log-neighbor-changes
 neighbor 4.4.4.4 remote-as 5500
 neighbor 4.4.4.4 update-source Loopback1
 no auto-summary



아무튼 지금 상태에서 한번 생각을 해보겠습니다.
R1에서 라우팅 테이블을 확인해 보겠습니다.
BGP 경로가 하나도 올라 오지 않은 것을 알 수 있습니다. 생각해 보면 매우 간단합니다.
BGP 경로를 통해 이동을 하려고 해도, R1에서 안다고 해서 R2나 R3에서는 이에 대한 정보를 알지 못합니다.
그래서 R2,R3에서 패킷이 드랍되어 버린다는 것이죠.

R1#sh ip bgp
BGP table version is 1, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
* i50.1.1.0/24      10.1.45.2                0    100      0 6500 i
* i200.1.1.0        10.1.45.2                0    100      0 6500 ?
* i200.1.2.0        10.1.45.2                0    100      0 6500 ?
* i200.1.3.0        10.1.45.2                0    100      0 6500 ?
* i200.1.4.0        10.1.45.2                0    100      0 6500 ?
* i200.1.5.0        10.1.45.2                0    100      0 6500 ?
R1#
R1#


위를 보시면 next hop 이 10.1.45.2 인데, R2나 R3가 저 경로를 알고 있나요? 당연히 모르죠, 그래서 드랍된다는것입니다.

이를 해결하기 위해서는 아래와 같이 설정해 주게 되면

R4(config-router)# neighbor 1.1.1.1 next-hop-self

목적지에 대한 next-hop 이 ospf에서 광고된 4.4.4.4로 설정되어 버립니다.


R1#sh ip bgp
BGP table version is 7, local router ID is 1.1.1.1
Status codes: s suppressed, d damped, h history, * valid, > best, i - internal,
              r RIB-failure, S Stale
Origin codes: i - IGP, e - EGP, ? - incomplete

   Network          Next Hop            Metric LocPrf Weight Path
*>i50.1.1.0/24      4.4.4.4                  0    100      0 6500 i
*>i200.1.1.0        4.4.4.4                  0    100      0 6500 ?
*>i200.1.2.0        4.4.4.4                  0    100      0 6500 ?
*>i200.1.3.0        4.4.4.4                  0    100      0 6500 ?
*>i200.1.4.0        4.4.4.4                  0    100      0 6500 ?
*>i200.1.5.0        4.4.4.4                  0    100      0 6500 ?
R1#


네 이와 같이 되어 라우팅 테이블에도 정상적으로 올라 오게 됩니다.
꼭 알아 두셔야 합니다. sh ip bgp 에서 보이는 경로중, > 표시가 있는 경로가 라우팅 테이블에 올라오게 됩니다.