BGP路径属性(4)

BGP路径属性(4),第1张

BGP的路径属性描述了BGP路由的路径信息,是每个Update数据包的一部分;

一、BGP路径属性可分成4大类:

1、公认必遵         BGP路由器必须识别这类属性,Update报文必须携带这类属性;

如果收到的更新报文中缺少这类属性,BGP邻居关系会被重置;

2、公认任意        BGP路由器必须识别这类属性,Update报文可选携带这类属性;

3、可选过渡        BGP路由器可选识别这类属性,不识别也可以转发这类属性;

4、可选非过渡     BGP路由器可选识别这类属性,不识别不转发这类属性;

二、BGP常用的路径属性有13个

1、origin                公认必遵

用来代表BGP路由的起源,标记一条路由是如何进入BGP,有3种类型:

(1)IGP        

IGP学到的路由,通过network方式注入到BGP中的路由或者聚合路由,用i表示;

(2)EGP

EGP学到的路由,EGP协议几乎没有使用,只能手工调整,用e表示;

(3)incomplete

来源未知的路由,通过import方式引入到BGP中的路由或者聚合路由,用?表示;

聚合路由的起源属性依赖于成员路由的起源属性:

(1)成员路由的起源属性都是IGP,聚合路由的起源属性是IGP;

(2)成员路由的起源属性都是incomplete,聚合路由的起源属性是incomplete;

(3)成员路由的起源属性既有IGP,又有incomplete,聚合路由的起源属性是incomplete;

origin属性3种路由比较优先级:

IGP起源的路由优于EGP起源的路由,优于incomplete起源的路由;

2、as_path           公认必遵

用于记录路由沿途所经过的AS,路由在离开AS时,当前的AS号会自动添加到AS_PATH序列的前面(最左面);

路由在AS内传递时,不对路由的AS_PATH属性做任何改动;

BGP的AS_PATH属性内容由segment构成,有4种segment类型:

(1)AS_SET            AS号的无序集合

(2)AS_SEQUENCE        AS号的有序列表

(3)AS_CONFED_SET            联盟中成员AS号的无序集合

(4)AS_CONFED_SEQUENCE        联盟中成员AS号的有序列表

每种segment类型在AS_PATH属性中仅能出现一次;

AS_PATH中可能仅携带一种segment类型,也可能同时携带多种segment类型;

AS_SET和AS_CONFED_SET一定是聚合路由的才会包含的segment类型;

多种segment类型同时出现在AS_PATH中,则前后顺序一定是AS_CONFED_SEQUENCE、AS_CONFED_SET、AS_SEQUENCE、AS_SET

AS_PATH的长度是由AS_SEQUENCE这种segment的AS号数量来决定的,而AS_CONFED_SEQUENCE、AS_CONFED_SET和AS_SET的长度都不计入AS长度计算;

不论何种类型的segment,若其中携带的AS号等于接收设备所在的AS号,则该路由都将因为环路问题而被丢弃,可通过peer x.x.x.x allow-as-loop使接收设备接收含有自己AS号的路由;

3、next_hop        公认必遵

用来记录BGP路由的下一跳信息,BGP设备会忽略下一跳地址不可达的BGP路由;

BGP下一跳属性遵循如下规则:

(1)BGP设备将本地始发路由发布给所有BGP对等体时,会把路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址;

(2)BGP设备向EBGP对等体发布路由时,会把路由信息的下一跳属性设置为本地与对端建立BGP邻居关系的接口地址;

(3)BGP设备在IBGP对等体发布从EBGP学来的路由时,不改变路由信息的下一跳属性;

可以通过如下两条命令修改下一跳属性缺省行为:

peer next-hop-local

peer next-hop-invariable

关于下一跳带来的问题:

区别于IGP中下一跳是直连路由器的IP地址,BGP路由的下一跳往往都是非直连设备的IP地址,所以出现了下一跳地址不可达问题、路由黑洞问题以及负载分担问题;

(1)下一跳地址不可达问题

下一跳是非直连地址,必须保证路由表存在到达下一跳地址所在网络的路由;

(2)路由黑洞问题

从数据平面分析,如果数据流访问目标BGP网络,R5根据下一跳发给R2,但中间IGP路由器R3和R4没有对应的BGP路由,所以会出现路由黑洞;

方法1:

全都运行BGP,运营商网络中使用较多,IBGP全互联、RR、联盟;

方法2:

IGP同步,将BGP路由引入IGP,保证路由全网可达。

此种方法不建议使用,过量的BGP路由会加重IGP路由器的负荷,同时IGP路由也不适合承担过大的AS间数据流量,可以根据需要引入少量路由或对引入的路由做必要的汇总;

方法3:

开启MPLS标签交换,在运行BGP的设备R2和R5之间为下一跳地址所对应的路由创建LSP隧道,所有发往下一跳地址的数据包执行标签转发,中间设备不需要存在相应的BGP路由;

方法4:

把运行BGP的设备直连,这样AS间的数据流量将不需要经过IGP路由器;

(3)负载分担问题

默认情况下,BGP只把最佳路由放进IP路由表,即BGP缺省没有等价路由;

如果下一跳地址路由是负载分担的路径,可以保证R5到R2的数据流量负载分担;

4、local_pref        公认任意

Local_Pref属性用来判断流量离开AS时的最佳路由,仅在IBGP邻居间传递,不通告给其他AS;

当AS内BGP设备通过不同的IBGP对等体得到目的网段相同但下一跳不同的多条路由时,将优先选择Local_Pref属性值较高的路由;

Local_Pref属性将会在整个AS内传递,在本AS内的所有路由器都将收到该优先级,如果路由没有配置Local_Pref属性,将按缺省值100来处理;

5、med                   可选非过渡

MED属性用来判断流量进入AS时的最佳路由,仅在两个相邻的AS之间传递,收到此属性的AS一方不会再将其通告给任何其他第三发AS;

MED值越小,路由的优先级越高;

BGP路由器默认只对相同的AS传递过滤的路由进行MED的比较,不会比较不同AS传递的路由,可以使用命令compare-different-as-med来使其比较不同AS传递的路由;

如果路由没有配置MED属性,将按照缺省值0来处理;

6、originator_id     可选非过渡

专为RR开发,用来在AS内防环,由RR添加到路由更新中,并随路由在AS内传递,离开AS时会被剥离;

OriginatorID属性值为AS内第一台通告该路由的BGP设备的RouterID;

如果路由器接收路由时,路由携带的OriginatorID与自身RouterID相同,丢弃该路由,实现集群内防环;

7、cluster_list         可选非过渡

专为RR开发,用来在AS内防环;

Cluster_List是路由经过RR反射时由RR添加的一个集群列表,记录路由经过的Cluster_ID;

如果RR在接收到路由的Cluster_List中存在自身Cluster_ID,丢弃该路由,实现集群间防环;

8、atomic_aggregate     公认任意

用于路由聚合时,告知对等体,原始的明细路由AS_Path出现了丢失,只在抑制明细路由时携带;

如果聚合路由将所有明细路由抑制了,就会为聚合路由生成该属性;

9、aggregator            可选过渡

聚合后的路由一定携带aggregator属性,指明聚合路由设备所在的AS号和RouterID;

10、community         可选过渡

Community团体属性用来标识具有相同特征的BGP路由,提高路由策略使用效率;

可以用十进制和十六进制来表示该属性,范围0x00000000(0)-0x0000FFFF(65535)和0xFFFF0000-0xFFFFFFFF是被保留的,其中定义了4中公认团体属性:

(1)Internet    0x00000000

设备收到具有此属性的路由后,可以向任何BGP对等体发送该路由,路由的缺省属性;

(2)No_Advertise    0xFFFFFF02

设备收到具有此属性的路由后,将不向任何BGP对等体发送该路由;

(3)No_Export    0xFFFFFF01

设备收到具有此属性的路由后,将不向AS外发送该路由;

(4)No_Export_Subconfed    0xFFFFFF03

设备收到具有此属性的路由后,将不向AS外发送该路由,也不向AS内其他子AS发送该路由;

除了公认团体属性外,如果需要定义私有团体属性控制BGP路由时,可以利用团体属性的前2个字节作为AS号,用后面的2个字节定义与该AS相关的数值;

多条路由可以拥有相同的团体属性,bgp路由器需要对这些路由实施策略时,只需匹配该团体属性;

一条路由也可以拥有多个团体属性,BGP路由器可以根据其中的一部分或全部属性进行匹配;

11、MP_Reachable    可选非过渡

12、MP_Unreachable    可选非过渡

13、扩展团体属性

除了标准团体属性外,扩展团体属性是对BGP团体属性的扩展,长度8字节,主要用于MPLS VPN的Route Target(前面2字节代表类型,后面6字节代表数值);

首先我们先要清楚什么样的路径不能参与比较,也就是无效的,如果它满足下面这些任意一个条件,那它就是无效的:

1 路径的下一跳不可达。

2 路径未同步,但同步功能被启用了。

3 路径被入境BGP策略所拒绝,并且路由器配置了入境温和重置(soft reset )。当配置了soft reset后,即使被BGP策略拒绝的路由也会保存在RIB中。

4 路由被惩罚(dampened)

只要一条路径不符合上面那些条件,那它就是有效的,就可以被列入最佳路径的候选者中。下面我们就来说明BGP最佳路径选择的步骤。

1 WEIGHT值最高的路径优先

2 LOCAL-PREF值(本地优先级)。

3 基于始发地(origination)评估路由,路由器本地始发的路径优先。

4 评估AS-PATH的长度,AS-PATH列表最短的路径优先。

5 评估路由的origin属性,origin属性值最低的路由优先。

6 评估MED。MED值最小的路径胜出。该属性可以传递出AS。

对于这些问题,一般商家都会解答的,那建议你可以向客户咨询一下,因为现在很多都使用BGP多线互联, 我用的是小鸟云的,与服务器有关的问题都是能解决的!

希望能帮助你!

你是说BGP邻居建立的过程吗?

一般细分有6个过程,并且有6种状态,show ip bgp nei可以看到这些状态

我分别用A B C D E F表示6个状态顺序

A:Idle State 状态

1. BGP 通常以Idle State 开始(此时拒绝接收所有入连接)。当一个开始事件出现,BGP 过程初始化所有

BGP 资源

打开重试连接(ConnectRetry)计时器,初始化到邻居的TCP 连接,接听来自邻居的TCP 初始化消息并将它的

状态转到Connect 状态。

2.开始事件是由一个操作者配置一个BGP 过程,或者重置一个已经存在的过程或者路由器软件重置BGP 过

程引起。

3.一个差错的出现会将BGP 过程的状态转为Idle.路由器可能会试图发起另外一个开始事件.为了防止在持

续差错条件下导致的摆动,在第一次转回到空闲状态后,路由器会自动开启重试连接计时器,当计时器终止

后,路由器就会放弃重新开始BGP.重试计时器第一次的时间为60s,下一次为前一次的2 倍120s,成指数形式

增加。

B:Connect State 状态

此状态下BGP 过程会等到TCP 连接完成以后再决定后续的动作。

1. 如果TCP 连接建立成功,BGP 连接将ConnectRetry 清零,完成初始化并给邻居发送一个Open 消息,转移

到Open状态。

2. 如果TCP 连接建立失败,BGP 继续监听由邻居发起的连接,重置ConnectRetry 计时器并转移到Active

状态。

3. 如果在连接状态下,ConnectRetry 超时,计时器将重新开始,并再一次试图与邻居建立TCP 连接,BGP 保

持Connect 状态,此时如果有任何其他输入事件,转入Idle 状态。

C:Active State 状态

在此状态,BGP 过程试图与邻居建立一个TCP 连接

1. 如果连接成功,BGP 过程将ConnectRetry 计时器清零,完成初始化,给邻居发送一个Open 消息并转移到

发送Open消息状态,Hold 计时器设置为4mins。

2. 如果在激活状态,ConnectRelay 计时器超时,将回到ConnectState 并且重置ConnectRelay 计时器.也

发起一个到对等的TCP 连接并继续监听来自对等体的连接。

3. 如果邻居试图与一个未知IP 建立TCP 会话,同时ConnectRelay 计时器重置,连接被拒绝并保持在

Active 状态。

4. 任何一个事件(除开始事件)都回导致状态转向idle。

D:Open send State 状态

在此状态下,已经发送了Open 消息,BGP 等待邻居发来的Open 消息。

1. 当收到一个Open 消息,如果发现差错,将给邻居发一个Notification 消息并转入Idle 状态。

2. 如果收到的Open 消息没有差错,将给邻居发送一个Keepalive 消息并将Keepalive 计时器清零,此时

协商一个较短的holdtime,如果为0,则没有启动Hold 和keepalive 计时器,根据AS 号选择IBGP 或者EBGP,

同时将状态转移到OpenConfirm 状态。

3. 如果收到一个TCP 断开消息,本地断开BGP 连接,重置ConnectRetry 计时器,并转入Active 状态。

E:Open Confirm State 状态

此状态下BGP 会等待一个Keepalive 消息或者Notification 消息。

1. 如果收到一个Keepalive 消息,转移到Establish 状态。

2. 如果收到一个Notification 消息,转入Idle 状态,并断开TCP 连接。

3. 如果Hold 计时器超时,检测到一个差错或出现stop 事件,BGP 将给邻居发送一个Notification 并断开

连接转入Idle 状态。

F:Establish State 状态

此状态下,BGP 对等体间的连接已经完全建立,可以交换Update Keepalive 和Notification 消息,如果收

到Notification自动转入Idle,并中断连接。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/258419.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-16
下一篇2023-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存