CN106789649B - 一种基于标签的层二多路径快速路由方法 - Google Patents
一种基于标签的层二多路径快速路由方法 Download PDFInfo
- Publication number
- CN106789649B CN106789649B CN201611173869.1A CN201611173869A CN106789649B CN 106789649 B CN106789649 B CN 106789649B CN 201611173869 A CN201611173869 A CN 201611173869A CN 106789649 B CN106789649 B CN 106789649B
- Authority
- CN
- China
- Prior art keywords
- node
- packet
- rdr
- sequence number
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/66—Layer 2 routing, e.g. in Ethernet based MAN's
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/12—Shortest path evaluation
- H04L45/124—Shortest path evaluation using a combination of metrics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/50—Routing or path finding of packets in data switching networks using label swapping, e.g. multi-protocol label switch [MPLS]
Abstract
本发明提供了一种基于标签的层二多路径快速路由方法,包括路由发现和快速路由两个部分,若源节点S需要向目的节点D发送数据,首先查找路由表中是否存在S到D的路由表项,如果S到D的路由表项存在,则进行快速路由过程;如果S到D的路由表项不存在或被清除,则先进行路由发现过程建立路由表项。本发明由层二来负责路由转发功能,从而降低了包头开销;采用基于标签的固定前缀匹配规则,提升了转发效率;路由节点不需要解析路由包头,只需按照标签转发,从而精简了路由包头,降低了包头开销。
Description
技术领域
本发明涉及通信技术领域,尤其是一种多路径快速路由方法。
背景技术
在大规模分布式Ad Hoc网络中,源节点和目的节点往往通过多跳的方式传输数据。由于Ad Hoc网络拓扑的随机性和不规则性,个别节点可能成为传输瓶颈,导致网络负载不均衡,影响网络中传输业务的服务质量。基于此,多路径路由成为Ad Hoc分布式路由的一个重要的研究方向。多路径路由的研究一般可以分为两类:第一种是先验式(表驱动)路由,通过周期性的交互路由信息,全网任何一个节点都维护一张整网的路由表,并基于此全局路由表生成多路径路由。其不足之处在于:路由维护的开销大,路由表查找复杂,转发速度慢。第二种是按需路由,节点在需要传输数据时首先发起路由查找过程,而后将查找到的路径填入数据包的包头域中。其不足之处在于:所有数据包的包头都包含完整的路径信息,开销太大。
发明内容
为了克服现有技术的不足,本发明提供一种基于标签的层二(开放系统互联参考模型的第二层,数据链路层)多路径快速路由方法,可以降低包头开销,提升转发效率,增加路由协议的灵活性。
本发明解决其技术问题所采用的技术方案包括以下步骤:
1)每个节点维护自身的本地路由表,表项内容包含源节点ID、目的节点ID、序列号、跳数、中间节点ID列表、QoS等级和时延;每一个路由表项都设定了一个生存周期TS,D,如果TS,D超时,则发送节点清除掉该路由表项;所有节点的本地路由表默认初始化为空,序列号为0;
2)若源节点S需要向目的节点D发送数据,查找路由表中是否存在S到D的路由表项,如果S到D的路由表项存在,则进入步骤4);如果不存在或被清除,则进入步骤3);
3)进行路由发现,建立路由表项,步骤如下:
3.1)源节点S生成路由发现请求包RDR,在该请求包中包含源节点ID、目的节点ID、中间节点ID列表、QoS等级、序列号、发送时间;其中源节点ID填写为自身ID,目的节点ID填写为数据接收方ID,中间节点ID列表初始化为源节点ID,跳数初始化为0,QoS等级填写为拟发数据包的QoS等级,序列号初始化为上一次本节点到目的节点D路由发现过程的序列号加1的值,上一次本节点到目的节点D路由发现过程序列号的初始值为0;之后,源节点将RDR包广播出去,同时设置路由发现应答请求包RDP等待定时器,定时时长TRDP;
3.2)收到RDR包的节点,首先判断其自身是否是目的节点,如果是则执行步骤3.3);否则本节点为中间节点,执行下述步骤:
3.2.1)若本地路由表中存在S到D的路由记录,则执行步骤3.2.2),否则执行步骤3.2.6);
3.2.2)若该RDR包中的序列号小于本节点记录的S到D序列号,则将该包丢弃,本节点流程结束;否则执行步骤3.2.3);
3.2.3)若该RDR包中的序列号大于本节点记录的S到D序列号,则更新S到D序列号,执行步骤3.2.6),否则执行步骤3.2.4);
3.2.4)若该RDR包的中间节点ID列表包含自身,则将该包丢弃,本节点流程结束;否则执行步骤3.2.5);
3.2.5)若该RDR包中间节点ID列表的中间节点数量比本地S到D记录的最小中间节点数量超过允许的差值则将该包丢弃,本节点流程结束;否则执行步骤3.2.6);
3.2.6)若该RDR包中间节点ID列表的中间节点数量超过允许中间节点最大值则将该包丢弃,本节点流程结束;否则执行步骤3.2.7);
3.2.7)将本节点ID添加到该RDR包的中间节点ID列表中,RDR包中跳数加1,将RDR包广播,本节点流程结束;
3.3)目的节点接收到RDR包,则执行下述步骤:
3.3.1)若该RDR包中的序列号节点小于本节点记录的S到D序列号,则将该包丢弃,本流程结束;否则执行步骤3.3.2);
3.3.2)若该RDR包中的序列号节点大于本节点记录的S到D序列号,则更新S到D序列号,执行步骤3.3.3);否则执行步骤3.3.4);
3.3.3)开启RDR等待定时器,定时时长TRDR;
3.3.4)若该RDR包在TRDR超时后到达,则将该包丢弃,本流程结束;否则执行步骤3.3.5);
3.3.5)若TRDR超时前到达了NRDR个数据包,且这些数据包达到路径选择阈值,则认定TRDR超时,执行步骤3.3.6);
3.3.6)TRDR超时,关闭TRDR定时器,执行路径选择算法,选定1条或多条路径,并计算所选定路径的时延;
3.4)目的节点生成RDP包,执行下述步骤:
3.4.1)针对S到D的发送数据随机生成一个label ID;
3.4.2)基于选择的一条或多条路径反向发送RDP包,该包中包含源节点ID、目的节点ID、中间节点ID列表、序列号、QoS等级、label ID、路径时延;
3.5)收到RDP包的节点,首先判断其自身是否是源节点,如果是则执行步骤3.6);否则其为中间节点,执行下述步骤:
3.5.1)若该RDP包中的序列号节点小于自身记录的S到D序列号,则将该包丢弃,本流程结束;否则执行步骤3.5.2);
3.5.2)若该RDP包中的序列号节点大于本节点记录的S到D序列号,则更新S到D序列号,执行步骤3.5.3);否则执行步骤3.5.4);
3.5.3)删除本节点路由表中所有的S到D表项,执行步骤3.5.4);
3.5.4)增加新的S到D路由表项,表项内容包含源节点ID、目的节点ID、序列号、跳数、中间节点ID列表、QoS等级、时延和标签entry,其中entry为label ID,执行步骤3.5.5);
3.5.5)继续沿着RDP包中的反向路径传输RDP包;
3.6)源节点接收到RDP包,执行下述步骤:
3.6.1)若该TRDP已超时,则将该包丢弃,本流程结束;否则执行步骤3.6.2);
3.6.2)关闭TRDP定时器;若该RDP包中的序列号节点小于自身记录的S到D序列号,则将该包丢弃,本流程结束;否则执行步骤3.6.3);
3.6.3)增加S到D路由表项,表项内容包含源节点ID、目的节点ID、序列号、跳数、中间节点ID列表、QoS等级、时延和标签entry,其中entry为label ID,执行步骤3.6.4);
3.6.3)本次路由发现过程结束;
4)快速路由,步骤如下:
4.1)当源节点S需要发送数据包到目的节点D时,查询其路由表项,根据多路径或多目的路由策略选择路径,而后沿着每一条路径发送数据包,数据包中包含MAC包头、labelID、源地址、目的地址、QoS、新流业务量、新流预留带宽、数据载荷,其中至少包括MAC包头、label ID、数据载荷;所述的MAC包头包括链路发送节点ID、链路接收节点ID、数据包类型、是否最后一个包、是否新流首包;
4.2)中间节点收到路由数据包后,执行下述步骤:
4.2.1)若不匹配MAC地址中的链路接收节点ID,则丢弃该数据包,流程结束;否则执行步骤4.2.2);
4.2.2)若MAC包头中是否最后一个包比特指示1,则剩余数据量清0,执行步骤4.2.4);否则,剩余数据流减去数据载荷大小,执行步骤4.2.3);
4.2.3)若MAC包头中是否新流比特指示1,则查询QoS域、新流业务量域和新流预留带宽,将其更新到路由表项对应的位置中,执行步骤4.2.4),并且从此刻起该节点的多址接入模块需要为该流预留带宽;否则,直接执行步骤4.2.4);
4.2.4)直接根据label查询到的下一跳ID,将该数据包转发出去,MAC包头仅需修改链路发送节点ID和链路接收节点ID。
本发明的有益效果是:由层二来负责路由转发功能,从而降低了包头开销;采用基于标签的固定前缀匹配规则,提升了转发效率;路由节点不需要解析路由包头,只需按照标签转发,从而精简了路由包头,降低了包头开销。
本发明中充分考虑了多路径中存在的时延和环路等问题,并增加了控制策略,其中步骤2.1和步骤2.3保证路由不会出现环路和混乱;步骤2.4和步骤2.5控制广播的数量。此外,目的节点只负责选路,不负责业务流分配,该分配由源节点统一完成。
附图说明
图1是本发明实施例的网络示意图。
具体实施方式
下面结合附图和实施例对本发明进一步说明,本发明包括但不仅限于下述实施例。
本发明中的每个节点都需要维护自身的本地路由表,表项内容包含源节点ID、目的节点ID、序列号(Seq)、跳数、中间节点ID列表、QoS(Quality of Service)等级和时延。路由表的中每一个路由表项都设定了一个生存周期TS,D(例如TS,D=180s),如果TS,D超时,则发送节点清除掉该路由表项。所有节点的本地路由表默认初始化为空,序列号为0。
本发明包括路由发现和快速路由两个部分。若源节点S需要向目的节点D发送数据,首先查找路由表中是否存在S->D(表示S到D,下同)的路由表项,如果S->D的路由表项存在,则进行快速路由过程;如果S->D的路由表项不存在或被清除,则需要进行路由发现过程建立路由表项。
路由发现过程的步骤如下:
步骤1.源节点S生成路由发现请求包(Route Discovery Request,RDR),在该请求包中包含源节点ID、目的节点ID、中间节点ID列表、QoS(Quality of Service)等级、序列号、发送时间。其中将源节点ID填写为自身ID、目的节点ID填写为数据接收方ID、中间节点ID列表初始化为源节点ID,跳数初始化为0,QoS等级填写为拟发数据包的QoS等级、序列号初始化为上一次本节点到目的节点D路由发现过程的序列号(初始值设为0)加1的值。之后,源节点将RDR包广播出去。同时设置路由发现应答请求包(route discovery response,RDP)等待定时器,定时时长TRDP。
步骤2.收到RDR包的节点,首先判断其自身是否是目的节点,如果是则执行步骤3;否则本节点为中间节点,执行下述步骤:
步骤2.1.若本地路由表中存在S->D的路由记录,则执行步骤2.2。否则执行步骤2.6。
步骤2.2.若该RDR包中的序列号小于本节点记录的S->D序列号,则将该包丢弃,本节点流程结束。否则执行步骤2.3。
步骤2.3.若该RDR包中的序列号大于本节点记录的S->D序列号,则更新S->D序列号,执行步骤2.6。否则执行步骤2.4。
步骤2.4.若该RDR包的“中间节点ID列表”域中包含自身,则将该包丢弃,本节点流程结束。否则执行步骤2.5。
步骤2.5.若该RDR包“中间节点ID列表”域的中间节点数量比本地S->D记录的最小中间节点数量超过允许的差值(例如),则将该包丢弃,本节点流程结束。否则执行步骤2.6。
步骤2.6.若该RDR包“中间节点ID列表”域的中间节点数量超过允许中间节点最大值(例如),则将该包丢弃,本节点流程结束。否则执行步骤2.7。
步骤2.7.将本节点ID添加到该RDR包的“中间节点ID列表”域中,RDR包中“跳数”加1,将RDR包广播,本节点流程结束。
步骤3.目的节点接收到RDR包,则执行下述步骤:
步骤3.1.若该RDR包中的序列号节点小于本节点记录的S->D序列号,则将该包丢弃,本流程结束。否则执行步骤3.2。
步骤3.2.若该RDR包中的序列号节点大于本节点记录的S->D序列号,则更新S->D序列号,执行步骤3.3。否则执行步骤3.4。
步骤3.3.开启RDR等待定时器,定时时长TRDR。
步骤3.4.若该RDR包在TRDR超时后到达,则将该包丢弃,本流程结束。否则执行步骤3.5。
步骤3.5.若TRDR超时前到达了NRDR个数据包(例如NRDR=3),且这些数据包达到路径选择阈值,则设定/认定TRDR超时,执行步骤3.6。
步骤3.6.TRDR超时,关闭TRDR定时器,执行路径选择算法,选定1条或多条路径,并计算所选定路径的时延。
步骤4.目的节点生成RDP包,具体执行下述步骤:
步骤4.1.针对该S->D的发送数据随机生成一个label ID,用于后续的快速路由,执行步骤4.2。
步骤4.2.基于选择的一条或多条路径(RDR包“中间节点ID列表”)反向发送RDP包,该包中包含源节点ID、目的节点ID、中间节点ID列表、序列号、QoS等级、label ID、路径时延。
步骤5.收到RDP包的节点,首先判断其自身是否是源节点,如果是则执行步骤6;否则其为中间节点,执行下述步骤:
步骤5.1.若该RDP包中的序列号节点小于自身记录的S->D序列号,则将该包丢弃,本流程结束。否则执行步骤5.2。
步骤5.2.若该RDP包中的序列号节点大于本节点记录的S->D序列号,则更新S->D序列号,执行步骤5.3。否则执行步骤5.4。
步骤5.3.删除本节点路由表中所有的S->D表项,执行步骤5.4。
步骤5.4.增加新的S->D路由表项,其中entry为label ID,表项内容包含源节点ID、目的节点ID、序列号、跳数,中间节点ID列表、QoS等级和时延(还有标签entry),执行步骤5.5。
步骤5.5.继续沿着RDP包中的反向路径传输RDP包。
步骤6.源节点接收到RDP包,则执行下述步骤:
步骤6.1.若该TRDP已超时,则将该包丢弃,本流程结束。否则执行步骤6.2。
步骤6.2.关闭TRDP定时器。若该RDP包中的序列号节点小于自身记录的S->D序列号,则将该包丢弃,本流程结束。否则执行步骤6.3。
步骤6.3.增加S->D路由表项,其中entry为label ID,表项内容包含源节点ID、目的节点ID、序列号、跳数,中间节点ID列表、QoS等级和时延,执行步骤6.4。
步骤6.4.本次路由发现过程结束。
快速路由过程的步骤如下:
当源节点S需要发送数据包到目的节点D时,查询其路由表项,根据多路径或多目的路由策略选择路径,而后沿着每一条路径发送数据包,数据包中包含MAC包头(链路发送节点ID、链路接收节点ID、数据包类型、是否最后一个包、是否新流首包)、label ID、源地址(可选)、目的地址(可选)、QoS(可选)、新流业务量(可选)、新流预留带宽(可选)、数据载荷。
步骤1.中间节点收到路由数据包后,执行下述步骤:
步骤1.1.若不匹配MAC地址中的链路接收节点ID,则丢弃该数据包,流程结束。否则执行步骤1.2。
步骤1.2.若MAC包头域中“是否最后一个包”比特指示1,则剩余数据量清0,执行步骤1.4。否则,剩余数据流减去数据载荷大小,执行步骤1.3。
步骤1.3.若MAC包头域中“是否新流”比特指示1,则查询QoS域、新流业务量域和新流预留带宽,将其更新到路由表项对应的位置中,执行ⅳ,并且从此刻起该节点的多址接入模块需要为该流预留带宽(值得注意的是,一个节点可能通过多个路由表支持一个流,这是因为采用多路径路由之后可能流经同样的节点,此时label不同,可作独立处理)。否则,直接执行步骤1.4。
步骤1.4.直接根据label查询到的下一跳ID(不需要解析路由包头,从而路由包头可以精简),将该数据包转发出去,MAC包头仅需修改链路发送节点ID和链路接收节点ID。
以图1中的网络为例,说明快速路由方法的实施步骤。在图1网络中节点1(源节点)需要向节点8(目的节点)发送数据,查询本地路由表(见表1-1),发现本地路由表中不存在1->8的路由表项,则需要进行路由发现过程。
表1-1发送节点(节点1)初始化路由表信息
label ID | 源节点 | 目的节点 | 序列号 | 跳数 | QoS | 路径 | 时延 |
0 | |||||||
0 |
路由发现:
步骤1:1号节点生成RDR包,初始化该RDR数据包中的相关信息,S(源节点ID):1;D(目的节点ID):8;路径R(中间节点ID列表):{1};跳数:0;序列号(Seq):1;Qos等级:2。之后,1号节点将RDR包广播出去,同时设置RDP(路由发现应答请求包)等待定时器,定时时长TRDP。
步骤2:2号节点收到1号广播的RDR包,判断发现自身不是目的节点,则自身为中间节点。
步骤2.1:2号节点的本地路由表中不存在S->D的路由记,执行步骤2.6。
步骤2.6:该RDR包“中间节点ID列表”为{1},“跳数”为0,中间节点数量为没有超过允许中间节点最大值执行步骤2.7。
步骤2.7:将本节点ID添加到该RDR包“中间节点ID列表”中,为{1,2};RDR包中“跳数”由0加为1。将RDR包广播,本节点流程结束。
1、3、4、6号节点收到2号节点的广播RDR包,发现自身不是目的节点8,则自身为中间节点,继续步骤2:
1号节点:提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1;检查发现RDR包“中间节点ID列表”域{1,2}包含自身节点,则丢弃该包,本节点流程结束。
3号节点:提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(0)对比,1大于0,则更新自身记录的序列号Seq为1;将3号节点写入RDR中间节点列表为{1,2,3};跳数加为2。广播RDR,本节点流程结束。
4号节点:提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(0)对比,1大于0,则更新自身记录的序列号Seq为1;将4号节点写入RDR中间节点列表为{1,2,4};跳数加为2。广播RDR,本节点流程结束。
6号节点:提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(0)对比,1大于0,则更新自身记录的序列号Seq为1;将6号节点写入RDR中间节点列表为{1,2,6};跳数加为2。广播RDR,本节点流程结束。
2号节点:收到3、4、6号节点广播回传的RDR包,提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1;检查发现RDR包“中间节点ID列表”域包含自身节点,则丢弃该包,本节点流程结束。
5、7号节点收到4号节点的广播RDR包,发现自身不是目的节点8,则自身为中间节点,继续步骤2:
5号节点:提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(0)对比,1大于0,则更新自身记录的序列号Seq为1;将5号节点写入RDR中间节点列表为{1,2,4,5};跳数加为3。广播RDR,本节点流程结束。
7号节点:提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(0)对比,1大于0,则更新自身记录的序列号Seq为1;将4号节点写入RDR中间节点列表为{1,2,4,7};跳数加为3。广播RDR,本节点流程结束。
4号节点:收到5、7号节点广播回传的RDR包,发现RDR包“中间节点ID列表”域包含自身节点,则丢弃该包,本节点流程结束。
步骤3:目的节点8号节点收到4号节点和6号节点的广播RDR包。
8号节点:收到6号节点的RDR包,检查发现自己是目的节点;提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(0)对比,1大于0,则更新自身记录的序列号Seq为1;将8号节点写入RDR中间节点列表为{1,2,6,8};跳数加为3。开启RDR等待定时器,定时时长TRDR。
8号节点:收到7号节点的RDR包,检查发现自己是目的节点;提取RDR包中的Seq(1)与自身记录的1->8序列号Seq(0)对比,1大于0,则更新自身记录的序列号Seq为1;将8号节点写入RDR中间节点列表为{1,2,4,7,8};跳数加为4。开启RDR等待定时器,定时时长TRDR。
步骤4:8号目的节点在步骤3结束时收到2个RDR包。
步骤4.1:8号节点随机生成2个label ID:3075和2016,执行步骤4.2。
步骤4.2:8号节点生成两个RDP包。第一个RDP包中包含:label ID(3075)、源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,6,8}、跳数(3)、QoS等级(2)、序列号Seq(1)和路径时延(xx);第二个RDP包中包含:label ID(2016)、源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,4,7,8}、跳数(4)、QoS等级(2)、序列号Seq(1)和路径时延(xx)。然后按照路径发送RDP包。
步骤5:6号、7号节点收到8号节点反向发送的RDP包,发现自身不是源节点,则自身为中间节点,执行以下步骤:
6号节点:提取RDP包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1,则增加新的1->8路由表项,其中entry为3075,表项内容包含:源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,6,8}、跳数(3)、QoS等级(2)、序列号Seq(1)和路径时延(xx);继续反向发送RDP包,本节点流程结束。
7号节点:提取RDP包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1,则增加新的1->8路由表项,其中entry为2016,表项内容包含:源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,4,7,8}、跳数(4)、QoS等级(2)、序列号Seq(1)和路径时延(xx);继续反向发送RDP包,本节点流程结束。
2号节点收到8号节点反向发送的RDP包label ID(3075),发现自身不是源节点,则自身为中间节点,继续执行步骤5:
2号节点:提取RDP包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1,则增加新的1->8路由表项,其中entry为3075,表项内容包含:源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,6,8}、跳数(3)、QoS等级(2)、序列号Seq(1)和路径时延(xx);继续反向发送RDP包,本节点流程结束。
4、2号节点依次收到8号节点反向发送的RDP包label ID(2016),发现自身不是源节点,则自身为中间节点,继续执行步骤5:
4号节点:提取RDP包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1,则增加新的1->8路由表项,其中entry为2016,表项内容包含:源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,4,7,8}、跳数(4)、QoS等级(2)、序列号Seq(1)和路径时延(xx);继续反向发送RDP包,本节点流程结束。
2号节点:提取RDP包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1,则增加新的1->8路由表项,其中entry为2016,表项内容包含:源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,4,7,8}、跳数(4)、QoS等级(2)、序列号Seq(1)和路径时延(xx);继续反向发送RDP包,本节点流程结束。
步骤6:1号节点收到2个8号节点反向发送的RDP包,发现自身是源节点,执行以下步骤:
1号节点:提取RDP包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1,则增加新的1->8路由表项,其中entry为3075,表项内容包含:源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,6,8}、跳数(3)、QoS等级(2)、序列号Seq(1)和路径时延(xx)。
1号节点:提取RDP包中的Seq(1)与自身记录的1->8序列号Seq(1)对比,1等于1,则增加新的1->8路由表项,其中entry为2016,表项内容包含:源节点ID(1)、目的节点ID(8)、中间节点ID列表{1,2,4,7,8}、跳数(4)、QoS等级(2)、序列号Seq(1)和路径时延(xx)。
本次路由发现过程结束,路由表的信息如表1-2所示。
表1-2节点路由发现后的路由表信息
label ID | 源节点 | 目的节点 | 序列号 | 跳数 | QoS | 路径 | 时延 |
3075 | 1 | 8 | 1 | 3 | 2 | {1,2,6,8} | xx |
2016 | 1 | 8 | 1 | 4 | 2 | {1,2,4,7,8} | xx |
本发明的的路由协议由层二来负责路由转发功能,从而降低了包头开销。
本发明的路由协议采用基于标签的固定前缀匹配规则,提升了转发效率。
本发明的路由协议中路由节点只需按照标签转发,与路径不完全绑定有利于路由的灵活性。
Claims (1)
1.一种基于标签的层二多路径快速路由方法,其特征在于包括下述步骤:
1)每个节点维护自身的本地路由表,表项内容包含源节点ID、目的节点ID、序列号、跳数、中间节点ID列表、QoS等级和时延;每一个路由表项都设定了一个生存周期TS,D,如果TS,D超时,则发送节点清除掉该路由表项;所有节点的本地路由表默认初始化为空,序列号为0;
2)若源节点S需要向目的节点D发送数据,查找路由表中是否存在S到D的路由表项,如果S到D的路由表项存在,则进入步骤4);如果不存在或被清除,则进入步骤3);
3)进行路由发现,建立路由表项,步骤如下:
3.1)源节点S生成路由发现请求包RDR,在该请求包中包含源节点ID、目的节点ID、中间节点ID列表、QoS等级、序列号、发送时间;其中源节点ID填写为自身ID,目的节点ID填写为数据接收方ID,中间节点ID列表初始化为源节点ID,跳数初始化为0,QoS等级填写为拟发数据包的QoS等级,序列号初始化为上一次本节点到目的节点D路由发现过程的序列号加1的值,上一次本节点到目的节点D路由发现过程序列号的初始值为0;之后,源节点将RDR包广播出去,同时设置路由发现应答请求包RDP等待定时器,定时时长TRDP;
3.2)收到RDR包的节点,首先判断其自身是否是目的节点,如果是则执行步骤3.3);否则本节点为中间节点,执行下述步骤:
3.2.1)若本地路由表中存在S到D的路由记录,则执行步骤3.2.2),否则执行步骤3.2.6);
3.2.2)若该RDR包中的序列号小于本节点记录的S到D序列号,则将该包丢弃,本节点流程结束;否则执行步骤3.2.3);
3.2.3)若该RDR包中的序列号大于本节点记录的S到D序列号,则更新S到D序列号,执行步骤3.2.6),否则执行步骤3.2.4);
3.2.4)若该RDR包的中间节点ID列表包含自身,则将该包丢弃,本节点流程结束;否则执行步骤3.2.5);
3.2.5)若该RDR包中间节点ID列表的中间节点数量比本地S到D记录的最小中间节点数量超过允许的差值则将该包丢弃,本节点流程结束;否则执行步骤3.2.6);
3.2.6)若该RDR包中间节点ID列表的中间节点数量超过允许中间节点最大值则将该包丢弃,本节点流程结束;否则执行步骤3.2.7);
3.2.7)将本节点ID添加到该RDR包的中间节点ID列表中,RDR包中跳数加1,将RDR包广播,本节点流程结束;
3.3)目的节点接收到RDR包,则执行下述步骤:
3.3.1)若该RDR包中的序列号节点小于本节点记录的S到D序列号,则将该包丢弃,本流程结束;否则执行步骤3.3.2);
3.3.2)若该RDR包中的序列号节点大于本节点记录的S到D序列号,则更新S到D序列号,执行步骤3.3.3);否则执行步骤3.3.4);
3.3.3)开启RDR等待定时器,定时时长TRDR;
3.3.4)若该RDR包在TRDR超时后到达,则将该包丢弃,本流程结束;否则执行步骤3.3.5);
3.3.5)若TRDR超时前到达了NRDR个数据包,且这些数据包达到路径选择阈值,则认定TRDR超时,执行步骤3.3.6);
3.3.6)TRDR超时,关闭TRDR定时器,执行路径选择算法,选定1条或多条路径,并计算所选定路径的时延;
3.4)目的节点生成RDP包,执行下述步骤:
3.4.1)针对S到D的发送数据随机生成一个label ID;
3.4.2)基于选择的一条或多条路径反向发送RDP包,该包中包含源节点ID、目的节点ID、中间节点ID列表、序列号、QoS等级、label ID、路径时延;
3.5)收到RDP包的节点,首先判断其自身是否是源节点,如果是则执行步骤3.6);否则其为中间节点,执行下述步骤:
3.5.1)若该RDP包中的序列号节点小于自身记录的S到D序列号,则将该包丢弃,本流程结束;否则执行步骤3.5.2);
3.5.2)若该RDP包中的序列号节点大于本节点记录的S到D序列号,则更新S到D序列号,执行步骤3.5.3);否则执行步骤3.5.4);
3.5.3)删除本节点路由表中所有的S到D表项,执行步骤3.5.4);
3.5.4)增加新的S到D路由表项,表项内容包含源节点ID、目的节点ID、序列号、跳数、中间节点ID列表、QoS等级、时延和标签entry,其中entry为label ID,执行步骤3.5.5);
3.5.5)继续沿着RDP包中的反向路径传输RDP包;
3.6)源节点接收到RDP包,执行下述步骤:
3.6.1)若该TRDP已超时,则将该包丢弃,本流程结束;否则执行步骤3.6.2);
3.6.2)关闭TRDP定时器;若该RDP包中的序列号节点小于自身记录的S到D序列号,则将该包丢弃,本流程结束;否则执行步骤3.6.3);
3.6.3)增加S到D路由表项,表项内容包含源节点ID、目的节点ID、序列号、跳数、中间节点ID列表、QoS等级、时延和标签entry,其中entry为label ID,执行步骤3.6.4);
3.6.3)本次路由发现过程结束;
4)快速路由,步骤如下:
4.1)当源节点S需要发送数据包到目的节点D时,查询其路由表项,根据多路径或多目的路由策略选择路径,而后沿着每一条路径发送数据包,数据包中至少包括MAC包头、labelID、数据载荷;所述的MAC包头包括链路发送节点ID、链路接收节点ID、数据包类型、是否最后一个包、是否新流首包;
4.2)中间节点收到路由数据包后,执行下述步骤:
4.2.1)若不匹配MAC地址中的链路接收节点ID,则丢弃该数据包,流程结束;否则执行步骤4.2.2);
4.2.2)若MAC包头中是否最后一个包比特指示1,则剩余数据量清0,执行步骤4.2.4);否则,剩余数据流减去数据载荷大小,执行步骤4.2.3);
4.2.3)若MAC包头中标志“是否新流首包”的比特指示1,则查询QoS域、新流业务量域和新流预留带宽,将其更新到路由表项对应的位置中,执行步骤4.2.4),并且从此刻起该节点的多址接入模块需要为该流预留带宽;否则,直接执行步骤4.2.4);
4.2.4)直接根据label查询到的下一跳ID,将该数据包转发出去,MAC包头仅需修改链路发送节点ID和链路接收节点ID。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611173869.1A CN106789649B (zh) | 2016-12-19 | 2016-12-19 | 一种基于标签的层二多路径快速路由方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611173869.1A CN106789649B (zh) | 2016-12-19 | 2016-12-19 | 一种基于标签的层二多路径快速路由方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106789649A CN106789649A (zh) | 2017-05-31 |
CN106789649B true CN106789649B (zh) | 2019-12-31 |
Family
ID=58889680
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611173869.1A Active CN106789649B (zh) | 2016-12-19 | 2016-12-19 | 一种基于标签的层二多路径快速路由方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106789649B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107659502B (zh) * | 2017-11-01 | 2020-06-02 | 上海海洋大学 | 一种基于能量有效性与链路可靠性的按需路由协议算法 |
US10587517B2 (en) * | 2017-11-30 | 2020-03-10 | Juniper Networks, Inc. | Optimizing fabric path forwarding for virtual nodes within an electronic device |
CN109039912B (zh) * | 2018-08-13 | 2020-10-27 | 常熟理工学院 | 一种基于多路径的软件定义网络实现方法 |
CN112650705A (zh) * | 2020-12-31 | 2021-04-13 | 清华大学 | 路由控制方法及人工智能处理器 |
CN113347099A (zh) * | 2021-05-31 | 2021-09-03 | 中国工商银行股份有限公司 | 一种分布式网络流量转发方法、装置、设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1531284A (zh) * | 2003-02-20 | 2004-09-22 | ���Ͽع�����˾ | 网络基础结构的保护及控制信息的安全通信 |
CN1700676A (zh) * | 2005-06-03 | 2005-11-23 | 港湾网络有限公司 | 以太网交换机跨虚拟局域网的二层组播数据传输方法 |
WO2007128399A1 (en) * | 2006-05-04 | 2007-11-15 | Nokia Siemens Networks Gmbh & Co. Kg | Automatic packet protection forwarding to an mpls network by a dual-homed ethernet bridge |
CN101848155A (zh) * | 2010-05-12 | 2010-09-29 | 北京星网锐捷网络技术有限公司 | 标签交换路径的检测方法及标签交换路由器 |
CN103648144A (zh) * | 2013-12-13 | 2014-03-19 | 重庆邮电大学 | 一种无线多跳网络中带多QoS约束的多路径生成方法 |
US8948179B2 (en) * | 2012-08-21 | 2015-02-03 | Futurewei Technologies, Inc. | Method of multiprotocol label switching encapsulation for united router farm forwarding |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8098656B2 (en) * | 2009-06-26 | 2012-01-17 | Avaya, Inc. | Method and apparatus for implementing L2 VPNs on an IP network |
-
2016
- 2016-12-19 CN CN201611173869.1A patent/CN106789649B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1531284A (zh) * | 2003-02-20 | 2004-09-22 | ���Ͽع�����˾ | 网络基础结构的保护及控制信息的安全通信 |
CN1700676A (zh) * | 2005-06-03 | 2005-11-23 | 港湾网络有限公司 | 以太网交换机跨虚拟局域网的二层组播数据传输方法 |
WO2007128399A1 (en) * | 2006-05-04 | 2007-11-15 | Nokia Siemens Networks Gmbh & Co. Kg | Automatic packet protection forwarding to an mpls network by a dual-homed ethernet bridge |
CN101848155A (zh) * | 2010-05-12 | 2010-09-29 | 北京星网锐捷网络技术有限公司 | 标签交换路径的检测方法及标签交换路由器 |
US8948179B2 (en) * | 2012-08-21 | 2015-02-03 | Futurewei Technologies, Inc. | Method of multiprotocol label switching encapsulation for united router farm forwarding |
CN103648144A (zh) * | 2013-12-13 | 2014-03-19 | 重庆邮电大学 | 一种无线多跳网络中带多QoS约束的多路径生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106789649A (zh) | 2017-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106789649B (zh) | 一种基于标签的层二多路径快速路由方法 | |
US7567547B2 (en) | Method and system for loop-free ad-hoc routing | |
US8451807B2 (en) | Configuration aware packet routing in an ad-hoc network | |
CN110149274B (zh) | 基于位置信息和内容推送的命名数据网络综合路由方法 | |
CN101674630B (zh) | 一种可感知拥塞的跨层路由实现方法 | |
US20070086358A1 (en) | Directed acyclic graph computation by orienting shortest path links and alternate path links obtained from shortest path computation | |
CN106922008B (zh) | 一种基于RPL路由协议的IPv6无线传感网多路径传输方法 | |
RU2012116597A (ru) | Способ и устройство для обмена маршрутной информацией и для установления связи через множество сегментов сети | |
CN107294852B (zh) | 一种使用拓扑分散短路径集的网络路由方法 | |
US20080151793A1 (en) | Voice-over-internet protocol intra-vehicle communications | |
CN101827415B (zh) | 一种无线网格网络中的信道分配方法和系统 | |
CN111954281A (zh) | 一种基于无线紫外光通信的蜂群无人机编队分簇路由方法 | |
CN106850436B (zh) | 基于虚拟势能场的矿井混合无线mesh网络路由方法 | |
EP3200404A1 (en) | Content-centric network on-demand distance vector route method | |
CN110691379A (zh) | 一种适于无线自组网的主动式路由通信方法 | |
CN103023773A (zh) | 多拓扑网络中转发报文的方法、装置和系统 | |
CN101527645A (zh) | 网络拓扑信息收集方法、系统及相关设备 | |
CN102752210B (zh) | 一种局域网间传输报文的方法和系统 | |
CN101106520A (zh) | 基于aodv的数根节点独立的多路由技术 | |
Nishitha et al. | Performance evaluation of anthocnet routing algorithm in ad hoc networks | |
Liu et al. | A hybrid relay node selection strategy for VANET routing | |
US9226219B2 (en) | System and method for route learning and auto-configuration | |
CN106658636B (zh) | 一种基于剩余带宽的毫米波网络多路径回传路由方法 | |
CN104540240A (zh) | 无线网络支持车载客户机的接入方法 | |
Rong et al. | LSMR: A label switching multipath routing protocol for ad hoc networks |
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 |