BGP的Update报文
BGP通过Network和lmport两种方式生成BGP路由,BGP路由封装在Update报文中通告给邻居。
BGP在邻居关系建立后才开始通告路由信息。Update消息主要用来公布可用路由和撤销路由,
Update中包含以下信息:·网络层可达信息(NLRI):用来公布IP前缀和前缀长度。·
路径属性:为BGP提供环路检测,控制路由优选
撤销路由:用来描述无法到达且从业务中撤销的路由前缀和前缀长度。
在通告BGP路由时,由于各种因素的影响,为了避免路由通告过程中出现问题BGP路由通告需要遵守一定的规则,下面进行详细介绍。
BGP协议产生路由的方式
1、network
BGP协议的network命令不在具备将接口加入BGP进程的逻辑
network就是将路由表中的路由引入到BGP表,并通告给邻居。
network可以精确控制发布哪些BGP路由。
2、import-route
将路由表的路由引入到BGP中,高效快捷。
1、仅传递最优路由
2、从EBGP邻居得到路由传递给所有邻居
3、从IBGP邻居得到的到路由不传递给IBGP邻居
4、从IBGP邻居得到的路由同步检测通过后传递给EBGP邻居
如何解决BGP路由黑洞
@将EBGP路由引I入到IGP协议中(基本被淘汰)。原因比较消耗设备资源,因为BGP路由数量过于庞大,引入到IGP协议,增加的IGP协议计算路由负担。BGP路由震荡,IGP路由也会产生震荡。
@AS内部所有路由器均运行BGP协议,即IBGP全互联,主流架构,此时不在需要同步检测。
BGP防环机制
1、AS内部防环,IBGP水平分割,通过IBGP邻居得到的路由不会再传递给IBGP邻居。
BGP协议的特点:
1、BGP不对路由进行计算
2、BGP只是路由的搬运工
BGP路由传递给EBGP邻居时,下一跳自动修改为向该EBGP邻居发送BGP报文的源地址。
从EBGP邻居传来的路由传给IBGP邻居时,下一跳默认保持不变,可能导致下一跳不可达问题,如何解决呢?
peer 4.4.4.4 next-hop-local
该命令仅对IBGP邻居生效,将从EBGP邻居得到的路由传递给指定的IBGP邻居时,下一跳修改为自身向该IBGP邻居发送BGP报文的源地址。
refresh bgp all export
向所有BGP邻居手动触发路由更新
undosynchronization 关闭同步功能
BGP路由同步是BGP路由黑洞检测机制,并不能解决BGP黑洞问题
BGP发布路由的逻辑:你想别人能够访问你,那么你就得把这条路由发布出去。
公认属性:所有BGP路由器都必须识别并支持的属性口公认必遵:BGP的Update消息中必须包含的属性。
公认任意:不必存在于BGP的Update消息中,可以根据需求自由选择的属性。
可选属性:不要求所有的BGP路由器都能够识别的属性
可选过渡:BGP不能识别该属性,但可以接收该属性并将其发布给它的邻居的属性。
可选非过渡:BGP可以忽略包含该属性的消息并且不向它的邻居发布。
BGP路由属性的分类
1、公认:所有运行BGP协议的路由器都能理解的属性。
2、可选:厂家开发的某些满足特殊需求的属性,但并不是所有运行BGP协议的路由器都理解的属性。
表明他的起源,怎么变成BGP路由的,修改起源属性来进行路径的控制
产生BGP路由的方式:
1、network
2、import-route
BGP路由的起源属性有3种
i 表明BGP路由是由network命令发布的I
? incomplete,表明BGP路由是由import-route发布的
e 表明BGP路由是从EGP协议引入的,EGP协议目前己经全面退出网络。
起源属性可以被修改,一般起源属性是一种BGP选路属性,可以用于BGP路径的选路,通过修改起源属性可以控制BGP路径。i>e>?
AS内部防环:IBGP的水平分割
AS_PATH
1、选路,经过AS数量少的路径最优。
2、在AS之间实现BGP环路的防范。从EBGP邻居得到路由时,检查该路由的AS_PATH属性,如果AS_PATH中存在自身的AS号,则丢弃改路由。
当BGP路由传递给EBGP邻居时会将自己的AS号添加到AS_PATH属性的最前面
当BGP路由传递给IBGP邻居时不会添加自己的AS号。
3、防环的检测机制:EBGP邻居之间进行AS_PATH检查,IBGP邻居之间不做AS_PATH检测
4、AS_PATH可以在IBGP和EBGP邻居之间修改,思科只允许在EBGP邻居之间修改。
Local_Preference
仅传递给IBGP邻居,不会传递给EBGP邻居,即在AS内部传递。默认为100,越大越优先。
华为设备通告MED属性的规则
MED属性在IBGP和EBGP邻居(包括成员EBGP)in和out方向都可以修改。
1、本地始发的路由MED值传递给所有邻居。
2、从EBGP邻居得到的路由的MED不会传递给EBGP邻居,影响邻居AS的选路。
3、从EBGP邻居得到的路由的MED可以传递给IBGP邻居。
4、从IGBP邻居得到的路由传递给EBGP邻居不携带MED。
5、从联盟EBGP邻居或联盟内始发的的路由的MED值在整个联盟保持传递。
如果从EBGP邻居学习到的路由不带MED属性,则传给IBGP邻居时,将MED属性设置0.(华为设备如果从EBGP邻居学到的路由不带MED属性,在传给IBGP邻居时也不携带MED属性)
如果路由是联盟内部的路由,MED属性在整个联盟内部都可以传递。如果从成员IBGP传递来的路由有MED属性,可以传递给成员EBGP邻居,但不会传给联盟EBGP邻居。在EBGP和IBGP邻居之间in和out方向都可以对med属性做修改。
BGP的团体属性
限制BGP路由的传递范围,公认团体属性
给BGP路由添加标记,方便管理,扩展的团体属性。
BGP路由可以同时拥有公认团体属性和扩展团体属性
不同于IGP TAG,TAG只能打一个,管理能力有限,不能多维度的标识路由。
BGP路由可以拥有多个团体属性,根据管理需求,业务需求等灵活进行路由管理。
Internet:缺省属性,所有路由都属于Internet,此属性的路由可以通告给所有BGP邻居;
No_Export:收到此属性的路由后,不将该路由发布到其他AS。
No_Advertise:收到此属性的路由后,不将该路由通告给任何其他的BGP邻居。
No_Export_Subconfed:在联盟中使用,仅在成员As内传递当路由存在多个公认团体属性时,传递范围最小的生效。
BGP路由优选原则BGP路由器将路由通告给邻居后,每个BGP邻居都会进行路由优选,路由选择有三种情况:
1. 该路由是到达目的地的唯一路由,直接优选。
2.对到达同一目的地的多条路由,优选优先级最高的。
3.对到达同一目的地且具有相同优先级的多条路由,必须用更细的原则去选择一条最优的。
一般来说,BGP计算路由优先级的规则如下:
丢弃下一跳不可达的路由。
优选Preference_Value值最高的路由(私有属性,仅本地有效)
优选本地优先级(Local_Preference)最高的路由。
优选手动聚合>自动聚合>network>import>从对等体学到的。
优选ASPath短的路由。
起源类型IGP>EGP>Incomplete。
对于来自同一AS的路由,优选MED值小的。
优选从EBGP学来的路由(EBGP>IBGP)。
优选AS内部IGP的Metric最小的路由。
优选ClusterList最短的路由。
优选OrginatorID最小的路由。
优选RouterID最小的路由器发布的路由。
优选具有较小IP地址的邻居学来的路由。
EBGP邻居的路由优于IBGP邻居的路由
1、利用静态路由执行BGP汇总并不是真正意义上BGP路由汇总,只是利用BGP发布路由的特点来实现汇总的效果。
明细路由并不会被抑制,还是会正常的通告给邻居,需要做明细路由的过滤。
会丢失明细路由的某些BGP路由属性,存在路由环路的风险。
明细路由是否存在和汇总路由之间不存在依赖关系,导致汇总路由不能真实反应网络的现状。
2、BGP自动汇总,一般不用
仅对自身通过import-route命令发布的路由生效
只能汇总成主类网络号。
明细路由会被抑制。
3、BGP手动汇总,主流方式
只要在BGP表中存在的路由都能被手动汇总
可以实现精确汇总,可以支持CIDR。
可以对汇总路由的属性做编辑a可以继承明细路由的属性,防止环路。
明细路由全部失效,汇总路由才会失效。
as-path表明路由传递的AS的次序,有序的
as-set{}无序的AS-PATH,防环用的,并不表明路由传递的次序。
{}中的AS号,只算1个AS长度。