CN117955912A - 一种网络路径选择方法及装置 - Google Patents
一种网络路径选择方法及装置 Download PDFInfo
- Publication number
- CN117955912A CN117955912A CN202211352699.9A CN202211352699A CN117955912A CN 117955912 A CN117955912 A CN 117955912A CN 202211352699 A CN202211352699 A CN 202211352699A CN 117955912 A CN117955912 A CN 117955912A
- Authority
- CN
- China
- Prior art keywords
- congestion
- port
- destination
- output port
- internet protocol
- 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
- 238000010187 selection method Methods 0.000 title claims abstract description 25
- 238000004891 communication Methods 0.000 claims abstract description 28
- 238000000034 method Methods 0.000 claims abstract description 21
- 230000015654 memory Effects 0.000 claims description 22
- 238000004590 computer program Methods 0.000 claims description 7
- 230000006870 function Effects 0.000 description 20
- 238000004364 calculation method Methods 0.000 description 11
- 238000012545 processing Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种网络路径选择方法及装置,可应用于网络通信领域。所述方法包括:网络设备确定第一数据包的目的出端口,其中,所述目的出端口是所述网络设备中基于所述第一数据包中的第一目的互联网协议地址确定的出端口;所述网络设备确定所述目的出端口中的是否存在非拥塞出端口,其中,所述非拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度小于上限阈值的出端口;若存在所述非拥塞出端口,所述网络设备通过所述非拥塞出端口将所述第一数据包进行转发。
Description
技术领域
本发明涉及网络通信领域,尤其涉及一种网络路径选择方法及装置。
背景技术
近年来,数据中心的算力不断增长,正朝着10E级算力目标挺进,由此数据中心规模也在不断扩大。在大规模数据中心部署RoCEv2(routable remote direct memoryaccess over converged ethenet)已经成为高速网络通信的主流方案。RoCEv2通过等价多路径(equal-cost multipath routing,ECMP)实现多路径冗余以及初步的负载均衡。然而,ECMP无法感知全局路径,也无法根据当前的网络负载选择路径,如果恰好都选择了同一路径,将会导致网络设备中的端口产生严重的拥塞。
现有技术识别到网络设备的出端口处于拥塞状态之后,为了避免拥塞加剧,由网络设备发送拥塞通知给源节点,再由源节点降低对处于拥塞状态的出端口的传输速率,这样使得从产生拥塞到开始对拥塞进行处理之间有时差,导致对拥塞的处理存在滞后问题。
发明内容
为解决上述技术问题,本申请提供一种网络路径选择方法及装置,既能够解决拥塞的处理滞后问题,又可以更好地利用网络中的空闲资源。
第一方面,提供了一种网络路径选择方法,包括:
网络设备确定第一数据包的目的出端口;
上述网络设备确定上述目的出端口中的是否存在非拥塞出端口;
若存在上述非拥塞出端口,上述网络设备通过上述非拥塞出端口将上述第一数据包进行转发;
其中,上述目的出端口是上述网络设备中基于上述第一数据包中的第一目的互联网协议地址确定的出端口,上述非拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度小于上限阈值的出端口。
上述方案中,由于非拥塞出端口的队列中等待转发的数据包的数量较少,因而非拥塞出端口是空闲的出端口,在基于第一数据包中的第一目的互联网协议地址确定了目的出端口之后,根据目的出端口的拥塞情况将第一数据包送至非拥塞出端口进行转发,即为第一数据包选择了空闲的网络路径,这样既能够及时感知出端口的拥塞情况,在出端口产生拥塞时就对第一数据包进行处理,从而解决了拥塞的处理滞后问题,也能够及时避免第一数据包进入已经产生拥塞的出端口,进一步加剧该出端口的拥塞程度,还能够充分地利用空闲的网络路径。
在一些可能的实现方式中,上述网络设备确定上述目的出端口中的是否存在非拥塞出端口包括:
上述网络设备生成与拥塞出端口对应的拥塞表项;
上述网络设备根据上述拥塞表项确定上述目的出端口中的非拥塞出端口;
其中,上述拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度大于或者等于上限阈值的出端口,上述拥塞表项包括上述拥塞出端口的拥塞信息,该拥塞信息基于该拥塞出端口的队列中数据包携带的信息计算得到,该数据包携带的信息是源互联网协议地址、目的互联网协议地址、与源互联网协议地址对应的源物理地址、与目的互联网协议地址对应的目的物理地址中的一项或多项。
上述方案中,采用拥塞表项记录拥塞出端口的拥塞信息,从而能够得到造成该拥塞出端口拥塞的主要来源。进一步,拥塞表项的存在有助于快速地确定目的出端口中的非拥塞出端口,实现了第一数据包的网络路径的快速选择。
在一些可能的实现方式中,上述网络设备根据上述拥塞表项确定上述目的出端口中的非拥塞出端口包括:
上述网络设备将上述拥塞表项中拥塞信息为上述第一数据包携带的信息对应的拥塞出端口标记为第一类拥塞出端口;
上述网络设备根据上述第一类拥塞出端口确定上述目的出端口中的拥塞出端口;
上述网络设备根据上述目的出端口中的拥塞出端口确定上述目的出端口中的非拥塞出端口;
其中,上述第一数据包携带的信息是第一源互联网协议地址、第一目的互联网协议地址、与第一源互联网协议地址对应的源物理地址、与第一目的互联网协议地址对应的目的物理地址中的一项或多项。
上述方案中,基于第一数据包携带的信息确定第一类拥塞出端口,再根据第一类拥塞出端口确定目的出端口中的拥塞出端口和非拥塞出端口,这样能够找出以发送第一数据包的源节点为拥塞主要来源的拥塞出端口,从而为该源节点发送的数据包及时切换网络路径,降低拥塞程度,并充分地利用空闲的网络路径。
在一些可能的实现方式中,上述方法还包括:
上述网络设备计算第一出端口的队列长度,其中,该第一出端口为该网络设备中的出端口;
上述网络设备比较上述第一出端口的队列长度与下限阈值、前述上限阈值的关系,
若上述队列长度大于或等于上述下限阈值,且小于上述上限阈值,上述网络设备分类统计上述第一出端口的队列中数据包的数量;
若上述队列长度大于或者等于上述上限阈值,上述网络设备将上述第一出端口标记为前述拥塞出端口,生成与该第一出端口对应的拥塞表项。
在一些可能的实现方式中,若存在上述非拥塞出端口,上述网络设备通过上述非拥塞出端口将上述第一数据包进行转发包括:
若存在上述非拥塞出端口,上述网络设备从上述非拥塞出端口中确定第二出端口;
上述网络设备通过上述第二出端口将上述第一数据包进行转发。
在一些可能的实现方式中,若存在上述非拥塞出端口,上述网络设备从上述非拥塞出端口中确定第二出端口包括:
若存在上述非拥塞出端口,上述网络设备基于上述非拥塞出端口的信息、上述第一数据包携带的信息中的一项或两项从上述非拥塞出端口中计算得到上述第二出端口,其中,该非拥塞出端口的信息是队列长度、互联网协议地址、物理地址中的一项或多项。
上述方案中,能够通过多种方式从非拥塞出端口中选出第二出端口,既可以基于非拥塞出端口的信息选出第二出端口,又可以基于第一数据包携带的信息选出第二出端口,还可以综合非拥塞出端口的信息和第一数据包携带的信息从而选出第二出端口。
第二方面,提供了一种网络路径选择装置,包括:第一确定模块、第二确定模块以及转发模块,
上述第一确定模块用于确定第一数据包的目的出端口;
上述第二确定模块用于确定上述目的出端口中的是否存在非拥塞出端口;
若存在上述非拥塞出端口,上述转发模块用于通过上述非拥塞出端口将上述第一数据包进行转发;
其中,上述目的出端口是上述装置中基于该第一数据包中的第一目的互联网协议地址确定的出端口,上述非拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度小于上限阈值的出端口。
在一些可能的实现方式中,上述第二确定模块具体用于:生成与拥塞出端口对应的拥塞表项,根据该拥塞表项确定上述目的出端口中的非拥塞出端口,其中,该拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度大于或者等于上限阈值的出端口,该拥塞表项包括该拥塞出端口的拥塞信息,该拥塞信息基于该拥塞出端口的队列中数据包携带的信息计算得到,该数据包携带的信息是源互联网协议地址、目的互联网协议地址、与源互联网协议地址对应的源物理地址、与目的互联网协议地址对应的目的物理地址中的一项或多项。
在一些可能的实现方式中,在上述第二确定模块用于生成与拥塞出端口对应的拥塞表项之后,上述第二确定模块具体用于:将上述拥塞表项中拥塞信息为上述第一数据包携带的信息对应的拥塞出端口标记为第一类拥塞出端口,根据上述第一类拥塞出端口确定上述目的出端口中的拥塞出端口,根据上述目的出端口中的拥塞出端口确定上述目的出端口中的非拥塞出端口,其中,该第一数据包携带的信息是第一源互联网协议地址、第一目的互联网协议地址、与第一源互联网协议地址对应的源物理地址、与第一目的互联网协议地址对应的目的物理地址中的一项或多项。
在一些可能的实现方式中,上述装置还包括第三确定模块,
上述第三确定模块计算第一出端口的队列长度,其中,该第一出端口为上述装置中的出端口;
上述第三确定模块比较上述第一出端口的队列长度与下限阈值、前述上限阈值的关系,
若上述队列长度大于或等于上述下限阈值,且小于上述上限阈值,上述第三确定模块用于分类统计上述第一出端口的队列中数据包的数量;
若上述队列长度大于或者等于上述上限阈值,上述第三确定模块用于将上述第一出端口标记为上述拥塞出端口,生成与该第一出端口对应的拥塞表项。
在一些可能的实现方式中,上述转发模块具体用于:
若存在上述非拥塞出端口,上述转发模块用于从上述非拥塞出端口中确定第二出端口;
上述转发模块用于通过上述第二出端口将上述第一数据包进行转发。
在一些可能的实现方式中,上述转发模块具体用于:
若存在上述非拥塞出端口,上述转发模块基于上述非拥塞出端口的信息、上述第一数据包携带的信息中的一项或两项从上述非拥塞出端口中计算得到上述第二出端口,其中,该非拥塞出端口的信息是队列长度、互联网协议地址、物理地址中的一项或多项。
第三方面,提供了一种计算设备,包括处理器、存储器和通信接口;
上述处理器用于执行上述存储器中存储的指令,以使得上述计算设备执行如第一方面任一项的方法。
第四方面,提供了一种包含指令的计算机程序产品,当上述指令被计算设备运行时,使得上述计算设备执行如第一方面任一项的方法。
第五方面,提供了一种计算机可读存储介质,包括计算机程序指令,当该计算机程序指令由上述计算设备执行时,上述计算设备执行如第一方面任一项的方法。
附图说明
为了更清楚地说明本发明实施例或背景技术中的技术方案,下面将对本发明实施例或背景技术中所需要使用的附图进行说明。
图1是本申请提供的一种通信系统的结构示意图;
图2是本申请提供的一种网络路径选择方法的流程示意图;
图3是本申请提供的一种网络路径选择方法中一个步骤的流程示意图;
图4是本申请提供的一种网络路径选择方法中另一个步骤的流程示意图;
图5是本申请提供的一种网络路径选择方法中另一个步骤的流程示意图;
图6是本申请提供的一种网络路径选择装置的结构示意图;
图7是本申请提供的一种计算设备的结构示意图。
具体实施方式
下面结合本发明实施例中的附图对本发明实施例进行描述。
参见图1,图1是本申请提供的一种通信系统的结构示意图。如图1所示,通信系统包括源节点11、网络设备12以及目的节点13。
源节点11通过网络设备12将数据包14发送给目的节点13。源节点11可以是工作站、网络用户、台式电脑、笔记本、移动终端、服务器、可穿戴设备(例如,智能手表等等)、车载设备、智能家用电器、打印机等等。
网络设备12是用于转发数据包14的设备,可以是交换机、路由器等等。网络设备12包括背部总线(图未示)、内部交换矩阵121、存储器122。背部总线上挂接了所有的端口,端口分为入端口123和出端口124两类,入端口123负责接收源节点11发送的数据包14,出端口124负责转发数据包14至目的节点13。网络设备12从入端口123接收到源节点11发送的数据包14后,基于存储在存储器122中的路由表125、地址解析协议表126和物理地址表127进行快速查找,确认出端口124,再通过内部交换矩阵121把数据包14直接而迅速地从入端口123传送到出端口124,再把数据包14从出端口124发送到目的节点13,即为这两个网路节点提供独享的通路,从而实现这两个网络节点之间的通信。由于每一个端口都可视为独立的物理网段而独自享有固定的部分带宽,因此,在同一个时间段内,网络设备12可以将数据包14传送到多个出端口124,还可以进行多个端口对之间的数据包14传送,其中,一个端口对由一个入端口123和一个出端口124组成。
目的节点13通过网络设备12接收由源节点11发送的数据包14。目的节点13可以是工作站、网络用户、台式电脑、笔记本、移动终端、服务器、可穿戴设备(例如,智能手表等等)、车载设备、智能家用电器、打印机等等。
基于前述的通信系统,下面具体介绍本申请提供的一种网络路径选择方法。
参见图2,图2是本申请提供的一种网络路径选择方法的流程示意图。如图2所示,本申请提供的网络路径选择方法,包括:
S21:第一源节点将第一数据包发送给网络设备。相应地,网络设备从第一入端口接收到第一数据包。
第一源节点可以是图1中通信系统中的源节点11,第一数据包可以是图1中通信系统中的数据包14,网络设备可以是图1中通信系统中的网络设备12,第一入端口可以是图1中通信系统中的入端口123。
第一数据包包括包头和数据,其中,包头是为了正确传输数据而增加的控制信息,数据是传输层需要传输的数据。包头的前一部分为固定部分,共20字节,其中,第十三至十六字节为第一源互联网协议地址,第十七至二十字节为第一目的互联网协议地址。在固定部分的后面是可选字段,长度可变。应当理解,上述第一数据包的长度和第一数据包中第一源互联网协议地址的长度以及位于数据包的包头中的位置,以及,第一数据包中第一目的互联网协议地址的长度以及位于数据包的包头中的位置仅仅作为一种的示例,不作为具体的限定。在一些可能的实现方式中,第一数据包还包括校验码,校验码用于对第一数据包进行校验,在校验通过的情况,才允许对第一数据包进行处理。
在一具体的实现方式中,当第一数据包的格式为在包头后面附加数据,在数据后面附加校验码时,如果第一数据包能够被特定的数整除,则表示校验通过。具体地,第一源节点将第一数据包中由包头和数据组成的字节转换成K位二进制字符序列t(X),然后将R位校验码P(X)附在t(X)后面,形成一个(K+R)位的二进制字符序列T(X),再将T(X)发送给网络设备。网络设备首先储存从第一入端口接收到的T(X),对于特定的数G1(X),若T(X)能被G1(X)整除,则校验通过,表明第一数据包正确。假设t(X)为32位的二进制字符序列,t(X)=01100100000001000000010100000110,对t(X)左移32位,将t(X)后面的位值统一填充为0,形成一个64位的二进制字符序列t1(X)=011001000000010000000101000001100000000000000000000000000000000。若特定的数G1(X)对应的多项式为:G(X)=X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1,将33位二进制字符序列G1(X)中与G(X)的Xk对应的第k位的位值设置为1,其余的位值设置为0,则33位二进制字符序列G1(X)=100000100110000010001110110110111。对t1(X)和G1(X)进行模2除法,即将余数的某个位的位值与除数相同位的位值进行异或运算,得到余数P(X)=11001101110101101000010101111010作为校验码,则T(X)=0110010000000100000001010000011011001101110101101000010101111010。第一源节点将T(X)发送给网络设备。网络设备从入端口接收到T(X)后,对T(X)和G1(X)进行模2除法,如果得到的余数是0,表明第一数据包正确,校验通过。
S22:网络设备确定第一数据包的目的出端口。
目的出端口可以是图1中通信系统中的出端口124。
网络设备通过查看第一数据包的包头,得到第一数据包中的第一目的互联网协议地址,再查找路由表、地址解析协议表和物理地址表,确定与第一目的互联网协议地址对应的目的出端口。具体过程如下所示:
首先,网络设备查找路由表,找出第一目的网络地址的下一跳地址,其中,第一目的网络地址基于第一目的互联网协议地址计算得到。路由表是记录指向目的网络的路径的表,其中,目的网络是目的节点所处的网络,标识为目的网络地址。对于接入网络设备的每一个目的节点,网络设备计算与目的节点对应的目的网络地址,并将目的网络地址存储到路由表。与目的节点对应的目的网络地址的计算过程如下:将目的节点的互联网协议地址和网络掩码都转换成二进制字符序列,再对这两个二进制字符序列进行位与运算,得到与目的节点对应的目的网络地址。例如,目的节点的互联网协议地址为202.99.160.25,并且,网络掩码为255.255.255.0,将二者分别转换成二进制字符序列为:D1(X)=11001010.01100011.10100000.0001100,D2(X)=11111111.11111111.11111111.00000000,将D1(X)和D2(X)按位进行与运算,即如果D1(X)和D2(X)的对应位都为1,则结果为1,否则为0,得到运算结果D3(X)=11001010.01100011.10100000.00000000,将D3(X)转换成十进制字符序列为202.99.160.0,则202.99.160.0是互联网协议地址为202.99.160.25的目的节点对应的目的网络地址。
网络设备将路由表中的一个目的网络地址作为第二目的网络地址,将与第二目的网络地址对应的目的节点的互联网协议地址作为第二目的网络地址的下一跳地址。如果与第二目的网络地址对应的目的节点只有一个,则第二目的网络地址的下一跳地址也只有一个;如果与第二目的网络地址对应的目的节点有多个,则第二目的网络地址的下一跳地址也有多个。网络设备使用路由表记录第二目的网络地址及其下一跳地址,从而得到指向第二目的网络的路径。如果第二目的网络地址的下一跳地址只有一个,则指向第二目的网络的路径也只有一条;如果第二目的网络地址的下一跳地址有多个,则指向第二目的网络的路径也有多条。
网络设备获取第一数据包中的第一目的互联网协议地址,基于第一目的互联网协议地址计算得到一个目的网络地址,将此目的网络地址作为第一目的网络地址。随后,网络设备将第一目的网络地址与路由表中的第二目的网络地址进行匹配,并将匹配成功的第二目的网络地址的下一跳地址作为第一目的网络地址的下一跳地址。如果匹配成功的第二目的网络地址的下一跳地址只有一个,则第一目的网络地址的下一跳地址也只有一个;如果匹配成功的第二目的网络地址的下一跳地址有多个,则第一目的网络地址的下一跳地址也有多个。
其次,网络设备查找地址解析协议表,找出与第一目的网络地址的下一跳地址对应的目的物理地址。地址解析协议表是记录接入网络设备的网络节点的互联网协议地址与物理地址之间的对应关系的表,包括源节点的互联网协议地址与物理地址之间的对应关系以及目的节点的互联网协议地址与物理地址之间的对应关系。因此,网络设备将第一目的网络地址的下一跳地址与地址解析协议表中的所有互联网协议地址进行匹配,并将匹配成功的互联网协议地址对应的物理地址作为目的物理地址。如果第一目的网络地址的下一跳地址只有一个,则目的物理地址也只有一个;如果第一目的网络地址的下一跳地址有多个,则目的物理地址也有多个。
最后,网络设备查找物理地址表,找出与目的物理地址对应的目的出端口。物理地址表是记录接入网络设备的网络节点的物理地址与端口之间的对应关系的表,包括源节点的物理地址与入端口之间的对应关系以及目的节点的物理地址与出端口之间的对应关系。因此,网络设备将目的物理地址与物理地址表中的所有物理地址进行匹配,并将匹配成功的物理地址对应的端口作为目的端口。在本申请中,由于目的端口负责将第一数据包由第一源节点通过网络设备发送给目的节点,因此也将目的端口称为目的出端口。如果目的物理地址只有一个,则目的出端口也只有一个;如果目的物理地址有多个,则目的出端口也有多个。
S23:网络设备确定目的出端口中是否存在非拥塞出端口。若不存在非拥塞出端口,转S24;若存在非拥塞出端口,转S25。
非拥塞出端口为由队列中等待转发的数据包的数量形成的队列长度小于上限阈值的出端口,也可以说,该出端口处于非拥塞状态。相应地,拥塞出端口为由队列中等待转发的数据包的数量形成的队列长度大于或者等于上限阈值的出端口,也可以说,该出端口处于拥塞状态。非拥塞出端口可以是图1中通信系统中的出端口124,拥塞出端口可以是图1中通信系统中的出端口124。
在一些可能的实现方式中,目的出端口中是否存在非拥塞出端口包括以下几种情况:
(1)目的出端口的数量为一个,并且,该目的出端口是拥塞出端口,则不存在非拥塞出端口;(2)目的出端口的数量为一个,并且,该目的出端口不是拥塞出端口,则存在非拥塞出端口;(3)目的出端口的数量为多个,并且,所有目的出端口都是拥塞出端口,则不存在非拥塞出端口;
(4)目的出端口的数量为多个,并且,目的出端口中至少有一个不是拥塞出端口,则存在非拥塞出端口。
网络设备在上述四种情况中对于第一数据包的处理至少可以包括以下两种方式:
在第一种方式中,如果目的出端口的数量为一个,网络设备直接将第一数据包送至目的出端口进行转发;如果目的出端口的数量为多个,网络设备确定多个目的出端口中的每一个目的出端口是否为拥塞出端口之后,再对第一数据包进行处理。
在第二种方式中,不论目的出端口的数量为一个还是多个,网络设备确定每一个目的出端口是否为拥塞出端口之后,再对第一数据包进行处理。
在一些可能的实现方式中,如图3所示,目的出端口中是否存在非拥塞出端口的确定方法如下所示:
S231:网络设备生成与拥塞出端口对应的拥塞表项。
拥塞表项为拥塞表中的一个或者多个表项,用于记录拥塞出端口以及与之对应的拥塞信息。拥塞表项的生成过程如下:
首先,网络设备生成空表作为拥塞表的初始状态,并存储在存储器中。存储器可以是图1中通信系统中的存储器122。
其次,网络设备分别确定拥塞出端口以及该拥塞出端口的拥塞信息。具体地,网络设备确定拥塞出端口的方式如下:网络设备计算每一个出端口的队列中由等待转发的数据包的数量形成的队列长度,如果存在队列长度大于或者等于上限阈值的情况,就将该出端口标记为拥塞出端口。网络设备确定拥塞出端口的拥塞信息的方式如下:网络设备获取该拥塞出端口的队列中所有数据包携带的信息,其中,数据包携带的信息可以是源互联网协议地址、目的互联网协议地址、与源互联网协议地址对应的源物理地址、与目的互联网协议地址对应的目的物理地址中的一项或多项。网络设备统计该拥塞出端口的队列中所有数据包携带的信息,并根据统计结果确定该拥塞出端口的拥塞信息。
最后,网络设备将该拥塞出端口的拥塞信息以及其物理地址或者顺序编号作为一个拥塞表项存储到拥塞表中,其中,采用拥塞出端口的物理地址时,拥塞表项的格式为[拥塞信息:物理地址];采用拥塞出端口的顺序编号时,将出端口的顺序编号称为出端口号,设出端口的数量为N,且出端口号从0开始依序增加到N-1,则拥塞表项的格式为[拥塞信息:出端口号]。
为了进一步说明,下文的两个具体实施方式中均以数据包携带的信息是源互联网协议地址,并且采用的是出端口号为例进行说明。
在第一种方式中,当在一个出端口的队列中由等待转发的数据包的数量形成的队列长度大于或者等于上限阈值时,网络设备将该出端口标记为拥塞出端口,并获取该队列中所有数据包的源互联网协议地址,统计每个源互联网协议地址的出现次数,将出现次数最多的源互联网协议地址作为该拥塞出端口的拥塞信息,再将该拥塞信息与拥塞出端口的出端口号组成一个拥塞表项,格式为[源互联网协议地址:出端口号],存储到拥塞表。
在第二种方式中,当在一个出端口的队列中由等待转发的数据包的数量形成的队列长度大于或者等于上限阈值时,网络设备将该出端口标记为拥塞出端口,并获取该队列中所有数据包的源互联网协议地址,统计每个源互联网协议地址在所有源互联网协议地址中的占比,将占比最大的源互联网协议地址作为该拥塞出端口的拥塞信息,再将该拥塞信息与拥塞出端口的出端口号组成一个拥塞表项,格式为[源互联网协议地址:出端口号],存储到拥塞表。
应当理解,上述队列长度由一个出端口的队列中等待转发的数据包的数量形成,以及,获取并统计拥塞出端口的队列中所有数据包携带的信息,仅仅作为一种示例,不作为具体的限定。另一方面,上述拥塞信息以数据包携带的信息是源互联网协议地址得到。在本申请中,拥塞信息还可以根据数据包携带的源互联网协议地址、目的互联网协议地址、与源互联网协议地址对应的源物理地址、与目的互联网协议地址对应的目的物理地址中的一项或多项得到,此处不作具体限定。
在一些更具体的实现方式中,如图4所示,网络设备确定拥塞出端口的方式如下所示:
S2311:网络设备计算第一出端口的队列长度。
第一出端口为网络设备中的一个出端口,可以是图1中通信系统中的出端口124。第二数据包进入第一出端口的队列后,网络设备统计在第一出端口处以第二数据包作为队尾的等待转发的数据包的数量,并将统计结果作为第一出端口的队列长度。应当理解,上述计算第一出端口的队列长度的方式仅仅作为一种示例,不作为具体的限定。
S2312:网络设备比较第一出端口的队列长度与下限阈值、上限阈值的关系。若队列长度大于或等于下限阈值,且小于上限阈值,转S2313;若队列长度大于或者等于上限阈值,转S2314。
网络设备得到第一出端口的队列长度后,将其与下限阈值、上限阈值进行比较。若队列长度小于下限阈值,表明第一出端口产生拥塞的概率为0;若队列长度大于或等于下限阈值,且小于上限阈值,表明第二端口产生拥塞的概率大于0,并且,队列长度越接近上限阈值,第一出端口产生拥塞的概率越趋近1,第一出端口即将产生拥塞;若队列长度大于或者等于上限阈值,表明第一出端口产生拥塞的概率等于1,第一出端口产生拥塞,处于拥塞状态。
S2313:网络设备分类统计第一出端口的队列中数据包的数量。
当第一出端口的队列的长度在下限阈值与上限阈值之间,网络设备根据分类变量统计队列中数据包的数量,其中,分类变量来自数据包携带的信息,分类变量的类型与拥塞表项中拥塞信息的类型一致,可以是源互联网协议地址、目的互联网协议地址、与源互联网协议地址对应的源物理地址、与目的互联网协议地址对应的目的物理地址中的一项或多项。例如,拥塞信息的类型为源互联网协议地址,则分类变量为数据包携带的源互联网协议地址;拥塞信息的类型为源互联网协议地址和目的互联网协议地址,则分类变量为数据包携带的源互联网协议地址和目的互联网协议地址。为了陈述简便,下文中均以分类变量是源互联网协议地址为例进行说明。
网络设备分类统计第一出端口的队列中数据包的数量至少可以包括以下两种方式:
在第一种方式中,在第二数据包到达第一出端口的队列进行排队后,网络设备获取以第二数据包为队尾的队列中所有数据包的源互联网协议地址,统计来自同一个源互联网协议地址的数据包的数量,从而得到以第二数据包为队尾的队列中不同源互联网协议地址下数据包的数量。
在第二种方式中,在第一出端口的队列长度等于下限阈值时,网络设备获取队列中所有数据包的源互联网协议地址,统计来自同一个源互联网协议地址的数据包的数量。在此基础上,队列每增加一个数据包,网络设备就获取该数据包的源互联网协议地址,并将该源互联网协议地址下数据包的数量加1。在第二数据包到达第一出端口的队列进行排队时,网络设备获取第二数据包的源互联网协议地址,将第二数据包的源互联网协议地址下数据包的数量加1,从而得到以第二数据包为队尾的队列中不同源互联网协议地址下数据包的数量。
S2314:网络设备将第一出端口标记为拥塞出端口,生成与第一出端口对应的拥塞表项。
在第二数据包到达第一出端口的队列进行排队时,以第二数据包为队尾的队列的长度大于或者等于上限阈值,表明第一出端口产生拥塞,处于拥塞状态,因此,网络设备将第一出端口标记为拥塞出端口。
随后,网络设备计算得到第一出端口的拥塞信息,从而生成与第一出端口对应的拥塞表项。
当拥塞出端口的拥塞信息为出现次数最多的源互联网协议地址时,网络设备计算得到以第二数据包为队尾的队列中不同源互联网协议地址下数据包的数量后,将数据包的数量最多的源互联网协议地址作为第一出端口的拥塞信息,再将该拥塞信息与第一出端口的出端口号组成一个拥塞表项,格式为[源互联网协议地址:出端口号],存储到拥塞表。
当拥塞出端口的拥塞信息为占比最大的源互联网协议地址时,网络设备计算得到以第二数据包为队尾的队列中不同源互联网协议地址下数据包的数量后,计算每个源互联网协议地址下数据包的数量在数据包的总数中所占的比重,其中,数据包的总数为上限阈值。接着,网络设备将对应比重最大的源互联网协议地址作为第一出端口的拥塞信息,再将该拥塞信息与第一出端口的出端口号组成一个拥塞表项,格式为[源互联网协议地址:出端口号],存储到拥塞表。
S232:网络设备根据拥塞表项确定目的出端口中的非拥塞出端口。
在生成与拥塞出端口对应的拥塞表项之后,网络设备根据拥塞表项确定目的出端口中的非拥塞出端口至少可以包括以下两种方式:
在第一种方式中,网络设备仅仅根据拥塞表项确定目的出端口中的非拥塞出端口。具体地,网络设备将所有目的出端口的出端口号与拥塞表中所有拥塞表项[源互联网协议地址:出端口号]中的出端口号进行匹配,若匹配不成功,将匹配不成功的目的出端口标记为目的出端口中的非拥塞出端口。
在第二种方式中,网络设备根据拥塞表项以及第一数据包携带的信息确定目的出端口中的非拥塞出端口。为了陈述简便,下文中以第一数据包携带的信息是第一源互联网协议地址为例进行说明。具体地,网络设备将拥塞表项中拥塞信息为第一源互联网协议地址对应的拥塞出端口标记为第一类拥塞出端口,根据第一类拥塞出端口确定目的出端口中的拥塞出端口,再根据目的出端口中的拥塞出端口确定目的出端口中的非拥塞出端口。更具体地,网络设备获取第一数据包的第一源互联网协议地址,使用第一源互联网协议地址查找拥塞表,将第一源互联网协议地址与所有拥塞表项[源互联网协议地址:出端口号]中的源互联网协议地址进行匹配,若匹配成功,将匹配成功的拥塞表项[源互联网协议地址:出端口号]中的出端口号对应的出端口标记为第一类拥塞出端口;若第一源互联网协议地址与所有拥塞表项中的源互联网协议地址都匹配不成功,将空值标记为第一类拥塞出端口。接着,网络设备将所有目的出端口的出端口号与第一类拥塞出端口进行匹配,若匹配成功,将匹配成功的目的出端口标记为目的出端口中的拥塞出端口。标记完成后,网络设备将所有目的出端口中未标记为拥塞出端口的出端口标记为目的出端口中的非拥塞出端口。
S24:网络设备触发优先级流控制,清除拥塞表项。
在目的出端口中不存在非拥塞出端口的情况下,网络设备无法将第一数据包送至出端口进行转发,因此,网络设备触发优先级流控制。具体地,网络设备获取第一数据的第一源互联网协议地址,即第一源节点的互联网协议地址,在地址解析协议表中找出与第一源互联网协议地址对应的第一源物理地址,即第一源节点的物理地址。接着,网络设备查找物理地址表,找出与第一源物理地址对应的第一入端口。随后,网络设备生成第一通知,将第一通知从第一入端口发送给第一源节点。第一源节点接收到第一通知后,将停止向网络设备发送数据包。
网络设备触发优先级流控制后,查找拥塞表,找出包含第一源互联网协议地址的拥塞表项[源互联网协议地址:出端口号],并将该拥塞表项清除。
S25:网络设备通过目的出端口中的非拥塞出端口将第一数据包进行转发。
如图5所示,网络设备通过目的出端口中的非拥塞出端口将第一数据包进行转发的过程如下所示:
S251:网络设备从目的出端口中的非拥塞出端口中确定第二出端口。
在目的出端口中存在非拥塞出端口的情况下,网络设备需要在这些非拥塞出端口中确定第二出端口,再通过内部交换矩阵把第一数据包直接而迅速地从第一入端口传送到第二出端口,使第一数据包在第二出端口的队列中排队,等待转发给目的节点。第二出端口可以是图1中通信系统中的出端口124,内部交换矩阵可以是图1中通信系统中的内部交换矩阵121。
网络设备从目的出端口中的非拥塞出端口中确定第二出端口至少可以包括以下三种方式:
在第一种方式中,网络设备基于目的出端口中非拥塞出端口的信息从目的出端口中的非拥塞出端口中计算得到第二出端口。具体地,网络设备计算目的出端口中每一个非拥塞出端口的队列中由等待转发的数据包的数量形成的队列长度,将队列长度最小的非拥塞出端口标记为第二出端口。
在第二种方式中,网络设备基于第一数据包携带的信息从目的出端口中的非拥塞出端口中计算得到第二出端口。为了陈述简便,下文中以第一数据包携带的信息是第一源互联网协议地址为例进行说明。具体地,第一目的互联网协议地址由四个区间是0到255的十进制数值组成,将每个十进制数值转换成一组8位的二进制字符序列,则第一目的互联网协议地址转换成32位的二进制字符序列。其次,填充32位的二进制字符序列,使第32位的位值为1,余下位的位值填充为0,形成一个448位的二进制字符序列。填充完成后,在448位的二进制字符序列后面连续拼接两个填充前的32位二进制字符序列,形成一个512位的二进制字符序列。随后,将512位的二进制字符序列切分成十六组32位的二进制字符序列,表示为q0,q1,…,Q15。将q0,q1,…,q15进行四轮运算,在每一轮运算中使用同一个函数进行十六次运算。具体地,在第一轮运算中,使用第一函数FF(ai,bi,ci,di,qi,si,ki),计算规则如下:
fi+1=bi+[ai+F(bi,ci,di)+qi+ki]>>>si
其中,fi+1表示第一函数FF(ai,bi,ci,di,qi,si,ki)第i+1次运算的计算结果,0≤i≤15,且i∈N+;b0作为初始参数,为32位二进制字符序列;
a0作为初始参数,为32位二进制字符序列;
c0作为初始参数,为32位二进制字符序列;
d0作为初始参数,为32位二进制字符序列;
F(bi,ci,di)=(bi&ci)|[(~bi)&di],其中,&表示与运算,|表示或运算,~表示非运算;qi∈{q0,q1,...,q15};ki为32位二进制字符序列,且ki∈{k0,k1,...,k15};si为32位二进制字符序列,且si∈{s0,s1,...,s15};>>>si表示左移si位。
在第二轮运算中,使用第二函数GG(ai,bi,ci,di,qi,si,ki),计算规则如下:
gi+1=bi+[ai+G(bi,ci,di)+qi+ki]>>>si
其中,gi+1表示第二函数GG(ai,bi,ci,di,qi,si,ki)第i+1次运算的计算结果,16≤i≤31,且i∈N+;ai=di-1,16≤i≤31,且i∈N+;ci=bi-1,16≤i≤31,且i∈N+;di=ci-1,16≤i≤31,且i∈N+;G(bi,ci,di)=(bi&di)|[ci&(~di)],其中,&表示与运算,|表示或运算,~表示非运算;qi∈{q0,q1,...,q15};ki为32位二进制字符序列,且ki∈{k16,k1,...,k31};si为32位二进制字符序列,且si∈{s16,s1,...,s31};>>>si表示左移si位。
在第三轮运算中,使用第三函数HH(ai,bi,ci,di,qi,si,ki),计算规则如下:
hi+1=bi+[ai+H(bi,ci,di)+qi+ki]>>>si
其中,hi+1表示第三函数HH(ai,bi,ci,di,qi,si,ki)第i+1次运算的计算结果,32≤i≤47,且i∈N+:ai=di-1,32≤i≤47,且i∈N+;ci=bi-1,32≤i≤47,且i∈N+;di=ci-1,32≤i≤47,且i∈N+;H(bi,ci,di)=bi^ci^di,其中,^表示异或运算;qi∈{q0,q1,...,q15};ki为32位二进制字符序列,且ki∈{k32,k1,...,k47};si为32位二进制字符序列,且si∈{s32,s1,...,s47};>>>si表示左移si位。
在第四轮运算中,使用第四函数LL(ai,bi,ci,di,qi,si,ki),计算规则如下:
li+1=bi+[ai+L(bi,ci,di)+qi+ki]>>>si
其中,li+1表示第四函数LL(ai,bi,ci,di,qi,si,ki)第i+1次运算的计算结果,48≤i≤63,且i∈N+;ai=di-1,48≤i≤63,且i∈N+;ci=bi-1,48≤i≤63,且i∈N^+;di=ci-1,48≤i≤63,且i∈N+;L(bi,ci,di)=ci^[bi|(~di)],其中,^表示异或运算,|表示或运算,~表示非运算;qi∈{q0,q1,...,q15};ki为32位二进制字符序列,且ki∈{k48,k1,...,k63};si为32位二进制字符序列,且si∈{s48,s1,...,s63};>>>si表示左移si位。
应当理解,四轮运算中函数的使用顺序可以是任意的,即可以是第一轮运算使用第一函数FF(ai,bi,ci,di,qi,si,ki),第二轮运算使用第二函数GG(ai,bi,ci,di,qi,si,ki),第三轮运算使用第三函数HH(ai,bi,ci,di,qi,si,ki),第四轮运算使用第四函数LL(ai,bi,ci,di,qi,si,ki),也可以是第一轮运算使用第二函数GG(ai,bi,ci,di,qi,si,ki),第二轮运算使用第一函数FF(ai,bi,ci,di,qi,si,ki),第三轮运算使用第四函数LL(ai,bi,ci,di,qi,si,ki),第四轮运算使用第三函数HH(ai,bi,ci,di,qi,si,ki),还可以是其他的使用顺序。
将第四轮运算产生的结果a63,b63,c63,d63进行拼接,得到一个128位的二进制字符序列,再将其转换成十进制数值,并将该十进制数值作为上述四轮运算产生的最终结果,称为第一数值,记作M。设目的出端口中非拥塞出端口的数量为N1,且出端口号从0开始依序增加到N1-1,对M和N1进行取模运算,得到余数P,计算公式如下:
P=M-R1×N1
其中,P表示出端口号,P∈{P|0≤P≤N1-1,P∈R};M表示第一数值;R1表示商;N1表示目的出端口中非拥塞出端口的数量。因此,将P表示的出端口号对应的目的出端口中的非拥塞出端口标记为第二出端口。
应当理解,上述网络设备通过将第一目的互联网协议地址转换成第一数值,从而计算得到第二出端口。在本申请中,网络设备还可以通过将第一源互联网协议地址转换成第一数值计算得到第二出端口,还可以通过将第一源互联网协议地址和第一目的互联网协议地址一起转换成第一数值计算得到第二出端口等等,此处不作具体限定。
在第三种方式中,网络设备基于目的出端口中非拥塞出端口的信息以及第一数据包携带的信息从目的出端口中的非拥塞出端口中计算得到第二出端口。为了陈述简便,下文中以目的出端口中非拥塞出端口的信息是互联网协议地址,并且,第一数据包携带的信息是第一源互联网协议地址为例进行说明。具体地,网络设备将整个第一数值空间定义为取值范围是0~232-1的整数空间,用集合表示为第一数值M∈{M|0≤M≤232-1,M∈R}。接着,网络设备查找物理地址表,找出目的出端口中非拥塞出端口的物理地址。网络设备使用目的出端口中非拥塞出端口的物理地址查找地址解析协议表,找出目的出端口中非拥塞出端口的互联网协议地址O1,O2,...,On。其次,网络设备将互联网协议地址O1,O2,...,On转换成与之一一对应的第一数值M1,M2,...,Mn,其中,M1由O1计算得到,M2由O2计算得到,……,Mn由On计算得到。将M1,M2,...,Mn分别和232进行取模运算,得到余数计算公式如下:
其中,表示余数;Mi表示由目的出端口中非拥塞出端口的互联网协议地址Oi计算得到的第一数值,且Mi∈{M1,M2,...,Mn};R2表示商。
随后,网络设备将第一目的互联网协议地址转换成第一数值MD。将MD和232进行取模运算,得到余数若/>将与第一数值Mi对应的目的出端口中的非拥塞出端口标记为第二出端口。若/>则将与第一数值Mi+1对应的目的出端口中的非拥塞出端口标记为第二出端口。
应当理解,上述网络设备通过将目的出端口中非拥塞出端口的互联网协议地址转换成第一数值,以及,将第一目的互联网协议地址转换成第一数值,从而计算得到第二出端口。在本申请中,网络设备还可以通过将目的出端口中非拥塞出端口的互联网协议地址转换成第一数值,以及,将第一源互联网协议地址转换成第一数值,从而计算得到第二出端口;还可以通过将目的出端口中非拥塞出端口的互联网协议地址转换成第一数值,以及,将第一源互联网协议地址和第一目的互联网协议地址一起转换成第一数值,从而计算得到第二出端口;还可以通过将目的出端口中非拥塞出端口的物理地址转换成第一数值,以及,将第一源物理地址转换成第一数值,从而计算得到第二出端口等等,此处不作具体限定。
S252:网络设备通过第二出端口将第一数据包进行转发。
网络设备通过内部交换矩阵把第一数据包直接而迅速地传送到第二出端口,使第一数据包在第二出端口的队列中排队,等待转发给目的节点。
参见图6,图6是本申请提供的一种网络路径选择装置的结构示意图。该装置可以用于实现前述的网络路径选择方法。如图6所示,包括:第一确定模块601、第二确定模块602以及转发模块603。
第一确定模块601用于确定第一数据包的目的出端口,其中,该目的出端口是装置600中基于该第一数据包中的第一目的互联网协议地址确定的出端口;
第二确定模块602用于确定上述目的出端口中的是否存在非拥塞出端口,其中,该非拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度小于上限阈值的出端口;
若存在上述非拥塞出端口,转发模块603用于通过该非拥塞出端口将上述第一数据包进行转发。
在一些可能的实现方式中,第二确定模块602用于:生成与拥塞出端口对应的拥塞表项,其中,该拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度大于或者等于上限阈值的出端口,该拥塞表项包括该拥塞出端口的拥塞信息,该拥塞信息基于该拥塞出端口的队列中数据包携带的信息计算得到,该数据包携带的信息是源互联网协议地址、目的互联网协议地址、与源互联网协议地址对应的源物理地址、与目的互联网协议地址对应的目的物理地址中的一项或多项;根据该拥塞表项确定上述目的出端口中的非拥塞出端口。
在一些可能的实现方式中,在第二确定模块602用于生成与拥塞出端口对应的拥塞表项之后,第二确定模块602用于:将该拥塞表项中拥塞信息为上述第一数据包携带的信息对应的拥塞出端口标记为第一类拥塞出端口,其中,该第一数据包携带的信息是第一源互联网协议地址、第一目的互联网协议地址、与第一源互联网协议地址对应的源物理地址、与第一目的互联网协议地址对应的目的物理地址中的一项或多项;根据上述第一类拥塞出端口确定上述目的出端口中的拥塞出端口;根据上述目的出端口中的拥塞出端口确定上述目的出端口中的非拥塞出端口。
在一些可能的实现方式中,装置600还包括第三确定模块604,第三确定模块604用于:计算第一出端口的队列长度,其中,该第一出端口为所述装置中的出端口;比较上述第一出端口的队列长度与下限阈值、前述上限阈值的关系,若该队列长度大于或等于该下限阈值,且小于该上限阈值,第三确定模块604用于分类统计所述第一出端口的队列中数据包的数量;若上述队列长度大于或者等于上述上限阈值,第三确定模块604用于将上述第一出端口标记为前述拥塞出端口,生成与该第一出端口对应的拥塞表项。
在一些可能的实现方式中,转发模块603用于:若存在上述非拥塞出端口,转发模块603用于从上述非拥塞出端口中确定第二出端口;通过上述第二出端口将上述第一数据包进行转发。
在一些可能的实现方式中,转发模块603用于:若存在上述非拥塞出端口,转发模块603基于上述非拥塞出端口的信息、上述第一数据包携带的信息中的一项或两项从上述非拥塞出端口中计算得到上述第二出端口,其中,该非拥塞出端口的信息是队列长度、互联网协议地址、物理地址中的一项或多项。
其中,第一确定模块601、第二确定模块602、转发模块603和第三确定模块604均可以通过软件实现,或者可以通过硬件实现。示例性的,接下来以第一确定模块601为例,介绍第一确定模块601的实现方式。类似的,第二确定模块602、转发模块603和第三确定模块604的实现方式可以参考第一确定模块601的实现方式。
模块作为软件功能单元的一种举例,第一确定模块601可以包括运行在计算实例上的代码。其中,计算实例可以是物理主机(计算设备)、虚拟机、容器中的一种。例如,第一确定模块601可以包括运行在主机/虚拟机/容器上的代码。
模块作为硬件功能单元的一种举例,第一确定模块601可以是计算设备,如服务器等。或者,第一确定模块601也可以是利用专用集成电路(application-specificintegrated circuit,ASIC)实现、或可编程逻辑器件(programmable logic device,PLD)实现的设备等。其中,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD)、现场可编程门阵列(field-programmable gate array,FPGA)、通用阵列逻辑(generic array logic,GAL)或其任意组合实现。
需要说明的是,在其他实施例中,第一确定模块601可以用于执行网络路径选择方法中的任意步骤,第二确定模块602可以用于执行网络路径选择方法中的任意步骤,转发模块603可以用于执行网络路径选择方法中的任意步骤,第三确定模块604可以用于执行网络路径选择方法中的任意步骤,第一确定模块601、第二确定模块602、转发模块603以及第三确定模块604负责实现的步骤可根据需要指定,通过第一确定模块601、第二确定模块602、转发模块603以及第三确定模块604分别实现网络路径选择方法中不同的步骤来实现网络路径选择装置的全部功能。
参见图7,图7是本申请提供的一种计算设备的结构示意图。如图7所示,计算设备700包括:总线701、处理器702、存储器703和通信接口704。处理器702、存储器703和通信接口704之间通过总线701通信。计算设备700可以是服务器,例如是中心服务器、边缘服务器,或者是本地数据中心中的本地服务器。计算设备也可以是台式机、笔记本电脑或者智能手机等终端设备。应理解,本申请不限定计算设备700中的处理器、存储器的个数。
总线701可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一条线表示,但并不表示仅有一根总线或一种类型的总线。总线701可包括在计算设备700各个部件(例如,存储器703、处理器702、通信接口704)之间传送信息的通路。
处理器702可以包括中央处理器(central processing unit,CPU)、图形处理器(graphics processing unit,GPU)、微处理器(micro processor,MP)或者数字信号处理器(digital signal processor,DSP)等处理器中的任意一种或多种。
存储器703可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器703还可以包括非易失性存储器(non-volatilememory),例如只读存储器(read-only memory,ROM),快闪存储器,机械硬盘(hard diskdrive,HDD)或固态硬盘(solid state drive,SSD)。
存储器703中存储有可执行的程序代码,处理器702执行该可执行的程序代码以分别实现前述第一确定模块601、第二确定模块602和转发模块603的功能,从而实现网络路径选择方法。也即,存储器703上存储有用于执行网络路径选择方法的指令,处理器702执行该指令以分别实现前述步骤S21、S22、S23、S24、S25、S231、S232、S2311、S2312、S2313、S2314、S251、S252,从而实现网络路径选择方法。
通信接口704使用例如但不限于网络接口卡、收发器一类的收发模块,来实现计算设备700与其他设备或通信网络之间的通信。
本申请还提供了一种包含指令的计算机程序产品。所述计算机程序产品可以是包含指令的,能够运行在计算设备上或被储存在任何可用介质中的软件或程序产品。当所述计算机程序产品在至少一个计算设备上运行时,使得至少一个计算设备执行网络路径选择方法。
本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质可以是计算设备能够存储的任何可用介质或者是包含一个或多个可用介质的数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘)等。该计算机可读存储介质包括指令,所述指令指示计算设备执行网络路径选择方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的保护范围。
Claims (15)
1.一种网络路径选择方法,其特征在于,包括:
网络设备确定第一数据包的目的出端口,其中,所述目的出端口是所述网络设备中基于所述第一数据包中的第一目的互联网协议地址确定的出端口;
所述网络设备确定所述目的出端口中的是否存在非拥塞出端口,其中,所述非拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度小于上限阈值的出端口;
若存在所述非拥塞出端口,所述网络设备通过所述非拥塞出端口将所述第一数据包进行转发。
2.根据权利要求1所述的方法,其特征在于,所述网络设备确定所述目的出端口中的是否存在非拥塞出端口包括:
所述网络设备生成与拥塞出端口对应的拥塞表项,其中,所述拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度大于或者等于上限阈值的出端口,所述拥塞表项包括所述拥塞出端口的拥塞信息,所述拥塞信息基于所述拥塞出端口的队列中数据包携带的信息计算得到,所述数据包携带的信息是源互联网协议地址、目的互联网协议地址、与源互联网协议地址对应的源物理地址、与目的互联网协议地址对应的目的物理地址中的一项或多项;
所述网络设备根据所述拥塞表项确定所述目的出端口中的非拥塞出端口。
3.根据权利要求2所述的方法,其特征在于,所述网络设备根据所述拥塞表项确定所述目的出端口中的非拥塞出端口包括:
所述网络设备将所述拥塞表项中拥塞信息为所述第一数据包携带的信息对应的拥塞出端口标记为第一类拥塞出端口,其中,所述第一数据包携带的信息是第一源互联网协议地址、第一目的互联网协议地址、与第一源互联网协议地址对应的源物理地址、与第一目的互联网协议地址对应的目的物理地址中的一项或多项;
所述网络设备根据所述第一类拥塞出端口确定所述目的出端口中的拥塞出端口;
所述网络设备根据所述目的出端口中的拥塞出端口确定所述目的出端口中的非拥塞出端口。
4.根据权利要求2或3所述的方法,其特征在于,所述方法还包括:
所述网络设备计算第一出端口的队列长度,其中,所述第一出端口为所述网络设备中的出端口;
所述网络设备比较所述第一出端口的队列长度与下限阈值、所述上限阈值的关系,
若所述队列长度大于或等于所述下限阈值,且小于所述上限阈值,所述网络设备分类统计所述第一出端口的队列中数据包的数量;
若所述队列长度大于或者等于所述上限阈值,所述网络设备将所述第一出端口标记为所述拥塞出端口,生成与所述第一出端口对应的拥塞表项。
5.根据权利要求1至4任一所述的方法,其特征在于,若存在所述非拥塞出端口,所述网络设备通过所述非拥塞出端口将所述第一数据包进行转发包括:
若存在所述非拥塞出端口,所述网络设备从所述非拥塞出端口中确定第二出端口;
所述网络设备通过所述第二出端口将所述第一数据包进行转发。
6.根据权利要求5所述的方法,其特征在于,若存在所述非拥塞出端口,所述网络设备从所述非拥塞出端口中确定第二出端口包括:
若存在所述非拥塞出端口,所述网络设备基于所述非拥塞出端口的信息、所述第一数据包携带的信息中的一项或两项从所述非拥塞出端口中计算得到所述第二出端口,其中,所述非拥塞出端口的信息是队列长度、互联网协议地址、物理地址中的一项或多项。
7.一种网络路径选择装置,其特征在于,包括:第一确定模块、第二确定模块以及转发模块,
所述第一确定模块用于确定第一数据包的目的出端口,其中,所述目的出端口是所述装置中基于所述第一数据包中的第一目的互联网协议地址确定的出端口;
所述第二确定模块用于确定所述目的出端口中的是否存在非拥塞出端口,其中,所述非拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度小于上限阈值的出端口;
若存在所述非拥塞出端口,所述转发模块用于通过所述非拥塞出端口将所述第一数据包进行转发。
8.根据权利要求7所述的装置,其特征在于,所述第二确定模块具体用于:
所述第二确定模块用于生成与拥塞出端口对应的拥塞表项,其中,所述拥塞出端口是由队列中等待转发的数据包的数量形成的队列长度大于或者等于上限阈值的出端口,所述拥塞表项包括所述拥塞出端口的拥塞信息,所述拥塞信息基于所述拥塞出端口的队列中数据包携带的信息计算得到,所述数据包携带的信息是源互联网协议地址、目的互联网协议地址、与源互联网协议地址对应的源物理地址、与目的互联网协议地址对应的目的物理地址中的一项或多项;
所述第二确定模块用于根据所述拥塞表项确定所述目的出端口中的非拥塞出端口。
9.根据权利要求8所述的装置,其特征在于,在所述第二确定模块用于生成与拥塞出端口对应的拥塞表项之后,所述第二确定模块具体用于:
所述第二确定模块用于将所述拥塞表项中拥塞信息为所述第一数据包携带的信息对应的拥塞出端口标记为第一类拥塞出端口,其中,所述第一数据包携带的信息是第一源互联网协议地址、第一目的互联网协议地址、与第一源互联网协议地址对应的源物理地址、与第一目的互联网协议地址对应的目的物理地址中的一项或多项;
所述第二确定模块用于根据所述第一类拥塞出端口确定所述目的出端口中的拥塞出端口;
所述第二确定模块用于根据所述目的出端口中的拥塞出端口确定所述目的出端口中的非拥塞出端口。
10.根据权利要求8或9所述的装置,其特征在于,所述装置还包括第三确定模块,
所述第三确定模块计算第一出端口的队列长度,其中,所述第一出端口为所述装置中的出端口;
所述第三确定模块比较所述第一出端口的队列长度与下限阈值、所述上限阈值的关系,
若所述队列长度大于或等于所述下限阈值,且小于所述上限阈值,所述第三确定模块用于分类统计所述第一出端口的队列中数据包的数量;
若所述队列长度大于或者等于所述上限阈值,所述第三确定模块用于将所述第一出端口标记为所述拥塞出端口,生成与所述第一出端口对应的拥塞表项。
11.根据权利要求7至10任一所述的装置,其特征在于,所述转发模块具体用于:
若存在所述非拥塞出端口,所述转发模块用于从所述非拥塞出端口中确定第二出端口;
所述转发模块用于通过所述第二出端口将所述第一数据包进行转发。
12.根据权利要求10所述的装置,其特征在于,所述转发模块具体用于:
若存在所述非拥塞出端口,所述转发模块基于所述非拥塞出端口的信息、所述第一数据包携带的信息中的一项或两项从所述非拥塞出端口中计算得到所述第二出端口,其中,所述非拥塞出端口的信息是队列长度、互联网协议地址、物理地址中的一项或多项。
13.一种计算设备,其特征在于,包括处理器、存储器和通信接口;
所述处理器用于执行所述存储器中存储的指令,以使得所述计算设备执行如权利要求1至6任一所述的方法。
14.一种包含指令的计算机程序产品,其特征在于,当所述指令被计算设备运行时,使得所述计算设备执行如权利要求1至6任一所述的方法。
15.一种计算机可读存储介质,其特征在于,包括计算机程序指令,当所述计算机程序指令由计算设备执行时,所述计算设备执行如权利要求1至6任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211352699.9A CN117955912A (zh) | 2022-10-31 | 2022-10-31 | 一种网络路径选择方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211352699.9A CN117955912A (zh) | 2022-10-31 | 2022-10-31 | 一种网络路径选择方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117955912A true CN117955912A (zh) | 2024-04-30 |
Family
ID=90798755
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211352699.9A Pending CN117955912A (zh) | 2022-10-31 | 2022-10-31 | 一种网络路径选择方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117955912A (zh) |
-
2022
- 2022-10-31 CN CN202211352699.9A patent/CN117955912A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7738454B1 (en) | Methods and apparatus related to packet classification based on range values | |
US9654419B2 (en) | Fabric channel control apparatus and method | |
US8792497B2 (en) | Method and apparatus for performing link aggregation | |
US9319299B2 (en) | Method and apparatus for link aggregation using links having different link speeds | |
US9608913B1 (en) | Weighted load balancing in a multistage network | |
US20110255534A1 (en) | Device and method for relaying packets | |
US20160112319A1 (en) | Hash-based Address Matching | |
CN112311674B (zh) | 报文发送方法、装置及存储介质 | |
US10547547B1 (en) | Uniform route distribution for a forwarding table | |
CN111800351A (zh) | 由交换机进行的拥塞通知分组生成 | |
EP1297665B1 (en) | Apparatus and method for efficient hashing in networks | |
US11258723B2 (en) | Data processing method and apparatus, and switching device using footprint queues | |
CN116545921A (zh) | 基于ecmp的报文转发方法、装置、设备及存储介质 | |
CN111224888A (zh) | 发送报文的方法及报文转发设备 | |
US20200028779A1 (en) | Packet processing method and apparatus | |
US20240179095A1 (en) | Method and apparatus for determining hash algorithm information for load balancing, and storage medium | |
JP7235804B2 (ja) | ルーティング情報送信方法、パケット送信方法、及び関連機器 | |
US7546512B2 (en) | Techniques to perform error detection | |
CN117955912A (zh) | 一种网络路径选择方法及装置 | |
CN108259326B (zh) | 路由表更新方法、装置、分配节点以及叶报文转发设备 | |
CN107948091B (zh) | 一种网包分类的方法及装置 | |
CN113839884A (zh) | 流量控制方法和装置 | |
US11799766B2 (en) | Packet processing method and network device | |
US20240040619A1 (en) | Secure communication acceleration using a frame classifier | |
US20220217092A1 (en) | Packet flow out-of-order detection method, packet processing method, and apparatus |
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 |