概览:
BGP--EGP (Border Gateway Protocol)
AS号:自治系统号--运行在同一个管理区域的一组网络设备
范围:1-65535
动态路由协议
内部网关协议:IGP--运行在同一个AS号内部
外部网关协议:EBG--运行在不同AS号之间--EGB/BGPv1/BGPv2/BGPv3/BGPv4
使用场合:大型骨干网络
一、BGP的特点
1.BGP:路径矢量协议(距离矢量协议),矢量指的是方向,路径指的是AS号,BGP在发送路由更新的时候,会携带沿途的AS的信息,并且记录沿途的AS号,形成AS路径
2.基于TCP的179号端口,应用层协议
3.BGP的发言者--BGP speaker--运行的BGP的路由器
4.BGP的对等体--BGP的邻居:分为IBGP对等体和EBGP对等体
IBGP对等体:运行在同一个AS号中的对等体
EBGP对等体:运行在不同AS号之间的对等体
5.BGP是通过单播建立邻居的,要求对方的IP地址可达,对方TCP的179号端口打开,邻居建立之后,需要keepalive用来维护邻居之间的关系,每隔60s发送一次,保持时间是180s。
6.BGP的AS路径:
IBGP:针对IBGP对等体学习到的路由,AS号保持不变
EBGP:针对EBGP对等体学习到的路由,将EBGP对等体的AS号记录下来
7.BGP的环路避免机制
IBGP:IBGP是通过对等体水平分割,从一个IBGP对等体学习到的路由,不会发送给其他IBGP对等体
EBGP:从一个EBGP对等体学习到的路由,会携带AS路径,当AS-path 出现自己AS号,则认为已经环路
二、BGP的报文
open:建立邻居关系,在建邻之间需要进行TCP的三次握手
会携带建立邻居的参数,参数不匹配就无法建立邻居
keepalive:用来维护邻居之间的关系
update:更新报文,用来更新有用的路由信息,撤销无用的路由信息
更新有用的路由信息会携带路由的属性,撤销的时候不会携带
notification:报错报文
route refresh:路由刷新报文
三、BGP的邻居建立过程
1. 空闲(Idle):尝试去查找前往邻居的路由
2. 连接(Connect):找到前往邻居的路由,此时要进行TCP的三次握手,如果通过则进入发送状态
3. 打开发送(Open sent):会开始发送OPEN报文
4. 打开确认(Open confirm):互相发送OPEN报文,如果双方参数匹配,此时就会回复Open confirm,进入确认状态
5. 已建立(Established):如果双方都进入确认状态,此时代表已经完成确认,进入Established状态
6. 活跃状态(active):一直想建立邻居,但是由于某些原因建立不成功--协商参数不匹配
注意:BGP建立邻居 和 通告网段 是俩个过程
四、下一跳问题
IBGP:通过IBGP学习到的路由下一跳保持不变
EBGP:通过EBGP学习到的路由下一跳为EBGP对等体的出接口
下一跳不可达?
解决方法:建立IBGP对等体的时候 设置下一跳为自己
r2(config)#router bgp 100
r2(config-router)#neighbor 34.34.34.4 next-hop-self
总结:是一个边界路由器(即有IBGP对等体,又有EBGP对等体),就需要在和IBGP对等体建立邻居的时候设置下一跳为自己。
五、路由黑洞
产生的原因:IBGP内部设备没有外部BGP的路由
解决方法:
1.早期 --- 重分发(流量不大的时候)
2.目前 --- 通过建立全网可达的IBGP对等体--俩俩之间建立IBGP对等体、RR--路由反射器、BGP联盟、BGP对等体、MPLS(标签)
六、更新源问题
一般情况下,都会使用回环接口来建立IBGP对等体关系,借用了回环接口的稳定性,但是BGP默认是使用物理接口建立邻居到的,所以会因为源、目的不匹配,而导致无法建立邻居。
解决方法:更改更新源
r4(config-router)#neighbor 2.2.2.2 update-source lo1
BGP的TTL问题--生存时间--每经过一台三层设备TTL减1,当TTL为0时,执行数据包丢弃。
1.默认情况下,向IBGP对等体发送路由时。TTL=255
2.默认情况下,向EBGP对等体发送路由时。TTL=1
r1(config-router)#neighbor 2.2.2.2 ebgp-multihop 10--更改EBGP的TTL值为10
BGP的AD值
IBGP:200
EBGP:20
BGP的身份验证:只支持md5
r4(config-router)#neighbor 34.34.34.3 password 666
BGP的属性和选路--update会携带属性
属性的意义就是为了提供BGP选路
七、BGP的选路
BGP的四大属性
1.公认必遵属性 2.公认可选属性
3.可选传递属性 4.可选非传递属性
1.权重
weight(思科私有属性)
①优先选择权重大的
②本地通告的路由权重为32768,学习到的路由权重为0
r10(config)#access-list 1 permit 1.1.2.0 0.0.0.255
r10(config)#route-map 1 permit 10
r10(config-route-map)#match ip address 1
r10(config-route-map)#set weight 32769
r10(config)#route-map 1 permit 20
r10(config)#router bgp 1000
r10(config-router)#neighbor 108.108.108.8 route-map 1 in
2.本地优先级
LocPrf--loacl preference
①优先选择本地优先级大的
②通过IBGP对等体学习到的路由本地优先级为100
通过EBGP对等体学习到的为0
r1(config)#access-list 2 permit 10.1.1.0 0.0.0.255
r1(config)#route-map 2 permit 10
r1(config-route-map)#match ip add 2
r1(config-route-map)#set local-preference 101
r1(config)#route-map 2 permit 20
r1(config)#router bgp 1234
r1(config-router)#neighbor 3.3.3.3 route-map 2 in
3.优先本地产生的路由
下一跳为0.0.0.0
next hop 为0.0.0.0 代表就是本地路由器通告的
4.最短的AS路径
只能增加
(config)#access-list 4 permit 10.1.2.0 0.0.0.255
(config)#route-map 4 permit 10
(config-route-map)#match ip address 4
(config-route-map)#set as-path prepend last-as 3
(config)#route-map 4 permit 20
(config)#router bgp 1234
(config-router)#neighbor 45.45.45.5 route-map 4 in
5.最小的来源代码
i--IGP--代表是network学习到的
e--EGP--代表通过EGP学习到的(不使用、看不到)
?--incomplete--代表是重分发学习到的
优先级: i>e>? 起源值:i<e<?
r10(config)#access-list 5 permit 1.1.3.0 0.0.0.255
r10(config)#route-map 5 permit 10
r10(config-route-map)#match ip address 5
r10(config-route-map)#set origin incomplete
r10(config)#route-map 5 permit 20
r10(config-router)#neighbor 109.109.109.9 route-map 5 in
6.MED--度量值
BGP中默认是没有度量值的,也就是0
r10(config)#access-list 6 permit 7.1.1.0 0.0.0.255
r10(config)#route-map 6 permit 10
r10(config-route-map)#match ip address 6
r10(config-route-map)#set metric 10
r10(config)#route-map 6 permit 20
r10(config-router)#neighbor 108.108.108.8 route-map 6 in
7.优选EBGP(AD:20)路径,次选IBGP(AD:200)路径
eigrp:90内 170外 ospf:110 rip:120
8.选择通往最近的IBGP邻居
9.选择最老路由的EBGP路径
10.选择具有最低邻居BGP路由器ID的路径
11.选择具有最低邻居IP地址的路径
基本配置
r1(config)#router bgp 200
r1(config-router)#neighbor 12.12.12.2 remote-as 100
r1(config-router)#network 1.1.1.0 mask 255.255.255.0--精确通告
r3#clear ip bgp * soft --软清
r1#clear ip bgp * --硬清
r2#show ip bgp neighbors --查看BGP邻居的详细信息
r2#show ip bgp summary --查看BGP邻居的简要信息
r2#show ip bgp --查看BGP表
r2#sh ip route bgp --查看BGP的路由表