CN113194030B - 一种基于网络前缀切分的多路径报文转发方法 - Google Patents

一种基于网络前缀切分的多路径报文转发方法 Download PDF

Info

Publication number
CN113194030B
CN113194030B CN202110514120.3A CN202110514120A CN113194030B CN 113194030 B CN113194030 B CN 113194030B CN 202110514120 A CN202110514120 A CN 202110514120A CN 113194030 B CN113194030 B CN 113194030B
Authority
CN
China
Prior art keywords
item
prefix
routing table
forwarding
routing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110514120.3A
Other languages
English (en)
Other versions
CN113194030A (zh
Inventor
陶静
段晨
王宝生
彭伟
邢倩倩
郦苏丹
王宏
莫露莎
苏毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN202110514120.3A priority Critical patent/CN113194030B/zh
Publication of CN113194030A publication Critical patent/CN113194030A/zh
Application granted granted Critical
Publication of CN113194030B publication Critical patent/CN113194030B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/24Multipath
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • H04L45/745Address table lookup; Address filtering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种基于网络前缀切分的多路径报文转发方法,目的是解决现有多路径报文转发网络负载不均衡的问题。技术方案是修改交换机的控制软件,在路由表管理模块中添加前缀切分子模块。路由交换设备中路由协议软件、路由表管理模块、转发表下发模块、IP转发引擎并行工作,完成多路径报文转发。路由协议软件生成路由表项,路由表计算子模块进行路由计算,前缀切分子模块进行前缀切分,转发表下发模块将切分后的IP转发表项下发到硬件转发表,IP转发引擎转发报文。前缀切分子模块将IP路由表项中的目的网络前缀切分成多个更细粒度的目的网络前缀,根据一条IP路由表项产生多条IP转发表项,实现了IP报文的多路径转发,达到了负载均衡的效果。

Description

一种基于网络前缀切分的多路径报文转发方法
技术领域
本发明涉及计算机网络通信领域,尤其涉及一种基于网络前缀切分的多路径报文转发方法。
背景技术
传统路由器的报文处理,是由控制平面形成的路由表、转发平面形成的转发表和ACL(Access Control List,访问控制列表)策略表共同决策完成报文分组的转发。一般情况下,路由表与转发表是一致的。在多路径路由情况下,策略表通过限定源地址分布实现分流,因此转发过程中需要完成两次查表(查转发表与ACL策略表)才能决定不同报文的转发出口。然而两次查表会严重影响转发性能。
传统多路径转发方法可以分为主备模式和并发模式。主备模式是指路由协议从学习到的多路径中选择一个作为主要路径,并下发到转发表中。当主要路径出现故障,可以迅速将备用路径下发到转发表,提高路由协议的可靠性,但其本质依然是提供单路径路由服务。并发模式是指转发表中存在多路径且都可用作转发路径,有利于提高网络吞吐量。
并发模式的多路径路由相关研究可以分为逐跳路由和段路由。段路由是一种基于源路由的隧道技术,通过将数据转发路径信息保存在报文头部以控制包的路由。由于报文中包含了路径转发信息,可以根据需要控制报文沿任何路径转发,具有极强服务路径定制能力。多路径段路由生成源、目的对间的最优路径集合,在源节点为流量实现多路径转发。逐跳路由是指每个交换机为报文决定下一跳的转发出口。目前主要的研究方法可以分为分布式路由算法如MPA(MultiplePath Algorithm)、MDVA(MultipathDistanceVectorAlgorithm)与多路径负载均衡转发方法。
ECMP(Equal Cost Multi-Path,等价多路径)是最常见的多路径负载均衡转发方法,通过对报文头进行哈希运算,将数据流映射到不同的转发出口,并以随机化方法实现流的调度,然而由于非均匀流量在不同路径间的非均匀分布,该方案可能导致严重的网络性能降低。在ECMP的基础上,有很多研究工作采用伪随机的方法在多路径之间实现流量感知的负载均衡转发。它们以主动发送探针报文或在报文上搭载负载信息等方式收集全局网络状态信息,或通过局部队列长度感知局部网络状态,从而实现流量感知的负载均衡转发。主动探测的方法主要面临占用网络带宽资源和感知时延的代价问题,而报文搭载负载信息的方法面临网络性能下降和数据隐私性的问题,且目前提出的大多数流量感知方法都需要可编程的交换机硬件,增加了设备部署的成本。也有一些基于集中式思想的负载均衡转发方法,通过在网络中部署集中控制器收集网络状态信息并为多路径转发做决策。但集中控制器与交换机之间的控制环路延时是毫秒级,难以应对突发流量并且会降低网络性能,导致端到端时延变大,降低网络用户访问速率。
人工策略约束也是园区网络中常用的多路径转发的方法。网络管理员通过配置ACL策略表区分去往相同目的网段但源地址不同的流量,实现多路径转发。但随着网络规模不断扩大,人工配置具有较高的复杂性,且误配置可能导致网络瘫痪。另外,路由器在转发流量时需要完成两次查表才能实现选路,在高带宽网络环境中会限制网络性能。
传统多路径路由转发需要路由器或交换机采用支持多路径的硬件转发表,例如,对每一个网络地址前缀,需要能够设置多条可选的转发表项,每个转发表项对应一个不同的网络接口。当转发报文时,可以按照一定规则选择不同的网络接口进行转发,从而有助于实现网络流量负载均衡以及提高网络的可靠性。不同的选择规则具有不同的复杂性,并为网络通信性能带来不同的影响。当并发使用多个网络接口同时转发时,将带来网络报文的乱序问题,可能导致报文重传,造成网络带宽资源浪费,增加用户的端到端延迟增加和速率下降。
目前,传统的商用交换机设备如图1所示,自上而下包含控制软件和转发硬件。控制软件包含路由表管理模块、转发表下发模块、IP路由表和路由协议软件,路由表管理模块包含路由表计算子模块,路由协议软件包括BGP、OSPF、ISIS和RIP互联网路由协议。转发硬件包含IP转发引擎、硬件转发表和接口。接口由接口入队列和接口出队列组成,图1中为方便表示报文转发过程,将接口入队列和接口出队列分开表示,当接口从外部接收数据时,接口入队列接收数据;当接口向外部发送数据时,接口出队列发送数据。
路由协议软件根据协议交互报文计算路由表项(每个表项包含路由协议类型、目的网络前缀、下一跳和度量值四个域),一般会安装多种路由协议软件。其中下一跳指匹配到该路由表项的报文到达的下一个接口的IP地址,度量值指该路由表项根据路径长度、路径带宽、路径跳数得到的权衡到达目的地址的距离值,用来帮助路由表管理模块在去往相同目的网络前缀的路由表项中选择最优的路由表项,其中最优的路由表项即度量值最小的路由表项。路由协议软件将得到的路由表项传递给路由表管理模块中的路由表计算子模块。
路由表计算子模块从路由协议软件获取路由表项,路由表计算子模块读取路由表项中的下一跳域,搜索转发硬件中所有接口的IP地址。路由表计算子模块筛选得到接口的IP地址与路由表项的下一跳域在同一个网段的接口,路由表计算子模块将这个接口作为IP路由表项的出接口域值,与接收到的路由表项拼接生成IP路由表项(每个表项包含路由协议类型、目的网络前缀、下一跳、度量值和出接口五个域)存储在IP路由表中,路由协议类型、目的网络前缀、下一跳和度量值与路由表项中的一样,出接口域表示匹配到该路由表项的报文的出接口,一般情况下出接口域仅存在一个出接口值。路由表计算子模块提取出IP路由表项中目的网络前缀域和出接口域的值,生成IP转发表项,传递给转发表下发模块。特殊地,在配置开启等价多路径的情况下,具有相同目的网络前缀和相同度量值的路由表项,会作为等价多路径路由。等价多路径路由的IP路由表项中下一跳域和出接口域允许存在多个值。转发表下发模块接收来自路由表计算子模块发送的IP转发表项,下发到硬件转发表。硬件转发表存贮IP转发表项。
转发硬件中接口入队列和接口出队列负责存放报文。IP转发引擎从接口入队列提取出报文头部中的目的IP地址,与硬件转发表中每个表项中的目的网络前缀执行“与”操作,在硬件转发表中找到“与”操作结果中连续的1的位数最多的表项,提取该表项的出接口域的值,将报文复制到出接口域所对应接口的接口出队列中。
传统的商用交换机设备的多路径转发依赖于配置等价多路径。当交换机配置开启等价多路径后,IP转发引擎提取出报文头部中的五元组信息(包括源IP地址、目的IP地址、源端口号、目的端口号和协议类型五个域的值),IP转发引擎通过哈希运算将报文的五元组信息映射到出接口,将报文复制到此出接口的出队列中。但该方法忽略了流的大小,如果发生哈希碰撞(即多条流的哈希运算结果相同),会导致大流的报文从相同的出接口转发,引起网络负载不均衡,网络延迟高。
另外,还存在一种人工策略约束的多路径转发方法。网络管理员人工配置ACL(Access Control List)策略表,ACL策略表的表项包含三个域(分别是源IP地址、目的IP地址和转发出接口)。IP转发引擎提取出报文头部中的源IP地址和目的IP地址两个域的值,首先在ACL策略表中找到与报文源IP地址和目的IP地址相同的表项,再提取出该表项的转发出接口域的值,将报文复制到此出接口的接口队列中,否则IP转发引擎查找硬件转发表,按硬件转发表找到转发出接口。该方法需要人工配置策略,在大规模网络范围内难以部署,且需要耗费过大的时间成本和管理成本。
在传统的商用网络交换机设备中,假设转发硬件中接口1的IP地址为192.168.1.2/24,接口2的IP地址为192.168.2.2/24,接口3的IP地址为192.168.3.2/24。控制软件中初始的IP路由表如表1所示,表1所示的IP路由表包含三条直连路由,三条直连路由分别表示数据包经过出接口域中的接口1、接口2和接口3仅需要一跳就能够到达目的网络前缀域中的目的网络前缀。
IP路由表
类型 目的网络前缀 下一跳 度量值 出接口
直连 192.168.1.0/24 0 接口1
直连 192.168.2.0/24 0 接口2
直连 192.168.3.0/24 0 接口3
表1
当路由表计算子模块从BGP路由软件接收到一条路由表项Item,路由表项Item中路由协议类型、目的网络前缀、下一跳和度量值四个域的值分别是“BGP”、“10.1.1.0/24”、“192.168.1.1、192.168.2.1”和“20”。路由表项Item中的目的网络前缀与表1(表1是一种应用场景中初始IP路由表示例)中初始IP路由表中的所有IP路由表项的目的网络前缀不同,路由表计算子模块为Item添加出接口域变成IP路由表项,将出接口域初始化为空。路由表计算子模块读取IP路由表项Item的下一跳域为192.168.1.1和192.168.2.1。路由表计算子模块从下一跳域中的两个下一跳中随机选择一个,假设选择192.168.1.1。路由表计算子模块将192.168.1.1与接口1、接口2、接口3的IP地址的网络前缀,即192.168.1、192.168.2、192.168.3,执行“与”操作,“与”操作的结果中连续的1的位数分别是24位、22位、22位,其中接口1所对应的“与”操作结果中连续的1的位数最多,路由表计算子模块将接口1填入Item的出接口域。路由表计算子模块将IP路由表项Item写入IP路由表中,写入IP路由表项Item后的IP路由表如表2(表2是采用背景技术所述的传统商用交换机设备中路由表计算子模块将IP路由表项写入表1所示应用场景中写入IP路由表项后的IP路由表示例)。所示,表2与表1所示的初始的IP路由表相比,添加了一条去往目的网络前缀为10.1.1.0/24的IP路由表项。路由表计算子模块提取出IP路由表项Item的目的网络前缀域值10.1.1.0/24和出接口域值接口1,生成IP转发表项Item_forward。路由表计算子模块将IP转发表项Item_forward发送给转发表下发模块。
IP路由表
类型 目的网络前缀 下一跳 度量值 出接口
直连 192.168.1.0/24 0 接口1
直连 192.168.2.0/24 0 接口2
直连 192.168.3.0/24 0 接口3
BGP 10.1.1.0/24 192.168.1.1 20 接口1
表2
转发表下发模块收到路由表计算子模块发送的IP转发表项Item_forward,转发表下发模块将Item_forward下发到硬件转发表,完成下发后的硬件转发表如表3(表3是采用背景技术所述的传统商用交换机设备中转发表下发模块将IP转发表项下发到硬件转发表的如表1所示应用场景中下发IP转发表项后的硬件转发表示例)所示,表3所示的硬件转发表包含四条硬件转发表项,第四条转发表项表示去往目的网络前缀为10.1.1.0/24的报文将从接口1转发。
硬件路由表
目的网络前缀 出接口
192.168.1.0/24 接口1
192.168.2.0/24 接口2
192.168.3.0/24 接口3
10.1.1.0/24 接口1
表3
当IP转发引擎判定交换机设备上接口3的入队列有新到达的报文pkt,IP转发引擎提取出报文pkt的目的IP地址域的值,当IP地址域的值为10.1.1.64,令为add1,当IP地址域的值为10.1.1.130,令为add2。IP转发引擎将目的IP地址与硬件转发表中每个表项中的目的网络前缀执行“与”操作,当目的IP地址是10.1.1.64时,“与”操作的结果中最长的1的位数是24位,IP转发引擎选择1的位数最长的目的网络前缀对应的接口,即将接口1作为报文pkt的转发出接口。当目的IP地址是10.1.1.130时,“与”操作的结果中最长的1的位数也是24,IP转发引擎选择1的位数最长的目的网络前缀对应的接口,即也将接口1作为报文pkt的转发出接口。IP转发引擎将报文pkt复制到接口1的接口出队列中,发送报文pkt。因此无论数据包pkt的目的IP地址是10.1.1.64或10.1.1.130或10.1.1.0/24网段中的任何一个IP地址,IP转发引擎都将报文pkt从接口1发送。路由表计算子模块从BGP路由软件接收到的路由表项中,目的网络前缀域是10.1.1.0/24,下一跳域是192.168.1.1和192.168.2.1,说明数据包pkt可以从接口1或接口2发送,且都能到达目的地。因此,IP转发引擎将报文pkt都从接口1发送会导致接口1的负载过重,接口2的负载较轻,引起网络负载不均衡,且数据包在接口1排队的时间也更长,进而导致端到端时延增加。
发明内容
本发明要解决的技术问题是针对传统的商用交换机设备中传统多路径报文转发需要支持多路径的硬件转发表带来的硬件实现开销,ECMP方法可能引起网络负载不均衡导致网络拥塞、端到端延迟增加的问题,人工策略约束的多路径转发方法需要人工配置策略,导致耗费过大的时间成本和管理成本的问题,提出一种基于网络前缀切分的多路径报文转发方法。该方法在不改变网络设备硬件的条件下,通过网络地址前缀切分既实现多路径转发和网络流量的负载均衡,又易于在现有网络环境下部署应用,且不需要人工配置策略,降低时间成本和管理成本。
本发明包括以下步骤:
第一步,修改传统商用交换机的控制软件,在控制软件中添加前缀切分子模块,修改路由表计算子模块、转发表下发模块。
路由表计算子模块属于路由表管理模块,路由表计算子模块与IP路由表、路由协议软件和前缀切分子模块相连。修改背景技术中路由表计算子模块的部分功能,路由表计算子模块根据路由协议软件发送的路由表项生成IP路由表项(每个表项包含路由协议类型、目的网络前缀、下一跳、度量值和出接口五个域),将IP路由表项写入IP路由表,并将IP路由表项发送给前缀切分子模块。与背景技术图1所示方法不同,路由表计算子模块不生成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.2.4.1令下一跳集合计数变量next_n=1;
3.2.2.4.2若next_n>Nnexthop,转3.2.3,否则执行3.2.2.4.3。
3.2.2.4.3路由表计算子模块取出下一跳集合的第next_n个下一跳(记作Nexthopnext_n),路由表计算子模块将Nexthopnext_n与转发硬件中所有接口的IP地址执行与操作,筛选出接口IP地址与Nexthopnext_n在同一个网段的接口(记作OIntnext_n),将OIntnext_n作为匹配到Item_new路由表项的数据包的转发出接口,路由表计算子模块在Item_new的出接口域中添加OIntnext_n
3.2.2.4.4令next_n=next_n+1,转3.2.2.4.2;
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(说明P为IPv4网络前缀)或128(说明P为IPv6网络前缀),则不进行目的网络前缀切分,前缀切分子模块使用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为2的幂次,即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若
Figure BDA0003051207110000091
切分结束,转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前缀切分子模块将
Figure BDA0003051207110000092
个目的网络前缀一对一随机分配给Item_new的出接口域中的
Figure BDA0003051207110000093
个接口,组成
Figure BDA0003051207110000094
个目的网络前缀和出接口对,转3.2.5.3.5;
3.2.5.3.5前缀切分子模块使用
Figure BDA0003051207110000095
个网络前缀和出接口对,生成
Figure BDA0003051207110000096
条IP转发表项,逐个发送给转发表下发模块,转3.2.1继续等待路由表项;通过3.2.5.3.2~3.2.5.3.5步目的网络前缀切分,前缀切分模块根据一条IP路由表项生成了
Figure BDA0003051207110000097
条IP转发表项。
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。由于Item_new的出接口域中出接口的数量NInt不等于2的幂次,则仅切分一次Item_new的目的网络前缀P无法得到数量与Item_new的出接口域中出接口的数量NInt相等的切分后的目的网络前缀,因此前缀切分子模块切分Item_new的目的网络前缀P后,前缀切分子模块还需要进行二次切分。前缀切分子模块二次切分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若
Figure BDA0003051207110000101
切分结束,转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若
Figure BDA0003051207110000102
说明目的网络前缀P切分后的目的网络前缀数量大于Item_new的出接口域中出接口的数量,转3.2.5.3.9,否则转3.2.5.3.13.
3.2.5.3.9前缀切分子模块从
Figure BDA0003051207110000103
个目的网络前缀中任意挑选NInt(等价多路径路由项Item_new的出接口域中出接口的数量)个目的网络前缀,生成目的网络前缀集合Part1_P,前缀切分子模块将剩余的
Figure BDA0003051207110000104
个目的网络前缀生成目的网络前缀集合Part2_P;
3.2.5.3.10前缀切分子模块将Part1_P中NInt个目的网络前缀一对一随机分配给Item_new的出接口域中的NInt个出接口,组成NInt个目的网络前缀和出接口对;
3.2.5.3.11前缀切分子模块从Item_new的出接口域中NInt个出接口中随机选择
Figure BDA0003051207110000105
个出接口,一对一随机分配给Part2_P中
Figure BDA0003051207110000106
个目的网络前缀,组成
Figure BDA0003051207110000107
个目的网络前缀和出接口对;
3.2.5.3.12前缀切分子模块使用3.2.5.3.10和3.2.5.3.11中得到的目的网络前缀和出接口对,生成
Figure BDA0003051207110000108
条IP转发表项,逐个发送给转发表下发模块,转3.2.1。因此通过3.2.5.3.6~3.2.5.3.12步目的网络前缀切分,前缀切分模块根据一条IP路由表项生成了
Figure BDA0003051207110000109
条IP转发表项。
3.2.5.3.13此时
Figure BDA0003051207110000111
说明目的网络前缀P切分后的目的网络前缀数量小于或等于Item_new的出接口域中出接口的数量,执行3.2.5.3.14。
3.2.5.3.14前缀切分子模块从Item_new的出接口域中NInt个出接口中随机选择
Figure BDA0003051207110000112
个出接口,一对一随机分配给目的网络前缀P切分后得到的
Figure BDA0003051207110000113
个目的网络前缀,组成
Figure BDA0003051207110000114
个目的网络前缀和出接口对。
3.2.5.3.15前缀切分子模块使用3.2.5.3.14中得到的目的网络前缀和出接口对,生成
Figure BDA0003051207110000115
条IP转发表项,逐个发送给转发表下发模块,转3.2.1。因此通过3.2.5.3.13~3.2.5.3.15目的网络前缀切分,前缀切分模块根据一条IP路由表项生成了
Figure BDA0003051207110000116
条IP转发表项。
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地址域,查询硬件转发表决定数据包的出接口,将数据包复制到出接口的出队列中,发送数据包,方法是:
3.4.1IP转发引擎判定交换机设备上接口的入队列是否有新到达的报文,若有,将新到达的报文令为pkt,转3.4.2;若没有新到达的报文,转3.4.1继续等待报文。
3.4.2IP转发引擎提取出报文pkt的目的IP地址域的值,令为add;
3.4.3IP转发引擎按照与背景技术图1相同的方法,将目的IP地址add与硬件转发表中每个表项中的目的网络前缀执行“与”操作,在硬件转发表中找到“与”操作结果中1的位数最多的表项,提取该表项的出接口域的值,作为报文pkt的转发出接口,记作OutInt;
3.4.4IP转发引擎将报文pkt复制到接口OutInt的接口出队列中,发送报文pkt。转3.4.1。
采用本发明可以达到如下技术效果:
(1)本发明在第三步的3.2步中由前缀切分子模块实现了将IP路由表项中的目的网络前缀切分成多个更细粒度的目的网络前缀,前缀切分子模块根据一条IP路由表项产生了多条IP转发表项,相比于背景技术中所述的一条IP路由表项生成一条IP转发表项的情况,本发明可以使得原本去往相同目的网络前缀的报文,通过匹配切分后的多条硬件转发表项中更细粒度的目的网络前缀,从不同的出接口转发,从而实现了IP报文的多路径转发效果。
(2)相比于ECMP通过IP转发引擎哈希报文头部五元组实现多路径负载均衡的效果,本发明不需要交换机转发硬件的额外配合,本发明仅通过第三步的3.2步中前缀切分子模块切分等价多路径路由的目的网络前缀,而IP转发引擎与背景技术中相同,仅通过匹配报文的目的IP地址域就可以达到流量负载均衡的效果;
(3)本发明在交换机控制软件中添加了前缀切分子模块,前缀切分子模块位于路由表读取子模块和转发表下发模块之间,不需要改变路由软件和IP路由表的内容,不会影响网络中的路由计算。
总得来说,本发明可以在不修改交换机硬件、不影响路由计算的前提下,仅对交换机控制软件做有限的改动,就可以提高整体网络的带宽利用率、降低网络中端到端的延迟,为实现网络多路径负载均衡提供了一种简便易行的方法。
附图说明
图1是背景技术所述现有网络路由交换设备逻辑结构图;
图2是本发明第一步修改图1所示现有网络路由交换设备的控制软件后的网络路由交换设备逻辑结构图;
图3是本发明总体流程图。
具体实施方式
图3是本发明的总体流程图;如图3所示,本发明包括以下步骤:
第一步,修改传统商用交换机的控制软件,如图2所示,在控制软件中添加前缀切分子模块,修改路由表计算子模块、转发表下发模块。
路由表计算子模块属于路由表管理模块,路由表计算子模块与IP路由表、路由协议软件和前缀切分子模块相连。修改背景技术中路由表计算子模块的部分功能,路由表计算子模块根据路由协议软件发送的路由表项生成IP路由表项(每个表项包含路由协议类型、目的网络前缀、下一跳、度量值和出接口五个域),将IP路由表项写入IP路由表,并将IP路由表项发送给前缀切分子模块。与背景技术图1所示方法不同,路由表计算子模块不生成IP转发表项,也不再与转发表下发模块相连。
前缀切分子模块属于路由表管理模块,前缀切分子模块与路由表计算子模块和转发表下发模块相连。前缀切分子模块从路由表计算子模块接收IP路由表项,对IP路由表项中的目的网络前缀进行切分,生成切分后的IP转发表项,将切分后的IP转发表项发送给转发表下发模块。
转发表下发模块与前缀切分子模块和硬件转发表相连,转发表下发模块从前缀切分子模块接收切分后的IP转发表项,将IP转发表项下发到硬件转发表。
假设转发硬件中接口1的IP地址为192.168.1.2/24,接口2的IP地址为192.168.2.2/24,接口3的IP地址为192.168.3.2/24。
第二步,路由交换设备运行修改后的控制软件。
第三步,路由交换设备中路由协议软件、路由表管理模块、转发表下发模块、IP转发引擎并行工作,配合完成多路径报文转发,方法是:路由协议软件按3.1步的流程生成路由表项,并将路由表项传递给路由表管理模块中的路由表计算子模块;同时,路由表管理模块按第3.2步的流程进行路由计算和前缀切分,得到切分后的IP转发表项;同时,转发表下发模块按第3.3步的流程将IP转发表项下发到硬件转发表;同时,IP转发引擎按第3.4步的流程转发报文。具体方法是:
3.1,BGP路由协议软件生成路由表项,将路由表项传递给路由表管理模块,方法是:
3.1.1路由协议软件判定是否从路由交换设备的邻居节点接收到路由协议交互报文,若接收到路由协议交互报文,转3.1.2;若未接收到,转3.1.1继续等待路由协议交互报文。
3.1.2路由协议软件提取出路由协议交互报文中的路由协议类型、目的网络前缀、下一跳和度量值四个域的值,生成路由表项,令路由表项为Item。假设路由协议软件提取出路由协议交互报文中四个域的值,生成的路由表项Item的四个域的值分别是“BGP”、“10.1.1.0/24”、“192.168.1.1、192.168.2.1”和“20”。
3.1.3路由协议软件路由协议软件将路由表项Item发送给路由表计算子模块,转3.1.1。
3.2,路由表计算子模块根据路由表项生成IP路由表项,将IP路由表项写入IP路由表,将IP路由表项发送给前缀切分子模块;前缀切分子模块切分IP路由表项的目的网络前缀,生成多条IP转发表项,将IP转发表项发送给转发表下发模块,方法是:
3.2.1路由表计算子模块判断是否从路由协议软件接收到路由表项,路由表计算子模块收到路由表项,令接收的路由表项为Item_new。对于Item_new的路由协议类型、目的网络前缀、下一跳和度量值四个域的值分别是“BGP”、“10.1.1.0/24”、“192.168.1.1、192.168.2.1”和“20”,转3.2.2;
3.2.2路由表计算子模块根据Item_new生成IP路由表项,方法是:
3.2.2.1路由表计算子模块查找IP路由表,初始的IP路由表同背景技术所述一样,也如表1(表1是一种应用场景中初始IP路由表)所示,路由表计算子模块在IP路由表中没有找到一个IP路由表项的目的网络前缀与Item_new的目的网络前缀10.1.1.0/24相同,转3.2.2.2。
3.2.2.2路由表计算子模块为Item_new添加出接口域,将出接口域初始化为空;
3.2.2.3Item_new下一跳域存在多个下一跳,分别是192.168.1.1和192.168.2.1,转3.2.2.4。
3.2.2.4路由表计算子模块将Item_new下一跳域存在的多个下一跳组成下一跳集合,下一跳集合中元素的数量记作Nnexthop=2,则路由表计算子模块循环获取每个下一跳对应的出接口,并将出接口填入Item_new的出接口域中,得到有出接口域的IP路由表项Item_new,方法是:
3.2.2.4.1令下一跳集合计数变量next_n=1;
3.2.2.4.2若next_n>Nnexthop,转3.2.3,否则执行3.2.2.4.3。
3.2.2.4.3路由表计算子模块取出下一跳集合的第next_n个下一跳(记作Nexthopnext_n),转发硬件中路由表计算子模块将Nexthopnext_n与转发硬件中所有接口的IP地址执行与操作,筛选出接口IP地址与Nexthopnext_n在同一个网段的接口(记作OIntnext_n),将OIntnext_n作为匹配到Item_new路由表项的数据包的转发出接口,路由表计算子模块在Item_new的出接口集合域中添加OIntnext_n;当next_n=1时,Nexthop1=192.168.1.1,Nexthop1与转发硬件中接口1的IP地址192.168.1.2/24在同一个网段,路由表计算子模块将接口1记作OInt1,在Item_new的出接口域添加接口1;当next_n=2时,Nexthop2=192.168.2.1,Nexthop2与转发硬件中接口2的IP地址192.168.2.2/24在同一个网段,路由表计算子模块将接口2记作OInt1,在Item_new的出接口域添加接口2。
3.2.2.4.4令next_n=next_n+1,转3.2.2.4.2;
3.2.3路由表计算子模块将IP路由表项Item_new写入IP路由表中,写入IP路由表项Item后的IP路由表如表4(表4是采用本发明的交换机设备中路由表计算子模块将IP路由表项写入IP路由表的如表1所示应用场景中写入IP路由表项后的IP路由表示例图)所示。表4与表1所示的初始路由表相比,添加了一条去往目的网络前缀为10.1.1.0/24的IP路由表项,且IP路由表项的下一跳域和出接口域分别存在两个值,这条IP路由表项表示去往目的网络前缀为10.1.1.0/24的报文可以从接口1或接口2转发。
IP路由表
Figure BDA0003051207110000151
表4
3.2.4路由表计算子模块将IP路由表项Item_new发送给前缀切分子模块。
3.2.5前缀切分子模块接收路由表计算子模块发送的IP路由表项Item_new,对Item_new的目的网络前缀进行切分。令Item_new的目的网络前缀10.1.1.0/24为P,P的前缀长度为L=24。对于IPv4目的网络前缀,有1≤L≤32;对于IPv6目的网络前缀,有1≤L≤128。前缀切分子模块对目的网络前缀P进行切分,方法是:
3.2.5.1Item_new的出接口域中存在多个出接口值“接口1”和“接口2”,执行3.2.5.2;
3.2.5.2此时Item_new的出接口域存在多个出接口值,Item_new是等价多路径路由项,目的网络前缀域的值P的前缀长度L=24(P为IPv4网络前缀),转3.2.5.3以进行网络前缀切分;
3.2.5.3前缀切分子模块按以下方法切分Item_new的目的网络前缀P:
3.2.5.3.1若等价多路径路由项Item_new的出接口域中出接口的数量NInt是2的幂次,本例子中NInt等于2,,即NInt=2k,k等于1,转3.2.5.3.2.
3.2.5.3.2若P为IPv4目的网络前缀,前缀切分子模块取切分长度m1=min{k,(32-L)}=min{1,(32-24)}=1,转3.2.5.3.3;
3.2.5.3.3前缀切分子模块切分目的网络前缀P,方法如下:
3.2.5.3.3.1前缀切分子模块设置切分后的目的网络前缀长度均为L+m1=25,令幂次切分目的网络前缀计数变量cut_n1=0;
3.2.5.3.3.2若
Figure BDA0003051207110000161
切分结束,转3.2.5.3.4,否则转3.2.5.3.3.3;
3.2.5.3.3.3前缀切分子模块将cut_n1转换为二进制形式,填充在网络前缀P的第25位,得到目的网络前缀P切分后的第cut_n1+1个目的网络前缀,且切分后的目的网络前缀长度为25。当cut_n1=0时,前缀切分子模块将0的二进制形式填充在目的网络前缀P的第25位,设置切分后的得到的第1个目的网络前缀长度为25,得到目的网络前缀P切分后的第1个目的网络前缀10.1.1.0/25,当cut_n1=1时,前缀切分子模块将1的二进制形式填充在目的网络前缀P的第25位,设置切分后的得到的第2个目的网络前缀长度为25,得到目的网络前缀P切分后的第2个目的网络前缀10.1.1.128/25,转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前缀切分子模块将
Figure BDA0003051207110000162
个目的网络前缀一对一随机分配给Item_new的出接口域中的2个接口,组成2个目的网络前缀和出接口对,分别是10.1.1.128/25、接口1和10.1.1.0/25、接口2,转3.2.5.3.5;
3.2.5.3.5前缀切分子模块使用
Figure BDA0003051207110000163
个目的网络前缀和出接口对,生成2条IP转发表项,第一条表项的目的网络前缀域为10.1.1.128/25,出接口域为接口1,第二条表项的目的网络前缀域为10.1.1.0/25,出接口域为接口2。前缀切分子模块将两条IP转发表项逐个发送给转发表下发模块,转3.2.1继续等待路由表项;通过3.2.5.3.2~3.2.5.3.5步目的网络前缀切分,前缀切分模块根据一条IP路由表项生成了
Figure BDA0003051207110000164
条IP转发表项,这两条IP转发表项的目的网络前缀比背景技术中传统的商用网络交换机设备得到的IP转发表项的目的网络前缀粒度更细。
为使本发明实施例的目的、技术方案和优点更加清楚,3.2.5.3.1~3.2.5.3.5所描述的应用场景是本发明当多路径路由项Item_new的出接口域中出接口的数量NInt是2的幂次的情况,不包括多路径路由项Item_new的出接口域中出接口的数量NInt不是2的幂次的情况,因此本实施例中不需要进行3.2.5.3.6~3.2.5.3.15,即不需要进行二次切分。
3.3,转发表下发模块从前缀切分子模块收到IP转发表项,将IP转发表项下发到硬件转发表,方法是:
3.3.1转发表下发模块判定是否从前缀切分子模块接收到一条IP转发表项,转发表下发模块接收到一条IP转发表项,IP转发表项的目的网络前缀域为10.1.1.128/25,出接口域为接口1,转3.3.2;
3.3.2转发表下发模块就将收到的IP转发表项下发到硬件转发表,完成下发后的硬件转发表如表5(表5是采用本发明的交换机设备中转发表下发模块将IP转发表项下发到硬件转发表的如表1所示应用场景中下发IP转发表项后的硬件转发表示例)所示,表5与表3所示的硬件转发表相比,表5所示的硬件转发表比表3所示的硬件转发表多一项,表3所示的硬件转发表中去往10.1.1.0/24的报文全部从接口1转发,表5所示的硬件转发表中去往10.1.1.128/25和10.1.1.0/25的报文分别从接口1和接口2转发。转3.3.1。
硬件路由表
目的网络前缀 出接口
192.168.1.0/24 接口1
192.168.2.0/24 接口2
192.168.3.0/24 接口3
10.1.1.128/25 接口1
10.1.1.0/25 接口2
表5
3.4,IP转发引擎从接口入队列接收数据包,根据数据包的目的IP地址域,查询硬件转发表决定数据包的出接口,将数据包复制到出接口的出队列中,发送数据包,方法是:
3.4.1IP转发引擎判定交换机设备上接口的入队列是否有新到达的报文,若有,将新到达的报文令为pkt,转3.4.2;若没有新到达的报文,转3.4.1继续等待报文。
3.4.2IP转发引擎提取出报文pkt的目的IP地址域的值,当IP地址域的值为10.1.1.64,令为add1,当IP地址域的值为10.1.1.130,令为add2;
3.4.3IP转发引擎按照与背景技术图1相同的方法,将add与硬件转发表中每个表项中的目的网络前缀执行“与”操作,在硬件转发表中找到“与”操作结果中1的位数最多的表项,提取该表项的出接口域的值,作为报文pkt的转发出接口,记作OutInt;当报文pkt的目的IP地址是add1=10.1.1.64时,add1与硬件转发表中每个表项中的目的网络前缀执行“与”操作的结果中1的位数分别是24和26,IP转发引擎选择“与”操作的结果中1的位数等于26所对应的IP转发表项的出接口,即将接口2作为报文pkt的转发出接口,转3.4.4;当报文pkt的目的IP地址是add2=10.1.1.130时,add2与硬件转发表中每个表项中的目的网络前缀执行“与”操作的结果中1的位数分别是30和24,IP转发引擎选择“与”操作的结果中1的位数等于30所对应的IP转发表项的出接口,即将接口1作为报文pkt的转发出接口,转3.4.4;
3.4.4IP转发引擎将报文pkt复制到接口OutInt的接口出队列中,发送报文pkt。转3.4.1。当报文pkt的目的IP地址是add1=10.1.1.64时,IP转发引擎将报文pkt复制到接口2的接口出队列中,发送报文pkt,转3.4.1。当报文pkt的目的IP地址是add2=10.1.1.130时,IP转发引擎将报文pkt复制到接口1的接口出队列中,发送报文pkt,转3.4.1。对于背景技术中的目的IP地址分别是10.1.1.64和10.1.1.130的两个数据包,在背景技术中两个数据包都从接口1发送。本发明通过3.2.5.3.2~3.2.5.3.5步目的网络前缀切分,前缀切分模块根据一条IP路由表项生成了
Figure BDA0003051207110000181
条IP转发表项,IP转发引擎将两个这两个数据包分别从接口1和接口2发送。因此,接口1和接口2的负载接近,实现了网络负载均衡,减少了数据包在接口1的排队时间,减小了端到端延迟。

Claims (3)

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,若
Figure FDA0003353146360000031
切分结束,转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,前缀切分子模块将
Figure FDA0003353146360000032
个目的网络前缀一对一随机分配给Item_new的出接口域中的
Figure FDA0003353146360000033
个接口,组成
Figure FDA0003353146360000034
个目的网络前缀和出接口对,转3.2.5.3.5;
3.2.5.3.5,前缀切分子模块使用
Figure FDA0003353146360000035
个网络前缀和出接口对,生成
Figure FDA0003353146360000036
条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,若
Figure FDA0003353146360000041
切分结束,转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,若
Figure FDA0003353146360000042
说明目的网络前缀P切分后的目的网络前缀数量大于Item_new的出接口域中出接口的数量,转3.2.5.3.9,否则转3.2.5.3.13.
3.2.5.3.9,前缀切分子模块从
Figure FDA0003353146360000043
个目的网络前缀中任意挑选NInt个目的网络前缀,生成目的网络前缀集合Part1_P,前缀切分子模块将剩余的
Figure FDA0003353146360000044
个目的网络前缀生成目的网络前缀集合Part2_P;
3.2.5.3.10,前缀切分子模块将Part1_P中NInt个目的网络前缀一对一随机分配给Item_new的出接口域中的NInt个出接口,组成NInt个目的网络前缀和出接口对;
3.2.5.3.11,前缀切分子模块从Item_new的出接口域中NInt个出接口中随机选择
Figure FDA0003353146360000045
个出接口,一对一随机分配给Part2_P中
Figure FDA0003353146360000046
个目的网络前缀,组成
Figure FDA0003353146360000047
个目的网络前缀和出接口对;
3.2.5.3.12,前缀切分子模块使用3.2.5.3.10和3.2.5.3.11中得到的目的网络前缀和出接口对,生成
Figure FDA0003353146360000048
条IP转发表项,逐个发送给转发表下发模块,转3.2.1;
3.2.5.3.13,此时
Figure FDA0003353146360000049
说明目的网络前缀P切分后的目的网络前缀数量小于或等于Item_new的出接口域中出接口的数量,执行3.2.5.3.14;
3.2.5.3.14,前缀切分子模块从Item_new的出接口域中NInt个出接口中随机选择
Figure FDA00033531463600000410
个出接口,一对一随机分配给目的网络前缀P切分后得到的
Figure FDA00033531463600000411
个目的网络前缀,组成
Figure FDA00033531463600000412
个目的网络前缀和出接口对;
3.2.5.3.15,前缀切分子模块使用3.2.5.3.14中得到的目的网络前缀和出接口对,生成
Figure FDA00033531463600000413
条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地址域,查询硬件转发表决定数据包的出接口,将数据包复制到出接口的出队列中,发送数据包。
2.如权利要求1所述的一种基于网络前缀切分的多路径报文转发方法,其特征在于3.2.2.4步所述路由表计算子模块将Item_new下一跳域存在的多个下一跳组成下一跳集合,循环获取每个下一跳对应的出接口,并将出接口填入Item_new的出接口域中,得到有出接口域的IP路由表项Item_new的方法是:
3.2.2.4.1,令下一跳集合计数变量next_n=1;
3.2.2.4.2,若next_n>Nnexthop,结束,否则执行3.2.2.4.3;
3.2.2.4.3,路由表计算子模块取出下一跳集合的第next_n个下一跳,记作Nexthopnext_n,路由表计算子模块将Nexthopnext_n与转发硬件中所有接口的IP地址执行与操作,筛选出接口IP地址与Nexthopnext_n在同一个网段的接口,记作OIntnext_n,将OIntnext_n作为匹配到Item_new路由表项的数据包的转发出接口,路由表计算子模块在Item_new的出接口域中添加OIntnext_n
3.2.2.4.4,令next_n=next_n+1,转3.2.2.4.2。
3.如权利要求1所述的一种基于网络前缀切分的多路径报文转发方法,其特征在于3.4步所述IP转发引擎发送数据包的方法是:
3.4.1,IP转发引擎判定交换机设备上接口的入队列是否有新到达的报文,若有,将新到达的报文令为pkt,转3.4.2;若没有新到达的报文,转3.4.1继续等待报文;
3.4.2,IP转发引擎提取出报文pkt的目的IP地址域的值,令为add;
3.4.3,IP转发引擎将目的IP地址add与硬件转发表中每个表项中的目的网络前缀执行“与”操作,在硬件转发表中找到“与”操作结果中1的位数最多的表项,提取该表项的出接口域的值,作为报文pkt的转发出接口,记作OutInt;
3.4.4,IP转发引擎将报文pkt复制到接口OutInt的接口出队列中,发送报文pkt;转3.4.1。
CN202110514120.3A 2021-05-06 2021-05-06 一种基于网络前缀切分的多路径报文转发方法 Active CN113194030B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110514120.3A CN113194030B (zh) 2021-05-06 2021-05-06 一种基于网络前缀切分的多路径报文转发方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110514120.3A CN113194030B (zh) 2021-05-06 2021-05-06 一种基于网络前缀切分的多路径报文转发方法

Publications (2)

Publication Number Publication Date
CN113194030A CN113194030A (zh) 2021-07-30
CN113194030B true CN113194030B (zh) 2021-12-24

Family

ID=76981500

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110514120.3A Active CN113194030B (zh) 2021-05-06 2021-05-06 一种基于网络前缀切分的多路径报文转发方法

Country Status (1)

Country Link
CN (1) CN113194030B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108614827A (zh) * 2016-12-12 2018-10-02 阿里巴巴集团控股有限公司 数据切分方法、判重方法及电子设备

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7483430B1 (en) * 2003-02-28 2009-01-27 Cisco Technology, Inc. Hierarchical hash method for performing forward route lookup
US8432914B2 (en) * 2010-11-22 2013-04-30 Force 10 Networks, Inc. Method for optimizing a network prefix-list search
CN102355418B (zh) * 2011-10-08 2014-06-25 大连环宇移动科技有限公司 一种路由器的报文转发方法
US9736067B2 (en) * 2014-05-12 2017-08-15 Google Inc. Prefix-aware weighted cost multi-path group reduction
US10263890B2 (en) * 2016-08-15 2019-04-16 Netflix, Inc. Synthetic supernet compression

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108614827A (zh) * 2016-12-12 2018-10-02 阿里巴巴集团控股有限公司 数据切分方法、判重方法及电子设备

Also Published As

Publication number Publication date
CN113194030A (zh) 2021-07-30

Similar Documents

Publication Publication Date Title
US11972306B2 (en) Routing optimizations in a network computing environment
US9015299B1 (en) Link grouping for route optimization
EP2514152B1 (en) Distributed routing architecture
US20060133282A1 (en) Systems and methods for multipath routing
US7277386B1 (en) Distribution of label switched packets
US11522784B2 (en) Routing and forwarding method for multi-homed network based on programmable network technology
US9654382B2 (en) Use of alternate paths in forwarding of network packets
Lei et al. Multipath routing in SDN-based data center networks
CN111585911B (zh) 数据中心网络流量负载的均衡方法
CN108337168B (zh) 流簇交换路由机制OpenFlow组表选择方法
Yuan et al. An adaptive load-balancing approach for ad hoc networks
EP0986219A2 (en) Maximal flow data routing
US11070472B1 (en) Dynamically mapping hash indices to member interfaces
CN113194030B (zh) 一种基于网络前缀切分的多路径报文转发方法
CN111245724A (zh) 基于虚拟交换机部署的sdn负载均衡路由方法
CN108494683B (zh) 一种软件定义网络中基于图着色的可扩展路径控制方法
Cisco Routing Basics
Cisco Routing Basics
Cisco Routing Basics
Cisco Routing Basics
Cisco Routing Basics
Cisco Routing Basics
Cisco Routing Basics
Cisco Routing Basics
Cisco Routing Basics

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant