'bgp'에 해당되는 글 1건

  1. 2008.04.09 BGP 라우팅 프로토콜 (1)
 

BGP (Border Gateway Protocol)는 AS Number가 다른 네트웍간에 Routing Information을 주고 받는 Exterior Gateway Protocol로 현재 BGP는 Version 4가 이용되고 있는데 이것을 간단히 줄여 BGP4라고 하며 앞으로 이책에서 BGP는 BGP4를 의미한다

 

개요

  가. BGP는 언제 필요한 Routing Protocol 인가?



Policy Routing

 

BGP는 AS Number간 다른 두 네트웍간에 Routing Information을 주고 받을때 이용될 수 있는 Exterior Gateway Protocol이다. 따라서 AS Number가 동일한 네트웍내에서 BGP를 이용할 필요는 없다. AS Number가 동일한 네트웍에서는 RIP, IGRP, OSPF, EIGRP와 같은 Interior Gateway Protocol을 이용하는 것이 바람직하다.

AS Number가 다른 두 네트웍을 연결할 때 반드시 BGP를 이용할 필요는 없다. Part III. 7. Routing Information의 재분배에서 AS Number가 다른 두 네트웍을 연결할때 재분배를 통하여 Routing Information을 주고 받을 수 있도록 할수 있었기 때문이다.

BGP는 Policy Routing Protocol이라고 하는데 이유는 Routing이 라우터에 의해 결정되는 것이 아니라 네트웍운영자의 정책에 의해 결정되기 때문이다.

AS100이 Interior Gateway Protocol로 AS200과 상호접속을 하였다고 가정하자. 이 경우 AS100에 있는 네트웍에 대한 정보는 AS200에 의하여 재분배된 다음 인터넷으로 전달된다. AS100에 130.100.0.0이 있다면, 인터넷측에서 130.100.0.0은 AS200에 속하는 것으로 간주한다.

즉 AS100은 의미가 없으며 AS200만이 있을 뿐이다. 이런 경우 AS100은 AS200의 라우팅정책을 따르게 된다. 즉 외부의 입장에서 볼때 확장된 AS200 만이 있을 뿐이다. AS100과 같이 독자적인 라우팅정책이 필요하지 않을 경우는 BGP를 이용하여 접속하지 않아도 된다. 독자적인 라우팅정책을 필요로 하지 않는 경우는 일반적으로2개 이상의 다른 AS에 접속하지 않는 경우이다. 그림에서 AS100은 AS200으로만 연결이 되어 있다.

다음과 같은 경우는 상황이 다르다. AS100이 IGP로 AS200과 접속한 상태에서  AS300으로 직접 갈 수 있는 경로를 추가로 구성하였다고 가정하자. 이때 AS100과 AS300은 Interior Gateway Protocol로 접속하는 것이 타당할까? 답은 물론 아니다. AS100과 AS300이 IGP로 접속할 경우 AS100에 있는 네트웍정보가 AS300을 통해 외부로 전달되기 때문에 문제가 발생한다.

즉 인터넷 입장에서 볼때 AS100에 있는 130.100.0.0이 AS200에도 속하고 AS300에도 속하는 것처럼 보이기 때문이다. 인터넷 전체의 Routing에 큰 혼란을 초래한다. 따라서 어떤 네트웍을 다른 2개의 AS에 IGP로 연결하는 것은 피해야 한다.

따라서 위의 문제 상황을 피하기 위해서 아래와 같이 AS100은 AS300과 BGP로 접속을 하여야 한다.

위 상황에서 AS200은 AS300에 대한 정보를 AS100을 통해 받기를 원하지 않을 수 있다. 그러나 AS200은 AS100을 통해 AS300에 대한 정보를 전달을 받고 있으며, AS200이 AS100과 IGP로 접속되어 있기 때문에 원하는대로 Routing을 처리하기는 쉽지 않다.

따라서 AS200과 AS100은 다음과 같이 BGP로 접속하는 것이 바람직하다. 이와 같이 AS간에 BGP로 접속을 하면 각 AS별로 독자적인 라우팅정책을 정하고 편리하게 구현할 수 있다.

각 AS에서는 다음과 같은 라우팅정책을 수립하고 구현할 수 있다. AS200과 AS300을 인터넷사업자(ISP: Internet Service Provider)라고 가정하자.

다음의 예는 국내의 ISP들이 실제 구현하고 있는 방법이기도 하다.

AS100
  인터넷으로 갈때는 라우터B를 통해 AS200을 경유한다.
- AS300으로 갈때는 라우터D를 통해 직접 간다.
AS200
  - AS100에 있는 네트웍은 AS200을 경유하여 인터넷으로 갈 수 있다.
- AS300은 AS100, AS200을 경유하여 인터넷으로 갈 수 없다.
- AS300과의 통신은 인터넷을 경유하도록 한다.
AS300
  - AS100에 있는 네트웍은 AS300으로 접속할 있다.
- AS100은 AS300을 경유하여 인터넷으로 갈 수 없다.
- AS200은 AS100, AS300을 경유하여 인터넷으로 갈 수 없다.
-AS200과의 통신은 인터넷을 경유하도록 한다.

이처럼 BGP를 이용하는 경우는 두개 이상의 AS에 접속하고 또한 독자적인 라우팅정책을 수립하여 구현할때 필요하다.

BGP를 설정하기 위해서는 BGP를 지원하는 라우터를 구비하여야 하고 공인된 AS Number를 할당받아야 한다. BGP를 지원하는 라우터는 여러 제품이 있는데 필자는 CISCO 라우터를 주로 이용한다. AS Number를 할당받는 방법은 Part I 2.6 AS Number 등록에서 이미 언급하였다.
   
  나. BGP의 일반적인 특징은?
    BGP에서는 목적지에 대한 최상의 경로를 선택할때 다양한 Metric을 이용한다. IGRP에서는 Bandwidth, Delay, Reliability, Load, MTU등을 조합하여 계산한 Cost가 가장 낮은 경로를 최상의 경로를 선택하는 반면 BGP에서는 우선순위가 있는 각 Metric을 차례대로 참조하여 최상의 경로를 선택한다. BGP에서 이용하는 Metric에는 Next_Hop, Weight, Local Preference, AS_path, Origin type, MED등이 있다. 경로를 선택하고 전달하는 과정은 다음과 같다.
     
   
경로가 접근할 수 없는 Next_hop을 가질 경우 해당 경로를    Routing Table에서 제거한다.
가장 높은 Weight을 가진 경로를 선택한다.
Weight이 같을 경우 가장 높은 Local Preference를 가진 경로를 선택한다.
Local Preference가 같을 경우 BGP 라우터 자신으로부터 발생된 경로를 선택한다.
BGP 라우터 자신으로부터 발생된 경로가 없을 경우  AS_path의 길이가 가장 짧은 경로를 선택한다.
만약 경로에 대한 AS_path의 길이가 모두 같을 경우 Origin type을 보고   우선 순위가 가장 높은 것을 가진 경로를 선택한다.
Origin type이 같을 경우 가장 낮은 MED를 가진 경로를 선택한다.
MED가 같을 경우 IBGP에 의해 얻은 경로보다 EBGP에 의해 얻은 경로를 선택한다.
해당 경로가 동일한 IBGP나 EBGP에 의해서 얻은 것일 경우   가장 가까운 IGP Neighbor를 가진 경로를 선택한다.
Router ID로 가장 작은 IP Address를 가진 경로를 선택한다.
   
대개 경로에 대한 Weight, Local Preference등이 동일하기 때문에 경로결정에 가장 큰 영향을 미치는 요소는 AS_path의 길이다. 위에서 언급한 Metric들에 대해서 다시 설명하도록 하겠다.

BGP는 IGRP나 EIGRP 처럼 Multi-Path Routing을 지원하지 못하고 앞에서 언급한 경로선택과정을 통해 한 목적지에 대해 최상의 경로 1개만을 선택하여 준다.

BGP는 Routing Information을 전달할때 Partial Update 방식을 이용한다. 따라서 처음 BGP Session을 맺을때 네트웍전체에 대한 Routing Information을 전달하지만 이후에는 변화된 정보만을 전달한다.

BGP는 Classless Inter Domain Routing을 지원한다. Routing Information을 교환할때 목적지에 대한 Network Address를 Class 형태의 IP Network Address로만 전달하는 것이 아니라 Subnet Mask 및 Supernet Mask를 그대로 함께 전달하는 것이다. Subnet Mask를 전달할 경우는 IP Address를 효과적으로 분산해 이용할 수 있다는 장점이 있고, Supernet Mask를 전달할 경우는 Routing Table의 크기를 작게 유지할 수 있다는 장점이 있다.

BGP에는 두 가지 형태가 있는데 첫번째 것은 External BGP이고, 두번째 것은 Internal BGP이다.

External BGP는 다른 AS에 속한 라우터간에 맺으며, Internal BGP는 같은 AS에 속한 라우터간에 맺는다. External BGP는 EBGP로, Internal BGP는 IBGP로 줄여서 표기하기도 한다. IBGP는 EBGP에 비하여 보다 다양한 기능을 제공하는데 특히 Routing Information의 흐름을 보다 적절하게 제어할 수 있다는 장점이 있다.  

External BGP에 대한 Administrative Distance는 20이고, Internal BGP에 대한 것은 200이다. 즉 EBGP에 의해 얻은 정보를 우선 참조한다.


다. AS_Path 란 무엇인가?


  AS_path는 해당 목적지까지 갈때 경유하는 AS들의 AS Number들로 구성된 것이다. AS_path에는 경유하는 AS Number만 표시될 뿐이지 해당 AS에서 어떤 경로를 지나왔는지는 표시되지 않는다. 가령 다음과 같이 네트웍이 구성되어 있을 경우 AS100의 입장에서 네트웍 130.100.0.0에 대한 AS_path는 200 300 400 이다.
   
    AS100 ------AS200 ------AS300 -------AS400         (130.100.0.0)
   
  AS400에 있는 라우터는 AS300에 있는 라우터에게 130.100.0.0에 대한 정보를 전달할때 AS_path로 400을 전달한다.
   
    AS300 :  130.100.0.0     400
   
  AS300에 있는 라우터가 AS200에 있는 라우터에게 130.100.0.0에 대한 정보를 전달할때는 자신의 AS Number를 AS_path에 Prepend 시킨 AS_Path 300 400을 전달한다.
   
    AS200 :  130.100.0.0     300   400
   
  AS200에서 AS100으로 정보가 전달될때도 같은 방식이 적용된다.
   
    AS100 :  130.100.0.0     200   300   400
     
  따라서 동일한 목적지에 대한 AS_path의 길이가 짧을 경우 가까운 곳에 있다고 판단하여 짧은 AS_path를 가진 경로를 선택한다. 이러한 이유 때문에 BGP Routing을 AS_path Routing이라고도 한다.  AS_path 300 400의 길이는 2, AS_path 200 300 400의 길이는 3이다.

AS_path에는 경유하는 AS에 대한 정보가 담겨 있는데 AS_path를 가지고 AS간에 Routing Loop을 쉽게 방지할 수 있다. 만약 AS_path에 자신의 AS Number가 표시되어 있다면 그것은 자신이 내보낸 정보이므로 해당 정보를 무시한다. 따라서 BGP Routing은 Routing Loop이 발생하지 않는다. 이러한 이유때문에 BGP를 Loop Free Routing Protocol이라고 한다.
     
라. BGP 설정 방법은?
  BGP에는 두 가지 형태가 있는데 첫번째 것은 External BGP이고, 두번째 것은 Internal BGP이다. External BGP는 다른 AS에 속한 라우터간에 맺으며, Internal BGP는 같은 AS에 속한 라우터간에 맺는다. External BGP는 EBGP로, Internal BGP는 IBGP로 줄여서 표기하기도 한다. IBGP는 EBGP에 비하여 보다 다양한 기능을 제공하는데 특히 Routing Information의 흐름을 보다 적절하게 제어할 수 있다는 장점이 있다.

BGP는 BGP Session을 맺기 위해Transport Protocol로 Transmission Control Protocol (TCP)을 이용하며 BGP Session을 맺은 상대측 라우터를 Neighbor 혹은 Peer 라고도 표현된다. BGP에서 Neighbor간에는 반드시 직접 연결되어 있을 필요는 없는데 이러한 특징은 RIP, IGRP, OSPF, EIGRP에서의 Neighbor와 다른 것에 유의하자.



BGP를 설정하는 방법은 다음과 같다.
    Router(config)# router bgp local-asn
Router(config-router)#
neighbor neighbor-ip-address remote-as neighbor-asn
     
  router bgp는 BGP Routing Protocol을 활성화하겠다는 것이며 이때 local-asn을 함께 입력한다. local-asn은 라우터가 속한 AS의 AS Number이다. neighbor-ip-address는 Neighbor의 IP Address인데 보통 두 라우터를 연결하는 Interface에 할당된 IP Address를 많이 이용하며, 경우에 따라서 Loopback Interface에 할당된 IP Address를 이용하기도 한다. Loopback Interface에 대한 내용을 조금 뒤에 다루도록 하겠다.

neighbor-ip-address로 지정된 라우터가 다른 AS에 있는 것이라면 이것은 EBGP Session을 맺는 것이며 이때 neighbor-asn은 Neighbor가 속한 AS Number를 입력해 주면 된다.

neighbor-ip-address로 지정된 라우터가 같은 AS에 있는 것이라면 이것은 IBGP Session을 맺는 것이며 이때 neighbor-asn은 자신의 AS Number를 입력해 주면 된다.

아래와 같이 라우터가 연결되어 있을 경우 EBGP 및 IBGP 설정은 다음과 같이 할 수 있다.

     
    Router-A(config)# router bgp 100
Router-A(config-router)# neighbor 130.100.1.2 remote-as 100
Router-A(config-router)# neighbor 130.100.2.2 remote-as 200

Router-B(config)# router bgp 100
Router-B(config-router)# neighbor 130.100.1.1 remote-as 100

Router-C(config)# router bgp 200
Router-C(config-router)# neighbor 130.100.2.1 remote-as 100
     
  위에서 라우터A와 라우터C간에는 EBGP Session을 맺었으며, 라우터A와 라우터B간에는 IBGP Session을 맺었다.

Neighbor의 IP Address를 지정할때 유의하여야 할 점은 해당 Neighbor까지 갈 수 있는 경로가 Routing Table에 등록되어 있어야 한다는 점이다.

일반적으로 EBGP Session은 다른 AS에 있는 라우터와 직접 연결한뒤 맺어지기 때문에 항상 Neighbor가 Routing Table에 등록이 되어 있는 반면, IBGP Session은 직접 연결되어 있지 않은 내부 라우터간에도 맺어지기 때문에 잘못 조작을 하였을 경우 Neighbor가 Routing Table에 등록되어 있지 않을 수도 있다.

Neighbor를 Routing Table에 등록하는 방법은 IGP를 정확히 조작해 주거나 Static Route등을 등록하면 된다.
     
마. Routing Information 재분배
 

RIP, IGRP, OSPF, EIGRP간에 Routing Information 재분배가 가능하듯이 BGP 정보도 그들과 재분배를 할 수 있다. BGP 라우터는 내부 AS에 있는 네트웍정보를 BGP Routing Information 형태로 외부 AS에게 전달하고, 외부AS로부터 받은 네트웍정보를 IGP Routing Information 형태로 내부로 전달한다

외부로부터 얻은 정보를 IGP로 재분배하기 위한 설정방법은 IGP간의 재분배 설정 방법과 동일하다. 아래의 그림에서 라우터A가 AS200으로부터 받은 정보를 IGP로 재분배하기 위한 설정방법은 다음과 같다.

   
    Router-A(config)# router bgp 100
Router-A(config-router)# neighbor 130.100.1.2 remote-as 100
Router-A(config-router)# neighbor 130.100.2.2 remote-as 200
Router-A(config-router)# exit
Router-A(config)# router ospf 100
Router-A(config-router)# redistribute bgp 100 metric 2000 subnets
   
  위와 같이 외부 AS에 대한 정보를 내부 라우터에게 반드시 재분배하여 전달할 필요는 없다. 내부 AS에서 외부 AS와 연결된 BGP Router가 하나밖에 없을때 Default Route를 적용하면 내부 AS에 있는 라우터들의 부하를 줄여줄 수 있기 때문이다.



내부 AS에 있는 네트웍정보 즉 IGP Routing Information을 BGP Routing Information으로 전달하는 방법은 재분배하는 방법과, 전달할 Network Address를 등록해주는 방법이 있다. 일반적으로 전달할 목적지에 대한 Network Address를 등록해주는 방법이 권고되고 있다. 위에서 130.100.0.0이 AS100에 속하고 그것만을 AS200에게 전달하고자 할 경우 다음과 같이 network 명령어를 이용하여 Network Addres를 등록하도록 한다. BGP에서의 network 명령어는 RIP, IGRP, OSPF, EIGRP에서의 network 명령어와 쓰임새가 다른점에 유의하자.
   
    Router-A(config)# router bgp 100
Router-A(config-router)# neighbor 130.100.1.2 remote-as 100
Router-A(config-router)# neighbor 130.100.2.2 remote-as 200
Router-A(config-router)# network 130.100.0.0
   
  또 한가지 유의할 점은 130.100.0.0이 BGP에 의해 외부 AS로 전달이 되려면 130.100.0.0에 대한 경로를 BGP 라우터가 알고 있어야 한다는 점이다. 즉 130.100.0.0에 대한 경로가 BGP 라우터의 Routing Table에 등록되어 있어야 된다
   

바. Routing Information 제어


RIP, IGRP, OSPF, EIGRP에서는 IP Address만을 참조하는 Distribute-List를 가지고 Routing Information의 흐름을 제어하는 방법을 제공한다. BGP에서는 Distribute-List 이외에도 Route Map Filtering, AS_path Filtering, Community Filtering 과 같은 Filtering 을 제공한다.

이외에도 Peer Group, CIDR, Confederation, Route Reflector, Route Flap Dampening과 같은 것들이 제공하는데 이책에서는 Distribute_List, Route Map Filtering, AS_path Filtering, CIDR, Route Reflector에 대해서만 알아보도록 하겠다.
 

BGP 설정


BGP를 설정하는 방법에 대해서는 1.4 BGP 설정방법은?에서 이미 다루었다. 따라서 여기에서는 좀더 자세한 내용을 알아보도록 하겠다.

   
  가. IBGP
   
IBGP 설정이 필요한 경우
  IBGP는 한 AS내에 다른 AS와 연결된 2개 이상의 라우터가 있을 경우만 설정하여 이용하는 것이 바람직하다. 다시 표현하자면 EBGP를 운영하고 있는 라우터가 2개 이상일 경우일때만 필요하다는 것이다. 그리고 AS내에 있는 모든 라우터가 IBGP를 설정할 필요는 없으며, 기본적으로 EBGP를 운영하고 있는 라우터간에 IBGP를 설정해주면 된다.

EBGP를 운영하고 있는 라우터가 1개일 경우 IBGP 설정은 불필요하다. IBGP는 외부 AS로부터 받은 정보를 같은 AS내에 있는 다른 EBGP 라우터에 전달, 목적지에 대한 경로를 선택할 수 있도록 하는 역할을 담당하므로 외부와 접속된 EBGP가 1개일 경우 경로는 이미 결정되어 있으므로 IBGP의 역할은 필요없게 된다. 단지 BGP 라우터는 AS 내의 다른 라우터들과는 IGP로 정보를 교환하고, BGP와 IGP간에 Routing Information을 재분배하기만 하면 된다.

 
Full Mesh 형태의 IGBP Session
   
  IBGP의 특성중 하나는 IBGP 라우터가 같은 AS내에 있는 IBGP 라우터로부터 네트웍의 변화된 정보를 전달받으면 그 정보를 자신과 IBGP Session을 맺은 다른 IBGP 라우터에게 전달하지 않고 EBGP를 이용하여 다른 AS에 있는 EBGP라우터에게만 전달한다는 것이다.

라우터 A, B, C가 각각 EBGP Session 을 라우터E, F, G와 맺고, 라우터A는 라우터B, 라우터B는 라우터C와 IBGP Session을 맺지 않은 경우를 생각해보자. 즉 라우터A와 라우터C 사이에는 직접 IBGP Session을 맺지 않은 것이다.


만약 AS200에서 어떤 변화가 발생되면 라우터 E는 그 사실을 라우터A에게 전달할 것이다. 네트웍의 변화에 대한 정보를 얻은 라우터A는 IBGP Session을 맺은 라우터B에게 전달한다.

앞에서도 말했듯이 라우터B는 정보가 같은 AS에 있는 라우터A로부터 왔으므로 그 정보를 IBGP Session을 맺은 라우터C에게 전달하지 않고 EBGP Session을 맺은 라우터F에게만 전달한다. 따라서 변화된 정보가 라우터C를 통해 AS400에까지 전달되지 않는다.

그러므로 라우터A와 라우터C간에 IBGP Session을 맺어주어야 한다.

AS내에서 EBGP 라우터간에는 Full Mesh 형태로 IBGP Session을 모두 맺어주어야 한다.

   
    Router-A# sh running-config
 !
 router bgp 100
   neighbor b-ip-address remote-as 100
   neighbor c-ip-address remote-as 100
   neighbor e-ip-address remote-as 200

Router-B# sh running-config
!
 router bgp 100
   neighbor a-ip-address remote-as 100
   neighbor c-ip-address remote-as 100
   neighbor f-ip-address remote-as 300

Router-C# sh running-config
!
router bgp 100
   neighbor a-ip-address remote-as 100
   neighbor b-ip-address remote-as 100
   neighbor g-ip-address remote-as 400
   
Loopback Interface
 

라우터A, B, C 들은 서로 직접 연결되어 있으며, 모두 Full Mesh 형태로 IBGP Session을 다음과 같이 맺었다고 가정하자.

   
    Router-A# sh running-config
!
router bgp 100
neighbor 130.100.2.2 remote-as 100
neighbor 130.100.1.2 remote-as 100

Router-B# sh running-config
!
router bgp 100
neighbor 130.100.2.1 remote-as 100
neighbor 130.100.3.2 remote-as 100

Router-C# sh running-config
!
router bgp 100
neighbor 130.100.1.1 remote-as 100
neighbor 130.100.3.1 remote-as 100
   
  위와 같은 상황에서 라우터A와 라우터C를 직접 연결하는 회선에 장애가 발생하였을 경우 라우터A와 라우터C간의 IBGP Session은 사라지게 된다. 이유는 라우터A에서 Neighbor를 130.100.1.2 즉 회선에 할당된 IP Address를 이용해 지정하였고 회선에 장애가 발생함에 따라 130.100.1.2에 도달할 수 없어 IBGP Session을 맺을 수 없기 때문이다.

그러나 IBGP Session은 직접 연결되어 있지 않더라고 맺을 수 있기 때문에 라우터A에서 라우터C와 IBGP Session을 위해 Neighbor를 130.100.4.1을 선언하였더라면 라우터A와 라우터C간의 회선이 끊어졌더라도 IBGP Session을 맺을 수 있었을 것이다. 라우터A는 라우터B를 경유하여 130.100.4.1을 접속할 수 있기 때문이다.

Loopback Interface는 물리적인 Interface가 아니라 가상의 Interface로서 위에서처럼 물리적인 Interface에 장애가 발생함에 따라 그것에 할당된 IP Address등을 이용할수 없게 되는 상황을 방지해 줄 수 있는 것이다. Loopback Interface를 선언하는 방법은 다음과 같다.
   
    Router(config)# interface loopback number
Router(config-if)#
ip address ip-address netmask
     
 

number는 0에서 2147483648까지 가능하다.

따라서 Loopback Interface를 활용한 IBGP Session은 다음과 같이 설정할 수 있다.

Router-A# sh running-config
!
interface loopback 0
ip address 130.100.5.1 255.255.255.0
!
router bgp 100
neighbor 130.100.6.1 remote-as 100
neighbor 130.100.6.1 update-source loopback 0
neighbor 130.100.7.1 remote-as 100
neighbor 130.100.7.1 update-source loopback 0

Router-B# sh running-config
!
interface loopback 0
ip address 130.100.6.1 255.255.255.0
!
router bgp 100
neighbor 130.100.5.1 remote-as 100
neighbor 130.100.5.1 update-source loopback 0
neighbor 130.100.7.1 remote-as 100
neighbor 130.100.7.1 update-source loopback 0

Router-C# sh running-config
!
interface loopback 0
ip address 130.100.7.1 255.255.255.0
!
router bgp 100
neighbor 130.100.5.1 remote-as 100
neighbor 130.100.5.1 update-source loopback 0
neighbor 130.100.6.1 remote-as 100
neighbor 130.100.6.1 update-source loopback 0


Loopback Interface를 이용해 IBGP Session을 맺은 경우 반드시 update-source를 함께 선언해주어야 한다. 라우터A에서 update-source를 선언함으로써 라우터B와 라우터C에게 IBGP Session을 위한 Neighbor는 130.100.5.1이라고 알려주게 된다.
   
  나. EBGP
 
  EBGP를 설정하는 방법은1.4 BGP 설정방법은?에서 다루었기 때문에 여기에서는 EBGP 설정과 관련된  Multihop, Synchronization에 대해서 알아보도록 하겠다.
   
  Multihop
    IBGP 라우터들은 직접 연결되어 있지 않아도 IBGP Session을 맺을 수 있다. EBGP 라우터들은 대개 전용회선과 같은 것으로 직접 연결되어 EBPG Session을 맺는데 어떠한 이유에서 EBGP 라우터들이 직접 연결될 수 없거나 Serial Link에 할당된 IP Address로 neighbor를 지정할 수 없는 상황이 발생할 수 있다.

가장 좋은 예가 Loopback Interface에 할당된 IP Address로 neighbor를 선언하는 경우이다.

이런 경우 neighbor의 IP Address를 선언해 주고 neighbor ebgp-multihop이라는 명령어를 함께 선언해 주어야 한다. 위와 같은 상황에서는 neighbor의 IP Address는 Loopback Interface에 할당된 IP Address를 이용하면 된다.

Router-A# sh run
loopback interface 0
ip address 130.100.1.1 255.255.255.0
!
router bgp 100
neighbor 130.200.1.1 remote-as 200
neighbor 130.200.1.1 ebgp-multihop
neighbor 130.200.1.1 update-source loopback 0

Router-B# sh run
loopback interface 0
ip address 130.200.1.1 255.255.255.0
!
router bgp 200
neighbor 130.100.1.1 remote-as 100
neighbor 130.100.1.1 ebgp-multihop
neighbor 130.100.1.1 update-source loopback 0

이때 주의하여야 할 것은 IBGP에서와 마찬가지로 EBGP 라우터가 loopback interface의 IP Address에 대한 경로를 알고 있어야 한다는 점이다. AS200에 있는 EBGP 라우터가 130.200.0.0에 대한 정보를 AS100의 EBGP 라우터에게 전달할 경우는 별도로 130.200.0.0에 대한 정보를 AS100에 등록해 줄 필요는 없다.

그러나 130.200.0.0에 대한 정보를 AS100의 EBGP 라우터에게 전달하지 않을 경우, 운영자는 라우터A에 130.200.0.0에 대한 Static Route 등을 등록하여 주어야 한다.

라우터B측에서도 마찬가지다.

Router-A# sh run
loopback interface 0
ip address 130.100.1.1 255.255.255.0
!
router bgp 100
neighbor 130.200.1.1 remote-as 200
neighbor 130.200.1.1 ebgp-multihop
neighbor 130.200.1.1 update-source loopback 0
!
ip address 130.200.0.0 255.255.0.0 130.150.1.2
Router-B# sh run
loopback interface 0
ip address 130.200.1.1 255.255.255.0
!
router bgp 200
neighbor 130.100.1.1 remote-as 100
neighbor 130.100.1.1 ebgp-multihop
neighbor 130.100.1.1 update-source loopback 0
!
ip address 130.100.0.0 255.255.0.0 130.150.1.1

     
  Synchronization
    다음의 네트웍 상황을 살펴보자. 라우터B만이 BGP라우터가 아니고 나머지는 모두 BGP 라우터이다. AS100은 AS200과 AS300을 중계하고 있다.

라우터A가 라우터D로부터 130.20.0.0에 대한 정보를 전달 받으면 이것을 IBGP Neighbor인 라우터C에게 전달하며, 라우터C는 이 정보를 라우터E에게 전달할 것이다. AS300에 있는 라우터는 130.20.0.0으로 가려는 트래픽을 라우터C에게 전달할 것이다. 그리고 라우터C는 해당 트래픽을 라우터B에게 전달할 것이다. 그런데 아직 라우터B가 라우터A로부터 130.20.0.0에 대한 정보를 받지 못했다고 생각해보자. 그러면 당연히 라우터B는 해당 트래픽을 폐기해 버릴 것이다.

BGP에서 다른 두 개 이상의 AS를 연결하는 역할을 하는 AS가 있을 경우 이 AS에 있는 BGP 라우터들은 목적지에 대한 경로를 IGP로부터 모두 얻을때까지는 해당 경로를 다른 BGP 라우터에게 알려주지 않는 것을 Synchronization이라고 한다.

따라서 위와 같은 상황에서 Synchronization이 활성화되어 있다면 라우터C는 라우터A로부터 받은 목적지에 대한 경로정보를 라우터B로부터 모두 전달받을때까지 기다렸다가 이후 라우터E에게 전달한다. 따라서 라우터B에서 트래픽이 폐기되는 것을 방지할 수 있게 된다.

그러나 이러한 Synchronization은 Routing Information의 전달을 지연시키는 요소중의 하나인데 이러한 Synchronization은 다음과 같은 상황에서는 필요하지 않을 수 있다.

- 자신의 AS가 다른 AS간의 트래픽을 중계하지 않을 때
- 다른 AS간의 트래픽을 중계하는 라우터들이 모두 IBGP를 운영할때

CISCO 라우터의 BGP에서는 기본적으로 Synchronization이 활성화되어 있는데 Synchronization을 비활성화하는 방법은 다음과 같다.

     
      Router(config)# router bgp local-asn
Router(config-router)#
no synchronization
   
  다. Network Advertisement
    RIP, IGRP, OSPF, EIGRP과 같은 IGP를 운영하고 있는 라우터는 맨처음에 Network Address 및 그것에 대한 경로정보를 전달할때 자신에게 직접 접속된 Network Address만을 전달한다. 방법은 이미 익혔듯이 network 명령어를 이용하여 자신에게 접속된 Network Address를 선언하면 된다.
     
      Router# sh running -config
!
router rip
network 130.100.0.0
network 130.110.0.0
     
   

BGP 라우터는 조금 다르다.

BGP 라우터는 자신이 소속된 AS에 있는 모든 Network Address를 BGP Routing Table에 등록하여 다른 AS의 BGP 라우터에게 전달한다. 즉 BGP 라우터에 직접 접속된 Network Address가 아니더라도 자신의 AS에 속한 Network Address를 전달하는 것이다.

BGP 라우터가 외부로 전달할 Network Address를 BGP Routing Table에 등록하는 방법은 여러가지가 있으며 이제부터 그것을 알아보도록 하겠다. 이 과정을 거치지 않으면 BGP Session을 맺었더라도 전달하는 Network Address 및 경로에 대한 정보를 전달하지 않는다.

Network Address를 BGP Routing Table에 등록하는 방법은 Network 명령어를 이용하는 방법, 재분배에 의한 방법이 있는데 필자뿐만 아니라 다른 문서들에서도 Network 명령어만을 이용하도록 권하고 있다.
     
    Network 명령어 이용
     

위와 같은 상황에서 라우터A와 라우터B는 다음과 같이 BGP Session을 맺을 것이다.

  Router-A#sh run
router bgp 100
neighbor 130.100.1.6 remote-as 200
Router-B#sh run
router bgp 100
neighbor 130.100.1.6 remote-as 200
   
그리고 라우터A와 라우터B는 자신의 AS에 속한 Network Address들을 다음과 같이 모두 선언해 준다.
 
  Router-A#sh run
router bgp 100
neighbor 130.3%0.0.2 remote-as 200
network 130.100.0.0
network 130.3%0.0.0

Router-B#sh run
router bgp 100
neighbor 130.3%0.0.1 remote-as 100
network 130.130.0.0
network 130.131.0.0
 
위와 같이 BGP 라우터를 설정한 경우 라우터 A와 라우터B에서 BGP 정보를 확인해 보자. BGP 정보를 확인하는 방법은 show ip bgp 라는 명령어를 이용하면 된다.
 
  Router> show ip bgp
 
BGP 라우터에서 show ip bgp 라는 명령어를 입력하면 BGP에 의해 전달받은 Network Address 및 그것에 대한 경로정보를 보여준다. show ip bgp 명령어가 보여주는 정보는 여러가지인데 이것들에 대해서는 <a>여기</a>에서 자세히 다루도록 하겠다. 여기에서는 Network, Next Hop, Path, Origin에 대해서만 우선 알아보도록 하겠다.

라우터A에서 show ip bgp 명령어를 입력하였을 경우 결과는 다음과 같다.

Router-A> show ip bgp
table version is 4, local router ID is 130.3%0.0.1
status code : s suppressed, d damped, h history, * valid, > best, i - internal
origin code : i - IGP, e - EGP, ? - incomplete
Network             Next Hop          Metric  LocPrf   Weight    Path

*> 130.100.0.0

0.0.0.0

0

100

0


I

*> 130.3%0.0.0







*> 130.130.0.0

130.3%0.0.2

0

100

0

200

i

*> 130.131.0.0

130.3%0.0.2

0

100

0

200

i

network 명령어를 이용하여 BGP Neighbor에게 전달할 Network Address를 전달하는 방법의 가정 큰 장점은 어떤 Network Address를 전달하는지 쉽게 알 수 있다는 점이다.

Posted by 행복한 프로그래머 궁금쟁이박

댓글을 달아 주세요

  1. BlogIcon 셈틀쟁이 2008.04.11 16:16 신고  댓글주소  수정/삭제  댓글쓰기

    라우터 설정하는거 오랜만에 본다 ㅋㅋ