BGP协议成为边界网关协议
分为多个AS自治系统,每个自治系统都有其AS号,AS号------2byte,最大支持0-65535,私有64512-65535,目前支持4byte;
BGP类似路径矢量协议,采用增量更新,借助传输层TCP实现连接保障,端口号是179;
BGP对等体关系:
EBGP------外部的对等体关系,不同AS之间的路由器建立的关系
推荐使用直连物理接口建立对等体关系,因为AS之间直连路由必然可达,但是不便于实现各自环回口的可达;
IBGP------内部的对等体关系,相同AS内部的路由器建立的关系
推荐使用环回口建立对等体关系,因为AS内部运行了相应的IGP(ospf、isis等)协议,使用环回口稳定逻辑接口,避免了物理故障、冗余性较高;
BGP route-id用来表示运行OSPF一台设备,可以手工指定,也可以自动选举---选举原则和OSPF一致
配置命令:
bgp 100
route-id 1.1.1.1
BGP的基本配置:
bgp 100
route-id 1.1.1.1
peer 172.16.1.3 as-number 100
peer 172.16.1.3 connect-interface LoopBack 0 ------ 修改更新源地址,使用环回口,默认使用物理接口作为更 新源地址
BGP消息:
1.Open消息------协商相应参数,建立对等体关系
2.HoldTime消息------华为默认180s超时时间,约定后续Keepalive时间为60s发送一次,如果时间不一致,协商选取时间小的,如果时间修改为0,则后续不再发送Keepalive报文消息
3.Keepalive消息------维系BGP对等体的关系
4.Notofication消息------通告错误信息
5.update消息------通过增量更新相应的路由、撤销相应的路由
6.route-refresh消息------入向策略变化或者手工刷新路由,发送路由刷新消息,请求对方重新发送update消息
BGP邻居状态机:
Idle(初始状态,等待配置,进而触发start事件)---connect(主动发起TCP连接,并启动32s计时器,如果计时器超时,则建立失败,进入active状态,等待对方向自己建立连接,如果建立成功,则进入opensent状态,开始发送open报文消息)---active(进入该状态会启动32s计时器,如果TCP连接仍然建立失败,则返回connect状态,建立成功则发送open消息,进入opensent状态)---opensent(标志TCP建立成功,发送open报文)---openconfirm(表示收到对等体的open报文,并且协商通告)---established(收到对等体发送的notification消息,对等体状态建立成功)
注:如果状态出现错误,都发送notification消息,通知对端建立对等体关系,状态回到Idle
EBGP使用环回口建立对等体关系时,需要配置EBGP多跳------相对而言环回口稳定,可以实现多链路负载分担,但是EBGP默认情况TTL值为1,如果之间存在多台设备,TTL超出,对等体关系建立失败,因此EBGP推荐使用物理接口建立对等体(IBGP的TTL值默认为255)
多跳命令:
bgp 100
peer 172.16.1.5 as-number 500
peer 172.16.1.5 ebgp-max-hop 2
BGP路由传递原则:
1.BGP采用增量更新
2.BGP只会传递最优的路由,只会将最优的路由加入到IP路由表
3.通过EBGP对等体学习到的路由会传递给所有对等体
4.通过IBGP对等体学习到的路由不会传递给其他的IBGP对等体------IBGP水平分割规则,防环
BGP防环路
1.EBGP可以借助AS-path实现防环,如果路由器接收到与自身相同的AS号,则拒绝接受该路由
2.IBGP不能使用AS-path防环,通过水平分割来实现防环,IBGP传递路由不添加AS号
BGP属性:
公认必遵------所有BGP设备多可以识别此类属性,且必须存在于update报文中
Origin祈愿属性------标识路由通过何种方式通告进入BGP
i - IGP ------ 通过network命令将路由通告进入BGP
e - BGP ------ 通过EGP协议学习到的路由信息
? - incomplete ------ 通过import-route引入BGP的路由
Next-hop属性原则:
路由器向EBGP对等体发布某条路由时,会把该路由信息的下一跳属性设置为自身对端建立对等体的更新源地址(默认下一跳本地next-hop-local)
路由器将本地产生的路由发布给IBGP对等体时,会把该路由信息的下一跳属性设置为自身与对端建立对等体的更新源地址
路由器向IBGP对等体发布从EBGP对等体学习来的路由时,并不改变路由信息的下一跳属性(可能需要额外配置下一跳本地next-hop-local)
公认任意------所有BGP设备都可以识别此类属性,但不要求必须存在于update报文中
local-preference---本地优先级,只对本AS内有效,决定流量如何离开自身AS,默认值为100,越大越优
可选非传递------BGP设备可以不识别此类属性,如果BGP设备不识别此类属性,则会被忽略,且不通告给其他对等体
MED---类似于cost,只在相邻的AS之间传递,决定流量如何进入本AS,默认为0,越小越优
BGP选路原则:
1.下一跳可达,路由有效的前提
2.preference-value,华为私有权重,默认为0,配置范围0-65535,越大越优------只在本地有效,并非路由属性
3.local-preference,默认值为100,越大越优
4.本地生成路由优先,汇总(即聚合)路由(手工汇总优于自动汇总)优于IGP通告路由优于通过BGP学习到的路由
5.AS-path,优先AS-path比较短的路由
6.起源属性,i>e>?
7.MED比小------默认情况下华为不比较来自不同AS的路由MED值,如果比较,则需配置compare-different-as-med
8.EBGP学习到的路由优于IBGP
9.优选去往下一跳的IGP开销值最小的路由
10.如果上述属性都一致,可以开启BGP负载分担,华为默认没有开启
配置命令:bgp 123
maximum load-balancing 2
可只针对IBGP对等体开启,也可以只针对EBGP对等体开启,也可以全部开启
11.如果存在路由反射器,cluster-list比短
12.如果存在路由反射器,比较Originator-id,如果不存在比较Router-id,比小
13.比较对等体的IP地址,IP地址比小
原子聚合:
聚合---将若干明细路由聚合为一条掩码长度更短的范围更大的路由
1.自动聚合
将子网地址自动聚合为主类网络地址,只针对import-route的路由有效,会自动抑制明细路由
2.手动聚合
可以在任何一台BGP设备上配置(不必须是路由的起源设备),不会抑制明细路由
路由汇总:
1.自动汇总:默认情况汇总为主类,只针对引入的路由有效(即自动聚合)
配置命令:bgp视图下
summary automatic
2.手动汇总:针对路由精准汇总
配置命令:bgp视图下
aggregate 192.168.4.0 22
BGP路由震荡抑制:
如果路由条目不稳定,频繁地up/down,可针对这部分路由开启震荡抑制功能
需要指定4个参数:
惩罚值------一条路由单次up/down之后会增加惩罚值,默认为2000
惩罚值上限------如果一条路由惩罚值达到上限,会被抑制,默认为16000
半衰期------经过一个半衰期,路由的惩罚值会减半,默认为15分钟
恢复使用阀值------惩罚值等于或低于该值,路由重新被使用,默认为750
路由反射器:
简化对等体的关系,不需要全互联可以打破水平分割的原则
BGP联盟:
也是为了打破水平分割