CN104168212A - 发送报文的方法和装置 - Google Patents
发送报文的方法和装置 Download PDFInfo
- Publication number
- CN104168212A CN104168212A CN201410389330.4A CN201410389330A CN104168212A CN 104168212 A CN104168212 A CN 104168212A CN 201410389330 A CN201410389330 A CN 201410389330A CN 104168212 A CN104168212 A CN 104168212A
- Authority
- CN
- China
- Prior art keywords
- message
- link
- time delay
- local node
- node
- 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.)
- Granted
Links
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种发送报文的方法和装置,属于通信领域。所述方法包括:获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;如果是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文。所述装置包括:获取模块、判断模块和处理模块。本发明能够保证报文分担到不同路径后不乱序,实现了动态调整链路的负载分担,能够有效地利用带宽,提升了整体网络性能。
Description
技术领域
本发明涉及通信领域,特别涉及一种发送报文的方法和装置。
背景技术
在网际协议(英文:Internet Protocol,缩写:IP)网络中,报文转发到同一目的地的路径可能有多个,以实现负载分担以及链路保护。
目前,负载分担转发报文的方式通常有两种:逐包方式和逐流方式。逐包方式是指根据报文处理顺序轮流选择各分担路径,以保证分担路径流量均衡。逐流方式是指按照报文流来确定对应的负载分担路径,以保证同一条报文流经过的路径相同,从而避免引起报文传输乱序。
但是在实际应用中,逐包方式下由于链路时延的差异,分担到不同路径后将导致报文的大量乱序,使得整体网络性能下降。逐流方式下报文流在不同路径上不能很好地散列开,可能导致某些链路拥挤而某些链路出现空闲,造成多路径带宽不能有效利用,也会使得整体网络性能下降。
发明内容
有鉴于此,本发明提供了一种发送报文的方法和装置,以提升网络性能。所述技术方案如下:
第一方面,本发明提供了一种发送报文的方法,包括:
获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;
判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;
如果是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;
否则,使用所述第二报文所用链路发送所述第一报文。
结合第一方面,在第一种实施方式下,所述在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文,包括:
在本地节点至下一跳节点之间的多条链路中,选择已发送报文数量最小的链路发送所述第一报文。
结合第一方面,在第二种实施方式下,所述方法还包括:
获取指定的多条链路的时延;
计算获取的最大时延与最小时延之差,将结果作为所述报文流的链路时延间隔。
结合第一方面的第二种实施方式,在第三种实施方式下,所述获取指定的多条链路的时延,包括:
在本地节点不存在聚合接口时,获取所述本地节点至所述第一报文的目的节点之间各条链路的时延;
在所述本地节点存在聚合接口时,获取所述本地节点至所述第一报文的下一跳节点之间各条链路的时延。
结合第一方面的第二种实施方式,在第四种实施方式下,所述获取指定的多条链路的时延,包括:
获取网络中所有链路的时延。
结合第一方面,在第五种实施方式下,所述方法还包括:
在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,根据所述权重更新所述链路的已发送报文数量。
结合第一方面的第五种实施方式,在第六种实施方式下,所述根据所述权重更新所述链路的已发送报文数量,包括:
用所述第一报文的长度除以所述权重,然后与所述链路的已发送报文数量相加求和,将所述链路的已发送报文数量更新为所述求和的结果。
第二方面,本发明提供了一种发送报文的装置,包括:
获取模块,用于获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;
判断模块,用于判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;
处理模块,用于如果所述判断模块判断的结果为是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文。
结合第二方面,在第一种实施方式下,所述处理模块包括:
选择单元,用于在本地节点至下一跳节点之间的多条链路中,选择已发送报文数量最小的链路发送所述第一报文。
结合第二方面,在第二种实施方式下,所述装置还包括:
设置模块,用于获取指定的多条链路的时延,计算获取的最大时延与最小时延之差,将结果作为所述报文流的链路时延间隔。
结合第二方面的第二种实施方式,在第三种实施方式下,所述设置模块用于:
在本地节点不存在聚合接口时,获取所述本地节点至所述第一报文的目的节点之间各条链路的时延;
在所述本地节点存在聚合接口时,获取所述本地节点至所述第一报文的下一跳节点之间各条链路的时延。
结合第二方面的第二种实施方式,在第四种实施方式下,所述设置模块用于:
获取网络中所有链路的时延。
结合第二方面,在第五种实施方式下,所述装置还包括:
更新模块,用于在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,根据所述权重更新所述链路的已发送报文数量。
结合第二方面的第五种实施方式,在第六种实施方式下,所述更新模块用于:
在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,用所述第一报文的长度除以所述权重,然后与所述链路的已发送报文数量相加求和,将所述链路的已发送报文数量更新为所述求和的结果。
本发明提供的技术方案带来的有益效果是:获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;如果是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文;由于发送时间戳之差在链路时延间隔之内的报文选用同一条链路发送,而发送时间戳之差大于链路时延间隔的报文使用不同的链路来发送,能够保证报文分担到不同路径后不乱序,接收端可以免重组,且实现了动态调整链路的负载分担,避免了单流长时间占用一条链路导致拥塞或有链路长期空闲等负载不均衡的问题。能够有效地利用带宽,提升了带宽利用率以及整体网络性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的发送报文的方法流程图;
图2是本发明另一实施例提供的发送报文的方法流程图;
图3是本发明另一实施例提供的单向时延测量示意图;
图4是本发明另一实施例提供的发送报文的示意图;
图5是本发明另一实施例提供的无聚合接口的网络架构示意图;
图6是本发明另一实施例提供的有聚合接口的网络架构示意图;
图7是本发明另一实施例提供的发送报文的方法流程图;
图8是本发明另一实施例提供的发送报文的装置结构图;
图9是本发明另一实施例提供的发送报文的装置结构图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
参见图1,本发明一实施例提供了一种发送报文的方法,包括:
101:获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,该第一报文与该第二报文属于同一个报文流。
102:判断该第一报文的发送时间戳与该第二报文的发送时间戳之差是否大于预设的该报文流的链路时延间隔;如果是,则执行103;否则,执行104。
其中,发送时间戳是指报文发送的时刻,此处不做过多说明。报文流的链路时延间隔为预设的值,用来限制两次报文发送之间的时间间隔,以保证接收端收到的报文不乱序,且能够实现多条链路的动态负载均衡。
103:在本地节点至下一跳节点之间的多条链路中,选择一条链路发送该第一报文,流程结束。
这种情况下,两次报文的发送时间戳之差满足链路时延间隔,可以选用新的链路来发送第一报文,以避免链路负载不均衡,且保证接收端的报文不乱序。
104:使用该第二报文所用链路发送该第一报文,流程结束。
这种情况下,两次报文的发送时间戳之差不满足链路时延间隔,不能选用新的链路来发送第一报文,而是要选用与第二报文相同的链路来发送,才能够保证接收端的报文不乱序。
本实施例提供的上述方法应用于本地节点中,该本地节点为发送端设备,包括但不限于:计算机、笔记本电脑、平板电脑、手机、路由器、交换机等等,本实施例对此不做具体限定。其中,下一跳节点是指报文的发送路径中与本地节点相邻的下一个节点,可以是中间节点,或者也可以是目的节点,本实施例对此也不做具体限定。
在本实施例的应用场景中,本地节点和下一跳节点之间具有多条链路,至少为两条。本地节点待发送的报文流为某个业务的报文流,如浏览网页的报文流,或者下载文件的报文流,或者视频聊天的报文流等等。该报文流中通常包括多个报文,其中,第一报文和第二报文为该报文流中的任意两个相邻的报文,第二报文为上一次已发送的报文,第一报文为本次将要发送的报文。
本实施例中,可选的,该在本地节点至下一跳节点之间的多条链路中,选择一条链路发送该第一报文,可以包括:
在本地节点至下一跳节点之间的多条链路中,选择已发送报文数量最小的链路发送该第一报文。
本实施例中,可选的,上述方法还可以包括:
获取指定的多条链路的时延;
计算获取的最大时延与最小时延之差,将结果作为该报文流的链路时延间隔。
本实施例中,进一步地,所述获取指定的多条链路的时延,可以包括:
在本地节点不存在聚合接口时,获取该本地节点至该第一报文的目的节点之间各条链路的时延;
在该本地节点存在聚合接口时,获取该本地节点至该第一报文的下一跳节点之间各条链路的时延。
本实施例中,可选的,所述获取指定的多条链路的时延,可以包括:
获取网络中所有链路的时延。
本实施例中,可选的,上述方法还可以包括:
在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,根据所述权重更新所述链路的已发送报文数量。
本实施例中,可选的,所述根据所述权重更新所述链路的已发送报文数量,可以包括:
用所述第一报文的长度除以所述权重,然后与所述链路的已发送报文数量相加求和,将所述链路的已发送报文数量更新为所述求和的结果。
本实施例提供的上述方法,获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;如果是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文;由于发送时间戳之差在链路时延间隔之内的报文选用同一条链路发送,而发送时间戳之差大于链路时延间隔的报文使用不同的链路来发送,能够保证报文分担到不同路径后不乱序,接收端可以免重组,且实现了动态调整链路的负载分担,避免了单流长时间占用一条链路导致拥塞或有链路长期空闲等负载不均衡的问题。能够有效地利用带宽,提升了带宽利用率以及整体网络性能。
参见图2,本发明另一实施例提供了一种发送报文的方法,包括:
201:获取指定的多条链路的时延。
本实施例中,获取链路时延可以采用单向时延测量(英文:One-way DelayMeasurement,缩写:1DM)的方法。例如,参见图3,节点1向节点2发送一个1DM报文,该报文中包含了发送时间戳。节点2收到该报文之后,解析出该发送时间戳,并将自身的接收时间戳与该发送时间戳相减得到节点1与节点2之间的链路的时延。
上述单向时延测量可以基于端口定时发起,如每隔0.5s发起等等,本实施例对此不做具体限定。
其中,可以通过操作管理维护(英文:Operation Administration andMaintenance,缩写:OAM)协议,如Y.1731 ETH-1DM协议来获得链路的真实时延,当然,也可以采用其他方法,比如静态配置,或者其他协议或者私有协议等等来获取时延,本实施例对此不做具体限定。
202:计算获取的最大时延与最小时延之差,将结果作为该报文流的链路时延间隔。
获取的链路时延为多个,可以将这多个链路时延的值进行比较,从而得到其中的最大时延和最小时延。例如,获取N个链路时延,选出最大时延max和最小时延min,则计算得到该报文流的链路时延间隔为max-min。
203:获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,该第一报文与该第二报文属于同一个报文流。
204:判断该第一报文的发送时间戳与该第二报文的发送时间戳之差是否大于预设的该报文流的链路时延间隔;如果是,则执行205;否则,执行206。
205:在本地节点至下一跳节点之间的多条链路中,选择一条链路发送该第一报文,流程结束。
206:使用该第二报文所用链路发送该第一报文,流程结束。
例如,参见图4,为使用两条链路发送报文的示意图。其中,Tx为发送端,Rx为接收端。Tx和Rx之间存在两条链路,链路1和链路2,且时延分别为d1和d2。Tx侧的报文流输入包括4个报文,分别为报文1、报文2、报文3和报文4。Tx侧在t1时刻往链路2上发送了报文4,在t2时刻往链路1上发送了三个报文:报文3、报文2和报文1,且发送时间戳之差Dt=t2-t1。Rx侧在t3时刻接收到报文4,在t4时刻收到报文3、报文2和报文1。由链路时延可以得出:t3=t1+d2,t4=t2+d1=Dt+t1+d1。当两次报文的发送时间戳之差Dt满足Dt>|d1-d2|时,可以得出:t4–t3=Dt+t1+d1-(t1+d2)=Dt+d1-d2>|d1-d2|+d1-d2≥0,因此,可以保证在Rx侧报文4一定早于报文3、报文2和报文1到达,接收到的报文顺序与Tx侧发送的报文的顺序一致,从而保证了接收的报文不乱序,避免了报文重组。
本实施例中,步骤201可以采用以下任意一种方式来实现:
第一种方式:获取网络中所有链路的时延。
第二种方式:在本地节点不存在聚合接口时,获取该本地节点至该第一报文的目的节点之间各条链路的时延。
第三种方式:在该本地节点存在聚合接口时,获取该本地节点至该第一报文的下一跳节点之间各条链路的时延。
聚合接口是指多个物理接口在逻辑上绑定为1个接口,该逻辑接口成为trunk聚合接口。本实施例中的聚合接口是指报文的发送接口。
本实施例提供的上述方法可以应用于任何类型的网络中。下面以Spine-leaf(骨干节点-叶子节点)结构的DC(Data Center,数据中心)网络为例来说明上述具有聚合接口的场景,以及不具有聚合接口的场景。
例如,参见图5,为本地节点不具有聚合接口的场景示意图。其中,DC网络中有两个骨干节点S1和S2,四个叶子节点L1、L2、L3和L4。本地节点L1不具有聚合接口,且发送报文至目的节点L4,则有两条可选链路,link1为L1->S1->L4,link2为L1->S2->L4。
例如,参见图6,为本地节点具有聚合接口的场景示意图。其中,DC网络中有两个骨干节点S1和S2,四个叶子节点L1、L2、L3和L4。本地节点L1具有聚合接口,其中至S1的链路包括a1和a2,这两条链路与L1所连的两个物理接口在逻辑上绑定为一个接口。L1至S2的链路包括c1和c2,这两条链路与L1所连的两个物理接口在逻辑上绑定为一个接口。S2至L4之间有两条链路f1和f2。当L1发送报文至L4时,经过S1的链路包括两条,分别为:a1->b,a2->b;经过S2的链路包括四条,分别为:c1->f1,c1->f2,c2->f1,c2->f2。
上述第一种方式中,从获取的网络中所有链路的时延中选出最大时延和最小时延,从而可以计算出系统级的链路时延间隔,粒度较粗,但是算法简单、效率较高。该链路时延间隔可以表示如下:
Gap=max{d1,d2,d3,d4…dn}-min{d1,d2,d3,d4…dn};
其中,Gap表示链路时延间隔,网络中一共有n条链路,d1,d2…dn分别表示这n条链路的时延。
上述第二种方式和第三种方式都是选取指定的链路来计算,可以得到链路级的链路时延间隔,粒度较细,计算结果更精确。
在第二种方式中,由于本地节点不存在聚合接口,可以不用考虑下一跳节点,直接选取本地节点至目的节点之间各条链路的时延来计算该报文流的链路时延间隔。
例如,在图5所示的场景中,本地节点不具有聚合接口,L1发送报文至目的节点L4,有两条可选链路,link1:L1->S1->L4,link2:L1->S2->L4。其中,link1链路的时延为d1,link2链路的时延为d2,且d2>d1,则用最大时延减去最小时延得到报文流的链路时延间隔为Gap=d2-d1。
在第三种方式中,由于本地节点存在聚合接口,则选取本地节点至第一报文的下一跳节点之间各条链路的时延来计算报文流的链路时延间隔。
例如,在图6所示的场景中,本地节点具有聚合接口,L1发送第一报文至L4。L1的下一跳有两个,一个是S1,另一个是S2,L1至S1的链路包括:a1和a2,链路时延分别为d1和d2。L1至S2的链路包括:c1和c2,链路时延分别为d3和d4。则计算报文流的链路时延间隔如下:
Gap=max{d1,d2,d3,d4}-min{d1,d2,d3,d4};
其中,Gap表示报文流的链路时延间隔,d1,d2,d3,d4为L1至下一跳节点之间的4条链路。
通常,可以在简单平坦式组网中,如layer2Spine-Leaf且无trunk的网络中,负载分担算法可以采用链路级的链路时延间隔,使得算法可以基于链路做更细粒度的负载分担。在其他组网中,可以采用系统级的链路时延间隔来满足负载分担算法要求,提高传输效率。
本实施例提供的上述方法,获取指定的多条链路的时延,计算获取的最大时延与最小时延之差,将结果作为该报文流的链路时延间隔;获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;如果是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文;由于发送时间戳之差在链路时延间隔之内的报文选用同一条链路发送,而发送时间戳之差大于链路时延间隔的报文使用不同的链路来发送,能够保证报文分担到不同路径后不乱序,接收端可以免重组,且实现了动态调整链路的负载分担,避免了单流长时间占用一条链路导致拥塞或有链路长期空闲等负载不均衡的问题。能够有效地利用带宽,提升了带宽利用率以及整体网络性能。特别是针对Spine-Leaf平坦结构的DC网络中,更能够实时精确的根据链路实时拥塞程度和时延获得网络性能提升收益。
参见图7,本发明一实施例提供了一种发送报文的方法,包括:
701:获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,该第一报文与该第二报文属于同一个报文流。
其中,报文的发送时间戳可以从流信息表中获取。该流信息表可以记录与报文流有关的各种信息,包括但不限于:链路时延间隔、报文的发送时间戳等等,进一步地还可以包括上一次发送报文的路径ID等等,本实施例对此不做具体限定。
702:判断该第一报文的发送时间戳与该第二报文的发送时间戳之差是否大于预设的该报文流的链路时延间隔;如果是,则执行703;否则,执行704。
703:在本地节点至下一跳节点之间的多条链路中,选择已发送报文数量最小的链路发送该第一报文,然后执行705。
其中,链路已发送报文数量可以在每次发送报文之后计算得到,并且,在每次发送报文之后都对链路已发送报文数量进行更新,以便后续进行链路的选择。
704:使用该第二报文所用链路发送该第一报文,然后执行705。
705:在发送该第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,根据所述权重更新所述链路的已发送报文数量,流程结束。
本实施例中,优选地,可以根据带宽为不同的链路设置不同的权重,且根据权重来更新链路已发送报文数量,以便更好地结合带宽的实际情况来选择链路。
可选的,所述根据所述权重更新所述链路的已发送报文数量,可以包括:
用所述第一报文的长度除以所述权重,然后与所述链路的已发送报文数量相加求和,将所述链路的已发送报文数量更新为所述求和的结果。
具体地,可以用如下公式来表示:
cnt+=pkt/weight;
其中,cnt为链路的已发送报文数量,pkt为该链路发送的报文的长度,weight为该链路的权重。初始时可以为一条链路设置一个初始权重值。
本实施例中,所述链路权重、链路已发送报文数量等信息可以记录在链路权重表中,且每次计算出新的链路已发送报文数量都更新在该链路权重表中,以便后续查找链路的已发送报文数量。
这种基于链路已发送报文数量来选择链路的方式,严格地保证了报文接收的顺序与报文发送的顺序一致,无需接收端进行报文重组,极大地提高了效率,节省了资源。
本实施例中,所述预先设置的权重可以为静态配置的权重,或者也可以为动态计算出来的权重。所述动态计算具体地可以为通过OAM协议,如Y.1731ETH-LB来获取链路的吞吐量,再根据该吞吐量来计算出权重,其中,可以定时根据链路的吞吐量来计算权重,本实施例对此不做具体限定。
本实施例中,当采用流信息表来记录信息时,由于链路时延通常都在毫秒ms级别,流信息表只需要记录正在链路上传输的报文流即可满足本方法,因此,流信息表所占的资源也很小,不会对系统造成影响。下面举例说明。例如,网络带宽为100Gbps,网络上平均包长为512B,则计算如下:
Flows=100*1000*1000Kbps/((512+8+12)*8)/1000=23.5K;
其中,flows为流信息表的数量,就是表内的表项个数,100*1000*1000Kbps是指将带宽由Gbps转化为Kbps,第一个8为前导码的长度,12为帧间隙,第二个8表示将字节转换为比特位,除以1000表示流信息表只需要记录链路时延(毫秒ms)级别内的报文流。
实际情况下,根据用户报文突发以及TCP/UDP特征,如果出现报文流内报文数量的增加,则随之流信息表数量呈线性下降,所占资源会更小。上述计算结果为带宽全部占用的最恶劣情况,流信息表的数量为k(千条)级别,可见即使在最恶劣情况下,流信息表所占用的资源也很小,不会对系统造成影响。
本实施例提供的上述方法,获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;如果是,则在本地节点至下一跳节点之间的多条链路中,选择且已发送报文数量最小的链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文;由于发送时间戳之差在链路时延间隔之内的报文选用同一条链路发送,而发送时间戳之差大于链路时延间隔的报文使用不同的链路来发送,能够保证报文分担到不同路径后不乱序,接收端可以免重组,且实现了动态调整链路的负载分担,避免了单流长时间占用一条链路导致拥塞或有链路长期空闲等负载不均衡的问题。能够有效地利用带宽,提升了带宽利用率以及整体网络性能。另外,基于链路已发送报文数量来选择链路的方式,严格地保证了报文接收的顺序与报文发送的顺序一致,无需接收端进行报文重组,极大地提高了效率,节省了资源。
参见图8,本发明另一实施例提供了一种发送报文的装置,包括:
获取模块801,用于获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,该第一报文与该第二报文属于同一个报文流;
判断模块802,用于判断该第一报文的发送时间戳与该第二报文的发送时间戳之差是否大于预设的该报文流的链路时延间隔;
处理模块803,用于如果该判断模块判断的结果为是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送该第一报文;否则,使用该第二报文所用链路发送该第一报文。
本实施例中,可选的,处理模块803可以包括:
选择单元,用于在本地节点至下一跳节点之间的多条链路中,选择已发送报文数量最小的链路发送该第一报文。
本实施例中,可选的,上述装置还可以包括:
设置模块,用于获取指定的多条链路的时延,计算获取的最大时延与最小时延之差,将结果作为该报文流的链路时延间隔。
本实施例中,可选的,设置模块可以用于:
在本地节点不存在聚合接口时,获取该本地节点至该第一报文的目的节点之间各条链路的时延;
在该本地节点存在聚合接口时,获取该本地节点至该第一报文的下一跳节点之间各条链路的时延。
本实施例中,可选的,设置模块可以用于:
获取网络中所有链路的时延。
本实施例中,可选的,上述装置还可以包括:
更新模块,用于在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,根据所述权重更新所述链路的已发送报文数量。
进一步地,上述更新模块可以用于:
在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,用所述第一报文的长度除以所述权重,然后与所述链路的已发送报文数量相加求和,将所述链路的已发送报文数量更新为所述求和的结果。
本实施例提供的上述装置可以执行上述任一方法实施例中提供的方法,详细过程见方法实施例中的描述,此处不赘述。
本实施例提供的上述装置,获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;如果是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文;由于发送时间戳之差在链路时延间隔之内的报文选用同一条链路发送,而发送时间戳之差大于链路时延间隔的报文使用不同的链路来发送,能够保证报文分担到不同路径后不乱序,接收端可以免重组,且实现了动态调整链路的负载分担,避免了单流长时间占用一条链路导致拥塞或有链路长期空闲等负载不均衡的问题。能够有效地利用带宽,提升了带宽利用率以及整体网络性能。
参见图9,本发明另一实施例提供了一种发送报文的装置,包括:
处理器901,用于获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,该第一报文与该第二报文属于同一个报文流;判断该第一报文的发送时间戳与该第二报文的发送时间戳之差是否大于预设的该报文流的链路时延间隔;如果判断的结果为是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路;否则,选择该第二报文所用链路;
发射机902,用于使用处理器901选择的链路发送该第一报文。
本实施例中,可选的,处理器901可以用于:
在本地节点至下一跳节点之间的多条链路中,选择已发送报文数量最小的链路。
本实施例中,可选的,处理器901还可以用于:
获取指定的多条链路的时延,计算获取的最大时延与最小时延之差,将结果作为该报文流的链路时延间隔。
本实施例中,可选的,处理器901可以用于:
在本地节点不存在聚合接口时,获取该本地节点至该第一报文的目的节点之间各条链路的时延;
在该本地节点存在聚合接口时,获取该本地节点至该第一报文的下一跳节点之间各条链路的时延。
本实施例中,可选的,处理器901可以用于:
获取网络中所有链路的时延。
本实施例中,可选的,处理器901还可以用于:
在发射机发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,根据所述权重更新所述链路的已发送报文数量。
进一步地,上述处理器901可以用于:
在发射机发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,用所述第一报文的长度除以所述权重,然后与所述链路的已发送报文数量相加求和,将所述链路的已发送报文数量更新为所述求和的结果。
本实施例提供的上述装置可以执行上述任一方法实施例中提供的方法,详细过程见方法实施例中的描述,此处不赘述。
本实施例提供的上述装置,获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;如果是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文;由于发送时间戳之差在链路时延间隔之内的报文选用同一条链路发送,而发送时间戳之差大于链路时延间隔的报文使用不同的链路来发送,能够保证报文分担到不同路径后不乱序,接收端可以免重组,且实现了动态调整链路的负载分担,避免了单流长时间占用一条链路导致拥塞或有链路长期空闲等负载不均衡的问题。能够有效地利用带宽,提升了带宽利用率以及整体网络性能。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种发送报文的方法,其特征在于,所述方法包括:
获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;
判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;
如果是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;
否则,使用所述第二报文所用链路发送所述第一报文。
2.根据权利要求1所述的方法,其特征在于,所述在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文,包括:
在本地节点至下一跳节点之间的多条链路中,选择已发送报文数量最小的链路发送所述第一报文。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
获取指定的多条链路的时延;
计算获取的最大时延与最小时延之差,将结果作为所述报文流的链路时延间隔。
4.根据权利要求3所述的方法,其特征在于,所述获取指定的多条链路的时延,包括:
在本地节点不存在聚合接口时,获取所述本地节点至所述第一报文的目的节点之间各条链路的时延;
在所述本地节点存在聚合接口时,获取所述本地节点至所述第一报文的下一跳节点之间各条链路的时延。
5.根据权利要求3所述的方法,其特征在于,所述获取指定的多条链路的时延,包括:
获取网络中所有链路的时延。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,根据所述权重更新所述链路的已发送报文数量。
7.根据权利要求6所述的方法,其特征在于,所述根据所述权重更新所述链路的已发送报文数量,包括:
用所述第一报文的长度除以所述权重,然后与所述链路的已发送报文数量相加求和,将所述链路的已发送报文数量更新为所述求和的结果。
8.一种发送报文的装置,其特征在于,所述装置包括:
获取模块,用于获取当前待发送的第一报文的发送时间戳和上一次发送的第二报文的发送时间戳,所述第一报文与所述第二报文属于同一个报文流;
判断模块,用于判断所述第一报文的发送时间戳与所述第二报文的发送时间戳之差是否大于预设的所述报文流的链路时延间隔;
处理模块,用于如果所述判断模块判断的结果为是,则在本地节点至下一跳节点之间的多条链路中,选择一条链路发送所述第一报文;否则,使用所述第二报文所用链路发送所述第一报文。
9.根据权利要求8所述的装置,其特征在于,所述处理模块包括:
选择单元,用于在本地节点至下一跳节点之间的多条链路中,选择已发送报文数量最小的链路发送所述第一报文。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括:
设置模块,用于获取指定的多条链路的时延,计算获取的最大时延与最小时延之差,将结果作为所述报文流的链路时延间隔。
11.根据权利要求10所述的装置,其特征在于,所述设置模块用于:
在本地节点不存在聚合接口时,获取所述本地节点至所述第一报文的目的节点之间各条链路的时延;
在所述本地节点存在聚合接口时,获取所述本地节点至所述第一报文的下一跳节点之间各条链路的时延。
12.根据权利要求10所述的装置,其特征在于,所述设置模块用于:
获取网络中所有链路的时延。
13.根据权利要求8所述的装置,其特征在于,所述装置还包括:
更新模块,用于在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,根据所述权重更新所述链路的已发送报文数量。
14.根据权利要求13所述的装置,其特征在于,所述更新模块用于:
在发送所述第一报文之后,在预先设置的链路权重中获取发送所述第一报文的链路的权重,用所述第一报文的长度除以所述权重,然后与所述链路的已发送报文数量相加求和,将所述链路的已发送报文数量更新为所述求和的结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410389330.4A CN104168212B (zh) | 2014-08-08 | 2014-08-08 | 发送报文的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410389330.4A CN104168212B (zh) | 2014-08-08 | 2014-08-08 | 发送报文的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104168212A true CN104168212A (zh) | 2014-11-26 |
CN104168212B CN104168212B (zh) | 2017-10-17 |
Family
ID=51911848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410389330.4A Expired - Fee Related CN104168212B (zh) | 2014-08-08 | 2014-08-08 | 发送报文的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104168212B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017173915A1 (zh) * | 2016-04-05 | 2017-10-12 | 中兴通讯股份有限公司 | 一种报文处理方法、装置、系统和计算机存储介质 |
WO2018036100A1 (zh) * | 2016-08-26 | 2018-03-01 | 华为技术有限公司 | 一种数据报文转发的方法及装置 |
CN107770061A (zh) * | 2016-08-16 | 2018-03-06 | 华为技术有限公司 | 转发报文的方法及转发设备 |
WO2019127597A1 (zh) * | 2017-12-31 | 2019-07-04 | 华为技术有限公司 | 一种发送报文的方法、设备和系统 |
CN112511449A (zh) * | 2019-09-16 | 2021-03-16 | 华为技术有限公司 | 一种报文流乱序检测方法、报文处理方法及装置 |
CN112737940A (zh) * | 2019-10-28 | 2021-04-30 | 华为技术有限公司 | 一种数据传输的方法和装置 |
CN113206799A (zh) * | 2021-03-30 | 2021-08-03 | 新华三信息安全技术有限公司 | 一种报文转发方法及装置 |
WO2021197196A1 (zh) * | 2020-03-31 | 2021-10-07 | 华为技术有限公司 | 路由信息传输方法、装置、系统及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247348A (zh) * | 2008-03-12 | 2008-08-20 | 华为技术有限公司 | 负载分担方法及设备 |
CN102891780A (zh) * | 2012-10-10 | 2013-01-23 | 烽火通信科技股份有限公司 | 基于发送时间戳的以太网丢包率测量方法及测量系统 |
WO2013063964A1 (zh) * | 2011-11-04 | 2013-05-10 | 华为技术有限公司 | 一种报文发送方法及发送设备 |
-
2014
- 2014-08-08 CN CN201410389330.4A patent/CN104168212B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101247348A (zh) * | 2008-03-12 | 2008-08-20 | 华为技术有限公司 | 负载分担方法及设备 |
WO2013063964A1 (zh) * | 2011-11-04 | 2013-05-10 | 华为技术有限公司 | 一种报文发送方法及发送设备 |
CN102891780A (zh) * | 2012-10-10 | 2013-01-23 | 烽火通信科技股份有限公司 | 基于发送时间戳的以太网丢包率测量方法及测量系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017173915A1 (zh) * | 2016-04-05 | 2017-10-12 | 中兴通讯股份有限公司 | 一种报文处理方法、装置、系统和计算机存储介质 |
CN107770061A (zh) * | 2016-08-16 | 2018-03-06 | 华为技术有限公司 | 转发报文的方法及转发设备 |
CN107770061B (zh) * | 2016-08-16 | 2020-12-01 | 华为技术有限公司 | 转发报文的方法及转发设备 |
US11184284B2 (en) | 2016-08-26 | 2021-11-23 | Huawei Technologies Co., Ltd. | Data packet forwarding method and apparatus |
WO2018036100A1 (zh) * | 2016-08-26 | 2018-03-01 | 华为技术有限公司 | 一种数据报文转发的方法及装置 |
CN107786440A (zh) * | 2016-08-26 | 2018-03-09 | 华为技术有限公司 | 一种数据报文转发的方法及装置 |
WO2019127597A1 (zh) * | 2017-12-31 | 2019-07-04 | 华为技术有限公司 | 一种发送报文的方法、设备和系统 |
CN112511449A (zh) * | 2019-09-16 | 2021-03-16 | 华为技术有限公司 | 一种报文流乱序检测方法、报文处理方法及装置 |
CN112511449B (zh) * | 2019-09-16 | 2022-12-30 | 华为技术有限公司 | 一种报文流乱序检测方法、报文处理方法及装置 |
CN112737940A (zh) * | 2019-10-28 | 2021-04-30 | 华为技术有限公司 | 一种数据传输的方法和装置 |
CN112737940B (zh) * | 2019-10-28 | 2023-12-08 | 华为技术有限公司 | 一种数据传输的方法和装置 |
WO2021197196A1 (zh) * | 2020-03-31 | 2021-10-07 | 华为技术有限公司 | 路由信息传输方法、装置、系统及存储介质 |
CN113206799A (zh) * | 2021-03-30 | 2021-08-03 | 新华三信息安全技术有限公司 | 一种报文转发方法及装置 |
CN113206799B (zh) * | 2021-03-30 | 2022-05-27 | 新华三信息安全技术有限公司 | 一种报文转发方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104168212B (zh) | 2017-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104168212A (zh) | 发送报文的方法和装置 | |
US11316795B2 (en) | Network flow control method and network device | |
US10574528B2 (en) | Network multi-source inbound quality of service methods and systems | |
EP2911348B1 (en) | Control device discovery in networks having separate control and forwarding devices | |
Wang et al. | Implementation of multipath network virtualization with SDN and NFV | |
JP5744237B2 (ja) | 多重ゲートウェイ装置、多重回線通信システム、多重回線通信方法およびプログラム | |
US8619585B2 (en) | Determining link costs | |
WO2019179157A1 (zh) | 一种数据流量处理方法及相关网络设备 | |
CN108989237B (zh) | 数据传输的方法和设备 | |
WO2014105320A1 (en) | Intelligent routing of network packets on telecommunication devices | |
Showail et al. | Buffer sizing in wireless networks: challenges, solutions, and opportunities | |
US20220217089A1 (en) | Path traffic allocation method, network device, and network system | |
CN109417509A (zh) | 多路径网络中改善的资源使用 | |
Oddi et al. | A decentralized load balancing algorithm for heterogeneous wireless access networks | |
Lu | Sed: An sdn-based explicit-deadline-aware tcp for cloud data center networks | |
CN115037399A (zh) | 报文转发方法、电子设备和存储介质 | |
EP3585013B1 (en) | Data transmission method and apparatus | |
Lam et al. | Congestion control for M2M traffic with heterogeneous throughput demands | |
CN109428842A (zh) | 一种QoS信息传送方法和装置 | |
CN102845042A (zh) | 一种应用层多个活动物理接口的带宽聚集系统及方法 | |
Oljira et al. | Mdtcp: Towards a practical multipath transport protocol for telco cloud datacenters | |
CN113612698A (zh) | 一种数据包发送方法及装置 | |
CN104394075A (zh) | 一种报文传输的方法和设备 | |
Nithin et al. | Efficient load balancing for multicast traffic in data center networks using SDN | |
US11757774B1 (en) | Multi-channel communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171017 Termination date: 20210808 |
|
CF01 | Termination of patent right due to non-payment of annual fee |