BGP是一种在自制系统AS之间传递并选择最佳路由的高级矢量路由协议,它为路由定义了多种属性,并提供了灵活的路由选路规则和丰富的路由策略。
BGP不产生路由,只做路由的搬运工
BGP使用TCP作为其传输层协议(端口号为179)
无周期性更新路由信息,只发送增量路由
周期性发送keepAlive报文检测邻居TCP连通性 60S
起源路由前提:需要本地路由表中存在(起源方式network、import、aggregator)
源检测命令:connect-interface
注意:AS域内BGP邻居可以不需直连建立,有可能会发生路由黑洞。解决方法有1、使用MPLS协议 2、AS域内BGP邻居两两互联 3、使用反射器或联盟机制
1.IBGP:在一个AS域内建立邻居关系,不需要直连,但需要路由可达 ,TTL=255
2.EBGP:在不用AS域间建立邻居关系,需要直连,需要路由可达,TTL=1。如果用环回IP建立邻居,TTL值需要改为2
五种报文:
1.Open:发送路由信息,只发送一次
2.keepAlive:检测TCP状态,周期性发送
3.Update:更新增量路由信息
4.Notification:发送报错信息
5.Route-refresh:重发路由信息
邻居建立状态:
1.idle:初始状态
2.connnect TCP连接建立失败会进入Active状态
3.Open-sent:发送Open报文
4.Open-confirm:验证Open报文通过
5.Established:邻居建立成功
BGP路由表
通过EBGP学习到的路由传递给IBGP邻居时,下一跳默认保持不变,防止下一跳不可行无法优选该路由
peer x.x.x.x next-hop local
*:有效,下一跳路由可达
>:最优,可传递给邻居,可放进本地路由表
第三列:如果为空,代表通过EBGP学到:如果为i,代表通过IBGP学到
MED:metric
LocPrf:本地优先
Prefval:华为私有属性
path/Ogn:AS_Path属性;起源:i,通过network。?,引入。
BGP通告原则:
1.连接一建立,BGP Speaker将把自己所有BGP路由通告给新对等体
多条路径时,BGPSpeaer只选最优的给自己使用并通告给对等体
2.BGPSpeaker从EBGP获得的路由会向它所有BGP对等体通告
3.BGPSpeaker从IBGP获得的路由不会通告给它的IBGP邻居,水平分割原理防止路由环路
BGP选路
选路原则:
1.如果此路由的下一跳不可达,忽略此路由
2.Preferred-Value值数值高的优先(华为私有属性)
3.Local-Preference值最高的路由优先 (AS域内传播,默认值为100)
4.本地路由起源:本地手动聚合路由的优先级高于本地自动聚合的路由,聚合路由优先于非聚合路由,本地通过network命令引入的路由的优先级高于本地通过import-route命令引入的路由
5.AS路径的长度最短的路径优先(AS域间传播)
6.比较Origin属性,IGP优于EGP,EGP优于Incomplete(此处EGP已淘汰)
7.选择MED较小的路由(AS域内传播,如果收到来自不同AS域的MED则默认不进行比较,使用compare-different-as-med可开启比较)
8.EBGP路由优于IBGP路由
9.BGP优先选择到BGP下一跳的IGP度量最低的路径
当以上全部相同,则为等价路由,可以负载分担(2-9条可记为“PL、LAO、MEN”)
注:AS_PATH必须一致
当负载分担时,以下3条原则无效
10.比较Cluster-List长度,短者优先(涉及反射器)
11.比较Originator_ID(如果没有Originator_ID,则用Router_ID比较),选择数值较小的路径(涉及反射器),如果参与比较的Originator_ID一样,也不再比较Router_ID,直接开始下一条比较规则。
12.比较对等体的IP地址,选择IP地址数值最小的路径
一、公认必遵
Origin:起源属性
某条路由是直接而具体的注入到BGP路由表中的,则origin属性为IGP network
其他情形下,Origin属性都为Incomplete
Origin属性值默认情况下不被任何路由器修改
AS_Path:AS路径属性,用于选路和防环
Next_Hop:下一跳属性
二、公认任意
Local_Pref:本地优先属性
Atomic_Aggregate:自动路由聚合
三、可选过渡
Multi_Exit_Disc:
Aggregator:手动路由聚合
Community:团体属性
四、可选非过渡
Originator ID:起源路由器ID
Cluster List:集群ID
反射器:可以解决AS域内路由同步问题,防止路由黑洞。只需要在RR(Router Reflector)上做配置即可
反射原则:
1.从非客户学习到的路由反射给所有的客户
2.从客户学习到的路由反射给所有的客户和非客户邻居
3.从ebgp学习到的路由反射给所有的客户和非客户邻居
命令:peer X.X.X.X reflect-client 将ibgp邻居设置为反射器客户