- BGP runs on top of TCP ( 179 Port )
- TCP used for reliability ( like ACK Message)
- Updates are incremental and triggered
- Metric is the Biggest you've ever seen !
- BGP is huge, messive metric
- Slowest Routing Protocol Protocol on the planet to converge
- 예를들어 RIP 같은 경우에는 hop count, OSPF는 bandwidth와 같은 것을 metric의 척도로 사용하지만 BGP는 매우 많은 attribute를 가지고 이를 결정하기 때문에, 크기도 크고 라우팅 테이블의 크기나 모든것들이 방대하다. 하지만 그만큼 convergence time 은 가장 느리다.
- BGP 는 기술적으로 Distance Vecter Protocol이지만 "Path Vector Protocol"이라고 부른다.
- Tuning을하지않는다면 BGP는 RIP처럼 동작한다.
BGP Packets And Tables
- Packets
- Open : Start the Session Like Hello packet
- Keepalive : 살아있는지 확인
- update : Network Reachability Exchanges
- Notification : Something bad has happend; Close Session
- Table
- Neighbor Table : The Connected BGP Friends
- BGP Table : A list of ALL BGP Routes (Can be Big)
- Routing Table : A list of the BEST routes
위와 같은 네트워크를 보자
한번 설정을 해보자. R1,R4,R5는 각각 x.x.x.x 255.255.255.255 의 루프백을 생성한다.
R5(config)#router bgp 6500
R5(config-router)#router bgp 6501
BGP is already running; AS is 6500
R5(config)#router bgp 6502
BGP is already running; AS is 6500
R5(config)#router bgp 6500
R5(config-router)#
R5(config-router)#neighbor ?
A.B.C.D Neighbor address
WORD Neighbor tag
X:X:X:X::X Neighbor IPv6 address
R5(config-router)#neighbor 10.1.45.1 remote
R5(config-router)#neighbor 10.1.45.1 remote-as ?
<1-65535> AS of remote neighbor
R5(config-router)#neighbor 10.1.45.1 remote-as 5500
R5(config-router)#
이렇게 하면 5500 AS의 10.1.45.1을 neighbor로 설정하겠다는 뜻이다.
R5#sh ip bgp summary
BGP router identifier 10.1.45.2, local AS number 6500
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.45.1 4 5500 0 0 0 0 0 never Active
R5#
확인을 해보면, never! Active 가 보인다.
EIGRP와 같이 Active는 제대로 된 동작된 상태가 아니다.
neighbor가 제대로 맺어진다면 state부분이 숫자로 보일 것이다.
이제 neighbor relationship을 완성시켜 보자.
R4(config)#router bgp 5500
R4(config-router)#neighbor 10.1.45.2 remote
R4(config-router)#neighbor 10.1.45.2 remote-as 6500
R4(config-router)#
조금 기다리면.......
R4#sh ip bgp sum
BGP router identifier 10.1.45.1, local AS number 5500
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.45.2 4 6500 4 4 1 0 0 00:01:06 0
R4#
R5#sh ip bgp summary
BGP router identifier 10.1.45.2, local AS number 6500
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
10.1.45.1 4 5500 2 2 0 0 0 00:00:04 0
R5#
이제 제대로 올라온 것을 볼 수 있고, State/Prefix Receive가 0으로 나온다.
위와 같이 BGP는 그렇게 똑똑한 라우팅 프로토콜은 아니다. neighbor를 맺을때 일일이 이렇게 정적으로 지정을 해 주어야 한다.
R1(config)#router bgp 5500
R1(config-router)#neighbor 4.4.4.4 remote
R1(config-router)#neighbor 4.4.4.4 remote-as 5500
R1(config-router)#
R4(config)#router bgp 5500
R4(config-router)#neighbor 1.1.1.1 remo
R4(config-router)#neighbor 1.1.1.1 remot
R4(config-router)#neighbor 1.1.1.1 remote-as 5500
R4(config-router)#
R4#sh ip bgp sum
BGP router identifier 10.1.45.1, local AS number 5500
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1 4 5500 0 0 0 0 0 never Active
10.1.45.2 4 6500 4 4 1 0 0 00:01:19 0
R4#
위와 같이 설정하면 iBGP로 설정이 될 것 같지만 실제로는 패킷은 인터페이스를 타고 가기 때문에 제대로 neighbor를 맺지 못한다. 그래서 라우팅 업데이트의 source를 설정해 주어야 한다.
R1(config)#router bgp 5500
R1(config-router)#neighbor 4.4.4.4 update
R1(config-router)#neighbor 4.4.4.4 update-source loopback 1
R1(config-router)#
R4(config-router)#neighbor 1.1.1.1 update
R4(config-router)#neighbor 1.1.1.1 update-source loop
R4(config-router)#neighbor 1.1.1.1 update-source loopback 4
R4(config-router)#
R4#sh ip bgp sum
BGP router identifier 10.1.45.1, local AS number 5500
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1 4 5500 4 4 1 0 0 00:00:12 0
10.1.45.2 4 6500 6 6 1 0 0 00:03:25 0
R4#
R5(config)#ip route 4.4.4.4 255.255.255.255 10.1.45.1
R4(config)#ip route 5.5.5.5 255.255.255.255 10.1.45.2
위와 같이 static routing 을 이용해서 만약 링크가 dual로 연결되어 있다면 Loadbalancing 구간을 생성할 수 있다.
R4#sh ip bgp summary
BGP router identifier 10.1.45.1, local AS number 5500
BGP table version is 1, main routing table version 1
Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd
1.1.1.1 4 5500 9 9 1 0 0 00:05:28 0
10.1.45.2 4 6500 11 11 1 0 0 00:08:41 0
R4#
BGP에서
iBGP에서는 떨어진 지점에 대해 Loopback과의 neighborship이 가능하지만
eBGP에서는 Directly Connected 라우터만 neighborship이 가능하다.