BGP边界网关协议理论与实验

BGP

它是用于自治系统(AS)间通信的路由协议,自治系统内的路由器互为IBGP邻居,处于边界的路由器与相邻的自治系统边界路由器互为EBGP邻居。自治系统内通常采用OSPF动态路由协议。

BGP特性:
  • 传输协议:TCP,端口号179
  • 外部路由协议,用来在AS之间传递路由协议
  • 一种增强的路径矢量路由协议
  • 拥有可靠的路由更新机制
  • 具备丰富的Metric度量方法
  • 无环路协议设计
  • 为路由条目附带多种属性信息
  • 支持CIDR(无类别域间路由选路)
  • 丰富的路由过滤和路由策略
  • 无需周期性更新
  • 路由更新时只发送增量路由
  • 周期性发送keepalive报文以保持TCP连通性
BGP报文:

open报文:发hello建立邻居关系
Update报文:更新路由
Notification报文:报错
Route-refresh:刷新路由表
keepalive:维持邻居关系

BGP状态机:

BGP边界网关协议理论与实验_第1张图片

  • ldle (空闲)状态
    BGP总以ldle状态为起点,该状态拒绝所有入站的连接。只有在BGP起动之后,BGP进程将初始化所有BGP资源,初始化去往邻居的TCP连接,监听来自邻居的TCP初始化消息,并更改为连接状态。启动事件一般是配置BGP进程。
  • Connect(连接)状态
    进入Connect状态后,BGP进程将一直等待TCP连接的完成(三次握手),当TCP连接建立成功,BGP将会向邻居发送Open消息,并进入OpenSent(打开发送)状态。如果TCP会话没有建立,BGP将继续监听邻居初始化的连接,开启连接重试定时器,迁移到Active(激活)状态。Connect→→OpenSent(TCP连接建立);Connect→→Active(TCP连接暂未建立)。
  • Active(激活)状态
    该状态下,BGP进程继续尝试和邻居建立TCP连接,如果TCP连接建立成功,BGP进程清除连接重试定时器,完成初始化过程,并向邻居发送Open报文,迁移到OpenSent(打开发送)状态。
    如果连接重试定时器到期BGP进程依然处在激活状态,进程将返回连接状态,监听邻居发起的TCP会话,这个过程将反复循环,直到监听到由邻居发起的TCP会话。
  • OpenSent(打开发送)状态
    进入了该状态,已经发送了Open消息,BGP将一直等待来自邻居的Open消息。一旦接收到Open消息后,将检查该消息的每一个字段,如果有差错,将会发送Notification消息迁入Idle状态。
    如果接收到的Open消息没错,就会发送Keepalive消息并商讨Keepalive定时器和Keepalive发送的时间。 并迁移到OpenConfirm(打开确认)状态。
  • OpenConfirm(打开确认)状态
    进入了这个状态下,BGP进程将等待邻居确认的Keepalive或Notification消息。如果接收到的是Keepalive消息则迁移到Established(建立)状态,如果是Notification消息那么就将迁移到Idle状态。
  • Established(建立)状态
    进入了这个状态就说明了BGP的对等连接正式建立了,对等体之间交互Update,Keepalive和Notification消息,如果接受到的是Update或Keepalive消息,则重启保持定时器,如果接受到一个Notification消息,则会迁移到Idle状态。
对等体交互原则

● 从IBGP对等体获得的BGP路由,BGP设备只传递给它的EBGP对等体
● 从EBGP对等体获得的BGP路由,BGP设备传递给它所有EBGP和IBGP对
等体(对等体是IBGP只能传递一-跳, 对等体是EBGP则不限制)
● 当存在多条到达同一目的地址的有效路由时,BGP设备只将最优路由发布给对等体,路由更新时,BGP设备只发送更新的BGP路由
● 所有对等体发送的路由,BGP设备都会接收
● 所有EBGP对等体在传递过程中下一-跳改变
● 所有IBGP对等体在传递过程中下一-跳不变
● 默认EBGP传递时TTL值为1
● 默认IBGP传递时TTL值为255

通告BGP路由的方法

BGP边界网关协议理论与实验_第2张图片

建立邻居的方法:直连网段建和环回口建(network通告)
  • 直连建邻居时需要注意的点
    建立IBGP邻居时要保证下一跳可达,处于边界的IBGP邻居需要将下一跳指向自己(next -hop-local),这样才能建立IBGP邻居。
    BGP边界网关协议理论与实验_第3张图片
  • 用环回口建邻居时需要注意的点
    1、需要修改更新源,默认更新源是物理口,你需要修改成自己环回口
    2、建立IBGP邻居时要保证下一跳可达,处于边界的IBGP邻居需要将下一跳指向自己,这样才能建立IBGP邻居
    3、建立EBGP邻居时因为EBGP路由只传一 跳,因而,在建EBGP邻居时,需要修改EBGP多跳的跳数为2以上(自己环回到对端环回是2跳,默认只传1跳)
    BGP边界网关协议理论与实验_第4张图片
通常采用环回口建立邻居

原因是环回口稳定,只要路由器启动着,环回口就不down, 而物理链路可能会受线路或者是接口等因素的影响导致邻居关系有问题,因而–般BGP建立邻居都是用环回口来建。

BGP选路原则

(1) 若去往目的网络的路由下一-跳不可达,则可以忽略此路由
(2) Preferred-Value优先级以数值高的路由优先
(3) Local-Preference优先级以数值高的路由优先
(4) 聚合路由优先级高于非聚合路由
(5) 本地手动聚合路由的优先级高于本地自动聚合的路由
(6) 本地通过Network命令引入的路由的优先级高于本地通过Import-route命令引入的路由
(7) AS路径长度最短(最少个数)的路径优先级高
(8) 比较0rigin属性,IGP优先级高于EGP, EGP优先级高于Incomplete
(9) 选择MED优先级较小的路由
(10) EBGP路由优先级高于IBGP路由
(11) BGP优先选择到BGP下- -跳的IGP度量低的路径
当以上全部相同,则为等价路由,可以负载分担(注: AS-PATH必须一致),当负载分担时,以下3条原则无效
(12) 比较Cluster-List长度, 短者优先
(13) 比较Originator_ ID(如果没有Originator_ ID,则用Router ID比较),选择数值较小的路径
(14) 比较对等体的IP地址,选择IP地址数值最小的路径

BGP实验拓扑即要求

BGP边界网关协议理论与实验_第5张图片

通过修改BGP属性优先级实现,R1到R7优先走上面的路径,R7到R1优先走下面的路径。
BGP属性:
  • AS-Path:越短越优先。(既可以用于IBGP之间设置,也可以用于EBGP之间设置)
  • Local Preference:本地优先级,默认为100,越大越优先。(只能用于IBGP之间)
  • MED:权重,越小越优先,默认为0。(只能用于EBGP之间)
R3上抓1.1.1.1的包,设置 Local Preference为200,指向4.4.4.4
R1配置:
#
interface GigabitEthernet0/0/0
 ip address 12.1.1.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 13.1.1.1 255.255.255.0 
#
interface LoopBack0
 ip address 1.1.1.1 255.255.255.255 
#
bgp 100
 peer 2.2.2.2 as-number 200 
 peer 2.2.2.2 ebgp-max-hop 255 
 peer 2.2.2.2 connect-interface LoopBack0
 peer 3.3.3.3 as-number 200 
 peer 3.3.3.3 ebgp-max-hop 255 
 peer 3.3.3.3 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  network 1.1.1.1 255.255.255.255 
  network 2.2.2.2 255.255.255.255 
  network 3.3.3.3 255.255.255.255 
  network 12.1.1.0 255.255.255.0 
  network 13.1.1.0 255.255.255.0 
  peer 2.2.2.2 enable
  peer 3.3.3.3 enable
#
ip route-static 2.2.2.2 255.255.255.255 12.1.1.2
ip route-static 3.3.3.3 255.255.255.255 13.1.1.2
R2配置
#
interface GigabitEthernet0/0/0
 ip address 12.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 23.1.1.1 255.255.255.0 
#
interface LoopBack0
 ip address 2.2.2.2 255.255.255.255 
#
bgp 200
 peer 1.1.1.1 as-number 100 
 peer 1.1.1.1 ebgp-max-hop 255 
 peer 1.1.1.1 connect-interface LoopBack0
 peer 3.3.3.3 as-number 200 
 peer 3.3.3.3 connect-interface LoopBack0
 peer 4.4.4.4 as-number 200 
 peer 4.4.4.4 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  network 1.1.1.1 255.255.255.255 
  network 2.2.2.2 255.255.255.255 
  network 3.3.3.3 255.255.255.255 
  network 4.4.4.4 255.255.255.255 
  network 12.1.1.0 255.255.255.0 
  network 23.1.1.0 255.255.255.0 
  peer 1.1.1.1 enable
  peer 3.3.3.3 enable
  peer 3.3.3.3 next-hop-local 
  peer 4.4.4.4 enable
  peer 4.4.4.4 next-hop-local 
#
ospf 1 
 area 0.0.0.0 
  network 2.2.2.2 0.0.0.0 
  network 23.1.1.0 0.0.0.255 
#
ip route-static 1.1.1.1 255.255.255.255 12.1.1.1
R3配置
#
acl number 2000  
 rule 5 permit source 1.1.1.1 0 
#
interface GigabitEthernet0/0/0
 ip address 13.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 24.1.1.1 255.255.255.0 
#
interface LoopBack0
 ip address 3.3.3.3 255.255.255.255 
#
bgp 200
 peer 1.1.1.1 as-number 100 
 peer 1.1.1.1 ebgp-max-hop 255 
 peer 1.1.1.1 connect-interface LoopBack0
 peer 2.2.2.2 as-number 200 
 peer 2.2.2.2 connect-interface LoopBack0
 peer 4.4.4.4 as-number 200 
 peer 4.4.4.4 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  network 1.1.1.1 255.255.255.255 
  network 2.2.2.2 255.255.255.255 
  network 3.3.3.3 255.255.255.255 
  network 4.4.4.4 255.255.255.255 
  network 13.1.1.0 255.255.255.0 
  network 16.0.0.0 240.0.0.0 
  network 24.1.1.0 255.255.255.0 
  peer 1.1.1.1 enable
  peer 2.2.2.2 enable
  peer 2.2.2.2 next-hop-local 
  peer 4.4.4.4 enable
  peer 4.4.4.4 route-policy local export
  peer 4.4.4.4 next-hop-local 
#
ospf 1 
 area 0.0.0.0 
  network 3.3.3.3 0.0.0.0 
  network 24.1.1.0 0.0.0.255 
#
route-policy local permit node 10 
 if-match acl 2000 
 apply local-preference 200 
#
route-policy local permit node 20 
#
ip route-static 1.1.1.1 255.255.255.255 13.1.1.1
#
R4配置
#
interface GigabitEthernet0/0/0
 ip address 23.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 24.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/2
 ip address 34.1.1.1 255.255.255.0 
#
interface GigabitEthernet1/0/0
 ip address 35.1.1.1 255.255.255.0 
#
interface NULL0
#
interface LoopBack0
 ip address 4.4.4.4 255.255.255.255 
#
bgp 200
 peer 2.2.2.2 as-number 200 
 peer 2.2.2.2 connect-interface LoopBack0
 peer 3.3.3.3 as-number 200 
 peer 5.5.5.5 as-number 300 
 peer 5.5.5.5 ebgp-max-hop 255 
 peer 5.5.5.5 connect-interface LoopBack0
 peer 6.6.6.6 as-number 300 
 peer 6.6.6.6 ebgp-max-hop 255 
 peer 6.6.6.6 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  peer 2.2.2.2 enable
  peer 2.2.2.2 next-hop-local 
  peer 3.3.3.3 enable
  peer 5.5.5.5 enable
  peer 6.6.6.6 enable
#
ospf 1 
 area 0.0.0.0 
  network 4.4.4.4 0.0.0.0 
  network 23.1.1.0 0.0.0.255 
  network 24.1.1.0 0.0.0.255 
#
ip route-static 5.5.5.5 255.255.255.255 34.1.1.2
ip route-static 6.6.6.6 255.255.255.255 35.1.1.2
R5配置
#
acl number 2000  
 rule 5 permit source 1.1.1.1 0 
#
interface GigabitEthernet0/0/0
 ip address 34.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 45.1.1.1 255.255.255.0 
#
interface LoopBack0
 ip address 5.5.5.5 255.255.255.255 
#
bgp 300
 peer 4.4.4.4 as-number 200 
 peer 4.4.4.4 ebgp-max-hop 255 
 peer 4.4.4.4 connect-interface LoopBack0
 peer 6.6.6.6 as-number 300 
 peer 6.6.6.6 connect-interface LoopBack0
 peer 7.7.7.7 as-number 300 
 peer 7.7.7.7 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  network 0.0.0.0 
  network 4.4.4.4 255.255.255.255 
  network 5.5.5.5 255.255.255.255 
  network 6.6.6.6 255.255.255.255 
  network 7.7.7.7 255.255.255.255 
  network 34.1.1.0 255.255.255.0 
  network 45.1.1.0 255.255.255.0 
  peer 4.4.4.4 enable
  peer 6.6.6.6 enable
  peer 6.6.6.6 next-hop-local 
  peer 7.7.7.7 enable
  peer 7.7.7.7 route-policy as export
  peer 7.7.7.7 next-hop-local 
#
ospf 1 
 area 0.0.0.0 
  network 5.5.5.5 0.0.0.0 
  network 45.1.1.0 0.0.0.255 
#
route-policy as permit node 10 
 if-match acl 2000 
 apply as-path 111 222 333 additive
#
route-policy as permit node 20 
#
ip route-static 4.4.4.4 255.255.255.255 34.1.1.1
R6配置
#
interface GigabitEthernet0/0/0
 ip address 46.1.1.1 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 35.1.1.2 255.255.255.0 
#
interface LoopBack0
 ip address 6.6.6.6 255.255.255.255 
#
bgp 300
 peer 4.4.4.4 as-number 200 
 peer 4.4.4.4 ebgp-max-hop 255 
 peer 4.4.4.4 connect-interface LoopBack0
 peer 5.5.5.5 as-number 300 
 peer 5.5.5.5 connect-interface LoopBack0
 peer 7.7.7.7 as-number 300 
 peer 7.7.7.7 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  network 4.4.4.4 255.255.255.255 
  network 5.5.5.5 255.255.255.255 
  network 6.6.6.6 255.255.255.255 
  network 7.7.7.7 255.255.255.255 
  network 35.1.1.0 255.255.255.0 
  network 46.1.1.0 255.255.255.0 
  peer 4.4.4.4 enable
  peer 5.5.5.5 enable
  peer 5.5.5.5 next-hop-local 
  peer 7.7.7.7 enable
  peer 7.7.7.7 next-hop-local 
#
ospf 1 
 area 0.0.0.0 
  network 6.6.6.6 0.0.0.0 
  network 46.1.1.0 0.0.0.255 
#
ip route-static 4.4.4.4 255.255.255.255 35.1.1.1
R7配置:
#
interface GigabitEthernet0/0/0
 ip address 45.1.1.2 255.255.255.0 
#
interface GigabitEthernet0/0/1
 ip address 46.1.1.2 255.255.255.0 
#
interface LoopBack0
 ip address 7.7.7.7 255.255.255.255 
#
bgp 300
 peer 5.5.5.5 as-number 300 
 peer 5.5.5.5 connect-interface LoopBack0
 peer 6.6.6.6 as-number 300 
 peer 6.6.6.6 connect-interface LoopBack0
 #
 ipv4-family unicast
  undo synchronization
  peer 5.5.5.5 enable
  peer 6.6.6.6 enable
#
ospf 1 
 area 0.0.0.0 
  network 7.7.7.7 0.0.0.0 
  network 45.1.1.0 0.0.0.255 
  network 46.1.1.0 0.0.0.255 

你可能感兴趣的:(BGP边界网关协议理论与实验)