【软考网络工程师】【重点】BGP(四)

目录

BGP

BGP在企业中的应用:①企业内部互通②企业与运营商互通
BGP使用TCP为传输层协议,TCP端口号179,路由器之间的BGP会话基于TCP连接建立
运行BGP的路由器被称为BGP发言者(BGP Speaker),或BGP 路由器,两个建立BGP会话的路由器互为对等体(Peer),BGP对等体之间交换BGP路由表
BGP路由器只发送增量的BGP路由更新,或触发式更新,不进行周期性更新
BGP能够承载大批量的路由前缀,在大规模网络中应用
BGP被称为路径矢量路由协议(Path-Vector Routing Protocol):每条BGP路由都携带多种路径属性(Path attribute),BGP可以通过路径属性控制路径选择,在不同场景下选择最合适的路径控制方式(IS-IS,OSPF等只能通过Cost控制路径选择)
BGP存在两种对等体类型
①EBGP(External BGP):位于不同自治系统的BGP路由器之间的BGP对等体关系,需要满足①两个路由器所属AS不同②配置EBGP时,Peer命令所指定的对等体IP地址要求路由可达,且TCP连接能够正确建立
②IBGP(Internal BGP):位于相同自治系统的BGP路由器之间的BGP邻接关系
BGP对等体关系建立:
①先启动BGP的一端先发起TCP连接,完成TCP连接的建立
②三次握手建立完成后,互相发送Open报文,携带参数用于对等体建立;参数协商正常后双方互相发送Keepalive报文,收到对端发送的Keep alive报文后对等体建立成功;同时双方定期发送Keepalive报文用于保持连接
③BGP对等体关系建立之后,BGP路由器发送BGP Update(更新)报文通告路由到对等体
缺省情况下,BGP使用报文出接口作为TCP连接的本地接口
在部署IBGP时,使用Loopback地址作为更新源地址,Loopback接口稳定,且可借助AS内的IGP和冗余拓扑来保证可靠性
在部署EBGP时,使用直连接口的IP地址作为源地址,若使用Loopback接口,则应注意EBGP多跳问题
BGP有5中类型的报文,他们头部(header)相同

报文名称作用发送时刻
Open协商BGP对等体参数,建立对等体关系BGP TCP连接建立成功之后
Update发送BGP路由更新BGP对等体关系建立之后有路由需要发送或路由变化时向对等体发送Update报文
Notification报告错误信息,中止对等体关系当BGP在运行中发现错误时,发送Notification报文将错误通告给BGP对等体
Keepalive标志对等体建立,维持BGP对等体关系BGP路由器收到对端发送的Keepalive报文,将对等体状态置为已建立,同时后续定期发送Keepalive报文用于保持连接
Route-refresh用于在改变路由策略后请求对等体重新发送路由信息,只有支持路由刷新能力的BGP设备会发送和响应此报文当路由策略发生变化时,触发请求对等体重新通告路由

Open报文包括:①My Autonomous System:自身AS号;②Hold Time:用于协商后续Keepalive报文发送时间;③BGP Identifier:自身Router ID
BGP状态机

Peer状态名称用途
Idle开始准备TCP的连接并监视远程对等体,启用BGP时,要准备足够的资源
Connect正在进行TCP连接,等待完成中,认证都是在TCP建立期间完成的,如果TCP连接建立失败则进入Active状态,反复尝试连接
ActiveTCP连接没建立成功,反复尝试TCP连接
OpenSentTCP连接已经建立成功,开始发送Open包,Open包携带参数协商对等体的建立
OpenConfirm参数、能力特性协商成功,自己发送Keepalive包,等待对方的Keepalive包
Established已经收到对方的Keepalive包,双方能力特性经协商发现一致,开始使用Update通告路由信息

缺乏去往BGP对等体的路由时导致BGP路由器状态机一直处于Idle状态的常见原因
BGP将IGP路由表中的路由注入到BGP路由表(注入路由的方式:①Network②import-route),并通过Update报文传递给BGP对等体(≠IGP,发现并计算产生路由),
BGP和IGP都支持根据已有的路由条目进行聚合(aggregate),生成聚合路由
BGP通过以上方式生成BGP路由后,由Update报文将BGP路由传递给对等体,遵循:
①只发布最优路由
②从EBGP对等体获取的路由,会发布给所有对等体
③从IBGP对等体获取的路由,不会发布给IBGP对等体(IBGP水平分割)
④使用同步规则规避BGP路由黑洞问题(除非要求IBGP与IGP路由同步,否则IBGP路由不会通告给EBGP对等体)
任何一条BGP路由都拥有多个路径属性,路径属性在路由被通告给对等体时一并被通告,会影响路由优选
公认属性是所有BGP路由器都必须能够识别的属性,可选属性不需要都被BGP路由器所识别

属性说明举例
公认必遵(Well-known Mandatory)必须包括在每个Update消息里Origin / AS_Path / Next_hop
公认任意(Well-known Discretionary)可能包括在某些Update消息里Local_Preference / Atomic_aggregate
可选过渡(Optional Transitive)BGP设备不识别此类属性时,依然会接受该类属性,并通告给其他对等体Aggregator / Community
可选非过渡(Optional Non-transitive)BGP设备不识别此类属性时,会忽略该属性,且不会通告给其他对等体MED / Cluster-List / Originator-ID

AS_Path:公认必遵,前往目标网络的路由经过的AS号列表,用于确保路由在EBGP对等体之间传递无环,可衡量路由优选。路由被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加本地的AS号;路由被通告给IGBP对等体时,AS_Path不会发生改变。
Origin,标记BGP路由起源,优选路由IGP>EGP>Incomplete。

起源名称标记描述
IGPi如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该BGP路由的Origin属性为IGP
EGPe如果路由是通过EGP学习的,那么该BGP路由的Origin属性为EGP
Incomplete如果路由是通过其他方式学习到的,则Origin属性为Incomplete(不完整的),例如通过import-route命令引入到BGP的路由

Next_Hop :当路由器学习到BGP路由后,需要队BGP路由的Next_Hop属性值进行检查,该属性值(IP地址)必须在本地路由可达,如果不可达,则该条BGP路由不可用
缺省Next_Hop属性值设置规则:

场景Next_Hop设置
BGP路由器向EBGP对等体发布某条路由该路由信息的Next_Hop设置为本地与对端建立BGP邻居关系的接口地址
BGP路由器将本地始发路由发布给IBGP对等体该路由信息的Next_Hop属性设置为本地与对端建立BGP邻居关系的接口地址
路由器在收到EBGP对等体所通告的BGP路由后,将路由传递给自己的IBGP对等体保持路由的Next_Hop属性值不变
如果路由器收到某条BGP路由,该路由的Next_Hop属性值与EBGP对等体(更新对象)同属一个网段该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体

Local_Preference:本地优先级,用于告诉AS中的路由器,哪条路径是离开本AS的首选路径,该属性值越大则BGP路由越优
使用bgp default local-preference命令修改缺省Local_Preference值,本地使用networkimport-route命令引入的路由,Local_Preference值缺省为100
Local_Preference属性只能被传递给IBGP对等体,传递过程中不会丢失和改变;而不能传递给EBGP对等体,EBGP会对该属性进行错误处理。
Community:团体,作为路由标记,简化路由策略的执行,可基于Community值而不是网络前缀/掩码信息来匹配路由。
Community属性值长度32bit,可写作十进制整数,或AS号(2Byte):自定义编号(2Byte)
RFC1997(BGP Communities Attribute)定义有公认Community

团体属性名称团体属性号说明
Internet0(0x00000000)设备在收到具有此属性的路由后,可以向任何BGP对等体 发送该路由。缺省情况下,所有的路由都属于Internet团体
No_Advertise4294967042(0xFFFFFF02)设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由
No_Export4294967041(0xFFFFFF01)设备收到具有此属性的路由后,将不向AS外发送该路由
No_Export_Subconfed4294967043(0xFFFFFF03)设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发布此路由

MED(Multi-Exit Discriminator,多出口鉴别器):属性值越小越则BGP路由越优的度量值,用于向外部对等体指出进入本AS的首选路径。MED主要用于在AS之间影响BGP的选路,当进入本AS的入口有多个时,AS可以使用MED动态影响其他AS选择进入的路径。MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由再次传递给其EBGP对等体时,缺省不会携带MED属性
缺省情况下,路由器只比较来自同一相邻AS的BGP路由的MED值,不会比较去往同一个目的地的两条来自不同的相邻AS的路由
一台BGP路由器将路由通告给EBGP对等体时,是否携带MED属性,在不对EBGP对等体使用策略时,判断条件为
①如果该BGP路由是本地始发(本地通过network或import-route命令引入)的,则缺省携带MED属性发送给EBGP对等体
②如果该BGP路由为从BGP对等体学习到,那么该路由传递给EBGP对等体时缺省不会携带MED属性
③在IBGP对等体之间传递路由时,MED值会被保留并传递,除非部署了策略,否则MED值在传递过程中不发生改变也不会丢失
使用default med命令修改缺省的MED值,仅对本设备上用import-route命令引入的路由和BGP的aggregate路由生效
MED不会跨AS传递
Preferred-Value(协议首选值):华为设备特有,仅本地有效,不会传递给任何BGP对等体。当BGP路由表中存在到相同目的地的路由时,将优先选择Preferred-Value值大的路由(0~65535)
当到达同一个目的网段存在多条路由时,BGP路由优选规则:
丢弃下一跳不可达的路由

  1. 优选Preferred-Value属性值最大的路由
  2. 优选Local_Preference属性值最大的路由
  3. 本地始发的BGP路由优于从其他对等体学习到的路由,本地始发的路由优先级:优选手动聚合>自动聚合>network>import>从对等体学到的
  4. 优选AS_Path属性值最短的路由
  5. 优选Origin属性最优的路由。Origin属性值按优先级从高到低的排列是:IGP、EGP及Incomplete。
  6. 优选MED属性值最小的路由
  7. 优选从EBGP对等体学来的路由(EBGP路由优先级高于IBGP路由)
  8. 优选到Next_Hop的IGP度量值最小的路由
  9. 优选Cluster_List最短的路由
  10. 优选Router ID(Originator_ID)最小设备通告的路由
  11. 优选具有最小IP地址的对等体通告的路由
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值