BGP 개요

Network/TCP_IP | 2006/02/14 08:37 | adioshun





















































   목차



































































1. Border Gateway Protocol의 개요


 


BGP (Border Gateway Protocol) AS(Autonomous System) Number 다른 네트웍(자치 네트워크)간에 Routing Information 주고 받는 Exterior Gateway Protocol 현재 BGP Version 4 이용되고 있는데 이것을 간단히 줄여 BGP라고 한다.


 












1.1 BGP는 어디에 쓰이는가?


 


BGP는 Policy routing으로 문자그대로 네트워크 경로의 결정이 라우터가 수행하는 것이 아니라네트워크를 운영하는 운영자에 의해서 결정되는 Routing Protocol이다.


BGP는 위에서도 언급했듯이 AS number가 다른 두 네트워크간에 Routing Information을 주고 받을 때 이용할 수 있는 EGP(Exterior Gateway Protocol)이다. 따라서 동일한 AS(자치네트워크)안에서의 라우팅은 RIP, OSPF, EIGRP와같은 IGP(Interior Gateway Protocol)를 이용하는 것이 바람직하다.


 












1.2 왜 정책 라우팅인가?


 


위에서 언급한 것처럼 BGP는 네트워크 운영자의 라우팅 정책에 의해 라우팅 경로를 정할 수 있습니다. 예를 들면 ...


 













위와 같은 network 토폴로지를 가정하고 네트워크 관리자는 BGP를 이용하여 Internetworking환경에서의 원하는 라우팅 경로의 테이블을 구성할 수 있다.


 


AS100


- 인터넷으로 갈때는 B라우터 통해 AS200 경유한다.


- AS300으로 갈때는 라우터C 통해 직접 간다.


AS200


- AS100 있는 네트웍은 AS200 경유하여 인터넷으로 있다.


- AS300 AS100, AS200 경유하여 인터넷으로 없다.


- AS300과의 통신은 인터넷을 경유하도록 한다.


AS300


- AS100 있는 네트웍은 AS300으로 접속할 있다.


- AS100 AS300 경유하여 인터넷으로 없다.


- AS200 AS100, AS300 경유하여 인터넷으로 없다.


-AS200과의 통신은 인터넷을 경유하도록 한다.


 


이처럼 BGP는 두 개이상의 AS에 접속을하고 위의 예처럼 독자적인 라우팅 정책을 구현해야 할 때 필요하다. 이와같이 독자적인 라우팅 정책을 구현하기 위해서는 Filtering, Route-map, weight, localPreference, MED등 다양한 Routing Information을 제어할 수 옵션을 추가해 주어야 한다.



2. 기본적인 BGP 설정


 


BGP에는 External BGP와 Internal BGP가 있는데. External BGP 다른 AS 속한 라우터간에 맺으며, Internal BGP 같은 AS 속한 라우터간에 맺는다. 여기서 External BGP EBGP, Internal BGP IBGP 줄여서 표기하기도 한다.


BGP에서 Neighbor간에는 반드시 직접 연결되어 있을 필요가 없으며, 이러한 특징은 다른 Dynamic protocol의 Neighbor와는 다른 의미이다.


 













AS300에 있는 라우터에서 BGP를 설정하는 방법은 다음과 같다.


 










Router(config)# router bgp 300


Router(config-router)# neighbor remote-as 1.1.1.1 200




 


AS200에서도 똑같은 작업을 시행한다.


 


router bgp BGP Routing Protocol 활성화하겠다는 것이며 Local AS num을 함께 입력한다. l neighbor-ip-address Neighbor IP Address인데 보통 라우터를 연결하는 Interface 할당된 IP Address 많이 이용하며, 경우에 따라서 연결 Interface장애시 BGP라우팅을 Session을 유지하도록 down될 가능성이 적은 Ethernet과 같은 다른 Interface나 혹은 Loopback Interface 할당된 IP Address 이용하기도 한다.



2.1 AS-Path, Neighbor란?


 


BGP BGP Session 맺기 위해 Transport Protocol Transmission Control Protocol (TCP) 이용하며 BGP Session 맺은 상대측 라우터를 Neighbor 혹은 Peer 라고도 표현된다.(UDP를 이용하는 것은 RIP이있다)


AS-PATH란 해당 목적지까지 갈때 경유하는 AS들의 AS Number들로 구성된 것이다. AS_path에는 경유하는 AS Number 표시될 뿐이지 해당 AS에서 어떤 경로를 지나왔는지는 표시되지 않는다. 가령 다음과 같이 네트웍이 구성되어 있을 경우 AS100 입장에서 네트웍 1.0.0.0 대한 AS_path 200 300 400 이다.


 


 AS100 ------------AS200 ------------AS300 ---------------AS400 (1.0.0.0)


 


위의 예로써 설명을 하면 AS400 있는 라우터는 AS300 있는 라우터에게 130.100.0.0 대한 정보를 전달할때 AS_path 400 전달한다.


AS300 :  1.0.0.0  400


AS300 있는 라우터가 AS200 있는 라우터에게 130.100.0.0 대한 정보를 전달할때는 자신의 AS Number AS_path Prepend 시킨 AS_Path 300 400 전달한다.


AS200 :  1.0.0.0  300 400


AS200에서 AS100으로 정보가 전달될때도 역시


AS100 :  1.0.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이다. 그러나 이는 네트워크 관리자의 임의데로 Weight나 Local-Preference(IBGP사용시)등의 조정으로 경로를 선택하는 것이 가능하다.


AS_path에는 경유하는 AS 대한 정보가 담겨 있는데 Split-horizon처럼 AS_path 가지고 AS간에 Routing Loop 쉽게 방지할 있다.


또한 BGP를 Loop-Free Routing Protocol이라고도 하는데 만약 AS_path 자신의 AS Number 표시되어 있다면 그것은 자신이 내보낸 정보이므로 해당 정보를 무시한다. 따라서 BGP Routing Routing Loop 발생하지 않는다.



2.2 기본 설정법 - IBGP, EBGP



2.2.1 IBGP


 


IBGP AS내에 다른 AS 연결된 2 이상의 라우터가 있을 경우만 설정하여 이용하는 것이 바람직하다. 즉, EBGP 운영하고 있는 라우터가 2 이상일 경우일때만 필요하다는 것이다. 그리고 AS내에 있는 모든 라우터(예를들어 OSPF, RIP만을 운영하는 라우터들)가 IBGP 설정할 필요는 없으며, EBGP 운영하고 있는 라우터간에 IBGP 설정해주면 된다.


 













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


 













IBGP의 또 하나의 특징으로 Full-Mesh 형태로 구성해야 한다는 것이다.


다음의 그림을 보고 설명을 하겠다.


 













라우터
A, B, C 각각 EBGP Session 라우터E, F, G 맺고, 라우터A 라우터B, 라우터B 라우터C IBGP Session 맺고 라우터A 라우터C 사이에는 직접 IBGP Session 맺지 않은 경우이다.


만약 AS400에서 어떤 변화가 발생되면 라우터 E 사실을 라우터A에게 전달할 것이다. 네트웍의 변화에 대한 정보를 얻은 라우터A IBGP Session 맺은 라우터B에게 전달한다. 앞에서도 말했듯이 라우터B 정보가 같은 AS 있는 라우터A로부터 왔으므로 정보를 IBGP Session 맺은 라우터C에게 전달하지 않고, EBGP Session 맺은 라우터F에게만 전달한다. 따라서 변화된 정보가 라우터C 통해 AS300에까지 전달되지 않는다는 것이다. 그러므로 같은 AS안에 있는 라우터는 다음과 같이 Full-Meshed IBGP Session 맺어주어야 한다.


 












2.2.2 Loop-Back Interface


 


IBGP나 EBGP를 사용할 경우에 가상의 인터페이스인 Loop-back Interface를 사용하여 BGP세션을 유지하는 방법이있다.


예를 들어 라우터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 라우터 C의회선에 할당된 IP Address 이용해 지정하였고 회선에 장애가 발생함에 따라 지정된 인터페이스 도달할 없어 IBGP Session 맺을 없기 때문이다.


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


자 이제 눈치를 채셨겠지만 여기서 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이라고 알려주게 된다.



2.2.3 EBGP


 


EBGP 설정하는 방법은 BGP 설정방법은?에서 다루었기 때문에 여기에서는 EBGP 설정과관련된  Multihop, Synchronization 대해서 알아보도록 하겠다.


IBGP 라우터들은 직접 연결되어 있지 않아도 IBGP Session 맺을 있다. EBGP 라우터들은 대개 전용회선과 같은 것으로 직접 연결되어 EBPG Session 맺는데 어떠한 이유에서 EBGP 라우터들이 직접 연결될 없거나 Serial Link 할당된 IP Address neighbor 지정하지 않고, Ethernet interface나 Loopback Interface 할당된 IP Address neighbor 선언하는 경우이다.


 













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


Multihop이라는 것은 Neighbor를 찾는 라우터의 TTL range를 지정하는 것으로 1-255로 지정할 수 있으므로 EBGP라우터가 지정 Range 안에서 세션을 형성 할 수 있다.


 










Router-A# sh run


loopback interface 0


ip address 1.1.1.1 255.255.255.0


router bgp 100


neighbor 11.1.1.1 remote-as 200


neighbor 11.1.1.1 ebgp-multihop


neighbor 11.1.1.1 update-source loopback 0


Router-B# sh run


loopback interface 0


ip address 1.1.1.1 255.255.255.0


router bgp 200


neighbor 1.1.1.1 remote-as 100


neighbor 1.1.1.1 ebgp-multihop


neighbor 1.1.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 1.1.1.1 255.255.255.0


router bgp 100


neighbor 11.1.1.1 remote-as 200


neighbor 11.1.1.1 ebgp-multihop


neighbor 11.1.1.1 update-source loopback 0


ip address 11.1.1.1 255.255.255.255 10.1.1.1


 


Router-B# sh run


loopback interface 0


ip address 1.1.1.1 255.255.255.0


router bgp 200


neighbor 1.1.1.1 remote-as 100


neighbor 1.1.1.1 ebgp-multihop


neighbor 1.1.1.1 update-source loopback 0


ip address 1.1.1.1 255.255.255.255 10.1.1.2





2.3 Synchronization, Network Advertisement



2.3.1 Synchronization


 


다음으로 Syncronization에 대해서 살펴보도록 하는데 다음의 네트웍 상황을 살펴보자. 라우터B만이 BGP라우터가 아니고 나머지는 모두 BGP 라우터이다. AS100 AS200 AS300 중계하고 있다.


 













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


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


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


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


 


* 자신의 AS 다른 AS간의 트래픽을 중계하지 않을 때


* 다른 AS간의 트래픽을 중계하는 라우터들이 모두 IBGP 운영할 때


 


상기의 두 경우인데, 보통의 경우는 BGP 라우팅 정보를 IGP로 Redistribute하는 경우는 거의 없고 직접적인 IBGP를 통해서 라우팅 정보를 교환합니다.


또한 Transit(중계)서비스의 경우는 IX(Internet exchane)서비스를 하는 업체에 국한되고 이서비스를 운영하는 업체에서도 IGP와 BGP의 라우팅 테이블을 Redistribute하는 경우는 거의 없다.


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


 










Router(config)# router bgp local-asn


Router(config-router)# no synchronization





2.3.2 Network Advertisement


 


RIP, IGRP, OSPF, EIGRP 같은 IGP 운영하고 있는 라우터는 맨처음에 Network Address 그것에 대한 경로정보를 전달할때 자신에게 직접 접속된 Network Address만을 전달하며, 방법은 이미 익혔듯이 network 명령어를 이용하여 자신에게 접속된 Network Address 선언하면 된다.


그러나 BGP에서 네트워크 Address를 선언할 경우에는 BGP를 운영하는 라우터에 직접 연결된 네트워크뿐만 아니라 직접 연결 되지 않은 네트워크 까지도 선언할 수 있으며,이를 선언하지 않을겨 경우 BGP 세션을 맺는다 하더라도 서로의 네트워크 라우팅 정보를 전달하지 않으므로 반듸드시 선언해야한다.


Advertising하는 방법은 내부 IGP로 운영된느 네트워크를 Redistrbute하는 방식과 Network라는 Command를 사용하여 선언하는 방법이 있으나, 통상 Network라는 명령어로 선언하는 것을 권하고 있다.


 













그리고
라우터A 라우터B 자신의 AS 속한 Network Address들을 다음과 같이 모두 선언해 준다.


 










Router-A#sh run


router bgp 100


neighbor 1.1.1.2 remote-as 200


network 10.1.0.0


network 10.2.0.0


Router-B#sh run


router bgp 200


neighbor 1.1.1.1 remote-as 100


network 10.3.0.0


network 10.4.0.0




 


위와 같이 BGP 라우터를 설정한 경우 라우터 A 라우터B에서 BGP 정보를 확인해 보자. BGP 정보를 확인하는 방법은 show ip bgp 라는 명령어를 이용하면 된다.






2006/02/14 08:37 2006/02/14 08:37
Trackback address :: http://4ellene.net/tt/trackback/763

Comments List

  1. gay sauna new york city 2008/05/23 05:20

    嫄몄

  2. interracial singel 2008/05/23 05:52

  3. eros ny 2008/05/23 07:04

  4. busty merylin 2008/05/24 00:26

Write a comment.

[로그인][오픈아이디란?]