[发明专利]一种基于网络前缀切分的多路径报文转发方法有效
申请号: | 202110514120.3 | 申请日: | 2021-05-06 |
公开(公告)号: | CN113194030B | 公开(公告)日: | 2021-12-24 |
发明(设计)人: | 陶静;段晨;王宝生;彭伟;邢倩倩;郦苏丹;王宏;莫露莎;苏毅 | 申请(专利权)人: | 中国人民解放军国防科技大学 |
主分类号: | H04L12/709 | 分类号: | H04L12/709;H04L12/741;H04L12/803 |
代理公司: | 湖南企企卫知识产权代理有限公司 43257 | 代理人: | 任合明 |
地址: | 410073 湖*** | 国省代码: | 湖南;43 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 网络 前缀 切分 路径 报文 转发 方法 | ||
1.一种基于网络前缀切分的多路径报文转发方法,其特征在于包括以下步骤:
第一步,修改传统商用交换机的控制软件,在控制软件中添加前缀切分子模块,修改路由表计算子模块、转发表下发模块;
路由表计算子模块与IP路由表、路由协议软件和前缀切分子模块相连;路由表计算子模块根据路由协议软件发送的路由表项生成IP路由表项,IP路由表项包含路由协议类型、目的网络前缀、下一跳、度量值和出接口五个域,将IP路由表项写入IP路由表,并将IP路由表项发送给前缀切分子模块;
前缀切分子模块属于路由表管理模块,前缀切分子模块与路由表计算子模块和转发表下发模块相连;前缀切分子模块从路由表计算子模块接收IP路由表项,对IP路由表项中的目的网络前缀进行切分,生成切分后的IP转发表项,将切分后的IP转发表项发送给转发表下发模块;
转发表下发模块与前缀切分子模块和硬件转发表相连,转发表下发模块从前缀切分子模块接收切分后的IP转发表项,将IP转发表项下发到硬件转发表;
第二步,路由交换设备运行修改后的控制软件;
第三步,路由交换设备中路由协议软件、路由表管理模块、转发表下发模块、IP转发引擎并行工作,配合完成多路径报文转发,方法是:路由协议软件按3.1步的流程生成路由表项,并将路由表项传递给路由表管理模块中的路由表计算子模块;同时,路由表管理模块按第3.2步的流程进行路由计算和前缀切分,得到切分后的IP转发表项,将切分后的IP转发表项发送给转发表下发模块;同时,转发表下发模块按第3.3步的流程将IP转发表项下发到硬件转发表;同时,IP转发引擎按第3.4步的流程转发报文;具体方法是:
3.1,路由协议软件生成路由表项,将路由表项传递给路由表管理模块,方法是:
3.1.1,路由协议软件判定是否从路由交换设备的邻居节点接收到路由协议交互报文,若接收到路由协议交互报文,转3.1.2;若未接收到,转3.1.1继续等待路由协议交互报文;
3.1.2,路由协议软件提取出路由协议交互报文中的路由协议类型、目的网络前缀、下一跳和度量值,生成路由表项;
3.1.3,路由协议软件将路由表项发送给路由表计算子模块,转3.1.1;
3.2,路由表计算子模块根据路由表项生成IP路由表项,将IP路由表项写入IP路由表,将IP路由表项发送给前缀切分子模块;前缀切分子模块切分IP路由表项的目的网络前缀,生成多条IP转发表项,将IP转发表项发送给转发表下发模块,方法是:
3.2.1,路由表计算子模块判断是否从路由协议软件接收到路由表项,若收到路由表项,令接收的路由表项为Item_new,转3.2.2;若没收到路由表项,转3.2.1继续等待路由表项;
3.2.2,路由表计算子模块根据Item_new生成IP路由表项,方法是:
3.2.2.1,路由表计算子模块查找IP路由表,若在IP路由表中找到一个IP路由表项Item_exist的目的网络前缀与Item_new的目的网络前缀相同,则比较Item_new的度量值和Item_exist的度量值,方法是:
3.2.2.1.1,若Item_new的度量值大于Item_exist的度量值,说明IP路由表项Item_exist优于Item_new,路由表计算子模块不做处理,转3.2.1继续;
3.2.2.1.2,若Item_new的度量值小于等于Item_exist的度量值,说明Item_new优于IP路由表项Item_exist,路由表计算子模块从IP路由表中删除Item_exist,转3.2.2.2;
3.2.2.2,路由表计算子模块为Item_new添加出接口域,将出接口域初始化为空;
3.2.2.3,若Item_new下一跳域仅存在一个下一跳,记作Nexthop_one,则路由表计算子模块将Nexthop_one与转发硬件中所有接口的IP地址进行“与”操作,得到“与”操作结果中1的位数最多的IP地址对应的接口,记作OutInt,将Item_new的出接口域赋值为OutInt,转3.2.3;若Item_new下一跳域存在多个下一跳,则转3.2.2.4;
3.2.2.4,路由表计算子模块将Item_new下一跳域存在的多个下一跳组成下一跳集合,下一跳集合中元素的数量记作Nnexthop,路由表计算子模块循环获取每个下一跳对应的出接口,将出接口填入Item_new的出接口域中,得到有出接口域的IP路由表项Item_new;
3.2.3,路由表计算子模块将IP路由表项Item_new写入IP路由表中;
3.2.4,路由表计算子模块将IP路由表项Item_new发送给前缀切分子模块;
3.2.5,前缀切分子模块接收路由表计算子模块发送的IP路由表项Item_new,对Item_new的目的网络前缀进行切分;令Item_new的目的网络前缀为P,假设P的前缀长度为L;对于IPv4目的网络前缀,有1≤L≤32;对于IPv6目的网络前缀,有1≤L≤128;前缀切分子模块对目的网络前缀P进行切分的方法是:
3.2.5.1,若Item_new的出接口域中仅存在一个出接口值,则不对Item_new进行网络前缀切分,前缀切分子模块使用Item_new的目的网络前缀域和出接口域的值直接生成IP转发表项,发送给转发表下发模块,转3.2.1;否则,Item_new的出接口域中存在多个出接口值,执行3.2.5.2;
3.2.5.2,此时Item_new的出接口域存在多个出接口值,Item_new是等价多路径路由项,若目的网络前缀域的值P的前缀长度L=32或128,则不进行目的网络前缀切分,前缀切分子模块使用Item_new的目的网络前缀域的值和出接口域中随机选择的一个出接口值生成IP转发表项,发送给转发表下发模块,转3.2.1;否则,转3.2.5.3;
3.2.5.3,前缀切分子模块按以下方法切分Item_new的目的网络前缀P:
3.2.5.3.1,若Item_new的出接口域中出接口的数量NInt=2k,k是正整数,转3.2.5.3.2,否则转3.2.5.3.6;
3.2.5.3.2,若P为IPv4目的网络前缀,前缀切分子模块取切分长度m1=min{k,(32-L)},转3.2.5.3.3;若P为IPv6目的网络前缀,前缀切分子模块取切分长度m1=min{k,(128-L)},转3.2.5.3.3;
3.2.5.3.3,前缀切分子模块切分Item_new的目的网络前缀P,方法如下:
3.2.5.3.3.1,前缀切分子模块设置切分后的目的网络前缀长度均为L+m1,令幂次切分目的网络前缀计数变量cut_n1=0;
3.2.5.3.3.2,若切分结束,转3.2.5.3.4,否则转3.2.5.3.3.3;
3.2.5.3.3.3,前缀切分子模块将cut_n1转换为二进制形式,填充在网络前缀P的第L+1位到第L+m1位,得到目的网络前缀P切分后的第cut_n1个目的网络前缀,转3.2.5.3.3.4;
3.2.5.3.3.4,令cut_n1=cut_n1+1,转3.2.5.3.3.2;
3.2.5.3.4,前缀切分子模块将个目的网络前缀一对一随机分配给Item_new的出接口域中的个接口,组成个目的网络前缀和出接口对,转3.2.5.3.5;
3.2.5.3.5,前缀切分子模块使用个网络前缀和出接口对,生成条IP转发表项,逐个发送给转发表下发模块,转3.2.1;
3.2.5.3.6,此时等价多路径路由项Item_new的出接口域中出接口的数量NInt=2j+r,j、r为正整数,若P为IPv4目的网络前缀,前缀切分子模块取切分长度m2=min{j+1,(32-L)},转3.2.5.3.7;若P为IPv6目的网络前缀,前缀切分子模块取切分长度m2=min{j+1,(128-L)},转3.2.5.3.7;
3.2.5.3.7,前缀切分子模块二次切分Item_new的目的网络前缀P,方法如下:
3.2.5.3.7.1,前缀切分子模块设置切分后的网络前缀长度均为L+m2,令非幂次切分目的网络前缀计数变量cut_n2=0,转3.2.5.3.7.2;
3.2.5.3.7.2,若切分结束,转3.2.5.3.8,否则执行3.2.5.3.7.3;
3.2.5.3.7.3,前缀切分子模块将cut_n2转换为二进制形式,填充在目的网络前缀P的第L+1位到第L+m2位,得到目的网络前缀P切分后的第cut_n2个目的网络前缀,转3.2.5.3.7.4;
3.2.5.3.7.4,令cut_n2=cut_n2+1,转3.2.5.3.7.2;
3.2.5.3.8,若说明目的网络前缀P切分后的目的网络前缀数量大于Item_new的出接口域中出接口的数量,转3.2.5.3.9,否则转3.2.5.3.13.
3.2.5.3.9,前缀切分子模块从个目的网络前缀中任意挑选NInt个目的网络前缀,生成目的网络前缀集合Part1_P,前缀切分子模块将剩余的个目的网络前缀生成目的网络前缀集合Part2_P;
3.2.5.3.10,前缀切分子模块将Part1_P中NInt个目的网络前缀一对一随机分配给Item_new的出接口域中的NInt个出接口,组成NInt个目的网络前缀和出接口对;
3.2.5.3.11,前缀切分子模块从Item_new的出接口域中NInt个出接口中随机选择个出接口,一对一随机分配给Part2_P中个目的网络前缀,组成个目的网络前缀和出接口对;
3.2.5.3.12,前缀切分子模块使用3.2.5.3.10和3.2.5.3.11中得到的目的网络前缀和出接口对,生成条IP转发表项,逐个发送给转发表下发模块,转3.2.1;
3.2.5.3.13,此时说明目的网络前缀P切分后的目的网络前缀数量小于或等于Item_new的出接口域中出接口的数量,执行3.2.5.3.14;
3.2.5.3.14,前缀切分子模块从Item_new的出接口域中NInt个出接口中随机选择个出接口,一对一随机分配给目的网络前缀P切分后得到的个目的网络前缀,组成个目的网络前缀和出接口对;
3.2.5.3.15,前缀切分子模块使用3.2.5.3.14中得到的目的网络前缀和出接口对,生成条IP转发表项,逐个发送给转发表下发模块,转3.2.1;
3.3,转发表下发模块从前缀切分子模块收到IP转发表项,将IP转发表项下发到硬件转发表,方法是:
3.3.1,转发表下发模块判定是否从前缀切分子模块接收到一条IP转发表项,若接收到,转3.3.2;若未接收到,转3.3.1继续等待接收IP转发表项;
3.3.2,转发表下发模块将收到的IP转发表项下发到硬件转发表,转3.3.1;
3.4,IP转发引擎从接口入队列接收数据包,根据数据包的目的IP地址域,查询硬件转发表决定数据包的出接口,将数据包复制到出接口的出队列中,发送数据包。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民解放军国防科技大学,未经中国人民解放军国防科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110514120.3/1.html,转载请声明来源钻瓜专利网。