BGP协议详解
BGP是一种边界网关协议。但是也属于动态路由协议。
一.BGP的特征(一种外部路由协议,用来在AS之间传递路由信息,是一种增强版的距离矢量协议)
1.可靠的路由更新机制
传输协议:TCP,短口号:179(可跨越设备更新RIB)
无需周期性更新
路由更新:只发生增量路由,原因:路由表太过庞大
周期性发送Keepalive报文检测TCP连通性(与OSPF的不同点,发送的不再是hello报文)
2.丰富的METRIC度量方法
3.从设计上避免了环路的发生
4.为路由附带属性信息
5.支持CIDR
6.丰富的路由过滤的路由策略
二.BGP的报文类型
Type 1——Open(打开)消息
携带自身的能力,信息,RID,等去尽力BGP邻居
Type 2——Update(更新)消息
更新和撤销NLRI----网络层可达消息(网络前缀)—包括丰富的路由属性
Type 3——Keepalive(保持激活)消息
保持TCP活跃的。(第一个Keepalive要买回来确认邻居关系是否建立成功)
Type 4——Notification(通告)消息
差错报文,对错误的配置进行响应,具有差错检测功能,当检测到错误时,会向对等体发送notification消息,并关闭BGP连接;
Type 5——Refresh(刷新)消息
BGP刷新路由的能力
两种邻居关系:
IBGP:internal bgp(AS号码相同)
EBGP:external bgp(AS号码不同)
三.BGP通告路由的方式(建立在TCP基础上的邻居关系)
1.Network
BGP通告的为路由(本身的直连,通告从其他协议得到的路由:IGP)
2.引入路由(重分布):import-route
3.Aggregate(汇聚)产生路由
以上为产生BGP路由
IBGP通常用loopback作为更新源建立邻居关系(原因:更加稳定)
TCP的五元组(源IP,原目的端口,协议)
BGP的跟信源即是源IP(PEER xx()目的IP,connectint 100)
ebgp通常采用直连来建立邻居,也可以用环回口备份
1.在R1R2建立直连的ebgp
bgp 200
peer 123.1.1.1 as 100
bgp 100
peer 123.1.1.1 as 200
2.R1R3在环回口建立ebgp邻居(EBGP)
bgp 100
peer 33.1.1.1 as number 200
peer 33.1.1.1 ebgp-max-hop 255
peer 33.1.1.1 connect-interface loopback 0
四.BGP的通告原则
BGP通告原则之一:连接建立时,BGP speaker 仅将自己最优的路由发给邻居
多条路径时,BGP只选择最优的路由放入路由
BGP通告原则之二:通过EBGP获得的最优路由发布给所有BGP邻居(包括 IBGP和EBGP)
BGP通告原则之三:从IBGP学到的最优路由不会发给其他的IBGP邻居、(也是IBGP的水平分割)------即IBGP路由仅仅更新一跳。
BGP通告原则之四:BGP与IGP的同步,也就是把BGP的路由表和IGP的路由表同步;华为默认关闭。
BGP不会把从IBGP得到的路由更新给EBGP邻居,除非该路由也从IGP得到。
BGP如何更新路由
最优的>IBGP仅仅传递一跳,更新给EBGP(同步规则)
成为BGP路由的途径
1.network(通告)掩码一定要准确
2.import(重分布)引入
BGP路由聚合:把路由条目数从多变少
1.自动聚合(总是不用)
汇总的结果:主类(11.1.1.1/32->11.0.0.0/8)
(范围太大,不精确)
2.手工聚合
1.>先通过静态路由或igp的协议进行汇总,本地就有一条汇总的路由,然后BGP通告汇总之后的路由。
2.>BGP专有的工具 aggregate +参数
【R1-bgp】aggregate 11.1.1.0 30 detail-suppressed
detail-suppressed------------------------抑制所有的明细,仅仅把汇总通告给邻居
A【R1-bgp】aggregate 11.1.1.0 30 detail-suppressed 直接通告
B +AS-set属性,还原本来的AS号码,(通常用于本AS不做汇总)
C suppress-policy 有些明细和汇总被通告,其他的被一只到本地
route-policy(很重要的工具)
route-policy xx(名字)【允许或拒绝】 node +序列号-------------隐含拒绝所有
if 条件 (ACL,前缀列表,接口,tag 等等)
apply(修改属性)
route-policy xx【允许】 node 20 ----------------------如果还需要允许其他就要加上序列号20等等
any(条件)
五.BGP的路径选择
1.丢弃下一跳不可达的路由
2.优选Preference_Value值最高的路由(私有属性,进本地有效)
Preference_Value是BGP的私有属性(华为的私有属性),Preference_Value相当于BGP选路规则的Weight值,仅在本地路由器生效,Preference_Value值越大,越优先
3.优选本地优先级最高的路由
4.优选手动聚合>自动聚合>network>import>从对等体学到的
5.优选AS_Path最短的路由
6.起源类型IGP>EGP>Incomplete
7.对于来自同一AS的路由,优选MED值最小
8.优选从EBGP学来的路由(EBGP>IBGP)
9.优选AS内部IGP的Metric最小的路由如果前九条都是一样的话,就会出现负载分担但是,BGP不会让他出现负载分担的
10.优选Cluster_List最短的路由
11.优选Orginator_ID最小的路由
12.优选Router_ID最小的路由器发布的路由
13.优选具有较小的IP地址的邻居学来的路由
口诀:世界 恋爱 组织 亚洲 办公室 墓碑下的 半兽人
BGP的团队属性
最优:1.匹配路由(一种标识,表示路由)2.针对路由的过滤(几种众所周知的团队属性)
几种众所周知的团队属性
1.no-advertise:携带此属性的路由不会通告给任何BGP邻居。也就是说只传达给一个邻居
2.no-export: 携带此属性的路由不会传出本AS外,只会传给IBGP。(联邦中的小AS会传递)。
3.no-export-subconfed(local-AS): 携带此属性的路由不会传出小AS。
4.internat 携带此属性的可以任意传播不受AS的限制
配置完成需要针对邻居发送团队属性,不然默认是无效的
peer 123.1.1.2 advertise-community
BGP的反射和联邦
RR(反射器)和联邦最主要的作用:减少BGP会话(全互联),使更加清晰,用来管理大量的BGP域(一定会应用RR)
RR:只能在IBGP使用,降低对指定路由器ibgp路由通告机制的限制,允许将从IBGP对等体收到的更新信息传给IBG对等体
联邦:遵循了IBGP水平分割,,将大的AS分割称为若干个小的AS,而小的AS建立EBGP对等体关系。
RR的三种角色:RR,客户端,非客户端
对等体之间的关系
1.client只需建立维护RR之间的IBGP会话
2.RR与RR之间需要建立IBGP全互联
3.非客户端与非客户端之间需要建立IBGP全互联
4.RR与飞科魂断之间需要建立IBGP全互联
路由反射原则
①从EBGP学来的路由会发给所有的客户端和非客户端
②从非客户端学来的路由会发给所有的客户端
③从客户端学来的路由会发给除了该客户端以外的所有客户端和非客户端
路由反射簇(防止AR内部的环路,可选的非过度属性,属性编码为10)
当RR在他的客户端和非客户端之间反射路由,RR会把本地的CLaster-ID添加到C-List中,如果没有C-LIST则创建,当RR接收到一条更新路由的时候,RR会检查C-List,如果C-list中已有本地C-id, 丢弃该路由,若无,则将其加入C-L中,然后反射该更新路由
起源ID(Originator-ID)(客户端与非客户端之间防环)
将一条路由第一次被RR反射的时候,RR将O-ID属性加入到这条路由,表示这条路由的始发路由器,如果这一条路由器已经存在了Originator属性,则RR不会创建新的O-ID和本地R-ID,当其他的BGP-S 接收到这条路由时,将比较收到的O-ID和本地R-ID,如果两个ID相同,BGP Speaker会忽略这条路由,不做处理
BGP联邦(一般不会用,因为需要把所有的BGP拿掉,风险太大)