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

文档序号:8342633阅读:291来源:国知局
向外部边界网关协议邻居通告路由的方法及装置的制造方法
【技术领域】
[0001] 本申请涉及路由通告技术领域,尤其涉及向EBGP(ExternalBorderGateway Protocol,外部边界网关协议)邻居通告路由的方法及装置。
【背景技术】
[0002] BGP(BorderGatewayProtocol,边界网关协议)是一种用于AS(Autonomous System,自治系统)之间的动态路由协议。AS是拥有同一选路策略,在同一技术管理部门下 运行的一组路由器。
[0003] BGP的着眼点不在于发现和计算路由,而在于控制路由的传播和选择最佳路由。发 送BGP消息的路由器称为BGP发言者(BGPSpeaker),它接收或产生新的路由信息,并发布 给其它BGP发言者。当BGP发言者收到来自其它自治系统的新路由时,如果该路由比当前 已知路由更优、或者当前还没有该路由,它就把这条路由发布给所有其它BGP发言者。
[0004]相互交换消息的BGP发言者之间互称对等体(Peer),若干相关的对等体可以构成 对等体组(Peergroup)。
[0005] BGP在路由器上以下列两种方式运行:
[0006]1、IBGP(InternalBGP,内部BGP):当BGP运行于同一自治系统内部时,称为 IBGP;
[0007] 2、EBGP :当BGP运行于不同自治系统之间时,称为EBGP。
[0008] AS_PATH属性按一定次序记录了某条路由从本地到目的地址所要经过的所有AS 号。当BGP发言者将一条路由通告到其他AS时,便会把本地AS号添加在AS_PATH列表的最 前面。收到此路由的BGP路由器根据AS_PATH属性就可以知道去目的地址所要经过的AS。 离本地AS最近的相邻AS号排在前面,其他AS号按顺序依次排列。
[0009] 根据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。
[0010] 基于这一规定,那么当针对一目的地址和掩码具有AS_Path属性不同的多条路径 时,由于BGP对等体最终只能通告这些路径中最优的那条路径,因此,即使用户允许该多条 路径进行负载分担,也会导致部分路径的AS_Path属性被丢失,从而引发流量环路。
[0011] 图2为AS组网及路由学习示例图。AS100中包含设备DUT1,AS200中包含DUT2, AS300中包含DUT3,DUT1、DUT2、DUT3两两之间均创建EBGP对等体。DUT3向DUT1和DUT2 通告前缀9. 0. 0. 0/24的路由,路由的AS_PATH属性为AS300、400。
[0012] 为了最大程度地提升DUT1和DUT2上的链路使用效率,用户在DUT1和DUT2上均 进行配置:允许不同AS_PATH属性的多条路径进行负载分担,图中用圆圈圈起来的路径表 示的是该设备上能够形成负载分担的多条路径。
[0013] 图2中,路由学习的过程如下:
[0014] 1)DUT1和DUT2分别从DUT3学习到前缀9. 0. 0. 0/24的路由,如图2中所标识的箭 头1和2,路由的AS_PATH属性为300、400。
[0015] 2)DUT1学习到了前缀9. 0. 0. 0/24的路由后,会向其邻居DUT2扩散,如图2中所标 识的箭头3。向EBGP邻居发送的路由,会附加上本AS的AS号,因此,路由的AS_PATH属性 为 100、300、400;
[0016] 同理,DUT2也会在学到9. 0. 0. 0/24前缀的路由之后,向邻居DUT1扩散,如图2中 所标识的箭头4,路由的AS_PATH属性为200、300、400。
[0017] 3)DUT1收到来自DUT2的前缀9. 0. 0. 0/24的路由,学习该路由;
[0018] 这样,在DUT1上存在前缀9. 0.0. 0/24的两条路由,其中,DUT3发送过来的路由 的AS_PATH属性更短,最终,DUT1上前缀9. 0. 0. 0/24的最优路径为箭头1所标识的路径;
[0019] 同理,DUT2上收到来自DUT1的前缀9. 0. 0. 0/24的路由,学习该路由;
[0020] 这样,在DUT2上存在前缀9. 0. 0. 0/24的两条路由,其中,DUT3发送过来的路由的 AS_PATH属性更短,最终,DUT2上前缀9. 0. 0. 0/24的最优路径为箭头2所标识的路径。
[0021] 在路由稳定下来之后:在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)。
[0022] DUT1、DUT2上的路由表如表1所示:
【主权项】
1. 一种向外部边界网关协议邸GP邻居通告路由的方法,其特征在于,该方法包括: 自治系统AS中的BGP设备学习到一前缀的路由,若发现自身已存在该前缀的多条路 由,则在该前缀的所有路由中,查找到最优路由,当针对该前缀存在能够与该最优路由形成 负载分担的非最优路由时,生成新AS_PATH属性,将最优路由的AS_PATH属性复制到该新 AS_PATH属性中,将能够与最优路由形成负载分担的所有非最优路由的AS_Path属性中与 最优路由的AS_Path属性不同的AS号放入新AS_PATH属性的AS_Set中,将本AS的AS号 添加到该新AS_Path属性的AS_Sequence的最前面; BGP设备向所有邸GP邻居发送该前缀的路由,该路由中携带该新AS_Path属性。
2. 根据权利要求1所述的方法,其特征在于,该方法进一步包括: BGP设备接收到发往一前缀的数据报文,在自身的路由表中查找该报文的目的前缀对 应的最优路由,若查找到,且针对该前缀存在能够与该最优路由形成负载分担的非最优路 由,则采用预设的负载分担算法,在所述最优路由和所述非最优路由中选择一条,根据所选 择的路由将报文发送出去。
3. 根据权利要求1所述的方法,其特征在于,所述BGP设备被预先配置为支持AS_Path 属性生成新规则; 所述BGP设备学习到一前缀的路由之后、若发现自身已存在该前缀的多条路由之前进 一步包括: 发现自身被配置为支持AS_Path属性生成新规则。
4. 根据权利要求1所述的方法,其特征在于,所述AS中的BGP设备学习到一前缀的路 由包括: 步骤a、AS中的BGP设备接收邸GP邻居发来的一前缀的路由,判断自身路由表中是否 已存在该邸GP邻居发来的该前缀的路由,若已存在,删除路由表中该邸GP邻居发来的该前 缀的路由,转至步骤b ;若不存在,直接执行步骤b ; 步骤b、BGP设备判断接收到的路由的AS_Path属性中是否包含本AS的AS号,若是,丢 弃接收到的路由,结束本流程;否则,将接收到的路由学习到自身的路由表中。
5. 根据权利要求1所述的方法,其特征在于,所述BGP设备学习到一前缀的路由之后进 一步包括: 若发现自身仅存在该前缀的一条路由,则将本AS的AS号添加到该路由的AS_Path属 性的AS_Sequence的最前面,将该路由发给自身的所有邸GP邻居;或者, 所述BGP设备查找到最优路由之后进一步包括: 若发现针对该前缀不存在能够与该最优路由形成负载分担的非最优路由,则将本AS 的AS号添加到该最优路由的AS_Path属性的AS_Sequence的最前面,将该最优路由发给自 身的所有邸GP邻居。
6. -种向外部边界网关协议邸GP邻居通告路由的装置,位于自治系统AS中的BGP设 备上,其特征在于,该装置包括: 路由学习板块;学习自U缀的路由; AS_Path属性生成模块;发现路由学习模块学习到一前缀的路由时,若发现本BGP设备 已存在该前缀的多条路由,则在该前缀的所有路由中,查找到最优路由,当针对该前缀存在 能够与该最优路由形成负载分担的非最优路由时,生成新AS_PATH属性,将最优路由的AS_ PATH属性复制到该新AS_PATH属性中,将能够与最优路由形成负载分担的所有非最优路由 的AS_Path属性中与最优路由的AS_Path属性不同的AS号放入新AS_PATH属性的AS_Set 中,将本AS的AS号添加到该新AS_Path属性的AS_Sequence的最前面; 路由通告模块:向所有邸GP邻居发送该前缀的路由,该路由中携带AS_Path属性生成 模块生成的新AS_Path属性。
7. 根据权利要求6所述的装置,其特征在于,该装置进一步包括负载分担模块,用于, 接收到发往一前缀的数据报文,在本BGP设备的路由表中查找该报文的目的前缀对应 的最优路由,若查找到,且针对该前缀存在能够与该最优路由形成负载分担的非最优路由, 则采用预设的负载分担算法,在所述最优路由和所述非最优路由中选择一条,根据所选择 的路由将报文发送出去。
8. 根据权利要求6所述的装置,其特征在于,所述BGP设备被预先配置为支持AS_Path 属性生成新规则; 所述AS_Path属性生成模块发现路由学习模块学习到一前缀的路由之后、发现本BGP 设备已存在该前缀的多条路由之前进一步用于, 发现本BGP设备被配置为支持AS_Path属性生成新规则。
9. 根据权利要求6所述的装置,其特征在于,所述路由学习模块具体用于, 步骤a、接收邸GP邻居发来的一前缀的路由,判断本BGP设备的路由表中是否已存在 该邸GP邻居发来的该前缀的路由,若已存在,删除路由表中该邸GP邻居发来的该前缀的路 由,转至步骤b ;若不存在,直接执行步骤b ; 步骤b、判断接收到的路由的AS_Path属性中是否包含本AS的AS号,若是,丢弃接收到 的路由,结束本流程;否则,将接收到的路由学习到本BGP设备的路由表中。
10. 根据权利要求6所述的装置,其特征在于,所述AS_Path属性生成模块发现路由学 习模块学习到一前缀的路由之后进一步用于, 若发现本BGP设备仅存在该前缀的一条路由,则将本AS的AS号添加到该路由的AS_ 化th属性的AS_Sequence的最前面,将该路由发给本BGP设备的所有邸GP邻居;或者, 所述AS_Path属性生成模块查找到最优路由之后进一步用于, 若发现本BGP设备针对该前缀不存在能够与该最优路由形成负载分担的非最优路由, 则将本AS的AS号添加到该最优路由的AS_Path属性的AS_Sequence的最前面,将该最优 路由发给自身的所有邸GP邻居。
【专利摘要】本申请提出向外部边界网关协议邻居通告路由的方法及装置。方法包括: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属性不同的多条路径进行负载分担时出现流量环路。
【IPC分类】H04L12-803, H04L12-705, H04L12-741
【公开号】CN104660502
【申请号】CN201510113974
【发明人】余清炎
【申请人】杭州华三通信技术有限公司
【公开日】2015年5月27日
【申请日】2015年3月16日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1