一、路径属性
- 任何一条BGP路由都拥有多个路径属性。
- 当路由器将BGP路由通告给它的对等体时,一并被通告的还有路由所携带的各个路径属性。
- BGP的路径属性将影响路由优选。
1.路径属性分类
- 公认属性是所有BGP路由器都必须能够识别的属性
- 公认属性可以分为两类:
- 公认必遵(Well-known Mandatory):必须包括在每个Update消息里。
- 公认任意(Well-known Discretionary):可能包括在某些Update消息里。
- 可选属性不需要都被BGP路由器所识别
- 可选属性可以分为两类:
- 可选过渡(Optional Transitive):BGP设备不识别此类属性依然会接受该类属性并通告给其他对等体。
- 可选非过渡(Optional Non-transitive):BGP设备不识别此类属性会忽略该属性,且不会通告给其他对等体。
2.公认必遵
2.1AS_Path
-
该属性为公认必遵属性,是前往目标网络的路由经过的AS号列表;
-
作用:确保路由在EBGP对等体之间传递无环;另外也作为路由优选的衡量标准之一;
-
路由在被通告给EBGP对等体时,路由器会在该路由的AS_Path中追加上本地的AS号;路由被通告给IBGP对等
体时,AS_Path不会发生改变。
2.1.1AS_Path防止环路
R1从R4收到的BGP路由更新中AS_Path属性数值为:400300200100,存在自身AS号,不接收该路由,从而防止
了路由环路的产生。
2.1.2.AS_Path类型
2.1.2.1AS_SEQENCE
2.1.2.2AS_SET
2.1.3.修改AS_Path
2.2.Next_Hop
-
该属性是一个公认必遵属性,用于指定到达目标网络的下一跳地址。
-
当路由器学习到BGP路由后,需对BGP路由的Next_Hop属性值进行检查,该属性值(IP地址)必须在本地路由可达,如果不可达,则这条BGP路由不可用。
-
在不同的场景中,设备对BGP路由的缺省Next_Hop属性值的设置规则如下:
-
路由器将BGP路由通告给自己的EBGP对等体时,将该路由的Next_Hop设置为自己的更新源IP地址。
-
路由器在收到EBGP对等体所通告的BGP路由后,在将路由传递给自己的IBGP对等体时,会保持路由的Next_Hop属性值不变。
-
如果路由器收到某条BGP路由,该路由的Next_Hop属性值与EBGP对等体(更新对象)同属一个网段,那
么该条路由的Next_Hop地址将保持不变并传递给它的BGP对等体。
-
2.2.1.Next_Hop的缺省操作
2.2.1.1Next_Hop的缺省操作(1)
2.2.1.2Next_Hop的缺省操作(2)
2.2.1.3Next_Hop的缺省操作(3)
2.2.2修改Next_hop属性
使用peer next-hop-local命令可以在设置向IBGP对等体(组)通告路由时,把下一跳属性设为自身的TCP连接源地址。
2.3.Origin
起源名称 | 标记 | 描述 |
---|---|---|
IGP | i | 如果路由是由始发的BGP路由器使用network命令注入到BGP的,那么该BGP路由的Origin属性为IGP |
EGP | e | 如果路由是通过EGP学习到的,那么该BGP路由的Origin属性为EGP |
Incomplete | ? | 如果路由是通过其他方式学习到的,则Origin属性为Incomplete(不完整的)。例如通过import-route命令引入到BGP的路由 |
-
该属性为公认必遵属性,它标识了BGP路由的起源。如上表所示,根据路由被引入BGP的方式不同,存在三
种类型的Origin。
-
当去往同一个目的地存在多条不同Origin属性的路由时,在其他条件都相同的情况下,BGP将按如Origin的下
顺序优选路由:IGP> EGP>Incomplete。
2.3.1Origin在BGP表中的显示
3.公认任意
3.1.Local_Preference
![外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-
- Local_Preference即本地优先级属性,是公认任意属性,可以用于告诉AS中的路由器,哪条路径是离开本AS的首选路径
- Local_Preference属性值越大则BGP路由越优。缺省的Local_Preference值为100。
- 该属性只能被传递给IBGP对等体,而不能传递给EBGP对等体。
3.1.1.Local_Preference注意事项
-
Local_Preference属性只能在IBGP对等体间传递(除非做了策略否则Local_Preference值在IBGP对等体间传递过程中不会丢失),而不能在EBGP对等体间传递,如果在EBGP对等体间收到的路由的路径属性中携带了Local_Preference,则会进行错误处理。
-
但是可以在AS边界路由器上使用Import方向的策略来修改Local_Preference属性值。也就是在收到路由之后,在本地为路由赋予Local_Preference。
-
使用bgp defau!t local-preference命令修改缺省Local_Preference值,该值缺省为100。
-
路由器在向其EBGP对等体发送路由更新时,不能携带Local_Preference属性,但是对方接收路由之后,会在本地为这条路由赋一个缺省Local_Preference值(100),然后再将路由传递给自己的IBGP对等体。
-
本地使用network命令及import-route命令引入的路由,Local_Preference为缺省值100,并能在AS内向其他
IBGP对等体传递,传递过程中除非受路由策略影响,否则Local_Preference不变。
4.可选过渡
4.1Community技术背景
4.1.1.Community技术背景(1)
4.1.2.Community技术背景(2)
4.2Community属性
- Community(团体)属性为可选过渡属性,是一种路由标记,用于简化路由策略的执行。
- 可以将某些路由分配一个特定的Community属性值,之后就可以基于Community值而不是网络前缀/掩码信息来匹配路由并执行相应的策略了。
4.3.Community属性格式
Community属性值长度为32bit,也就是4Byte。可使用两种形式呈现:
- 十进制整数格式。
- AA:NN格式,其中AA表示AS号,NN是自定义的编号。
4.4.公认Community属性
团体属性名称 | 团体属性号 | 说明 |
---|---|---|
Internet | 0(0x00000000) | 设备在收到具有此属性的路由后,可以向任何BGP对等体发送该路由。缺省情况下,所有的路由都属于Internet团体 |
No_Advertise | 4294967042 ( 0xFFFFFFO2) | 设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由 |
No_Export | 4294967041( 0xFFFFFF01) | 设备收到具有此属性的路由后,将不向AS外发送该路由 |
No_Export_Subconfed | 4294967043( 0xFFFFFF03 ) | 设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发布此路由 |
RFC1997 (BGP Communities Attribute)定义了几个公认的Community属性值,如上表所示。
5.可选非过渡
5.1.MED
- MED(Multi-Exit Discriminator,多出口鉴别器)是可选非过渡属性,是一种度量值,用于向外部对等体指出进入本AS的首选路径,即当进入本AS的入口有多个时,AS可以使用MED动态地影响其他AS选择进入的路径。
- MED属性值越小则BGP路由越优。
- MED主要用于在AS之间影响BGP的选路。MED被传递给EBGP对等体后,对等体在其AS内传递路由时,携带该MED值,但将路由再次传递给其EBGP对等体时,缺省不会携带MED属性。
5.2关于MED的一些注意事项
-
缺省情况下,路由器只比较来自同一相邻AS的BGP路由的MED值,也就是说如果去往同一个目的地的两条路由来自不同的相邻AS,则不进行MED值的比较。
-
一台BGP路由器将路由通告给EBGP对等体时,是否携带MED属性,需要根据以下条件进行判断(不对EBGP对等体使用策略的情况下):
-
如果该BGP路由是本地始发(本地通过network或import-route命令引入)的,则缺省携带MED属性发送给EBGP对等体。
-
如果该BGP路由为从BGP对等体学习到,那么该路由传递给EBGP对等体时缺省不会携带MED属性。
-
在IBGP对等体之间传递路由时,MED值会被保留并传递,除非部署了策略,否则MED值在传递过程中不
发生改变也不会丢失。
-
5.3.MED的默认操作
5.3.1MED的默认操作(1)
- 如果路由器通过IGP学习到一条路由,并通过network或import-route的方式将路由引入BGP,产生的BGP路由的MED值继承路由在IGP中的metric。例如上图中如果R2通过OSPF学习到了10.0.1.0/24路由,并且该路由在R2的全局路由表中OSPF Cost=100,那么当R2将路由network进BGP后,产生的BGP路由的MED值为100。
- 如果路由器将本地直连、静态路由通过network或import-route的方式引入BGP,那么这条BGP路由的MED为0,因为直连、静态路由cost为0。
5.3.2MED的默认操作(1)
-
如果路由器通过BGP学习到其他对等体传递过来的路由,那么将路由更新给自己的EBGP对等体时,默认是不
携带MED的。这就是所谓的:“MED不会跨AS传递”。例如在上图中,如果R3从R2学习到一条携带了MED属性的BGP路由,则它将该路由通告给R4时,缺省是不会携带MED属性的。
-
可以使用default med命令修改缺省的MED值,default med命令只对本设备上用import-route命令引入的路由和BGP的聚合路由生效。例如在R2上配置default med 999,那么R2通过import-route及aggregate命令产生的路由传递给R3时,路由携带的MED为999。
中,如果R3从R2学习到一条携带了MED属性的BGP路由,则它将该路由通告给R4时,缺省是不会携带MED属性的。 -
可以使用default med命令修改缺省的MED值,default med命令只对本设备上用import-route命令引入的路由和BGP的聚合路由生效。例如在R2上配置default med 999,那么R2通过import-route及aggregate命令产生的路由传递给R3时,路由携带的MED为999。