发明内容
有鉴于此,本发明的主要目的在于提供一种实现多路径传输的方法,在不要求所述的多条路径具有相同的传输代价的前提下,实现流量分担、降低拥塞的目的。
有鉴于此,本发明的主要目的在于提供一种实现多路径传输的装置,在发送报文时对多条发送路径进行选择,从而实现流量分担、降低拥塞的目的。
有鉴于此,本发明的主要目的在于提供一种实现多路径传输的系统,在不要求所述的多条路径具有相同的传输代价的前提下,实现流量分担、降低拥塞的目的。
为了达到上述目的,本发明的技术方案是这样实现的:
一种实现多路径传输的方法,设置报文优先级与路径传输代价的对应关系,以及路径传输代价与发送路径的对应关系,该方法包括:
A、发送端根据待发送报文的优先级,确定发送路径;
B、发送端将待发送的报文通过步骤A所确定的发送路径进行发送。
其中,所述设置报文优先级与发送路径对应关系为:
设置报文优先级与路径传输代价的对应关系,以及路径传输代价与发送路径的对应关系;
步骤A所述根据待发送报文的优先级,确定发送路径包括:
A1、根据待发送报文的优先级,确定发送路径的传输代价;
A2、根据步骤A1所确定的传输代价,确定发送路径。
其中,所述设置报文优先级和路径传输代价的对应关系为:
设置表示报文优先级和路径传输代价对应关系的路径查询表;
或
设置由报文优先级计算路径传输代价的计算公式。
其中,在步骤A之前进一步包括:
判断待发送的报文是否携带了优先级信息,如果是,则执行步骤A,否则将所述待发送报文作为具有最低优先级的报文,然后执行步骤A。
其中,所述路径传输代价与发送路径的对应关系为:
一个路径传输代价对应至少一条发送路径;
则步骤A2所述根据步骤A1所确定的传输代价,确定发送路径包括:
A21、判断对应于步骤A1所确定的传输代价的发送路径是否超过一条,如果超过则执行步骤A22,否则执行步骤B;
A22、选择具有相同传输代价的多条路径中的一条作为发送路径,执行步骤B。
其中,步骤A22所述选择具有相同传输代价的多条路径中的一条作为发送路径为:
从具有相同传输代价的多条路径中随机选择一条作为发送路径;
或
按照轮换的办法从具有相同传输代价的多条路径中选择一条作为发送路径;
或
按照路径的带宽比例从具有相同传输代价的多条路径中进行选择。
其中,步骤B进一步包括:
按照发送顺序为待发送报文分配序列号,并将序列号携带在待发送报文中;
在接收端设置缓冲区,在步骤B之后进一步包括:
C、接收端在发现接收到的报文的序列号不连续后,将接收到的报文放入缓冲区,并通知发送端再次发送能够使序列号连续的报文。
其中,记录已处理序列号,并且设定等待时长,步骤C所述接收端在发现接收到的报文的序列号不连续后,通知发送端再次发送能够使序列号连续的报文为:
C1、接收端在根据已处理序列号发现接收到的报文的序列号不连续时,开始计时;
C2、接收端判断是否到达所述等待时长,如果到达,则执行步骤C4,否则执行步骤C3;
C3、接收端判断是否收到能够使序列号连续的报文,如果收到,则结束当前流程,否则返回执行步骤C2;
C4、接收端通知发送端,再次发送能够使序列号连续的报文。
其中,记录已处理序列号,步骤C之前进一步包括:
接收端根据已处理序列号和接收到的报文的序列号,判断接收到的报文是否为重复接收,如果是则丢弃所述接收到的报文,否则执行步骤C。
一种实现多路径传输的发送端装置,包括用于报文发送的通信接口,该装置进一步包括:
路径选择模块:用于结合数据库所存储的报文优先级与路径传输代价的对应关系,以及路径传输代价与发送路径的对应关系,根据待发送的接入网报文的优先级确定发送路径的传输代价,根据确定的传输代价确定发送该报文的发送路径,然后将得到的发送路径信息传送给报文生成模块;
报文生成模块:用于根据路径选择模块发送的路径信息生成待发送的骨干网报文,并将待发送的骨干网报文传送给通信接口发送;
数据库:用于存储路径选择模块确定传送路径所需的报文优先级与路径传输代价的对应关系,以及路径传输代价与发送路径的对应关系。
其中,该装置进一步包括:
序列号生成模块:用于按照报文发送的顺序生成序列号传送给报文生成模块;
所述报文生成模块进一步用于:
将序列号生成模块传送的序列号携带在待发送的骨干网报文中。
一种实现多路径传输的系统,包括具有通信接口的发送端装置和接收端装置,以及在发送端装置和接收端装置间建立了超过一条发送路径的通信网络,所述发射端装置进一步包括:
路径选择模块:用于结合数据库所存储的报文优先级与路径传输代价的对应关系,以及路径传输代价与发送路径的对应关系,根据待发送的接入网报文的优先级确定发送路径的传输代价,根据确定的传输代价确定发送该报文的发送路径,然后将得到的发送路径信息传送给报文生成模块;
报文生成模块:用于根据路径选择模块发送的路径信息生成待发送的骨干网报文,并将待发送的骨干网报文传送给通信接口发送;
数据库:用于存储路径选择模块确定传送路径所需的报文优先级与路径传输代价的对应关系,以及路径传输代价与发送路径的对应关系。
其中,所述发送端装置进一步包括:
序列号生成模块:用于按照报文发送的顺序生成序列号传送给报文生成模块;
所述报文生成模块进一步用于:
将序列号生成模块传送的序列号携带在待发送的骨干网报文中;
所述接收端装置进一步包括:
序列号分析模块:用于根据通信接口所接收到的骨干网报文中携带的序列号,判断接收到的骨干网报文的序列号是否连续,并在接收到的骨干网报文的序列号不连续时,将接收到的骨干网报文放入缓冲区,并且通过通信接口通知发送端发送能够使序列号连续的骨干网报文;
缓冲区:用于存放所述序列号不连续的骨干网报文,直到收到能够使序列号连续的骨干网报文。
采用本发明所提供的技术方案,在网络内部预先建立网络边缘节点之间的路径,并且在边缘节点上记录这些路径的传输代价。当网络边缘节点收到由接入网节点发来的报文时,根据报文优先级,选择具有对应传输代价的路径,将报文发送到网络内部的转发节点。这样,具有不同优先级的报文,被分配到了具有不同传输代价的路径上,因此可以有效的进行流量分担,达到降低拥塞的目的。并且,由于路径的选择是由网络的边缘节点完成的,在网络内部,所有的转发节点都按照现有的协议转发报文,因此本发明所提供的技术方案还具有与现有协议和设备兼容的特点。
具体实施方式
本发明的核心思想是:预先建立两点间的多条路径,并记录各条路径的传输代价,当需要从一点向另一点发送报文时,根据报文携带的优先级信息,为报文分配传输路径。
为使本发明的目的、技术方案和优点更加清楚,下面结合附图及具体实施例对本发明作进一步地详细描述。
请参考图1,图1是本发明所采用的网络模型。
在图1中,节点A和节点E是网络的边缘节点,节点B、节点C和节点D是网络内部的转发节点,节点a和节点e分别是连接到节点A和节点E的外部节点。通常在骨干网中部署本方法,即所述网络为骨干网。这时节点A和节点E为骨干网的边缘节点,节点B、节点C和节点D是骨干网内部的转发节点,节点a和节点e分别是连接到节点A和节点E的接入网节点例如接入网中的交换设备,或用户网节点例如终端设备。在大多数情况下,用户网节点不直接连接到骨干网边缘节点,而是先连接到接入网节点,然后接入网节点再连接到骨干网边缘节点。因此,在后面的描述中,以节点a和节点e均为接入网节点为例说明本发明的技术方案。
在图1中,假设从节点A到节点E一共有四条路径:路径一包括节点A、节点B和节点E;路径二包括节点A、节点B、节点C、节点D和节点E;路径三包括节点A、节点C和节点E;路径四包括节点A、节点C、节点D和节点E。对于每条路径,可以将路径上的节点数近似的看作该路径的传输代价,则路径一的传输代价是3,路径二的传输代价是5,路径三的传输代价是3,路径四的传输代价是4。
在实际应用中,还可以采用转发节点数以外的其他标准来确定每条路径的传输代价,所述其他标准可以是路径的带宽、路径的平均时延或者路径时延的抖动方差等等。对于某些特定的标准,由于传输代价只是表示相对的等级,因此具有相同传输代价的多条路径,可能是完全等价的路径,也可能是性能相近的路径。例如,假设以路径的平均时延作为传输代价的标准,那么平均时延在10ms到20ms的路径,其传输代价为1;平均时延在20ms到30ms的路径,其传输代价为2;平均时延在30ms到40ms的路径,其传输代价为3,依次类推。
在节点A上,首先按照现有技术设置有转发表,用以表示目的节点和发送路径之间的关系。另外,由于骨干网的边缘节点通常通过不同的端口连接到骨干网内不同的转发节点,也就是说,不同的发送路径可能对应不同的发送端口,因此转发表进一步表示发送路径与发送端口之间的对应关系。一般来说,可以用路径标识来唯一表示一个路径。因此,节点A的转发表中,与目的节点E对应的一部分内容如表一所示:
目的边缘节点 |
路径标识 |
发送端口号 |
E |
路径一 |
端口1 |
E |
路径三 |
端口2 |
E |
路径四 |
端口2 |
E |
路径二 |
端口1 |
表一
需要说明的是,在本发明中,所述转发表可以没有目的边缘节点这一数据域,但是为了与现有的协议兼容,本发明在转发表中仍然保留了目的边缘节点这一数据域。
为了实现本发明,节点A上进一步设置有路径查询表,用以表示路径与传输代价的对应关系。在这种情况下,节点A的路径查询表中,与目的节点E对应的一部分内容如表二所示。
目的边缘节点 |
路径标识 |
传输代价 |
E |
路径一 |
3 |
E |
路径三 |
3 |
E |
路径四 |
4 |
E |
路径二 |
5 |
表二
表二所示的仅仅是节点A上以节点E为目的节点的路径查询表。对于不同的目的节点,对应于不同的路径查询表。
作为一种替代方案,也可以用一个数据域同时表示路径标识和传输代价。例如,现有的路径标识是用12位二进制数表示的,如果总的路径数目小于256,则实际上只用到所述12位二进制数中的低8位作为路径标识。这时可以用所述12位二进制数的高4位表示传输代价。在这种情况下,所述路径查询表和转发表可以合在一起,如表三所示:
目的边缘节点 |
路径标识高4位 |
路径标识低8位 |
发送端口 |
E |
3 |
路径一 |
端口1 |
E |
3 |
路径三 |
端口2 |
E |
4 |
路径四 |
端口2 |
E |
5 |
路径二 |
端口1 |
表三
为了实现本发明,在节点A上,还设置有优先级查询表,用以表示报文优先级与传输代价的对应关系。总的原则是,优先级越高的报文,应该通过传输代价越小的路径进行传输。假设优先级数值越小则优先级越高,那么所述优先级查询表的一个例子如表四所示。
目的节点 |
优先级 |
传输代价 |
E |
1 |
3 |
E |
2 |
4 |
E |
3 |
5 |
表四
表四所示的是节点A上以节点E为目的节点的优先级查询表。不同的目的节点,可以对应于不同的优先级查询表,即采用不同的报文优先级与路径传输代价的对应关系,当然也可以对应相同的优先级查询表。
在上述网络模型中,当节点a需要向节点e发送报文时,首先是按照接入网报文的格式将报文发送给节点A,节点A在接收到所述接入网报文后,按照如图2所示的流程进行处理。请参考图2,图2是本发明提供的实现多路径传输的方法在发送端的处理流程图。
步骤U01:骨干网的入边缘节点接收由接入网节点发送的接入网报文,确定骨干网的出边缘节点。
这里,所述骨干网的入边缘节点就是节点A。所述接入网报文包括源接入网节点a地址、目的接入网节点e地址,节点A根据目的接入网节点e地址判断出骨干网的出边缘节点是节点E。
步骤U02:生成序列号。
如上所述,同一传输代价可能对应多条路径,这样,由于从节点a发往节点e的前后报文有可能通过不同的路径进行传送,因此出边缘节点E有可能先收到在入边缘节点A后发送的骨干网报文。为了防止在接收端出现这种错序情况,在骨干网报文中封装一个序列号,用来表示节点A发送骨干网报文的顺序。
当然,如果限定传输代价与发送路径是一一对应的关系,那么由于在从节点a到节点e的一次完整的数据传输过程中,前后报文的优先级通常是一样的,这样前后报文就会通过同一条路径进行传送,就不会出现错序情况,因此也就无须设置序列号。
步骤U03:判断所收到的接入网报文是否携带了优先级信息,如果是则执行步骤U05,否则执行步骤U04。
步骤U04:将接入网报文的优先级设置为最低优先级。
步骤U05:根据接入网报文的优先级,以及优先级查询表,确定对应的传输代价。
假设所述接入网报文携带的优先级信息是1,则节点A根据表四所示的优先级查询表,可以得到对应的传输代价为3,也就是说要采用骨干网中传输代价为3的路径传送此报文。
作为一种替代方案,接入网节点A上也可以不设置所述优先级查询表。而是根据预先设定的公式,从接入网报文携带的报文优先级直接计算对应的传输代价。例如,假设从入边缘节点A到出边缘节点E的路径传输代价为0、1、2、……、m-1共m级,而接入网报文优先级为0、1、2、……、n-1共n级,那么优先级为k的接入网报文对应的传输代价可以为k乘以m后被n除的商。
步骤U06:根据路径查询表判断具有所确定的传输代价的路径是否超过一条,如果是则执行步骤U07,否则执行步骤U08。
步骤U07:选择所述具有相同传输代价的多条路径中的一条作为传送路径。
从如表二所示的路径查询表可以看出,传输代价为3的路径有两条,分别是路径一和路径三,因此节点A需要从路径一和路径三中选择一条作为实际采用的传送路径。选择的方法可以是随机选择,也可以是按照轮换的办法进行选择。当然,也可以根据路径的其他性能指标进行选择。
例如,假设以路径所包括的节点数作为传输代价,而对应于某一节点数X,有三条路径,分别为路径甲、路径乙和路径丙。对于轮换选择,可以将步骤U02中所分配的序列号除以3,余数是0的报文采用路径甲、余数是1的报文采用路径乙,余数是2的报文采用路径丙。
如果进一步知道路径甲、路径乙和路径丙的带宽比为3∶3∶4,那么则按照3∶3∶4的比例从所述三条路径中进行选择,也就是说在连续的10个对应于所述节点数X的骨干网报文中,有3个通过路径甲发送,有3个通过路径乙发送,有4个通过路径丙发送。这时候可以将步骤U02中所分配的序列号除以10,余数是0、3、6的报文采用路径甲、余数是1、4、7的报文采用路径乙,余数是2、5、8、9的报文采用路径丙。这样做可以使得各条路径的消耗带宽更加均衡。
步骤U08:将接入网报文、路径标识和序列号一起封装在骨干网报文中,并将骨干网报文发送到传送路径上。
假设节点A在步骤U06中选定发送路径为路径三,则在步骤U08中节点A进一步根据如表一所示的转发表确定发送端口为端口2,然后将骨干网报文从端口2发送给图1中的节点C,骨干网还携带步骤U07所确定的路径标识供节点C作为转发的依据。这样,节点A就实现了根据报文的优先级,选择通向骨干网出边缘节点的多条路径中的一条来传送报文。由于骨干网内部的路径是预先建立好的,因此报文的后续处理就无需节点A的参与了。
根据上述步骤进行处理的节点A,如果发现路径的传输代价变化,例如转发节点数增加,则修改所述路径查询表;如果发现路径查询表中记录的路径失效,则直接从所述路径查询表中删除无效路径。当然,为了保持网络的稳定性,可以设置一个修改所述路径查询表的最小时间间隔。
对于发生路径拥塞的情况,那么节点A在某条路径上收到拥塞报警,则临时将本应该通过发生拥塞的路径发送的报文中的一部分,调整到除发生拥塞的路径以外的其他路径发送,所述其他路径可以是与发生拥塞的路径具有相同传输代价的路径,也可以是与发生拥塞的路径具有不同传输代价的路径。
在骨干网的出边缘节点,在收到骨干网报文后,如果骨干网报文所携带的序列号连续,则依次对骨干网报文进行解封装,还原为接入网报文,然后根据接入网报文携带的目的接入网节点地址转发接入网报文。对于序列号不连续的情况,则认为出现了错序,将收到的骨干网报文放入缓冲区,然后等待一段时间后再次检查是否收到了能够使序列号重新连续的骨干网报文;如果等待一定的时间后错序仍未消除,即未收到所述能够使序列号重新连续的骨干网报文,则向骨干网的入边缘节点发出消息,要求重发所述能够使序列号重新连续的骨干网报文。具体的过程请参考图3,图3是本发明提供的实现多路径传输的方法在接收端的处理流程图。
步骤V01:骨干网的出边缘节点接收骨干网报文。
步骤V02:判断所收到的骨干网报文的序列号是否为已处理序列号的下一个序列号,如果是则执行步骤V08,否则执行步骤V03。
所述已处理序列号由出边缘节点自身保存,用于表示已经处理完毕的骨干网报文中,最后一个被处理的骨干网报文的序列号。这里的处理指的是解封装为接入网报文,并根据接入网报文的目的接入网节点地址转发到接入网节点。
步骤V03:根据收到的骨干网报文序列号,将骨干网报文放入缓冲区。
如果接收到的骨干网报文的序列号不是已处理序列号的下一个序列号,也就是接收到的骨干网报文的序列号不连续,则认为接收到的骨干网报文出现了错序,需要放入缓冲区中等待直到错序消除。
骨干网报文在被放入缓冲区时,是按照所述序列号的顺序被放入的。例如,假设当前收到的骨干网报文的序列号为233,缓冲区中已经有序列号为232和235的骨干网报文,那么当前收到的骨干网报文被放在缓冲区中序列号为232和235的骨干网报文之间。
步骤V04:判断缓冲计时是否已经启动,如果已经启动则执行步骤V06,否则执行步骤V05。
出边缘节点维护一个计时器以进行所述缓冲计时。
步骤V05:启动缓冲计时,然后执行步骤V14。
步骤V06:判断缓冲计时是否超过预先设定的等待时长,如果超过则执行步骤V07,否则执行步骤V14。
步骤V07:通知入边缘节点,重发序列号为已处理序列号的下一个序列号的骨干网报文,并且重置缓冲计时,执行步骤V14。
缓冲计时超时,说明出边缘节点等待序列号为已处理序列号的下一个序列号的骨干网报文已经超过了预先设定的等待时长,也就是说,该骨干网报文很有可能已经丢失,因此需要入边缘节点重新发送。
步骤V08:如果缓冲计时已启动,则停止并重置缓冲计时。
步骤V09:将骨干网报文解封装为接入网报文,根据接入网报文的目的接入网节点地址转发给接入网节点。
步骤V10:将所收到骨干网报文的序列号作为已处理序列号。
步骤V11:判断缓冲区中,最先放入的骨干网报文序列号是否为已处理序列号的下一个序列号,如果是则执行步骤V12,否则执行步骤V14。
例如,假设在收到当前骨干网报文时,出边缘节点记录的已处理序列号为233,同时缓冲区中有三个骨干网报文,其序列号分别为235、236和237,则所述最先放入的骨干网报文序列号为235。如果当前收到的骨干网报文的序列号为234,那么经过步骤V02所述的判断后,执行步骤V08;在步骤V10中,已处理序列号变为234。这样,在步骤V11所述的判断中,最先放入的骨干网报文序列号235就是已处理序列号234的下一个序列号,因此执行步骤V12。
步骤V12:将缓冲区中,从最先放入的骨干网报文开始的连续的骨干网报文依次解封装为接入网报文,并根据接入网报文的目的接入网节点地址转发给接入网节点。
对于所述从最先放入的骨干网报文开始的连续的骨干网报文,可以认为错序消除,因此可以进行后续处理。当然,对于处理完的骨干网报文,还需要从缓冲区中将其删除。
步骤V13:将所述连续的骨干网报文中,最后一个报文的序列号作为已处理序列号。
按照在步骤V11中所举的例子,在执行完步骤V13后,已处理序列号变为237。
步骤V14:结束当前流程。
需要说明的是,这里的结束当前流程,并不包括结束对缓冲即时是否超时的判断。也就是说,在缓冲计时启动以后,出边缘节点会一直检查缓冲计时是否超时,直到缓冲计时超时或者缓冲计时停止,而不是在每次收到骨干网报文的时候才进行一次判断。
当然,也可以预先设定最大等待报文数,将上述缓冲计时改成缓冲计数。在缓冲计数启动后,每收到一个骨干网报文,如果所收到的骨干网报文序列号不是已处理序列号的下一个序列号,则缓冲计数加1;如果所收到的骨干网报文序列号是已处理序列号的下一个序列号,则停止并重置缓冲计数。在步骤V06中,如果判断出缓冲计数超过最大等待报文数,则执行步骤V07;否则结束当前流程,在收到下一个骨干网报文前不再判断缓冲计数是否超过最大等待报文数。所述缓冲计数可以看作是缓冲计时的一种特殊情况。
作为一种替代方案,出边缘节点也可以不设置缓冲计时。这样,在步骤V02中,出边缘节点发现骨干网报文序列号不是已处理序列号的下一个序列号时,在根据收到的骨干网报文序列号,将骨干网报文放入缓冲区后,就直接通知入边缘节点重发序列号为已处理序列号的下一个序列号的骨干网报文。在这种方案中,出边缘节点有可能多次收到某个骨干网报文。因此,在步骤V01和步骤V02之间,出边缘节点需要首先比较步骤V01中接收到的骨干网报文的序列号和所述已处理序列号的大小,以判断步骤V01中接收到的骨干网报文是否为重复接收,如果是过则丢弃所述骨干网报文,否则执行步骤V02。例如,假设所述序列号是递增的,即后发送的骨干网报文的序列号大于先发送的骨干网报文的序列号,那么出边缘节点判断所收到的骨干网报文的序列号是否大于已处理序列号,如果大于则执行步骤V02,否则丢弃所收到的骨干网报文并结束当前流程。在这种方案中,步骤V04、步骤V05、步骤V06以及步骤V08都可以省略。
当然,如果按照步骤U02中所述,传输代价与发送路径是一一对应的关系,那么就无须设置序列号。这样,出边缘节点在收到骨干网报文后,直接将其解封装为接入网报文,并根据接入网报文携带的目的接入网节点地址转发给接入网节点。
以上结合图1所示的网络模型叙述了本发明提供的实现多路径传输的方法。下面结合具体的骨干网络,即运营商骨干网络(PBBN,ProviderBackbone Bridged Network),来进一步具体的叙述本发明提供的实现多路径传输的方法。
在PBBN中,如图1所示的骨干网边缘节点A和节点E为802.1ah网桥,具有对进入PBBN的数据报文进行封装和转发的能力,图1中的骨干网转发节点B、节点C和节点D为802.1ad网桥,具有根据媒体访问控制(MAC,Media Access Control)地址和虚拟局域网标识(VLAN ID,Virtual Local AreaNetwork Identifier)转发的能力。
仍然以接入网节点a向接入网节点e发送报文的情况为例,接入网报文中与本发明相关的数据域如表五所示:
C-DA |
C-SA |
S-TAG |
C-TAG |
Payload |
C-FCS |
表五
其中,C-DA表示目的接入网节点e的MAC地址;C-SA表示源接入网节点a的MAC地址;Payload为要传送的数据;C-FCS为接入网校验。另外,S-TAG和C-TAG是在用接入网报文携带的标签,可能有,也可能没有。
本实施例中,骨干网,即PBBN报文中与本发明相关的数据域如表六所示:
B-DA |
B-SA |
B-TAG |
I-TAG |
SQ |
Client Data |
B-FCS |
表六
其中,B-DA表示PBBN出边缘节点E的MAC地址;B-SA表示PBBN入边缘节点A的MAC地址;B-TAG为PBBN VLAN标签,其中包括VLANID,PBBN中的转发节点根据VLAN ID以及B-DA进行PBBN报文的转发;SQ是所述序列号;I-TAG为扩展表五中所示S-TAG得到的业务实例标签,用于业务区分;Client Data为要传送的数据;B-FCS为PBBN校验。
PBBN的入边缘节点A从接入网节点a接收到接入网报文后,执行步骤U01,即确定PBBN的出边缘节点。
在这一步骤中,入边缘节点A首先根据需要进行地址学习,即将源接入网节点地址C-SA与自身关联起来,这种关联关系保存在802.1ah中描述的关联数据库(ADB,Association Data Base)中。当然,如果自身的ADB中已经有所述关联关系,则无需再进行学习。
然后,入边缘节点A根据接入网报文的C-DA数据域的值确定PBBN报文中的B-DA数据域的值。入边缘节点A首先在自身的ADB中查找C-DA对应的PBBN出边缘节点地址,如果能够在ADB中找到C-DA对应的PBBN出边缘节点地址,那么就用该地址作为PBBN报文的B-DA;如果在ADB中找不到对应的PBBN出边缘节点地址,则用一个特殊的组播地址作为PBBN报文的B-DA。
然后,入边缘节点A执行步骤U02,为当前报文生成序列号,携带在PBBN报文的SQ数据域中。
接下来,入边缘节点A执行步骤U03到步骤U07,确定传送当前报文所采用的路径标识和发送端口,并且将所述路径标识携带在PBBN报文的B-TAG数据域中,具体的说,是携带在B-TAG数据域的VLAN ID子域中。
最后,入边缘节点A将自身的MAC地址携带在PBBN报文的B-SA数据域中,并且进行其他封装操作,将封装好的报文通过所确定的发送端口发送给PBBN内部的转发节点。PBBN内部的转发节点根据PBBN报文中所携带的VLAN ID和B-DA进行转发,直到出边缘节点E收到所述PBBN报文。
出边缘节点E也会进行地址学习,将PBBN报文中的C-SA和B-SA的关联关系保存在自身的ADB中。然后按照步骤V01到步骤V14处理PBBN报文。
对于采用序列号的情况,如果出边缘节点E如果需要入边缘节点A重传某个序列号的报文,则向入边缘节点A发送重传请求报文,该报文中与本发明相关的数据域如表五所示:
B-DA |
B-SA |
B-TAG |
I-TAG |
SQ |
B-FCS |
表五
其中,B-DA表示PBBN入边缘节点A的MAC地址;B-SA表示PBBN出边缘节点E的MAC地址;B-TAG为PBBN VLAN标签;I-TAG用于业务区分,重传请求报文中的I-TAG进一步包括表示本报文是重传请求报文的子域;SQ是要求重传的骨干网报文序列号;B-FCS为PBBN校验。
请参考图4,图4是本发明提供的实现多路径传输的装置的结构示意图。
图4(a)是本发明提供的实现多路径传输的发送端装置,该装置位于骨干网和接入网的接口处。该装置包括:
接入网通信接口:用于接收接入网报文,并且将所接收的接入网报文发送给路径选择模块。
路径选择模块:用于根据接入网报文中的信息,结合数据库所存储的查询表和对应关系,确定传送当前报文的路径,并且将得到的传送路径信息发送给骨干网报文生成模块。
具体的说,路径选择模块首先根据所述接入网报文中的目的地址,结合数据库中目的地址与骨干网接收端节点的对应关系,确定骨干网的接收端节点。
路径选择模块接下来根据接入网报文中的优先级信息确定传送当前报文的路径的传输代价。确定的方式可以是通过查询数据库中的优先级查询表,也可以是通过预先设定的公式进行计算。
进一步,路径选择模块根据所得到的传输代价,以及存储在数据库中的路径查询表确定传送路径,如果所得到的传输代价对应于多条传送路径,那么路径选择模块进一步按照预先设定的选择算法进行从所述多条传送路径中选择一条。所述预先设定的选择算法可以是随机选择算法,轮换选择算法或者根据路径性能进行选择的算法。
序列号生成模块:用于在传输代价对应于多条传送路径的情况下生成序列号发送给骨干网报文生成模块。
骨干网报文生成模块:用于根据路径选择模块发送的路径信息,以及序列号生成模块发送的序列号,按照骨干网报文的格式将所述接入网报文封装在骨干网报文中,然后将骨干网报文交给骨干网通信接口发送。
骨干网通信接口:用于发送骨干网报文。
数据库:用于存储确定传送路径所需的查询表以及对应关系,这些查询表和对应关系共同表示了报文优先级和发送路径的对应关系。
图4(b)是本发明提供的实现多路径传输的接收端装置,该装置也位于骨干网和接入网的接口处。该装置包括:
骨干网通信接口:用于接收骨干网报文,并且将所接收的骨干网报文发送给序列号分析模块。
序列号分析模块:用于根据接收到的骨干网报文携带的序列号判断是否出现错序,即接收到的骨干网报文的序列号是否连续。如果连续,则将骨干网报文发送给接入网报文生成模块进行处理;否则将接收到的骨干网报文放入缓冲区等待直到收到能够使序列号连续的报文,即错序消除。如果错序持续时间超过预定的等待时长,即在预定的等待时长后仍然未收到能够使序列号连续的报文,序列号分析模块还通过骨干网通信接口通知发送端发送能够使序列号连续的骨干网报文。
缓冲区:用于存放等待错序消除的骨干网报文,直到收到能够使序列号连续的报文,即错序消除。
接入网报文生成模块:用于将序列号分析模块所发送的骨干网报文解封装成接入网报文,并根据接入网报文携带的目的地址发送给接入网节点。
当然,对于不需要采用序列号的情况,由骨干网通信接口直接将所收到的骨干网报文发送给接入网报文生成模块。
接入网通信接口:用于发送接入网报文。
需要说明的是,以上虽然基于图1所示的网络结构叙述了本发明所提供的技术方案,但是无论是本发明提供的实现多路径传输的方法,还是本发明提供的实现多路径传输的装置,都不限于应用于图1所示的网络结构中。
具体而言,在本发明提供的实现多路径传输的方法中,步骤U01到步骤U08所述的发送流程,不限于由骨干网的入边缘节点完成;步骤V01到步骤V14所述的接收流程,也不限于由骨干网的出边缘节点完成。只要是两个节点间具有多条传输路径的情况,那么这两个节点中,发送报文的节点都可以按照类似步骤U01到步骤U08所述的流程进行发送;而接收报文的节点也都可以按照类似步骤V01到步骤V14所述的流程进行接收。
同样,在本发明提供的实现多路径传输的装置中,所述发送端装置和接收端装置都不一定位于所述骨干网和接入网的接口处。只要是两个节点间具有多条传输路径的情况,那么这两个节点中,发送报文的节点都可以按照图4(a)所述发送端装置实现;而接收报文的节点也都可以按照图4(b)所述接收端装置实现。在某些情况下,图4所述的接入网通信接口和骨干网通信接口可以是同一个通信接口。这时,对于发送报文的节点来说,并不是接收一种格式的报文并将其封装为另一种格式的报文,而是由自身生成报文;对于接收报文的节点来说,也不是接收一种格式的报文并将其解封装为另一种格式的报文。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。