一、BGP协议(边界网关协议)
是一种用于自治系统间的动态路由协议,是一种外部网关(EGP)协议。负责在不同自治系统(AS)之间交换路由信息,目的是实现大规模网络的可扩展性、策略控制和稳定性。
自治系统AS:一组被进行统一管理,运行同一个IGP协议的路由器组成的网络范围。通常使用相同的路由策略。
查看AS编号:www.cidr.report
二、BGP特性
路径向量协议:记录路由的完整AS路径(AS-Path防环机制),而非跳数,避免环路;
TCP连接:使用TCP 179端口,建立可靠的单播连接(邻居(peer)无需直连);
增量更新:仅传播变化的路由,减少带宽消耗;
策略驱动:支持基于AS路径、前缀、团体属性等灵活控制路由;
策略优先:支持丰富的路由策略(如路由过滤、属性修改);
支持IPv4/IPv6:通过MP-BGP扩展支持多协议(如VPNv4、EVPN)。
三、BGP基本术语
BGP Speaker:运行BGP协议的路由器称为BGP发言者
BGP Peer:相互之间在TCP连接、相互交换路由信息的BGP发言者之间互称为BGP对等体
BGP邻居可以直连,也可以非直连
BGP邻居类型:
IBGP(内部BGP);建立在同一AS内,无需直连;用于企业内部分分支路由同步。
EBGP(外部BGP);建立在不同AS间,默认要求直连;用于运营商之间互联。
四、BGP规划问题(路由黑洞)
产生原因:由于IBGP邻居之间有没有运行BGP协议的路由器,无法获得BGP的路由,从而导致数据包进入路由器被丢弃。
解决方法:
(1)BGP引入IGP
(2)在黑洞路由器上配置目的网段的静态路由
(3)IBGP全连接 ----IBGP防环机制:IBGP水平分割:从IBGP邻居学习到的路由不会传递给其他IBGP邻居
(4)BGP路由反射器(无视IBGP的防环机制,可以减少邻居关系的数量)
(5)BGP联盟(可以减少邻居关系的数量,IBGP水平分割限制)
五、BGP环路问题(水平分割)
1、EBGP水平分割(AS_PATH)
通过AS_PATH属性防环,在学习到的路由中,若有本地AS号,则拒绝学习,防止环路
2、IBGP水平分割
当路由器从一个IBGP对等体学习到某条BGP路由时,它将不能再把这条路由通告给任何IBGP对等体。
六、BGP消息种类(数据包可抓包看)
(1)BGP头部信息:
标记(Marker):该字段被保留下来用于解决协议兼容性问题,没有其他含义
长度(length):指示BGP报文的长度(字节数)
类型(Type):该字段指示了BGP报文的类型,就是前面提到的BGP5种数据包类
(2)数据包种类
Open :用于建立BGP对等体之间的连接关系,正常收发一次即可;携带route-id;
Hold time:保持时间,该字段表示路由器在收到Keepalive消息或者Update消息之前等 待的最长时间,默认180s,如果邻居双方的保持时间不一致,将以较短的时间作为双 方可接收的保持时间。
可选参数长度:指示了BGP报文中可选参数的长度
可选参数:Open包中包含多个可选参数,主要用于宣告及协商BGP对等体的某些 能力特征。
Keepalive: 周期性的向BGP对等体发出Keepalive(周期保活)消息,用于保持连接 的有效性,在默认情况下每60秒发送一条Keepalive消息,或者以已协商一致的保 持时间的1/3为周期发送Keepalive消息。默认60s,超时180s。
Update :携带的是路由更新(删减、增加)信息
Notfication :当BGP检测到错误状态时,就向对等体发出notfication消息,之后BGP 连接会立即被关闭(邻居关系结束了)
Router-refresh: 用于在改变路由策略后,要求对等体重新发送指定地址族的完整路由 表信息;只有支持路由刷新能力的路由器才会响应router-refresh报文。
七、BGP邻居建立条件
IBGP:
物理口建邻:
建议使用直连接口地址(物理地址)来指定IBGP邻居;
环回口建邻:
对方接口要有IP地址,TCP可达(需要具有到达对方IP地址的路由),建议使用环回口地址来指定IBGP邻居;
更新源地址必须和指定的邻居地址一致,需要修改更新源为环回;
R1-bgp\]peer 2.2.2.2 connect-interface LoopBack 0
IBGP邻居关系不需要直连;
EBGP:
物理口建邻:
建议使用直连接口地址(物理地址)来指定EBGP邻居;
环回口建邻:
对方接口要有IP地址,TCP可达,
可通过修改EBGP最大跳数来使EBGP非直连;
更新源地址必须和指定的邻居地址一致;
注:当一个路由器既有EBGP邻居,又有IBGP邻居的时候,需要对IBGP邻居修改下一跳本机,否则会造成BGP的路由信息传递失败。
BGP与IGP的对比
|------|--------------|-----------------|
| 区别: | BGP | OSPF/RIP |
| 协议类型 | 路径向量(AS级路由) | 链路状态/距离向量(域内路由) |
| 收敛速度 | 慢(策略复杂) | 快(触发更新) |
| 适用场景 | 跨AS路由(如IS互联) | 企业内部网络 |
八、BGP配置
基础配置:
1.基础eBGP对等体建立
# bgp 65001 #进入BGP视图,AS号为65001
# router-id 1.1.1.1 #手动指定Router ID
# peer 203.0.113.2 as-number 65002 #指定对端IP和AS号
# peer 203.0.113.2 connect-interface 10 #指定与对等体建立会话时使用的本地 源接口
# peer 203.0.113.2 ebgp-max-hop [hop-count] #修改最大跳数(默认255)
# ipv4-family unicast #进入IPv4单播地址族
# peer 203.0.113.2 enable #激活对等体
2.路由引入与聚合
# import-route ospf 1 #引入OSPF路由
# aggregate 172.16.0.0 255.255.0.0 detail-suppressed #手动聚合路由(抑制明细)
3.策略控制(基于Community)
##设置路由策略
# route-policy BGP_OUT permit node 10
# apply community no-export #标记路由不导出到其他AS
##应用策略
# peer 203.0.113.2 route-policy BGP_OUT export
高级特性配置:
1.路由反射器(RR)
##解决iBGP全互联问题
# peer 10.1.1.3 reflect-client #配置路由反射器客户端
2.BGP Confederation(联盟)
##将大AS划分为多个子AS,内部使用eBGP规则:
# confederation id 65000 #对外显示的统一AS号
# confederation peer-as 65001 65002 #声明子AS号
3.BGP路由衰减(Dampening)
##抑制频繁震荡的路由
# dampening #启用衰减
查看BGP对等体状态:
display bgp peer
检查BGP路由表:
display bgp routing-table
display ip routing-table protocol bgp
验证路由属性:
display bgp routing-table 192.168.1.0
调试BGP报文:
debugging bgp packet