首页> 中国专利> 向外部边界网关协议邻居通告路由的方法及装置

向外部边界网关协议邻居通告路由的方法及装置

摘要

本申请提出向外部边界网关协议邻居通告路由的方法及装置。方法包括:AS中的BGP设备学习到一前缀的路由,若发现自身已存在该前缀的多条路由,则在该前缀的所有路由中,查找到最优路由,当针对该前缀存在能够与该最优路由形成负载分担的非最优路由时,生成新AS_PATH属性,将最优路由的AS_PATH属性复制到该新AS_PATH属性中,将能够与最优路由形成负载分担的所有非最优路由的AS_Path属性中与最优路由的AS_Path属性不同的AS号放入新AS_PATH属性的AS_Set中,将本AS的AS号添加到该新AS_Path属性的AS_Sequence的最前面;BGP设备向所有EBGP邻居发送该前缀的路由,该路由中携带该新AS_Path属性。本申请避免了BGP设备在允许AS_PATH属性不同的多条路径进行负载分担时出现流量环路。

著录项

  • 公开/公告号CN104660502A

    专利类型发明专利

  • 公开/公告日2015-05-27

    原文格式PDF

  • 申请/专利权人 杭州华三通信技术有限公司;

    申请/专利号CN201510113974.5

  • 发明设计人 余清炎;

    申请日2015-03-16

  • 分类号

  • 代理机构北京德琦知识产权代理有限公司;

  • 代理人衣淑凤

  • 地址 310052 浙江省杭州市滨江区长河路466号

  • 入库时间 2023-12-18 09:04:05

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-03-23

    授权

    授权

  • 2017-05-17

    著录事项变更 IPC(主分类):H04L12/705 变更前: 变更后: 申请日:20150316

    著录事项变更

  • 2015-07-08

    实质审查的生效 IPC(主分类):H04L12/705 申请日:20150316

    实质审查的生效

  • 2015-05-27

    公开

    公开

说明书

技术领域

本申请涉及路由通告技术领域,尤其涉及向EBGP(External Border  Gateway Protocol,外部边界网关协议)邻居通告路由的方法及装置。

背景技术

BGP(Border Gateway Protocol,边界网关协议)是一种用于AS (Autonomous System,自治系统)之间的动态路由协议。AS是拥有同一选 路策略,在同一技术管理部门下运行的一组路由器。

BGP的着眼点不在于发现和计算路由,而在于控制路由的传播和选择最 佳路由。发送BGP消息的路由器称为BGP发言者(BGP Speaker),它接收 或产生新的路由信息,并发布给其它BGP发言者。当BGP发言者收到来自 其它自治系统的新路由时,如果该路由比当前已知路由更优、或者当前还没 有该路由,它就把这条路由发布给所有其它BGP发言者。

相互交换消息的BGP发言者之间互称对等体(Peer),若干相关的对等 体可以构成对等体组(Peer group)。

BGP在路由器上以下列两种方式运行:

1、IBGP(Internal BGP,内部BGP):当BGP运行于同一自治系统内部 时,称为IBGP;

2、EBGP:当BGP运行于不同自治系统之间时,称为EBGP。

AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过 的所有AS号。当BGP发言者将一条路由通告到其他AS时,便会把本地AS 号添加在AS_PATH列表的最前面。收到此路由的BGP路由器根据AS_PATH 属性就可以知道去目的地址所要经过的AS。离本地AS最近的相邻AS号排 在前面,其他AS号按顺序依次排列。

根据BGP规定,当BGP发言者存在目的地址和掩码均相同的多条路径 时,只能通告一条最优路径。如图1所示,路由器RT1和RT2建立BGP邻 居关系,假设RT1上先后存在两条到达9.0.0.0/24的路径(暂且称为路径A 和路径B),RT1先向RT2通告路径A,然后发现路径B优于路径A,则再 向RT2通告路径B,RT2收到路径B后,会将路径A删除,这样RT2上只 会保留最后被通告过来的路径B。

基于这一规定,那么当针对一目的地址和掩码具有AS_Path属性不同的 多条路径时,由于BGP对等体最终只能通告这些路径中最优的那条路径,因 此,即使用户允许该多条路径进行负载分担,也会导致部分路径的AS_Path 属性被丢失,从而引发流量环路。

图2为AS组网及路由学习示例图。AS 100中包含设备DUT1,AS 200 中包含DUT2,AS 300中包含DUT3,DUT1、DUT2、DUT3两两之间均创 建EBGP对等体。DUT3向DUT1和DUT2通告前缀9.0.0.0/24的路由,路由 的AS_PATH属性为AS 300、400。

为了最大程度地提升DUT1和DUT2上的链路使用效率,用户在DUT1 和DUT2上均进行配置:允许不同AS_PATH属性的多条路径进行负载分担, 图中用圆圈圈起来的路径表示的是该设备上能够形成负载分担的多条路径。

图2中,路由学习的过程如下:

1)DUT1和DUT2分别从DUT3学习到前缀9.0.0.0/24的路由,如图2 中所标识的箭头1和2,路由的AS_PATH属性为300、400。

2)DUT1学习到了前缀9.0.0.0/24的路由后,会向其邻居DUT2扩散, 如图2中所标识的箭头3。向EBGP邻居发送的路由,会附加上本AS的AS 号,因此,路由的AS_PATH属性为100、300、400;

同理,DUT2也会在学到9.0.0.0/24前缀的路由之后,向邻居DUT1扩散, 如图2中所标识的箭头4,路由的AS_PATH属性为200、300、400。

3)DUT1收到来自DUT2的前缀9.0.0.0/24的路由,学习该路由;

这样,在DUT1上存在前缀9.0.0.0/24的两条路由,其中,DUT 3发送 过来的路由的AS_PATH属性更短,最终,DUT1上前缀9.0.0.0/24的最优路 径为箭头1所标识的路径;

同理,DUT2上收到来自DUT1的前缀9.0.0.0/24的路由,学习该路由;

这样,在DUT2上存在前缀9.0.0.0/24的两条路由,其中,DUT3发送过 来的路由的AS_PATH属性更短,最终,DUT2上前缀9.0.0.0/24的最优路径 为箭头2所标识的路径。

在路由稳定下来之后:在DUT1上存在9.0.0.0/24前缀的两条不同路径, 一条的AS_PATH属性为300、400(来自DUT3),另一条的AS_PATH属 性为200、300、400(来自对端DUT2);在DUT2上同样存在9.0.0.0/24前 缀的两条不同路径,一条的AS_PATH属性为300、400(来自DUT3),另 一条的AS_PATH属性为100、300、400(来自对端DUT1)。

DUT1、DUT2上的路由表如表1所示:

表1

通过上述的路由学习过程,最终的流量图如图3所示:

如图3,从DUT1去往9.0.0.0/24的流量,一部分直接发向DUT3,一部 分会流向DUT2(图中实箭头所示);从DUT2去往9.0.0.0/24的流量,一部 分直接发向DUT3,一部分会流向DUT1(图中空箭头所示)。

发明内容

本申请提供向EBGP邻居通告路由的方法及装置,以避免BGP设备出 现流量环路。

本申请的技术方案是这样实现的:

一种向EBGP邻居通告路由的方法,该方法包括:

AS中的BGP设备学习到一前缀的路由,若发现自身已存在该前缀的多 条路由,则在该前缀的所有路由中,查找到最优路由,当针对该前缀存在能 够与该最优路由形成负载分担的非最优路由时,生成新AS_PATH属性,将最 优路由的AS_PATH属性复制到该新AS_PATH属性中,将能够与最优路由形 成负载分担的所有非最优路由的AS_Path属性中与最优路由的AS_Path属性 不同的AS号放入新AS_PATH属性的AS_Set中,将本AS的AS号添加到 该新AS_Path属性的AS_Sequence的最前面;

BGP设备向所有EBGP邻居发送该前缀的路由,该路由中携带该新 AS_Path属性。

一种向EBGP邻居通告路由的装置,位于AS中的BGP设备上,该装置 包括:

路由学习模块:学习前缀的路由;

AS_Path属性生成模块:发现路由学习模块学习到一前缀的路由时,若 发现本BGP设备已存在该前缀的多条路由,则在该前缀的所有路由中,查找 到最优路由,当针对该前缀存在能够与该最优路由形成负载分担的非最优路由 时,生成新AS_PATH属性,将最优路由的AS_PATH属性复制到该新 AS_PATH属性中,将能够与最优路由形成负载分担的所有非最优路由的 AS_Path属性中与最优路由的AS_Path属性不同的AS号放入新AS_PATH属 性的AS_Set中,将本AS的AS号添加到该新AS_Path属性的AS_Sequence 的最前面;

路由通告模块:向所有EBGP邻居发送该前缀的路由,该路由中携带 AS_Path属性生成模块生成的新AS_Path属性。

可见,本申请中,当BGP设备向EBGP邻居通告前缀路由时,会在AS AS_PATH属性中携带:该前缀的所有能够与最优路由形成负载分担的非最 优路由的AS_Path属性中与最优路由的AS_Path属性不同的AS号,从而避 免了在允许AS_PATH属性不同的多条路径进行负载分担时出现流量环路。

附图说明

图1为现有的BGP路由器之间通告路由的示例图;

图2为现有的AS组网及路由学习示例图;

图3为图2所示的AS组网中的流量传输示例图;

图4为本申请一实施例提供的向EBGP邻居通告路由的方法流程图;

图5为本申请另一实施例提供的向EBGP邻居通告路由的方法流程图;

图6为在图2所示的AS组网中应用本申请后的路由学习示例图;

图7为在图2所示的AS组网中应用本申请后的流量传输示例图;

图8为本申请实施例提供的向EBGP邻居通告路由的装置的组成示意 图。

具体实施方式

申请人对现有的当BGP设备支持AS_Path属性不同的多条路径进行负载 分担时,向EBGP邻居通告路由的方法进行分析发现:

现有方法会导致BGP设备之间形成环路。

如图3,最终会有部分流量在DUT1和DUT2之间形成环路,造成流量 丢失。

图4为本申请一实施例提供的向EBGP邻居通告路由的方法流程图,其 具体步骤如下:

步骤401:AS中的BGP设备学习到一前缀的路由。

步骤402:BGP设备发现自身已存在该前缀的多条路由,则在该前缀的 所有路由中,查找到最优路由,当针对该前缀存在能够与该最优路由形成负载 分担的非最优路由时,生成新AS_PATH属性,将最优路由的AS_PATH属性 复制到该新AS_PATH属性中,将能够与最优路由形成负载分担的所有非最优 路由的AS_Path属性中与最优路由的AS_Path属性不同的AS号放入新 AS_PATH属性的AS_Set中,将本AS的AS号添加到该新AS_Path属性的 AS_Sequence的最前面。

步骤403:BGP设备向所有EBGP邻居发送该前缀的路由,该路由中携 带该新AS_Path属性。

优选地,BGP设备接收到发往一前缀的数据报文,在自身的路由表中查 找该报文的目的前缀对应的最优路由,若查找到,且针对该前缀存在能够与 该最优路由形成负载分担的非最优路由,则采用预设的负载分担算法,在所 述最优路由和所述非最优路由中选择一条,根据所选择的路由将报文发送出 去。

优选地,BGP设备被预先配置为支持AS_Path属性生成新规则;且,

步骤401与402之间进一步包括:BGP设备发现自身被配置为支持 AS_Path属性生成新规则,则执行步骤402。

优选地,步骤401具体包括:

步骤a、AS中的BGP设备接收EBGP邻居发来的一前缀的路由,判断 自身路由表中是否已存在该EBGP邻居发来的该前缀的路由,若已存在,删 除路由表中该EBGP邻居发来的该前缀的路由,转至步骤b;若不存在,直 接执行步骤b;

步骤b、BGP设备判断接收到的路由的AS_Path属性中是否包含本AS 的AS号,若是,丢弃接收到的路由,结束本流程;否则,将接收到的路由 学习到自身的路由表中。

优选地,步骤402进一步包括:BGP设备发现自身仅存在该前缀的一条 路由,则将本AS的AS号添加到该路由的AS_Path属性的AS_Sequence的 最前面,将该路由发给自身的所有EBGP邻居;或者,

BGP设备查找到最优路由之后进一步包括:若发现针对该前缀不存在能 够与该最优路由形成负载分担的非最优路由,则将本AS的AS号添加到该 最优路由的AS_Path属性的AS_Sequence的最前面,将该最优路由发给自身 的所有EBGP邻居。

图5为本申请另一实施例提供的向EBGP邻居通告路由的方法流程图, 其具体步骤如下:

步骤500:BGP设备上的允许AS_Path属性不同的多条路径进行负载分 担的功能被该BGP设备所在的AS的管理员开启,且BGP设备被管理员配 置为支持AS_Path属性生成新规则。

当AS的管理员发现本AS的一BGP设备是因为允许AS_PATH属性不 同的多条路径进行负载分担导致产生了环路时,可配置该BGP设备支持 AS_Path属性生成新规则。需要说明的是,当分别处于两个AS内的两台BGP 设备因为该两台设备允许AS_PATH属性不同的多条路径进行负载分担而导 致该两台BGP设备之间产生了环路时,只需在其中一台BGP设备上配置该 BGP设备支持AS_Path属性生成新规则。

步骤501:BGP设备接收EBGP邻居发来的一前缀的路由,判断自身路 由表中是否已存在该EBGP邻居发来的该前缀的路由,若是,执行步骤502; 否则,执行步骤503。

步骤502:BGP设备删除路由表中该EBGP邻居发来的该前缀的路由, 转至步骤503。

步骤503:BGP设备判断接收到的路由的AS_Path属性中是否包含本AS 的AS号,若是,执行步骤504;否则,执行步骤505。

AS_Path属性主要包括四个子属性,本申请中使用其中的两个子属性: AS_Sequence(序列)和AS_Set(集合)。

步骤504:BGP设备丢弃接收到的路由,转至步骤511。

步骤505:BGP设备将接收到的路由学习到自身的路由表中。

步骤506:BGP设备发现自身支持AS_Path属性生成新规则,则在自身 的路由表中查找接收到的前缀的所有路由。

步骤507:BGP设备判断是查找到一条还是多条,若是一条,执行步骤 508;若是多条,执行步骤509。

步骤508:BGP设备将本AS的AS号添加到该条路由的AS_Path属性 的AS_Sequence的最前面,将该路由发给自身的所有EBGP邻居,转至步骤 511。

步骤509:BGP设备在该前缀的所有路由中,查找到最优路由,当针对 该前缀存在能够与该最优路由形成负载分担的非最优路由时,生成新 AS_PATH属性,将最优路由的AS_PATH属性复制到该新AS_PATH属性中, 然后将所有能够与最优路由形成负载分担的非最优路由的AS_Path属性中与 最优路由的AS_Path属性不同的AS号放入新AS_PATH属性的AS_Set中, 最后将本AS的AS号添加到该新AS_Path属性的AS_Sequence的最前面。

步骤500中提到的BGP设备支持的“AS_Path属性生成新规则”,即本 步骤509中的生成新AS_PATH属性的方法。

若BGP设备发现针对该前缀不存在能够与该最优路由形成负载分担的 非最优路由,则将本AS的AS号添加到该最优路由的AS_Path属性的 AS_Sequence的最前面,将该最优路由发给自身的所有EBGP邻居。

步骤510:BGP设备向所有EBGP邻居发送该前缀的路由,该路由中携 带该新AS_Path属性。

步骤511:BGP设备接收到发往一前缀的数据报文,在自身的路由表中 查找该报文的目的前缀对应的最优路由,若查找到,且针对该前缀存在能够 与该最优路由形成负载分担的非最优路由,则采用预设的负载分担算法,在 所述最优路由和所述非最优路由中选择一条,根据所选择的路由将报文发送 出去。

仍以图2所示组网为例,设DUT1的管理员发现允许AS_Path属性不同 的多条路径进行负载分担的DUT1存在环路风险,则配置DUT1支持AS_Path 属性生成新规则。

在实际应用中,当位于不同AS内的两台BGP设备之间存在环路风险时, 只需要配置其中一台BGP设备支持本申请提出的AS_Path属性生成新规则即 可。

此后,路由学习过程如下:

1)DUT1和DUT2分别从DUT3学习到前缀9.0.0.0/24的路由,如图6 中所标识的箭头1和2,路由的AS_PATH属性为300、400。

2)DUT1学习到了前缀9.0.0.0/24的路由后,会向其EBGP邻居DUT2 扩散,如图6中所标识的箭头3;向DUT2发送的前缀路由,会附加上本AS 的AS号,因此,路由的AS_PATH属性为100、300、400;

同理,DUT2也会在学到前缀9.0.0.0/24的路由之后,向EBGP邻居DUT1 扩散,如图6中所标识的箭头4,路由的AS_PATH属性为200、300、400。

3)DUT1收到来自DUT2的前缀9.0.0.0/24的路由后,执行如下处理:

01)DUT1在自身的路由表中未查找到来自DUT2的前缀9.0.0.0/24的任 何路由,则学习该DUT2发来的路由;

此时,DUT1上的路由表如表2所示:

表2

02)DUT1在路由表中查找前缀9.0.0.0/24的路由,则查找到两条:一条 的AS_Path属性为:300、400(DUT3发来的),另一条的AS_Path属性为: 200、300、400(DUT2发来的);

03)DUT1确定第一条路由为最优路由,且确定这两条路由能够形成负 载分担,则生成新AS_Path属性,先将最优路由的AS_Path属性:300、400 复制到该新AS_Path属性中,然后,比较第二条路由与最优路由的AS_Path 属性,将第二条路由的AS_Path属性中存在的、而最优路由的AS_Path属性 中不存在的AS号(即AS 200)放入该新AS_Path属性的AS_Set中,最后 将本AS的AS号放入该新AS_Path属性的AS_Sequence的最前面,这样, 最终得到的新AS_Path属性为:100、300、400、{200},其中,{}表示AS_Set;

04)DUT1将该前缀的路由通告给所有EBGP邻居(包括DUT2,如图6 中所标识的箭头3’),该路由携带该新AS_Path属性:100、300、400、{200}。

DUT2上收到来自DUT1的前缀9.0.0.0/24的路由后,由于DUT2不支持 本申请提出的AS_Path属性生成新规则,则采用与现有技术完全相同的处理, 即,将该路由学习到自身的路由表中。

此时,DUT2上的路由表如表3所示:

表3

4)DUT2收到DUT1发来的前缀9.0.0.0/24的路由(AS_Path属性:100、 300、400、{200})后,执行如下处理:

01)DUT2发现自身的路由表中已经存在了一条DUT1发来的该前缀的 路由,即表3中的第二条路由(AS_PATH属性:100、300、400),则将路 由表中的该条路由删除;

此时,DUT2上的路由表如表4所示:

设备名称 目的地址/掩码 AS_PATH属性 DUT2 9.0.0.0/24 300400

表4

02)DUT2又发现DUT1发来的路由的AS_PATH属性:100、300、400、 {200}中包含了本AS的AS号(200),则丢弃该路由。

最终,在路由稳定下来之后:在DUT1上存在前缀9.0.0.0/24的两条路 由,一条的AS_PATH属性为300、400(来自DUT3),另一条的AS_PATH 属性为200、300、400(来自对端DUT2);而DUT2上只存在前缀9.0.0.0/24 的一条路由,该路由的AS_PATH属性为300、400(来自DUT3)。

最终,DUT1、DUT2上的路由表如表5所示:

表5

这样,最终的流量图如图7所示。

如图7所示,在DUT1上存在前缀9.0.0.0/24的两条不同路径,从DUT1 去往9.0.0.0/24的流量,一部分直接发向DUT3,一部分会流向DUT2(图中 实箭头所示);但是对于DUT2而言,DUT2上只存在前缀9.0.0.0/24的一条 路径,从DUT2去往9.0.0.0/24的流量,只能发向DUT3。

因此,在DUT1上应用本申请方案之后,无论是从DUT1还是从DUT2 上发往前缀9.0.0.0/24的流量,均不会存在环路。

本申请实施例的有益技术效果如下:

一)避免了BGP设备在允许AS_PATH属性不同的多条路径进行负载分 担功能时,流量出现环路;

二)只需可能由于允许AS_PATH属性不同的多条路径进行负载分担而 存在环路风险的一端BGP设备支持本申请提出的AS_Path属性生成新规则, 而无需全网支持,节省了BGP设备升级成本。

图8为本申请实施例提供的向EBGP邻居通告路由的装置的组成示意 图,该装置位于AS中的BGP设备上,该装置主要包括:路由学习模块、 AS_Path属性生成模块和路由通告模块,其中:

路由学习模块:学习前缀的路由。

AS_Path属性生成模块:发现路由学习模块学习到一前缀的路由时,若 发现本BGP设备已存在该前缀的多条路由,则在该前缀的所有路由中,查找 到最优路由,当针对该前缀存在能够与该最优路由形成负载分担的非最优路由 时,生成新AS_PATH属性,将最优路由的AS_PATH属性复制到该新 AS_PATH属性中,将能够与最优路由形成负载分担的所有非最优路由的 AS_Path属性中与最优路由的AS_Path属性不同的AS号放入新AS_PATH属 性的AS_Set中,将本AS的AS号添加到该新AS_Path属性的AS_Sequence 的最前面。

路由通告模块:向所有EBGP邻居发送该前缀的路由,该路由中携带 AS_Path属性生成模块生成的新AS_Path属性。

优选地,该装置进一步包括:负载分担模块,用于接收到发往一前缀的 数据报文,在本BGP设备的路由表中查找该报文的目的前缀对应的最优路 由,若查找到,且针对该前缀存在能够与该最优路由形成负载分担的非最优 路由,则采用预设的负载分担算法,在所述最优路由和所述非最优路由中选 择一条,根据所选择的路由将报文发送出去。

优选地,BGP设备被预先配置为支持AS_Path属性生成新规则;且,

AS_Path属性生成模块发现路由学习模块学习到一前缀的路由之后、发 现本BGP设备已存在该前缀的多条路由之前进一步包括:

发现本BGP设备被配置为支持AS_Path属性生成新规则。

优选地,路由学习模块具体用于,

步骤a、接收EBGP邻居发来的一前缀的路由,判断本BGP设备的路由 表中是否已存在该EBGP邻居发来的该前缀的路由,若已存在,删除路由表 中该EBGP邻居发来的该前缀的路由,转至步骤b;若不存在,直接执行步 骤b;

步骤b、判断接收到的路由的AS_Path属性中是否包含本AS的AS号, 若是,丢弃接收到的路由,结束本流程;否则,将接收到的路由学习到本BGP 设备的路由表中。

优选地,AS_Path属性生成模块发现路由学习模块学习到一前缀的路由 之后进一步包括:

若发现本BGP设备仅存在该前缀的一条路由,则将本AS的AS号添加 到该路由的AS_Path属性的AS_Sequence的最前面,将该路由发给本BGP 设备的所有EBGP邻居;或者,

AS_Path属性生成模块查找到最优路由之后进一步用于,

若发现本BGP设备针对该前缀不存在能够与该最优路由形成负载分担 的非最优路由,则将本AS的AS号添加到该最优路由的AS_Path属性的 AS_Sequence的最前面,将该最优路由发给自身的所有EBGP邻居。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本 申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在 本申请保护的范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号