CN111224888A - 发送报文的方法及报文转发设备 - Google Patents
发送报文的方法及报文转发设备 Download PDFInfo
- Publication number
- CN111224888A CN111224888A CN201811425839.4A CN201811425839A CN111224888A CN 111224888 A CN111224888 A CN 111224888A CN 201811425839 A CN201811425839 A CN 201811425839A CN 111224888 A CN111224888 A CN 111224888A
- Authority
- CN
- China
- Prior art keywords
- port
- messages
- message
- forwarding device
- message forwarding
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/12—Avoiding congestion; Recovering from congestion
- H04L47/125—Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
-
- 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/24—Multipath
Abstract
本申请提供了一种发送报文的方法及设备。该方法包括报文转发设备接收多个报文,根据保存的多个端口一一对应的多个数量,从多个端口中确定第一端口为用于发送该多个报文的端口,再通过该第一端口转发该报文转发设备保存的需要经由该第一端口发送的待发送的报文,该方法可以选择轻载的端口进行报文的转发,并在报文接收和转发过程中,不断更新和维护端口对应的流表表项中统计的报文数量,响应速度快,降低端口的压力,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种发送报文的方法及报文转发设备。
背景技术
负载均衡指网络中针对从发送端到接收端的流量存在多条等价路径。通过该多条等价路径可以提供更大的网络容量。下文以包括服务器、路由交换机等组成的数据中心网络为例进行说明。从服务器到交换机的流量包括多个报文流。从服务器到交换机的不同链路的负载可能是不同的。为了提高链路的带宽的利用率,可以采用负载均衡的策略。在多条等价路径上采用的具体的负载均衡方法,不仅影响网络整体利用率,而且会影响业务的时延和吞吐。
等价多路径路由(equal-cost multi-path routing,ECMP)是典型的一种负载均衡方法。ECMP可以在多条流中不同的流包含的数据的数量的差异不大的情况下实现较好的负载分担效果。当不同流包含的数据的数量差异较大时,多个大象流可能被哈希到同一个路径上,从而造成路径上的拥塞。
因此,需要一种报文转发方法,实现较好的负载均衡的效果。
发明内容
本申请提供一种发送报文的方法和报文转发设备,有助于实现较好的负载均衡的效果。
第一方面,提供了一种发送报文的方法,包括:报文转发设备接收多个报文;该报文转发设备根据该报文转发设备保存的多个数量,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口,该多个数量与该多个端口一一对应,该多个数量中的每个数量是该报文转发设备保存的该报文转发设备需要经由对应的端口发送的待发送的报文的数量,该多个数量包括第一数量,该第一数量是该报文转发设备保存的该报文转发设备需要经由该第一端口发送的待发送的报文的数量,该报文转发设备保存的该报文转发设备需要经由该第一端口发送的待发送的报文不包括该多个报文;该报文转发设备经由该第一端口发送该多个报文。
应理解,报文转发设备接收报文发送设备发送的报文。报文发送设备发送的报文可以是单个的packet;或者,也可以是数个packet组成的flowlet。
当报文转发设备接收报文发送设备发送的packet,该多个报文可以是多个packet;当报文转发设备接收报文发送设备发送的flowlet,该多个报文可以是一个flowlet包括的多个报文;当报文转发设备接收报文发送设备发送的流,该多个报文可以是一个流包括的多个报文。本申请提及的报文可以是以太网帧(ethernet frame)、以太网报文(ethernet packet)、网际协议(internet protocol,IP)报文或者多协议标签交换(multiprotocol label switching,MPLS)报文。本申请对报文转发设备接收的报文的格式不做限定。
应理解,该报文转发设备保存的多个数量中的一个数量可以称为“第一数量”。这里以第一端口为用于发送该多个报文的端口。将该报文转发设备保存的报文转发设备需要经由对应的第一端口发送的待发送的报文的数量记作“第一数量”,确定该第一数量对应于每个端口的流表表项中保存的经由该端口发送的待发送的报文的数量。
在一种可能的设计中,所述第一数量是报文转发设备需要经由所述第一端口发送的待发送的报文包括所述转发设备尚未接收到的报文,或者,已接收并且尚未发送的报文。
应理解,本申请中所说的一个端口的待发送的报文,可以理解为该端口的流表表项中保存的报文,那么待发送的报文的数量,可以理解为报文转发设备保存的经由该端口发送的报文的数量。或者,待发送的报文也可以包括没有到达该端口的报文,流表表项中保存的报文的数量指示了未来某一个时段内将占用该端口的报文数量。
上述方法能够根据网络设备端口的占用情况,选择端口承载的报文数量最小的端口作为转发报文的出端口,可以降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
结合第一方面,在第一方面的某些实现方式中,该报文转发设备根据该报文转发设备保存的多个数量,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口,包括:该报文转发设备确定该多个数量中的最小数量对应的端口为用于发送该多个报文的该第一端口,该多个数量中的最小数量为该第一数量。
报文转发设备从多个端口中确定第一端口的过程中,可以查询每个端口对应的流表表项中报文的承载数量,将每个端口对应的该流表表项中报文的承载数量最小的端口,确定为转发待发送的报文的端口,即第一端口。
上述方法能够根据网络设备端口的占用情况,选择端口承载的报文数量最小的端口作为转发报文的出端口,可以降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
结合第一方面和上述实现方式,在第一方面的某些实现方式中,该报文转发设备根据该报文转发设备保存的多个数量,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口,包括:该报文转发设备确定多个商中最小的商对应的端口为用于发送该多个报文的该第一端口,该多个商与该多个端口一一对应,该多个商中的每个商是该报文转发设备保存的需要经由对应的端口发送的待发送的报文的数量与对应的端口的带宽的商。
应理解,在报文转发过程中,报文转发设备的多个端口中每个端口发送的报文在总带宽的基础上,占据一定比例的带宽。那么,报文转发设备可以获取每个端口对应的的报文转发设备保存的经由该端口发送的待发送的报文的数量占据端口总带宽的商,并从多个商中选择最小的商对应的端口作为第一端口。
通过上述技术方案,报文转发设备根据多个端口分别对应的多个商,将多个商中的最小商对应的端口确定为用于发送该多个报文的端口,该方法从多个端口中每个端口出发,考虑每个端口用于发送该端口的待发送的报文的速率占该端口发送报文的总速率的比例,能够根据网络设备端口的占用情况,选择端口带宽占用最低的端口作为转发报文的出端口,避免了因为选择的端口虽然保存的待发送报文数量低但是占用该端口的带宽比例较高的情况发生,保证从多个端口中选择的端口一定是轻载的端口,可以避免选择了重载端口去转发报文,从而降低其他承载的报文数量较大的端口的压力,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
结合第一方面和上述实现方式,在第一方面的某些实现方式中,该多个报文携带该多个报文的数量,该报文转发设备根据该报文转发设备保存的多个数量,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口之前,该方法还包括:该报文转发设备将该第一端口对应的该第一数量更新为第二数量,该第二数量等于该第一数量与该多个报文的数量的和。
结合第一方面和上述实现方式,在第一方面的某些实现方式中,该报文转发设备将该第一端口对应的该第一数量更新为第二数量之后,以及该报文转发设备经由该第一端口发送该多个报文之前,该方法还包括:该报文转发设备接收报文集合(a set ofpackets);该报文转发设备根据数量集合,从该多个端口中确定用于发送该报文集合的一个端口,该数量集合是对该多个数量进行更新得到的,其中,该多个数量中的该第一数量被更新为该第二数量,该数量集合中包括的多个数量与该多个端口一一对应。
结合第一方面和上述实现方式,在第一方面的某些实现方式中,该数量集合中包括的多个数量中的最小数量对应的端口为用于发送该报文集合的一个端口。
应理解,这里的“报文集合”可以是指多个报文。这里描述的实现方式是在第一端口更新流表表项中的数量信息之后且没有发送该多个报文的时刻,即在将第一端口对应的第一数量更新为第二数量之后且没有发送该多个报文时可执行的方法。
结合第一方面和上述实现方式,在第一方面的某些实现方式中,该报文转发设备经由该第一端口发送该多个报文包括:该报文转发设备经由该第一端口发送该多个报文中的一个报文;该报文转发设备经由该第一端口发送该多个报文中的一个报文之后,该方法还包括:该报文转发设备将数量集合中的该第二数量更新为第三数量,该第三数量对应该第一端口,该第三数量等于该第二数量减1。
在上述技术方案中,通过在报文转发设备接收的报文上携带该报文转发设备保存的经由该端口发送的待发送的报文的数量信息,报文转发设备能够在获取该报文转发设备保存的经由该端口发送的待发送的报文的数量信息之后,根据该报文转发设备保存的经由该端口发送的待发送的报文的数量信息和网络端口的占用情况,从多个出端口中确定一个承载的报文的数量最小的端口作为第一端口,再通过该轻载的第一端口转发待发送的报文,响应速度快,降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡;同时,结合flowlet方式,在每个flowlet上携带要发送的报文数量,还能够实现无乱序的转发报文,而且能够适应微突发场景,快速实现网络负载均衡。
结合第一方面和上述实现方式,在第一方面的某些实现方式中,当该报文转发设备和报文接收设备之间链路故障时,该方法还包括:当该第一端口对应的发送缓存中可用的存储空间承载的报文数量大于或等于预设的阈值时,该报文转发设备接收该第一端口发送的第一消息,该第一消息用于通知该报文转发设备确定转发该多个报文的第二端口,该第二端口是该报文转发设备对应的多个端口中除该第一端口之外的端口;该报文转发设备根据该待发送的报文的数量信息,从该至少一个端口中确定第二端口;该报文转发设备通过该第二端口转发该待发送的报文。
应理解,每个端口对应的发送缓存为该端口的物理缓存,该物理缓存可以用于缓存报文队列。该第一端口对应的发送缓存中可用的存储空间承载的报文数量可以理解为是该第一端口的物理缓存能够缓存的报文的最大数量减去该第一端口的物理缓存已经存储的报文的数量,报文转发设备可以获取第一端口对应的发送缓存中可用的存储空间承载的报文数量。当第一端口对应的发送缓存中可用的存储空间承载的报文数量大于或等于预设的阈值,说明该第一端口已经是重载的端口,即第一端口的报文承载量已经比较大,出现拥塞或丢包的概率较大,为了保证网络设备转发报文的响应速度和报文传输的准确性,报文转发设备可以重新确定一个端口,本申请实施例中称为“第二端口”,该第二端口和第一端口是不同的端口。
结合第一方面和上述实现方式,在第一方面的某些实现方式中,该第二端口是该至少一个端口中除该第一端口之外的承载的报文数量最小的端口。
应理解,这里预设的阈值可以是在报文转发过程开始之前,不同的端口就固定对应不同的阈值,也可以是该多个端口对应相同的阈值,本申请对此并不限定。此外,该预设的阈值还可以是保存在每个端口对应的流表表项中的固定值,也可以是报文转发设备根据照预设的算法,根据接收报文的速率或者接收报文的优先级等确定的阈值,本申请对预设的阈值的配置方式不做限定。
还应理解,上述所说的报文的优先级可以理解为报文所在的业务的优先级信息、应用的优先级信息等,例如在业务、应用包括的多个报文中通过查找某些关键字,根据与该查找的关键字是否匹配来确定业务或应用的优先级。本申请对此并不限定。
通过上述技术方案,当链路出现故障,导致可能出现报文转发设备拥塞,队列持续堆积时,本申请实施例可以利用网络设备之间的配合关系,快速通知上游的报文转发设备,上游的报文转发设备及时修改报文的转发路径,选择轻载的端口转发报文。具体地,当确定的出端口或下游的报文转发设备报文承载量超过预设的阈值后,出端口或下游的报文转发设备及时向上游的报文转发设备发送用于通知上游的报文转发设备重新选择转发端口的第一消息,此时,上游的报文转发设备维护多个端口的每个端口的流表表项的待发送数据表数据不更新,并在除了原第一端口之外的多个端口中,选择报文承载量最小的端口作为第二端口,进行豹纹的转发。当出端口或下游的报文转发设备拥塞解除后,不再反压,不再发送第一消息,上游的报文转发设备维护的数据表数据下降,路径重新可用,即第一端口可以继续被选择。这种方式通过上下游设备感知的方式,能够快速感知出端口或下游报文转发设备的状态,通过端口统计数据进行维护,能够快速感知网络故障情况,适用于非对称网络,响应速度快,降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
本申请实施例提供的多种实现负载均衡的处理方法,通过获取待发送的报文的数据信息,根据端口对应的流表表项中统计的报文承载量,选择轻载的端口进行报文的转发,并在报文接收和转发过程中,不断更新和维护端口对应的流表表项中统计的报文承载量,响应速度快,降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡;同时能够快速感知网络故障情况,负载均衡效果好,容忍微突发情况;此外,能够适应非对称拓扑网络,实现报文无乱序的传输,对传输层影响小且实现过程简单。
第二方面,提供了一种报文转发设备,包括:接收单元,用于接收多个报文;处理单元,用于根据该报文转发设备保存的多个数量,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口,该多个数量与该多个端口一一对应,该多个数量中的每个数量是该报文转发设备保存的该报文转发设备需要经由对应的端口发送的待发送的报文的数量,该多个数量包括第一数量,该第一数量是该报文转发设备保存的该报文转发设备需要经由该第一端口发送的待发送的报文的数量,该报文转发设备保存的该报文转发设备需要经由该第一端口发送的待发送的报文的数量所对应的待发送的报文不包括该多个报文;发送单元,用于经由该第一端口发送该多个报文。
结合第二方面,在第二方面的某些实现方式中,该处理单元还用于:确定该多个数量中的最小数量对应的端口为用于发送该多个报文的该第一端口,该多个数量中的最小数量为该第一数量。
结合第二方面和上述实现方式,在第二方面的某些实现方式中,该处理单元还用于:确定多个商中最小的商对应的端口为用于发送该多个报文的该第一端口,该多个商与该多个端口一一对应,该多个商中的每个商是该报文转发设备保存的该报文转发设备需要经由对应的端口发送的待发送的报文的数量与对应的端口的带宽的商。
结合第二方面和上述实现方式,在第二方面的某些实现方式中,该多个报文携带该多个报文的数量,该处理单元还用于:将该第一端口对应的该第一数量更新为第二数量,该第二数量等于该第一数量与该多个报文的数量的和。
结合第二方面和上述实现方式,在第二方面的某些实现方式中,该处理单元将该第一端口对应的该第一数量更新为第二数量之后,以及该发送单元经由该第一端口发送该多个报文之前,该接收单元还用于:接收报文集合;以及该处理单元还用于:根据数量集合,从该多个端口中确定用于发送该报文集合的一个端口,该数量集合是对该多个数量进行更新得到的,其中,该多个数量中的该第一数量被更新为该第二数量,该数量集合中包括的多个数量与该多个端口一一对应。
结合第二方面和上述实现方式,在第二方面的某些实现方式中,该数量集合中包括的多个数量中的最小数量对应的端口为用于发送该报文集合的一个端口。
结合第二方面和上述实现方式,在第二方面的某些实现方式中,该发送单元还用于:经由该第一端口发送该多个报文中的一个报文;该发送单元经由该第一端口发送该多个报文中的一个报文之后,该处理单元还用于:将数量集合中的该第二数量更新为第三数量,该第三数量对应该第一端口,该第三数量等于该第二数量减1。
结合第二方面和上述实现方式,在第二方面的某些实现方式中,当该报文转发设备和报文接收设备之间链路故障时,该接收单元还用于:当该第一端口对应的发送缓存中可用的存储空间承载的报文数量大于或等于预设的阈值时,接收该第一端口发送的第一消息,该第一消息用于通知该报文转发设备确定转发该多个报文的第二端口,该第二端口是该报文转发设备对应的多个端口中除该第一端口之外的端口;以及,该确定单元还用于根据该待发送的报文的数量信息,从该至少一个端口中确定第二端口;该发送单元还用于通过该第二端口转发该待发送的报文。
结合第二方面和上述实现方式,在第二方面的某些实现方式中,该第二端口是该至少一个端口中除该第一端口之外的承载的报文数量最小的端口。
第三方面,提供一种报文转发设备,所述报文转发设备包括处理器、存储器和通信接口,所述处理器、存储器和通信接口通过总线相连接。所述存储器,用于存储所述处理器执行的程序代码;所述处理器,调用所述存储器存储的程序代码,通过所述通信接口获取并转发报文,当处理器执行所述存储器存储的指令时,用于完成如第一方面中所涉及的任意一种负载均衡处理方法。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述任意一种负载均衡处理方法。
第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述任意一种负载均衡处理方法。
附图说明
图1是本申请提供的一例数据中心网络的结构示意图。
图2为本申请提供的一种交换机的结构示意图。
图3为本申请提供的一种服务器的结构示意图。
图4是一例报文转发示意图。
图5是本申请实施例提供的一例负载均衡的处理方法的示意性流程图。
图6是TCP报文格式示意图。
图7示出了本申请实施例的负载均衡的报文转发设备的示意性框图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
图1是本申请提供的一例数据中心网络的结构示意图。参见图1,数据中心网络包括服务器1至服务器6、叶子交换机(leaf switch,LS)1、LS1、LS3以及脊柱交换机(spineswitch,SS)1、SS2以及SS3。其中,服务器1和服务器2连接到LS1,服务器3和服务器4连接到LS2,服务器5和服务器6连接到LS3;LS1连接到SS1、SS2以及SS3,LS2连接到SS1、SS2以及SS3,LS3连接到SS1、SS2以及SS3。服务器1需要经由LS1与其他服务器进行通信,服务器6需要经由LS3与其他服务器进行通信。服务器1与服务器6进行通信时,服务器1发送的数据流可以经由不同的路径到达服务器6,不同的路径包括:路径1(LS1-SS1-LS3)、路径2(LS1-SS2-LS3)以及路径3(LS1-SS3-LS3)。在某个时间,不同路径的拥塞程度可能是不同的。相对于拥塞程度较高的路径,选择拥塞程度较低的路径传输服务器1发送给服务器6的数据流,有助于降低网络拥塞。
图2为本申请提供的一种交换机的结构示意图。图1中的LS可以是交换机100,图1中的SS可以是交换机100。关于图1中的LS和SS的具体实现方式,可以参见本申请对交换机100的描述。
参见图2,交换机100包括端口a至端口f、网络处理器110、存储器120、流量管理器130以及存储器140。端口a、端口b以及端口c与网络处理器110耦合,端口a、端口b以及端口c为发送端口,可以将接收到的报文发送至网络处理器110,交换机100可以包含更多或者更少的接收端口。端口d、端口e以及端口f与流量管理器130耦合,网络处理器110和存储器120耦合,存储器120中可以保存计算机程序以及转发表,所述转发表可以是哈希表。
网络处理器110可以通过执行存储器120中保存的计算机程序和/或查找转发表,对来自接收端口的报文进行处理。例如,网络处理器110可以通过执行计算机程序,对报文中的哈希键执行哈希运算,从而获得哈希值。再例如,网络处理器110可以通过查找哈希表,确定与哈希值匹配的表项。根据与哈希值匹配的表项,确定用于转发报文的发送端口,所述发送端口可以是端口d、端口e或者端口f。网络处理器110和流量管理器130耦合,流量管理器130与存储器140耦合。例如,网络处理器110确定用于转发报文的发送端口后,可以将报文发送至流量管理器130,流量管理器130也可以称为调度器。流量管理器130中可以维护与端口d、端口e以及端口f一一对应的三个发送缓存队列。流量管理器130接收到来自网络处理器110的报文后,可以根据用于转发报文的发送端口,将报文入队到与用于转发报文的发送端口对应的发送缓存队列。流量管理器130可以对位于发送缓存队列中的报文进行调度,从而通过发送端口发送报文。具体地,流量管理器130中可以维护与所述三个发送缓存队列一一对应的三个报文描述符队列,报文描述符队列中包含多个报文描述符,每个报文描述符包含报文存储在发送缓存队列中的地址。当流量管理器130需要将报文入队到发送缓存队列时,流量管理器130可以在报文描述符队列中增加该报文的存储地址。流量管理器130可以对存储器140执行写操作,从而将报文入队到发送缓存队列。当流量管理器130需要将报文从发送缓存队列出队时,流量管理器130可以将报文描述符队列中该报文的存储地址删除。流量管理器130可以对存储器140执行读操作,从而将报文从发送缓存队列出队。报文出队后,报文经由发送端口被发送。网络处理器110可以用于实现本申请中的处理单元,端口可以用于实现本申请中的接收单元和发送单元。
图3为本申请提供的一种服务器的结构示意图。图1中的服务器可以是服务器1000。关于图1中的服务器的具体实现方式,可以参见本申请对服务器1000的描述。
参见图3,服务器1000包括中央处理单元1100、存储器1200、端口1300以及总线,处理单元1100、存储器1200以及端口1300通过所述总线耦合。存储器1200存储软件,所述软件包含操作系统以及多个应用程序;中央处理单元1100通过访问存储器1200运行所述操作系统以及所述多个应用程序,所述操作系统可以是Window或者Linux。基于所述操作系统,中央处理单元1100运行所述多个应用程序;端口1300可以用于接收报文以及发送报文。例如,当端口1300接收到来自交换机100的报文后,存储器1200可以保存报文,中央处理单元1100可以根据应用程序对报文进行处理。另外,中央处理单元1100可以根据应用程序生成报文,并经由端口1300将报文发送至交换机100。
中央处理单元1100可以用于实现本申请中的处理单元,端口可以用于实现本申请中的接收单元和发送单元。另外,中央处理单元1100可以被替换为其他的处理器,所述其他处理器可以是数字信号处理器(digital signal processor,DSP)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程门阵列(fieldprogrammable gate array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合,其可以实现或执行结合本发明实施例公开内容所描述的各种示例性的逻辑方框,模块和电路;所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
在本申请的描述中,将服务器作为报文发送设备和报文接收设备,将叶子交换机LS和脊柱交换机SS作为报文转发设备或者转发节点,以报文发送设备、报文转发设备和报文接收设备之间的报文转发过程为例,进行详细的描述和本申请负载均衡的处理方法的介绍,例如将服务器1作为报文发送设备、LS1-LS3或者SS1-SS3作为报文转发设备、将服务器6作为报文接收设备。应理解,本申请对数据中心网络中包括的报文发送设备、报文转发设备、报文接收设备的数量或者形式不做限定。
为了便于本领域技术人员的理解,下面先对本申请中的部分用语进行解释说明。
1、传输控制协议
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,由因特网工程任务组(Internet Engineering Task Force,IETF)的协议RFC 793定义。在简化的计算机网络开放式系统互联(open systeminterconnect,OSI)模型中,它完成第四层传输层所指定的功能;在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段,该报文段的分区通常受该计算机连接的网络的数据链路层的最大传输单元(maximum transmission unit,MTU)的限制。之后TCP把结果包传给IP层,由它来通过网络将包传送给报文接收设备的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到报文接收设备的包的按序接收。然后报文接收设备对已成功收到的包发回一个相应的确认(acknowledgement,ACK);如果发送端设备在合理的往返时延(round-trip time,RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。
此外,TCP中,定义了窗口、TCP发送窗口、确认(acknowledgement)、段(segment)、TCP发送器以及TCP接收器的概念。关于TCP窗口、确认(acknowledgement)、段(segment)、TCP发送器以及TCP接收器,请参见IETF发布的RFC793、RFC813、RFC879、RFC1180、RFC5681以及RFC5690,本申请不再赘述。
2、负载均衡
负载均衡可以理解为,网络中针对相同收发端的流量存在多条等价路径,从而通过该多条等价路径提供更大的网络容量。结合图1,以服务器1为报文发送设备,服务器6为报文接收设备,如图1中所示,服务器1与服务器6进行通信时,服务器1发送的报文流可以经由不同的路径到达服务器6,例如,不同的路径包括:路径1(LS1-SS1-LS3)、路径2(LS1-SS2-LS3)以及路径3(LS1-SS3-LS3)。
由于从服务器1到服务器6的流量的不确定性,每一条链路的负载不尽相同,为了保证总带宽的最佳利用率,可以通过负载均衡的策略。那么,如何在众多的等价路径上选择合适的负载均衡方法,不仅影响网络整体利用率,而且会影响业务的时延和吞吐等。此外,负载均衡考虑的主要因素包括响应速度,拓扑适应性等均衡效果,以及是否会形成报文的乱序,造成传输层的错误反应。
3、等价多路径路由
等价多路径路由(equal-cost multi-path routing,ECMP)是目前典型的一种负载均衡方法。ECMP,即,每流在权重相同的路径中均衡选择路径,增加了传输带宽,同时防止多流选择同一路径,造成路径拥塞。ECMP技术包括基于包(packet)的路径选择方式和基于流(flow)的路径选择方式。基于packet的路径选择方式可以做到负载均衡。多路径中不同路径的时延存在差别,导致在报文接收设备接收到的packet会出现乱序。需要packet重排序。如前结合图5介绍了基于流的路径选择方式中可以根据哈希(hash)算法确定出转发报文的出接口(即,选择报文转发路径),报文接收设备不需要报文重排序。不同flow的速率会有差别(例如占据带宽较大的大流(elephant flow)和占据带宽较小的小流(mice flow),不同路径中传输的flow也不同。
应理解,ECMP最大的特点是实现了等价情况下,多路径负载均衡和链路备份的目的,在静态路由和开放式最短路径优先(open shortest path first,OSPF)中基本上都支持ECMP功能。应理解,在存在多条不同链路到达同一目的地址的网络环境中,如果使用传统的路由技术,发往该目的地址的数据包只能利用其中的一条链路,其它链路处于备份状态或无效状态,并且在动态路由环境下相互的切换需要一定时间,而ECMP可以在该网络环境下同时使用多条链路,不仅增加了传输带宽,并且可以无时延、无丢包地备份失效链路的数据传输。
由于ECMP采用逐流负载分担方式,即,每条流选择好一条路径后不再变化,因此不存在报文的乱序问题,避免了报文乱序对传输层造成干扰,不会导致传输层的错误降速。当每条流的流量大小差异不大的情况下,ECMP的负载均衡效果较好。
但是,当每条流包含的数据的数量大小差异较大的时候,由于大象流(elephantflow)哈希冲突,即大象流可能都哈希到相同路径上,会造成路径上的拥塞情况。此外,各路径的带宽、时延和可靠性等不一样,把各个路径的数据流量认可成一样,不能很好地利用带宽,尤其在路径间流量差异大时,效果会非常不理想。根据测量数据,由于ECMP的哈希冲突问题,导致35.9%的拥塞出现在路由节点上。35.9%的路由节点出现拥塞后,导致某些路径重载,出现丢包或者显式拥塞指示(explicit congestion notification,ECN),而在某些路径上轻载。重载路径上的流将会降速或者丢包重传机制,降低网络负载,造成网络带宽的浪费,恶化该流的流完成时间(flow completion time,FCT)。另外,ECMP在出现不均衡情况下,不能根据拥塞情况快速调整路径,根据拥塞控制算法调控,拥塞缓解速度很慢。
为了优化大象流哈希冲突导致路径不均衡的情况,可以将流量切成固定长度或接近长度,每个设备做随机负载均衡,如针对数据包(packet),flowcell等。这种方式,不存在哈希冲突问题,当所有路径都等价的情况下均衡效果很好,而且当出现微突发场景,仍然能够达到很好的均衡效果,不出现拥塞问题。
但是,在网络非对称场景下,在某条链路故障并且路径不完全等价的情况在,不同节点之间的信息不同步。由每个节点各自决策,会出现有些路由节点的拥塞,有些节点轻载的情况。如果流的流量较大或者流的数量较多,则会造成很严重的乱序。有可能造成传输层的降速。上述情况有可能对两节点之间的所有流量都造成影响。
以图4为例进行说明。图4是一例报文转发的示意图。图4中,报文发送设备A可以通过报文转发设备1和报文转发设备2向接收端发送流量,报文发送设备B也可以通过报文转发设备1和报文转发设备2向报文接收设备发送流量,若无链路故障,报文发送设备A向报文转发设备1和报文转发设备2分别发送50%的流量,报文发送设备B同理,报文转发设备1和报文转发设备2上的流量完全相同,网络利用率达到100%。但数据中心中可能链路故障,例如,当报文转发设备2和报文接收设备之间的链路出现故障时,如果报文发送设备A作为主路由设备,则报文发送设备A可以获知报文转发设备2和接收端之间的链路故障。因此,报文发送设备1将全部流量发向报文转发设备1,而报文发送设备B还是按照原先的50%发向报文转发设备1和报文转发设备2,造成报文转发设备1的下行拥塞,可能造成所有报文的乱序。或者,还有一些机制,通过协议,如OSPF等通告网络拥塞情况,但仍然造成一段时间的拥塞控制,例如数个毫秒时间的拥塞,这样的拥塞对传输层造成很大影响。
4、flowlet
flow可以理解为“流”,flowlet可以理解为是一个flow中连续发送的多个报文组成的报文组,每个flow中包括多个flowlet,因此,“报文组”和“flowlet”经常交替使用。在基于flowlet机制的负载均衡处理方法中,将某个流中连续发送的多个packet作为一个flowlet,并应用flowlet机制进行路径选择,以将该flowlet中包括的多个packet基于选择的路径进行转发,即基于flowlet流表表项实现flowlet中包括的多个报文的转发。不同的Flowlet对应不同的flowlet流表表项。该flowlet流表表项用于指示每个flowlet中包括的多个报文的报文转发路径。关于flowlet,以及基于flowlet机制进行报文转发的过程,本申请不再赘述。
基于flowlet机制的负载均衡处理方法,可以将基于packet的路径选择方式和基于流的路径选择方式这两种路径选择方式进行结合,能够较好的做到负载均衡处理。
因此,当测量拥塞或者链路利用率程度出现不均衡后,调整拥塞路径流的路径,同时采用flowlet方式换路,保证每流内部不出现乱序情况。这种方式的优势主要有,不存在乱序,不会造成传输层的错误降速,而且全局决策,能够选择接近最优路径,当出现网络故障情况下,能够根据端到端的测量结果的选择最佳路径。
但是,这种方式需要端到端反馈,响应速度较慢,例如可能到达100us,并且需要维护每条路径的拥塞程度,同时需要在报文头中指定路径,源端维护的流表规模很大,多级拓扑下实现困难。另外,需要端到端的测量后才能决策,响应时间仍然比较慢,尤其是在数据中心内,微突发场景频繁发生,端到端决策会造成比较长时间的延时。
这里仍以图4为例进行说明,图4中,报文发送设备A和报文发送设备B向报文接收设备发送流量,报文发送设备A在发送流量之前,需要先向各个报文转发设备(报文转发设备1和报文转发设备2)发送探测报文,用于探测不同路径的拥塞程度等。报文转发设备1和报文转发设备2会根据不同路径中队列的深度和端口利用率等,向报文发送设备A发送反馈信息,报文发送设备A根据反馈信息确定不同的路径,并建立流表表项,报文发送设备B同理。因此,上述端到端决策会造成比较长时间的延时。
此外,针对流表表项规模的问题,一种优化机制将负载均衡和拥塞控制结合起来,利用拥塞控制感知到的拥塞信息代替路径拥塞信息的主动测量,利用flowlet的根据拥塞程度的自动调节选择合适路径。这种方式,不需要探测每条路径的拥塞程度,不需要维护大规模的流表,适用于多级拓扑网络。但是,仍然需要探测网络拥塞,需要端到端的机制感知,并且需要网络设备多次探测路径,才能选到合适路径,收敛速度会很慢。
由以上的分析可知,现有的负载均衡的处理方法,在响应速度、网络拓扑适应性以及是否造成报文乱序方面很难同时达到比较好的负载均衡效果,本申请实施例将提供一种负载均衡机制,能够实现报文无乱序的发送,同时保证较快的响应速度,满足对非对称拓扑适应能力强的要求,下面将结合图3至图详细介绍本申请实施例提供的负载均衡的处理方法。
应理解,本申请提供的负载均衡处理方法及装置,可应用于支持ECMP技术进行负载均衡处理的网络,例如可应用于图1所示的数据中心网络。
图5是本申请实施例提供的一例负载均衡的处理方法的示意性流程图。下面,对方法500的每个步骤进行说明。
应理解,在本申请实施例中,以报文转发设备作为执行方法500的执行主体为例,对方法500进行说明,例如,报文转发设备可以对应图1中数据中心网络中的LS和SS等网络设备。作为示例而非限定,执行方法500的执行主体也可以是应用于LS和SS的芯片。参见图5,所述方法包括S510至S530。
S510,报文转发设备接收多个报文。
应理解,报文转发设备接收报文发送设备发送的报文。报文发送设备发送的报文可以是单个的packet;或者,也可以是数个packet组成的flowlet。
当报文转发设备接收报文发送设备发送的packet,该多个报文可以是多个packet;当报文转发设备接收报文发送设备发送的flowlet,该多个报文可以是一个flowlet包括的多个报文;当报文转发设备接收报文发送设备发送的流,该多个报文可以是一个流包括的多个报文。本申请提及的报文可以是以太网帧(ethernet frame)、以太网报文(ethernet packet)、网际协议(internet protocol,IP)报文或者多协议标签交换(multiprotocol label switching,MPLS)报文。本申请对报文转发设备接收的报文的格式不做限定。
还应理解,本申请中报文的格式可以是现有的传输控制协议(transmissioncontrol protocol,TCP)报文的格式,图6是TCP报文格式示意图。如图6所示,TCP报文是TCP层传输的数据单元,也称为报文段。TCP报文段包括源端口(source port)、目的端口(destination port)、序列号(sequence number)、确认号(acknowledge number)、偏移和保留字段、紧急指针字段标志(urgent pointer field significant,URG)、确认字段标志(acknowledge field significant,ACK)、推功能(push function,PSH)、重置连接(resetthe connection,RST)、同步序列号(synchronize sequence numbers,SYN)、数据传送完成标志FIN(no more data from sender)、校验和(checksum)、紧急指针(urgent pointer)、选项(option)、填充字段(padding)等。对于各个字段的含义、作用以及大小都可以参照现有技术中TCP报文格式的相关介绍,为了简便,本申请不再赘述。此外,本申请实施例的报文还可能有更多的格式,本申请对此并不限定。
还应理解,对于“流”的具体实现方式,可以有多种可能的方式。以上述介绍的TCP报文为例,流可以对应多元组定义方式,也就是说不同的多元组对应不同的流。例如,一元组定义方式,流可以是具有相同的目的端口地址的多个连续的报文组成的集合;二元组定义方式,流可以是具有相同的目的端口地址且具有相同的源端口地址的多个连续的报文组成的集合;三元组定义方式,流可以是具有相同的目的端口地址、相同的源端口地址且具有相同的序列号的多个连续的报文组成的集合。
当然,报文流也可以由其他特征定义。例如,报文流可以由五元组定义。五元组可以包括源IP地址、目的IP地址、源端口、目的端口以及协议号。源IP地址、目的IP地址和协议号可以携带在报文的IP头中。源端口和目的端口可以携带在传输控制协议TCP头或者用户数据报协议(user datagram protocol,UDP)头中。在一种可能的设计中,报文流的特征可以是四元组。四元组包括源IP地址、目的IP地址、协议号以及目的队列对(destinationqueue pair,Dest QP)。可以理解,源IP地址、目的IP地址和协议号可以携带在报文的IP头中。
其中,以上介绍的各种定义中所说的“相同”指的是两个报文的格式中的某信息分别相同。此外,以上列举都是“流”可能的定义方式,还可以有针对不同的报文格式有其他可能存在的定义,或者基于其他方式对报文流进行区分,本申请包括但不限于此。
S520,该报文转发设备根据该报文转发设备保存的多个数量,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口。
其中,该多个数量与该多个端口一一对应,该多个数量中的每个数量是该报文转发设备保存的该报文转发设备需要经由对应的端口发送的待发送的报文的数量。该多个数量包括第一数量。该第一数量是该报文转发设备保存的该报文转发设备需要经由该第一端口发送的待发送的报文的数量。该报文转发设备保存的该报文转发设备需要经由该第一端口发送的待发送的报文不包括该多个报文。
本申请中,报文转发设备保存了该报文转发设备需要分别经由多个端口发送的待发送的报文的多个数量。具体实现时,报文转发设备可以保存一个映射表,该映射表可用于保存所述多个数量。映射表包含多个表项,每个表项包含一个端口的标识以及需要经由该端口发送的待发送的报文的数量。也就是说,每个表项包含一个标识以及一个数量。所述多个表项分别对应所述多个端口。报文转发设备上电后,获取报文转发需求前,报文转发设备可以生成并保存一个初始的映射表,在初始的映射表中,每个表项中的数量都是0。报文转发设备获取报文转发需求后,可以根据报文转发需求,更新映射表。例如,获取的报文转发需求是端口1需要发送100个报文。报文转发设备可以将映射表中对应端口1的表项中的数量更新为100。
在一种可能的设计中,报文转发设备获取端口1需要发送100个报文的报文转发需求具体实现时,可以包括:报文转发设备接收到流标识1以及数量100。报文转发设备根据流标识1查找转发表,确定端口1。进而,报文转发设备获取端口1需要发送100个报文的报文转发需求。转发表中的表项包含流标识以及端口的标识。所述100个报文中的每个报文包含流标识1。流标识1可以是目的IP地址;或者,流标识1可以包括源IP地址以及目的IP地址。报文转发设备接收到100个报文中的报文时,可以根据已存在的转发表,经由端口1对报文进行转发。
在一种可能的设计中,报文转发设备获取端口1需要发送100个报文的报文转发需求具体实现时,可以包括:报文转发设备接收到流标识1以及数量100。报文转发设备根据初始的映射表确定所有的端口对应的数量都等于0。报文转发设备从所有端口中随机选取一个端口(例如端口1)。将选取的端口1作为需要发送100个报文的端口。进而,报文转发设备生成转发表项。转发表项包含端口1的标识以及流标识1。所述100个报文中的每个报文包含流标识1。报文转发设备接收到100个报文中的报文时,可以根据已生成的转发表项,经由端口1对报文进行转发。
需要说明的是,报文转发设备获取报文转发需求时,报文转发设备尚未发送该100个报文。此外,所述报文转发设备保存的所述报文转发设备需要经由所述第一端口发送的待发送的报文的数量所对应的待发送的报文不包括S510提及的所述多个报文。
例如,S510提及的所述多个报文是30个报文,所述第一端口是上文提及的端口1。所述报文转发设备保存的所述报文转发设备需要经由端口1发送的待发送的报文的数量为100。所述报文转发设备保存的所述报文转发设备需要经由所述第一端口发送的待发送的报文的数量所对应的待发送的报文是上文提及的所述100个报文。所述30个报文与所述100个报文没有交集,即所述30个报文中的任一报文都不是所述100个报文中的任一报文。所述报文转发设备接收到所述30个报文时,所述报文转发设备可能尚未接收到所述100个报文,或者可能已接收到所述100个报文但尚未发送所述100个报文中的任一报文。可以看出,所述100个报文和所述30个报文都是需要经由端口1发送的报文。但是,在所述报文转发设备根据S320确定第一端口(例如端口1)是用于发送所述多个报文(例如所述30个报文)的端口前,报文转发设备保存的多个数量中与第一端口(例如端口1)对应的第一数量(例如100)并不涉及所述多个报文(例如所述30个报文)。当然,在S320之后,报文转发设备可以对保存的第一数量(例如100)进行更新。例如,将100更新为130。更新后,报文转发设备保存的与第一端口(例如端口1)对应的数量(例如130)涉及所述多个报文(例如所述30个报文)。
在一种可能的设计中,“第一数量”可以是该报文转发设备保存的多个数量中的最小数量。将所述报文转发设备保存的报文转发设备需要经由第一端口发送的待发送的报文的数量记作“第一数量”。例如,端口d为第一端口,端口d对应第一数量。报文转发设备保存了所述报文转发设备需要经由端口d发送的待发送的报文数量。
在一种可能的设计中,所述第一数量是报文转发设备保存的所述报文转发设备需要经由所述第一端口发送的待发送的报文包括所述转发设备尚未接收到的报文,或者,已接收并且尚未发送的报文。
例如,报文转发设备获取报文转发需求(100个报文)时,所述报文转发设备尚未收到所述100个报文。所述报文转发设备尚未收到所述100个报文具体实现时,可以是所述报文转发设备尚未接收到所述100个报文中的任意一个报文。
在一种可能的设计中,所述报文转发设备尚未收到所述100个报文具体实现时,可以是所述报文转发设备已收到所述100个报文中的一部分报文(例如49个报文),尚未接收到所述100个报文中的另一部分报文(例如51个报文)。报文转发设备可以将所述49个报文保存在缓存中。
在另一种可能的设计中,报文转发设备获取报文转发需求时,所述报文转发设备已收到所述100个报文,但所述报文转发设备尚未将所述100个报文中的任意一个报文发送出所述报文转发设备,报文转发设备可以将所述100个报文保存在缓存中。
应理解,本申请中所说的一个端口的待发送的报文,可以理解为该端口的流表表项中保存的报文,那么待发送的报文的数量,可以理解为所述报文转发设备保存的需要经由该端口发送的报文的数量。例如,待发送的报文可以是该端口的物理缓存(buffer)中已经保存的报文,以报文转发设备接收报文发送设备发送的flowlet为例,当报文转发设备获取了该flowlet的多个报文中的数量为x,x个报文已经到达端口d,占用了端口d的物理缓存,且端口d并没有发送该报文,端口d的物理缓存中已经包括的报文数量为D,则端口d的待发送的报文数量为D+x。
或者,待发送的报文也可以包括没有到达该端口的报文,流表表项中保存的报文的数量指示了未来某一个时段内将占用该端口的报文数量。以报文转发设备接收报文发送设备发送的flowlet为例,当报文转发设备获取了该flowlet的多个报文中的数量为x,但是实际上x个报文并没有到达端口d,即不占用端口d的物理缓存,而是接下来的某个时段内将到达端口d,在该时段内将占用端口d的物理缓存,端口d的物理缓存中已经包括的报文数量为D,则某一个时段内端口d的待发送的报文数量为D+x。此外待发送的D+x的报文一定是端口d还未发送的报文。
还应理解,结合图2的相关描述,报文转发设备可以对应多个出端口,例如端口d、端口e、端口f。报文转发设备从多个出端口中,选择发送接收的报文的出端口。在本申请实施例中,当报文转发设备接收了多个报文,并根据每个端口发送的待发送报文的数量信息,从多个出端口中,选择发送报文的出端口,即,本申请实施例中称为“第一端口”,报文转发设备需要从多个出端口中确定第一端口。
在报文的传输过程中,每个端口对应一个流表表项,该流表表项用于指示报文转发设备转发报文的路径,例如用于指示报文转发设备转发报文的出端口。具体地,当报文的发送采用flowlet方式,针对不同的flowlet,报文转发设备可利用不同的flowlet流表表项进行转发;当报文的发送采用流的方式,针对不同的流,报文转发设备可利用不同的流表表项转发流;当报文的发送采用packet方式,针对不同的packet,报文转发设备可利用不同的流表表项转发packet。
此外,该流表表项中保存了当前端口的报文的承载数量,如下表1所示,端口d的流表表项保存了端口d的报文的承载数量为D,端口e的流表表项保存了端口e的报文的承载数量为E,端口f的流表表项保存了端口f的报文的承载数量为F,以此类推多个端口。
表1
出端口 | 报文的承载数量 |
端口d | D |
端口e | E |
端口f | F |
… | … |
在一种可能的实现方式中,该报文转发设备确定该多个数量中的最小数量对应的端口为用于发送该多个报文的该第一端口,该多个数量中的最小数量为该第一数量。
报文转发设备从多个端口中确定第一端口的过程中,可以查询每个端口对应的流表表项中报文的承载数量,将每个端口对应的该流表表项中报文的承载数量最小的端口,确定为转发待发送的报文的端口,即第一端口。例如,报文转发设备可以获取每个端口的待发送的报文数量D、E、F,可以将D、E、F中最小值对应的端口确定后为第一端口。那么此时,该最小值对应的端口就是多个端口中报文的承载数量最小的端口。例如,D为最小值,确定D为第一数量,将对应的端口d确定为用于发送该多个报文的端口。
上述方法能够根据网络设备端口的占用情况,选择端口承载的报文数量最小的端口作为转发报文的出端口,可以降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
在一种可能的实现方式中,报文转发设备接收多个报文中包括该多个报文的数量信息。
在一种可能的设计中,报文转发设备接收多个报文中包括该多个报文的数量信息,根据该报文转发设备保存的多个数量和接收的该多个报文的数量信息,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口。
当报文转发设备接收的多个报文是多个packet,该多个报文的数量信息是多个packet的大小;当报文转发设备接收报文发送设备发送的flowlet,该多个报文的数量信息可以是一个flowlet中包括的所有的packet的大小;当报文转发设备接收报文发送设备发送的流,该多个报文的数量信息可以是一个流中包括的所有报文的大小。本申请对报文转发设备接收的报文格式、多个报文的形式不做限定。
此外,报文的数量信息可以是直接携带在该多个报文中,例如所述报文转发设备保存的的该报文转发设备需要经由该第一端口发送的待发送的报文的数量信息为32比特或100个报文;或者,报文的数量信息可以是间接携带在该多个报文中,通过报文携带的信息转换为所述报文转发设备保存的该报文转发设备需要经由该第一端口发送的待发送的报文的数量信息;又或者,该多个报文的数量信息携带于第一个可能获取的报文中。本申请对携带数量信息的方式不做限定。
在该实现方式中,报文转发设备在确定用于发送该多个报文的第一端口的过程中,不但考虑多个端口已经保存的该报文转发设备需要经由该端口发送的待发送的报文数量,同时还考虑了接下来接收的多个报文的数量。例如,报文转发设备根据所述报文转发设备保存的该报文转发设备需要经由该第一端口发送的的待发送的报文的数量,确定多个数量中较小的至少两个端口,假设端口d和端口e分别对应的该报文转发设备需要经由该端口发送的待发送的报文的数量D和E在多个端口中为最小的两个值;之后,报文转发设备根据接收的多个报文的数量x,可以根据x的值和D、E之间的关系,再从端口d和端口e中确定出第一端口。假设端口d除了待发送的报文数量D外还可以承载的报文数量为D1,端口e除了待发送的报文数量E外还可以承载的报文数量为E1,D1<x<E1,报文转发设备可以将端口e确定为第一端口。
前述介绍的报文转发设备根据多个端口分别对应的该报文转发设备需要经由该端口发送的待发送的报文的数量,从多个端口中确定报文的数量最小的端口为用于发送该多个报文的端口的过程中,可以确定各个端口对应的该报文转发设备需要经由该端口发送的待发送的报文的数量集合中最小的至少两个端口。在此基础之上,上述技术方案,在接收的多个报文中携带该多个报文的数量信息,以便报文转发设备即使没有接收到该多个报文的情况下,也可以获取到该多个报文的数量信息,再根据未来某各时段内将接收的该多个报文的数量信息,从报文转发设备保存的经由该端口发送的待发送的报文的数量集合中最小的至少两个端口中,确定出用于发送该多个报文的第一端口。该方法能够根据网络设备端口的占用情况,选择端口承载的报文数量最小的端口作为转发报文的出端口,同时避免了因为选择的端口无法承载多个报文的数量的情况发生,保证从多个端口中选择的端口一定是满足当前接收的多个报文的数量需求而且可以避免选择了重载端口去转发报文,从而降低其他承载的报文数量较大的端口的压力,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
在前述可能的实现方式中,介绍了报文转发设备可以根据该报文转发设备对应的端口发送的该报文转发设备需要经由该端口发送的待发送的报文的数量,从该报文转发设备的多个端口中确定用于发送多个报文的第一端口,实际上可能存在某个端口待发送的报文数量虽然较低,但是用于发送该待发送的报文的带宽或者速率占该端口总带宽或者总速率的比例很高的情况,此时,如果选择了多个比例中较大的比例对应的端口作为第一端口,会造成端口的重载,增大了端口拥塞的概率。例如,端口d用来发送报文时最大的发送总速率为100M,端口e用来发送报文时最大的发送总速率为60M,端口f用来发送报文时最大的发送总速率为10M,如果端口d发送已经承载的待发送的报文最大速率为20M,端口e发送已经承载的待发送的报文最大速率为10M,端口f发送已经承载的待发送的报文最大速率为8M,此时,虽然端口f的该报文转发设备需要经由该端口f发送的待发送的报文的数量最小,但是端口f的发送速率8M已经占据端口f的最大发送速率的80%,而端口d的发送速率20M已经占据端口d的最大发送速率的20%,其实端口f并不是作为第一端口,用来发送接收的多个报文的最佳选择。
为了避免上述情况,在另一种可能的实现方式中,该报文转发设备确定多个商中最小的商对应的端口为用于发送该多个报文的该第一端口,该多个商与该多个端口一一对应,该多个商中的每个商是该报文转发设备保存的该报文转发设备需要经由对应的端口发送的待发送的报文的数量与对应的端口的带宽的商。
应理解,在报文转发过程中,报文转发设备的多个端口中每个端口发送的报文在总带宽的基础上,占据一定比例的带宽。那么,报文转发设备可以获取每个端口保存的该报文转发设备需要经由该端口发送的待发送的报文的数量占据端口总带宽的比例,并从多个商中选择最小的商对应的端口作为第一端口。还以上述列举的端口d的发送速率20Mbps已经占据端口d的最大发送速率100Mbps的比例20%,端口e的发送速率10Mbps已经占据端口e的最大发送速率60Mbps的比例16.7%,端口f的发送速率8Mbps已经占据端口f的最大发送速率10Mbps的比例80%为例,报文转发设备可以根据多个商中最小的商确定对应的端口为用于发送多个报文的第一端口。即,报文转发设备可以将端口e确定为第一端口。
通过上述技术方案,报文转发设备根据多个端口分别对应的多个商,将多个商中的最小商对应的端口确定为用于发送该多个报文的端口,该方法从多个端口中每个端口出发,考虑每个端口用于发送该端口的待发送的报文的速率占该端口发送报文的总速率的商,能够根据网络设备端口的占用情况,选择端口带宽占用最低的端口作为转发报文的出端口,避免了因为选择的端口虽然保存的待发送报文数量低但是占用该端口的带宽商较高的情况发生,保证从多个端口中选择的端口一定是轻载的端口,可以避免选择了重载端口去转发报文,从而降低其他承载的报文数量较大的端口的压力,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
在一种可能的实现方式中,该多个报文携带该多个报文的数量,该报文转发设备根据该报文转发设备保存的多个数量,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口之前,该报文转发设备将该第一端口对应的该第一数量更新为第二数量,该第二数量等于该第一数量与该多个报文的数量的和。
当报文转发设备从多个端口中确定了第一端口,并获取多个报文的数量信息x,报文转发设备需要更新流表表项中保存的报文的承载数量。例如,选择端口d作为第一端口,则在接收多个报文之后,端口1就可以更新流表表项中保存的报文的承载数量,得到更新后的流表表项,如下表2所示。
表2
在一种可能的实现方式中,该报文转发设备将该第一端口对应的该第一数量更新为第二数量之后,以及该报文转发设备经由该第一端口发送该多个报文之前,该报文转发设备接收报文集合(a set of packets);该报文转发设备根据数量集合,从该多个端口中确定用于发送该报文集合的一个端口,该数量集合是对该多个数量进行更新得到的,其中,该多个数量中的该第一数量被更新为该第二数量,该数量集合中包括的多个数量与该多个端口一一对应。
在一种可能的设计中,该数量集合中包括的多个数量中的最小数量对应的端口为用于发送该报文集合的一个端口。
应理解,这里的“报文集合”可以是指多个报文。这里描述的实现方式是在第一端口更新流表表项中的数量信息之后且没有发送该多个报文的时刻,即在将第一端口对应的第一数量更新为第二数量之后且没有发送该多个报文时可执行的方法。
例如,报文转发设备接收第一报文集合,获取了第一报文集合中包括的多个报文的数量信息,对于端口d、端口e和端口f对应一个更新流表表项中的数量信息前的第一数量集合{D,E,F},当报文转发设备将端口d确定为转发该第一报文集合的第一端口后,将接收的第一报文集合中多个报文的数量x更新到对应的流表表项中,则更新后的端口d的流表表项中保存的该报文转发设备需要经由该端口d发送的待发送的报文的数量为D+x。此时在没有报文从第一端口发送之前,对于端口d、端口e和端口f对应的更新流表表项中的数量信息前的第二数量集合为{D+x,E,F}。报文转发设备再接收第二报文集合,在为第二报文集合的多个报文确定转发端口的过程中,该报文转发设备可以根据该更新后的第二数量集合,从该多个端口中确定用于发送第二报文集合的第二端口。
应理解,报文转发设备确定了用于发送接收的多个报文的第一端口后,该端口的流表表项中保存的该报文转发设备需要经由该端口发送的待发送的报文的数量就需要按照上述的更新方法进行更新。报文转发设备下一次接收到多个报文后,在为新接收的多个报文确定发送端口过程中,报文转发设备要获取的“多个数量”就是经过更新后的多个端口对应的多个数量。
S530,该报文转发设备经由该第一端口发送该多个报文。
应理解,报文转发设备确定了第一端口之后,将接收的报文通过第一端口发送到报文接收设备或者继续转发到下一个报文转发设备,本申请对此并不限定。
在一种可能的设计中,报文转发设备确定第一端口是用于发送所述多个报文的端口后,报文转发设备可以将多个报文入队到与所述第一端口对应的先入先出队列。报文转发设备可以对先入先出队列中的报文进行调度,从而经由第一端口发送所述多个报文。
在一种可能的实现方式中,该报文转发设备发送多个报文的过程中,该报文转发设备经由该第一端口发送该多个报文中的一个报文,该报文转发设备经由该第一端口发送该多个报文中的一个报文之后,该报文转发设备将数量集合中的该第二数量更新为第三数量,该第三数量对应该第一端口,该第三数量等于该第二数量减1。
当报文转发设备获取更新后的流表表项,如表2,并接收了多个报文,此时待发送的报文可以占用端口的物理缓存。在报文转发设备通过该端口转发该待发送的报文过程中,每发送出一个报文,就更新流表表项中保存的报文的承载数量。例如,端口d作为第一端口,报文转发设备接收报文发送设备发送的flowlet之后待发送的报文数量更新为D+x,则在发送flowlet的一个报文之后,端口d就可以更新流表表项中保存的报文的承载数量,得到更新后的流表表项,如下表3所示,发送了flowlet的第一个报文,相应地,端口d的流表表项中保存的报文的承载数量减去1,发送了第一个报文,待发送的报文数量更新为D+x-1,发送了flowlet的第二个报文,相应地,端口d的流表表项中保存的报文的承载数量减去2,更新为D+x-2,以此类推,直到将数量为x的该flowlet的所有报文全部转发,则端口d的流表表项中保存的报文的承载数量恢复为D。
表3
出端口 | 报文的承载数量 |
端口d | D+x-1 |
端口e | E |
端口f | F |
… | … |
在上述技术方案中,通过在报文转发设备接收的报文上携带该报文转发设备需要经由该端口发送的待发送的报文的数量信息,报文转发设备能够在获取该报文转发设备需要经由该第一端口发送的待发送的报文的数量信息之后,根据该待发送的报文的数量信息和网络端口的占用情况,从多个出端口中确定一个承载的报文的数量最小的端口作为第一端口,再通过该轻载的第一端口转发待发送的报文,响应速度快,降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡;同时,结合flowlet方式,在每个flowlet上携带要发送的报文数量,还能够实现无乱序的转发报文,而且能够适应微突发场景,快速实现网络负载均衡。
在一种可能的设计中,上述列举的实现方法可以针对网络拓扑完全对称的情况,如图2中的示意图。但是,当出现网络拓扑非对称的情况时,例如,某个链路出现故障时,按照前述介绍的,可能出现转发节点的拥塞,图2中节点B和接收端之间的链路出现故障时,如果发送端A作为主路由设备,则发送端A可以获知节点B和接收端之间的链路故障。因此,发送端A将全部流量发向节点A,而发送端B还是按照原先的50%发向节点A和节点B,造成节点A的下行拥塞,可能造成所有报文的乱序,或者,造成一段时间的拥塞,从而对传输层造成很大影响。
针对上述场景,在另一种可能的实现方式中,当该报文转发设备和报文接收设备之间链路故障时,可以利用网络设备之间的配合关系,快速通知上游的报文转发设备,及时修改路径选择策略,重新确定新的转发端口进行报文的转发。
具体地,当该第一端口对应的发送缓存中可用的存储空间承载的报文数量大于或等于预设的阈值时,该报文转发设备接收该第一端口发送的第一消息,该第一消息用于通知该报文转发设备确定转发该多个报文的第二端口,该第二端口是该报文转发设备对应的多个端口中除该第一端口之外的端口;该报文转发设备根据该报文转发设备需要经由该第二端口发送的待发送的报文的数量信息,从该至少一个端口中确定第二端口;该报文转发设备通过该第二端口转发该报文转发设备需要经由该第二端口发送的待发送的报文。
应理解,每个端口对应的发送缓存为该端口的物理缓存,该物理缓存可以用于缓存报文队列。该第一端口对应的发送缓存中可用的存储空间承载的报文数量可以理解为是该第一端口的物理缓存能够缓存的报文的最大数量减去该第一端口的物理缓存已经存储的报文的数量,报文转发设备可以获取第一端口对应的发送缓存中可用的存储空间承载的报文数量。当第一端口对应的发送缓存中可用的存储空间承载的报文数量大于或等于预设的阈值,说明该第一端口已经是重载的端口,即第一端口的报文承载量已经比较大,出现拥塞或丢包的概率较大,为了保证网络设备转发报文的响应速度和报文传输的准确性,报文转发设备可以重新确定一个端口,本申请实施例中称为“第二端口”,该第二端口和第一端口是不同的端口。
还应理解,这里第一消息可以是由该第一端口发送到报文转发设备,也可以是路由交换网络中下游设备发送到上游设备,本申请对此并不限定。此外,第一消息可以有多种体现方式,本申请对此并不限定。
在报文转发设备重新确定报文转发路径,即确定该第二端口的过程中,可以参照上述描述的确定第一端口的过程。报文转发设备根据该多个报文包括的该报文转发设备需要经由该第一端口发送的待发送的报文的数量信息,从除了第一端口之外的该至少一个端口中确定第二端口,再通过该第二端口转发该报文转发设备需要经由该第一端口发送的待发送的报文。为了描述简便,具体的过程这里不再赘述。
在一种可能的设计中,该第二端口是该至少一个端口中除该第一端口之外的承载的报文数量最小的端口。可以理解为,在报文转发设备从除了第一端口之外的多个端口中,确定该第二端口时,优先选择轻载的端口作为报文转发的出端口。
应理解,这里预设的阈值可以是在报文转发过程开始之前,不同的端口就固定对应不同的阈值,也可以是该多个端口对应相同的阈值,本申请对此并不限定。此外,该预设的阈值还可以是保存在每个端口对应的流表表项中的固定值,也可以是报文转发设备根据照预设的算法,根据接收报文的速率或者接收报文的优先级等确定的阈值,本申请对预设的阈值的配置方式不做限定。
还应理解,上述所说的报文的优先级可以理解为报文所在的业务的优先级信息、应用的优先级信息等,例如在业务、应用包括的多个报文中通过查找某些关键字,根据与该查找的关键字是否匹配来确定业务或应用的优先级。本申请对此并不限定。
通过上述技术方案,当链路出现故障,导致可能出现报文转发设备拥塞,队列持续堆积时,本申请实施例可以利用网络设备之间的配合关系,快速通知上游的报文转发设备,上游的报文转发设备及时修改报文的转发路径,选择轻载的端口转发报文。具体地,当确定的出端口或下游的报文转发设备报文承载量超过预设的阈值后,出端口或下游的报文转发设备及时向上游的报文转发设备发送用于通知上游的报文转发设备重新选择转发端口的第一消息,此时,上游的报文转发设备维护多个端口的每个端口的流表表项的待发送数据表数据不更新,并在除了原第一端口之外的多个端口中,选择报文承载量最小的端口作为第二端口,进行报文的转发。当出端口或下游的报文转发设备拥塞解除后,不再反压,不再发送第一消息,上游的报文转发设备维护的数据表数据下降,路径重新可用,即第一端口可以继续被选择。这种方式通过上下游设备感知的方式,能够快速感知出端口或下游报文转发设备的状态,通过端口统计数据进行维护,能够快速感知网络故障情况,适用于非对称网络,响应速度快,降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡。
本申请实施例提供的多种实现负载均衡的处理方法,通过获取待发送的报文的数据信息,根据端口对应的流表表项中统计的报文承载量,选择轻载的端口进行报文的转发,并在报文接收和转发过程中,不断更新和维护端口对应的流表表项中统计的报文承载量,响应速度快,降低其他承载的报文数量较大的端口的压力,避免通过重载端口去转发报文,降低了端口拥塞的概率,同时也降低了端口重载导致丢包的概率,快速实现网络的负载均衡;同时能够快速感知网络故障情况,负载均衡效果好,容忍微突发情况;此外,能够适应非对称拓扑网络,实现报文无乱序的传输,对传输层影响小且实现过程简单。
以上结合图4至图6对本申请实施例的负载均衡的处理方法做了详细说明。以下,结合图7对本申请实施例的负载均衡的报文转发设备进行详细说明。
图7示出了本申请实施例的报文转发设备700的示意性框图。该报文转发设备700可以对应上述方法500中描述的报文转发设备,也可以是应用于报文转发设备的芯片或组件。并且,该报文转发设备700中各模块或单元分别用于执行上述方法500中报文转发设备所执行的各动作或处理过程。如图7所示,该报文转发设备700可以包括:接收单元710、处理单元720和发送单元730。
接收单元710,接收多个报文。
处理单元720,用于根据该报文转发设备保存的多个数量,从该报文转发设备的多个端口中确定第一端口为用于发送该多个报文的端口。
发送单元730,用于经由该第一端口发送该多个报文。
报文转发设备700可以可以采用图2所示的交换机100的结构。例如,接收单元710可以是端口a、端口b以及端口c。处理单元720可以是网络处理器110。发送单元730可以流量管理器130。具体地,所述多个报文可以保存在存储器140中。流量管理器130可以对存储器140中的报文进行调度,从而使得所述多个报文经由第一端口离开交换机100。第一端口可以是端口d、端口e以及端口f中的一个。
在一种可能的实现方式中,该处理单元720还用于确定该多个数量中的最小数量对应的端口为用于发送该多个报文的该第一端口,该多个数量中的最小数量为该第一数量。
在一种可能的实现方式中,该处理单元720还用于确定多个商中最小的商对应的端口为用于发送该多个报文的该第一端口,该多个商与该多个端口一一对应,该多个商中的每个商是该报文转发设备保存的该报文转发设备需要经由对应的端口发送的待发送的报文的数量与对应的端口的带宽的商。
在另一种可能的实现方式中,该多个报文携带该多个报文的数量,该处理单元720还用于将该第一端口对应的该第一数量更新为第二数量,该第二数量等于该第一数量与该多个报文的数量的和。
在另一种可能的实现方式中,该处理单元720将该第一端口对应的该第一数量更新为第二数量之后,以及该发送单元经由该第一端口发送该多个报文之前,该接收单元710还用于接收报文集合;以及该处理单元720还用于根据数量集合,从该多个端口中确定用于发送该报文集合的一个端口,该数量集合是对该多个数量进行更新得到的,其中,该多个数量中的该第一数量被更新为该第二数量,该数量集合中包括的多个数量与该多个端口一一对应。
在另一种可能的实现方式中,该数量集合中包括的多个数量中的最小数量对应的端口为用于发送该报文集合的一个端口。
在另一种可能的实现方式中,该发送单元730还用于经由该第一端口发送该多个报文中的一个报文;该发送单元730经由该第一端口发送该多个报文中的一个报文之后,该处理单元还用于将数量集合中的该第二数量更新为第三数量,该第三数量对应该第一端口,该第三数量等于该第二数量减1。
在一种可能的设计中,当该报文转发设备和报文接收设备之间链路故障时,该接收单元710还用于当该第一端口对应的发送缓存中可用的存储空间承载的报文数量大于或等于预设的阈值时,接收该第一端口发送的第一消息,该第一消息用于通知该报文转发设备确定转发该多个报文的第二端口,该第二端口是该报文转发设备对应的多个端口中除该第一端口之外的端口;以及该处理单元720还用于根据该报文转发设备保存的经由该端口发送的待发送的报文的数量信息,从该至少一个端口中确定第二端口;该发送单元730还用于通过该第二端口转发该待发送的报文。
在一种可能的实现方式中,该第二端口是该至少一个端口中除该第一端口之外的承载的报文数量最小的端口。
具体地,该接收单元710用于执行方法500中的S510,处理单元720用于执行方法500中的S520,该发送单元730用于执行方法500中的S530,各单元执行上述相应步骤的具体过程在方法500中已经详细说明,为了简洁,此处不加赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式。任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可想到变化或替换。
Claims (16)
1.一种发送报文的方法,其特征在于,包括:
报文转发设备接收多个报文;
所述报文转发设备根据所述报文转发设备保存的多个数量,从所述报文转发设备的多个端口中确定第一端口为用于发送所述多个报文的端口,所述多个数量与所述多个端口一一对应,所述多个数量中的每个数量是所述报文转发设备保存的所述报文转发设备需要经由对应的端口发送的待发送的报文的数量,所述多个数量包括第一数量,所述第一数量是所述报文转发设备保存的所述报文转发设备需要经由所述第一端口发送的待发送的报文的数量,所述报文转发设备保存的所述报文转发设备需要经由所述第一端口发送的待发送的报文的数量所对应的待发送的报文不包括所述多个报文;
所述报文转发设备经由所述第一端口发送所述多个报文。
2.根据权利要求1所述的方法,其特征在于,所述报文转发设备根据所述报文转发设备保存的多个数量,从所述报文转发设备的多个端口中确定第一端口为用于发送所述多个报文的端口,包括:
所述报文转发设备确定所述多个数量中的最小数量对应的端口为用于发送所述多个报文的所述第一端口,所述多个数量中的最小数量为所述第一数量。
3.根据权利要求1所述的方法,其特征在于,所述报文转发设备根据所述报文转发设备保存的多个数量,从所述报文转发设备的多个端口中确定第一端口为用于发送所述多个报文的端口,包括:
所述报文转发设备确定多个商中最小的商对应的端口为用于发送所述多个报文的所述第一端口,所述多个商与所述多个端口一一对应,所述多个商中的每个商是所述报文转发设备保存的所述报文转发设备需要经由对应的端口发送的待发送的报文的数量与对应的端口的带宽的商。
4.根据权利要求1至3中任一项所述的方法,其特征在于,所述多个报文携带所述多个报文的数量,所述报文转发设备根据所述报文转发设备保存的多个数量,从所述报文转发设备的多个端口中确定第一端口为用于发送所述多个报文的端口之前,所述方法还包括:
所述报文转发设备将所述第一端口对应的所述第一数量更新为第二数量,所述第二数量等于所述第一数量与所述多个报文的数量的和。
5.根据权利要求4所述的方法,其特征在于,所述报文转发设备将所述第一端口对应的所述第一数量更新为第二数量之后,以及所述报文转发设备经由所述第一端口发送所述多个报文之前,所述方法还包括:
所述报文转发设备接收报文集合;
所述报文转发设备根据数量集合,从所述多个端口中确定用于发送所述报文集合的一个端口,所述数量集合是对所述多个数量进行更新得到的,其中,所述多个数量中的所述第一数量被更新为所述第二数量,所述数量集合中包括的多个数量与所述多个端口一一对应。
6.根据权利要求5所述的方法,其特征在于,所述数量集合中包括的多个数量中的最小数量对应的端口为用于发送所述报文集合的一个端口。
7.根据权利要求5所述的方法,其特征在于,所述报文转发设备经由所述第一端口发送所述多个报文包括:
所述报文转发设备经由所述第一端口发送所述多个报文中的一个报文;
所述报文转发设备经由所述第一端口发送所述多个报文中的一个报文之后,所述方法还包括:
所述报文转发设备将所述数量集合中的所述第二数量更新为第三数量,所述第三数量对应所述第一端口,所述第三数量等于所述第二数量减1。
8.一种报文转发设备,其特征在于,包括:
接收单元,用于接收多个报文;
处理单元,用于根据所述报文转发设备保存的多个数量,从所述报文转发设备的多个端口中确定第一端口为用于发送所述多个报文的端口,所述多个数量与所述多个端口一一对应,所述多个数量中的每个数量是所述报文转发设备保存的所述报文转发设备需要经由对应的端口发送的待发送的报文的数量,所述多个数量包括第一数量,所述第一数量是所述报文转发设备保存的所述报文转发设备需要经由所述第一端口发送的待发送的报文的数量,所述报文转发设备保存的所述报文转发设备需要经由所述第一端口发送的待发送的报文的数量所对应的待发送的报文不包括所述多个报文;
发送单元,用于经由所述第一端口发送所述多个报文。
9.根据权利要求8所述的报文转发设备,其特征在于,所述处理单元还用于:
确定所述多个数量中的最小数量对应的端口为用于发送所述多个报文的所述第一端口,所述多个数量中的最小数量为所述第一数量。
10.根据权利要求8所述的报文转发设备,其特征在于,所述处理单元还用于:
确定多个商中最小的商对应的端口为用于发送所述多个报文的所述第一端口,所述多个商与所述多个端口一一对应,所述多个商中的每个商是所述报文转发设备保存的所述报文转发设备需要经由对应的端口发送的待发送的报文的数量与对应的端口的带宽的商。
11.根据权利要求8至10中任一项所述的报文转发设备,其特征在于,所述多个报文携带所述多个报文的数量,所述处理单元还用于:
将所述第一端口对应的所述第一数量更新为第二数量,所述第二数量等于所述第一数量与所述多个报文的数量的和。
12.根据权利要求11所述的报文转发设备,其特征在于,所述处理单元将所述第一端口对应的所述第一数量更新为第二数量之后,以及所述发送单元经由所述第一端口发送所述多个报文之前,所述接收单元还用于:
接收报文集合;
以及所述处理单元还用于:
根据数量集合,从所述多个端口中确定用于发送所述报文集合的一个端口,所述数量集合是对所述多个数量进行更新得到的,其中,所述多个数量中的所述第一数量被更新为所述第二数量,所述数量集合中包括的多个数量与所述多个端口一一对应。
13.根据权利要求12所述的报文转发设备,其特征在于,所述数量集合中包括的多个数量中的最小数量对应的端口为用于发送所述报文集合的一个端口。
14.根据权利要求12所述的报文转发设备,其特征在于,所述发送单元还用于:
经由所述第一端口发送所述多个报文中的一个报文;
所述发送单元经由所述第一端口发送所述多个报文中的一个报文之后,所述处理单元还用于:
将所述数量集合中的所述第二数量更新为第三数量,所述第三数量对应所述第一端口,所述第三数量等于所述第二数量减1。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被执行时,实现如权利要求1至7中任意一项所述的方法。
16.一种芯片系统,其特征在于,所述芯片系统包括:
存储器,用于存储指令;
处理器,用于从所述存储器中调用并运行所述指令,使得安装有所述芯片系统的通信设备执行如权利要求1至7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811425839.4A CN111224888A (zh) | 2018-11-27 | 2018-11-27 | 发送报文的方法及报文转发设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811425839.4A CN111224888A (zh) | 2018-11-27 | 2018-11-27 | 发送报文的方法及报文转发设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111224888A true CN111224888A (zh) | 2020-06-02 |
Family
ID=70827971
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811425839.4A Pending CN111224888A (zh) | 2018-11-27 | 2018-11-27 | 发送报文的方法及报文转发设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111224888A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112787925A (zh) * | 2020-10-12 | 2021-05-11 | 中兴通讯股份有限公司 | 拥塞信息收集方法、确定最优路径方法、网络交换机 |
CN112929295A (zh) * | 2021-01-22 | 2021-06-08 | 宁波大学 | 一种微突发抑制的动态标记阈值缓存管理方法 |
CN116366535A (zh) * | 2023-03-24 | 2023-06-30 | 展讯通信(上海)有限公司 | 基于tcp的数据链路聚合方法及装置、可读存储介质、终端 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195884A (zh) * | 2011-05-26 | 2011-09-21 | 华为数字技术有限公司 | 一种视频流控制方法及视频流控制器 |
CN104113486A (zh) * | 2013-04-18 | 2014-10-22 | 中兴通讯股份有限公司 | 一种信元数据处理方法、装置和交换网元 |
CN104506408A (zh) * | 2014-12-31 | 2015-04-08 | 杭州华三通信技术有限公司 | 基于sdn的数据传输的方法及装置 |
CN108733614A (zh) * | 2017-04-13 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 数据传输系统、方法和装置 |
-
2018
- 2018-11-27 CN CN201811425839.4A patent/CN111224888A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102195884A (zh) * | 2011-05-26 | 2011-09-21 | 华为数字技术有限公司 | 一种视频流控制方法及视频流控制器 |
CN104113486A (zh) * | 2013-04-18 | 2014-10-22 | 中兴通讯股份有限公司 | 一种信元数据处理方法、装置和交换网元 |
CN104506408A (zh) * | 2014-12-31 | 2015-04-08 | 杭州华三通信技术有限公司 | 基于sdn的数据传输的方法及装置 |
CN108733614A (zh) * | 2017-04-13 | 2018-11-02 | 北京京东尚科信息技术有限公司 | 数据传输系统、方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112787925A (zh) * | 2020-10-12 | 2021-05-11 | 中兴通讯股份有限公司 | 拥塞信息收集方法、确定最优路径方法、网络交换机 |
CN112929295A (zh) * | 2021-01-22 | 2021-06-08 | 宁波大学 | 一种微突发抑制的动态标记阈值缓存管理方法 |
CN112929295B (zh) * | 2021-01-22 | 2022-07-12 | 宁波大学 | 一种微突发抑制的动态标记阈值缓存管理方法 |
CN116366535A (zh) * | 2023-03-24 | 2023-06-30 | 展讯通信(上海)有限公司 | 基于tcp的数据链路聚合方法及装置、可读存储介质、终端 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220210054A1 (en) | Systems and methods for on the fly routing in the presence of errors | |
CN110661723B (zh) | 一种数据传输方法、计算设备、网络设备及数据传输系统 | |
WO2018210117A1 (zh) | 一种拥塞控制方法、网络设备及其网络接口控制器 | |
US20200236052A1 (en) | Improving end-to-end congestion reaction using adaptive routing and congestion-hint based throttling for ip-routed datacenter networks | |
US7447152B2 (en) | Controlling traffic congestion | |
US8897130B2 (en) | Network traffic management | |
CN109120544B (zh) | 一种数据中心网络中基于主机端流量调度的传输控制方法 | |
CN102263697B (zh) | 一种聚合链路流量分担方法和装置 | |
US20210297350A1 (en) | Reliable fabric control protocol extensions for data center networks with unsolicited packet spraying over multiple alternate data paths | |
WO2018014569A1 (zh) | 负载均衡方法、装置及设备 | |
US20210297351A1 (en) | Fabric control protocol with congestion control for data center networks | |
EP2915299A1 (en) | A method for dynamic load balancing of network flows on lag interfaces | |
WO2019170396A1 (en) | Flow management in networks | |
CN111800351A (zh) | 由交换机进行的拥塞通知分组生成 | |
CN111224888A (zh) | 发送报文的方法及报文转发设备 | |
Tam et al. | Preventing TCP incast throughput collapse at the initiation, continuation, and termination | |
US10728156B2 (en) | Scalable, low latency, deep buffered switch architecture | |
US20120155268A1 (en) | Packet relay device | |
US10305787B2 (en) | Dropping cells of a same packet sent among multiple paths within a packet switching device | |
CN110324255B (zh) | 一种面向数据中心网络编码的交换机/路由器缓存队列管理方法 | |
US20230261973A1 (en) | Method for distributing multipath flows in a direct interconnect network | |
US20210297343A1 (en) | Reliable fabric control protocol extensions for data center networks with failure resilience | |
US11622028B2 (en) | Explicit notification of operative conditions along a network path | |
CN108322402B (zh) | 报文处理方法、设备及系统 | |
Ho et al. | Performance improvement of delay-based TCPs in asymmetric 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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200602 |
|
RJ01 | Rejection of invention patent application after publication |