一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

转发报文的方法和相关装置与流程

2022-04-02 02:40:58 来源:中国专利 TAG:
1.本技术涉及通信
技术领域
:,更具体地,涉及转发报文的方法和相关装置。
背景技术
::2.在数据通信网络中,由多台交换机、路由器(以下统称转发节点)组成了网络流量(networktraffic)的转发网络,网络流量中的单个数据报文(例如3层互联网协议(internetprotocol,ip)报文(ippacket))可以通过转发节点经过不同的路径被路由转发(routing)到目的网络设备(如一台计算机)。当大量的网络流量通过一个转发节点时,为了减少网络拥塞,降低报文的转发时延,转发节点使用了3层负载均衡(layer3loadbalance)技术。对于同一条流(flow)有多个转发路径时,具备3层负载均衡技术的转发节点选择将该流的全部或者部分报文转发给不同的路径,以实现不同路径上流量的均衡。3.传统的3层负载均衡技术使用等价多路径路由(equal-costmulti-pathrouting,ecmp)。使用ecmp的转发节点会保存ecmp路由表。转发节点在接收到数据报文后,根据数据报文的流身份信息计算出一个索引(index),然后查询ecmp路由表中与该索引匹配的表项,根据该表项中包括的下一跳端口转发该数据报文。然而,ecmp在某些场景下的负载均衡效果不佳。技术实现要素:4.本技术提供一种转发报文的方法和相关装置,可以提高多路径负载分担的均衡性。5.本技术实施例提供一种转发报文的方法,包括:根据第一报文的流身份信息,确定第一标识,该第一标识为该第一报文的标识;当该第一报文所属的第一流是大流且流分段flowlet路由表中不包括对应于该第一流的第一flowlet表项,在该flowlet路由表中建立该第一flowlet表项并根据该第一flowlet表项转发该第一报文,该第一flowlet表项包括该第一标识。6.上述技术方案可以仅对大流建立相应的flowlet表项,以便对大流进行基于flowlet的负载均衡。这样,可以减少基于flowlet进行负载均衡使用的表项资源,提高多路径负载分担的均衡性,有效提升负载均衡的流量分担效果。7.在一种可能的设计中,该flowlet路由表包括至少一个flowlet表项,该至少一个flowlet表项与至少一个流一一对应,该第一流为该至少一个流中的任一个流。由于每个flowlet表项仅与一个流对应,这样可以减少出现因多个流匹配一个flowlet表项造成的无法形成有效的负载均衡以分担流量的问题。8.在一种可能的设计中,该至少一个flowlet表项为该flowlet路由表中的有效表项。9.在一种可能的设计中,该建立该第一flowlet表项包括:根据该第一标识,从动态路由表中确定第一动态表项,其中该第一动态表项的标识字段包括该第一标识;确定该第一动态表项包括的多个下一跳端口中的一个第一下一跳端口,该第一下一跳端口为该第一flowlet表项中的下一跳端口字段包括的下一跳端口。10.在一种可能的设计中,该确定该第一动态表项包括的多个下一跳端口中的一个第一下一跳端口,包括:获取多个路径质量,该多个路径质量与该多个下一跳端口一一对应;确定该多个路径质量中满足预设条件的一个路径质量对应的下一跳端口为该第一下一跳端口。11.在一种可能的设计中,该方法还包括:根据第二报文的流身份信息,确定第二标识,该第二标识为该第二报文的标识;当该第二报文所属的第二流不是大流,根据该第二标识和等价多路径路由ecmp路由表转发该第二报文。12.上述技术方案对不是大流的流采用ecmp技术进行转发。换句话说,可以根据报文所属的流是否是大流来确定是根据flowlet路由表转发还是根据ecmp路由表转发。这样可以提高多路径负载分担的均衡性,有效提升负载均衡的流量分担效果。13.在一种可能的设计中,该方法还包括:接收第三报文;根据该第三报文的流身份信息,确定第三标识,该第三标识为该第三报文的标识;根据该第三标识,确定该flowlet路由表中是否包括第三flowlet表项,该第三flowlet表项包括该第三标识;若该flowlet路由表中包括该第三flowlet表项,则根据该第三flowlet表项转发该第三报文;若该flowlet路由表中不包括该第三flowlet表项,则确定该第三报文所属的第三流是否为大流,根据确定结果,在该flowlet路由表中建立该第三flowlet表项或者根据该ecmp路由表转发该第三报文。14.在一种可能的设计中,该方法还包括:接收第四报文;根据该第四报文的流身份信息,确定第四标识,该第四标识为该第四报文的标识;确定该第四报文所属的第四流是否为大流;在该第四流是大流的情况下,根据该flowlet路由表中的第四flowlet表项转发该第四报文,其中该第四flowlet表项包括该第四标识;在该第四流不是大流的情况下,根据该ecmp路由表转发该第四报文。15.第二方面,本技术实施例还提供一种网络设备,该网络设备包括用于实现第一方面或第一方面任一种可能的设计的模块。16.第三方面,本技术实施例还提供一种网络设备,包括:处理器,该处理器用于与存储器耦合,读取并执行该存储器中的指令和/或程序代码,以执行如第一方面或第一方面任一种可能的设计的方法。17.第四方面,本技术实施例还提供一种芯片系统,包括:逻辑电路,该逻辑电路用于与输入/输出接口耦合,通过该输入/输出接口传输数据,以执行第一方面或第一方面任一种可能的设计的方法。18.第五方面,本技术实施例还提供一种计算机可读存储介质,该计算机可读介质存储有程序代码,当该计算机程序代码在网络设备上运行时,使得网络设备执行第一方面或第一方面任一种可能的设计的方法。附图说明19.图1是根据本技术实施例提供的转发节点的结构示意图。20.图2是对应于处理方式1的报文处理流程图。21.图3是转发节点的另一结构示意图。22.图4是对应于处理方式2的报文处理流程图。23.图5是转发节点的另一结构示意图。具体实施方式24.下面将结合附图,对本技术中的技术方案进行描述。25.本技术将围绕可包括多个设备、组件、模块等的系统来呈现各个方面、实施例或特征。应当理解和明白的是,各个系统可以包括另外的设备、组件、模块等,并且/或者可以并不包括结合附图讨论的所有设备、组件、模块等。此外,还可以使用这些方案的组合。26.另外,在本技术实施例中,“示例的”、“例如”等词用于表示作例子、例证或说明。本技术中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。27.本技术实施例中,“相应的(corresponding,relevant)”和“对应的(corresponding)”有时可以混用,应当指出的是,在不强调其区别时,其所要表达的含义是一致的。28.本技术实施例中,有时候下标如w1可能会笔误为非下标的形式如w1,在不强调其区别时,其所要表达的含义是一致的。29.本技术实施例描述的网络架构以及业务场景是为了更加清楚的说明本技术实施例的技术方案,并不构成对于本技术实施例提供的技术方案的限定,本领域普通技术人员可知,随着网络架构的演变和新业务场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。30.在本说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本技术的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。31.本技术中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b,或c中的至少一项(个),可以表示:a,b,c,a-b,a-c,b-c,或a-b-c,其中a,b,c可以是单个,也可以是多个。32.本技术实施例提供一种转发报文的方法,该方法可以由转发节点或者转发节点中的部件(例如芯片或电路等)执行。为了便于描述,以下实施例中以转发节点作为执行主体对本技术的技术方案进行介绍。33.转发节点可以根据流分段(flowlet)路由表或ecmp路由表转发报文。flowlet路由表中的每个flowlet表项是在对应的流满足大流条件的情况下被建立的。因此,通过flowlet路由表转发的报文所属的流都满足大流条件。通过ecmp路由表转发的报文都不满足大流条件。换句话说,根据本技术实施例提供的方法,可以根据报文所属的流是否满足大流条件来确定是根据flowlet路由表转发还是根据ecmp路由表转发。34.在网络流量中,一条流是包含相同流标识(例如五元组或流标签等)的一组报文。大流是指流中报文数量超过阈值的流。在具体实施中,一段时间内流中报文数量超过阈值的流中的一组报文被识别为大流。满足该大流条件的流可以认为是大流,也可以认为是一个大的突发(burst)。相应的不满足该大流条件的流可以认为是一个小流,也可以认为是一个小的突发。大流也可以称为大象流(elephantflow),小流也可以称为老鼠流(miceflow)。35.上述技术方案可以仅对满足大流条件的大流进行基于flowlet的负载均衡,而对不满足该大流条件的小流利用ecmp进行负载均衡。这样,可以减少基于flowlet进行负载均衡使用的表项资源,提高多路径负载分担的均衡性,有效提升负载均衡的流量分担效果。36.如上所述,flowlet路由表中的flowlet表项都是在报文所属的留满足大流条件的情况下才建立的。因此,在初始阶段(即转发节点刚被部署到网络中且尚未接收到任何报文),flowlet路由表是一个空的路由表。随着转发节点接收的报文数目的增加,该转发节点可以确定出符合大流条件的流,在flowlet路由表中建立相应的flowlet表项。这样,当已建立相应flowlet表项的流有新的报文到达转发节点后,可以根据flowlet路由表中匹配的flowlet表项确定如何处理该报文。37.图1是根据本技术实施例提供的转发节点的结构示意图。如图1所示,转发节点100包括标识计算模块110,flowlet查询模块120,判断模块130,flowlet路由分配模块140,flowlet路由转发模块150和ecmp路由转发模块160。38.下面分别对标识计算模块110,流分段(flowlet)查询模块120,判断模块130,flowlet路由分配模块140,flowlet路由转发模块150和ecmp路由转发模块160的功能进行介绍。39.1)标识计算模块11040.标识计算模块110用于计算报文的标识。转发节点每接收到一个报文,标识计算模块110就计算该报文的标识。例如,标识计算模块110可以根据报文的流身份信息确定该报文的标识。流身份信息是用于识别流的身份的信息,不同流的流身份信息不同,同一条流的不同报文的流身份信息是相同的。41.流身份信息也可以称为流标识(flowid)。42.对于网际协议版本4(internetprotocolversion4,ipv4)报文而言,ipv4报文的流身份信息可以是五元组,即报文头中携带的源ip地址、目的ip地址、源端口、目的端口以及协议类型。在另一些实施例中,ipv4报文的流身份信息也可以是源ip地址和目的ip地址。在另一些实施例中,ipv4报文的流身份信息也可以是源ip地址、目的ip地址、源端口和目的端口。43.对于网际协议版本6(internetprotocolversion6,ipv6)报文而言,ipv6报文的流身份信息可以是流标签(flowlabel)。在另一些实施例中,ipv6报文的流身份信息除了包括流标签外,还可以包括源地址和目的地址。44.标识计算模块110可以通过对报文的流身份信息进行哈希(hash)运算得到该报文的标识。该报文的标识可以是对该报文的流身份信息进行哈希运算得到哈希值。可以用于计算该报文的流身份信息的哈希值的算法可以是循环冗余校验32(cyclicredundancycheck32,crc32)、信息摘要算法5(message-digestalgorithm5,md5)、安全哈希算法(securehashalgorithm,sha)(例如sha-0、sha-2、或sha-256等)等,本技术实施例对此并不限定。45.2)flowlet查询模块12046.flowlet查询模块120中存储有flowlet路由表。flowlet路由表中的每个flowlet表项主要包括以下字段:标识字段、有效信息字段以及下一跳端口字段。47.flowlet表项中的标识字段包括标识。如果一个报文的标识与一个flowlet表项中的标识字段包括的标识相同,那么可以称这个标识与该flowlet表项匹配。在此情况下,可以进一步根据匹配的flowlet表项中的有效信息字段以及下一跳端口字段确定如何处理该报文。48.在一些实施例中,不同的流身份信息确定的标识不同。在此情况下,flowlet路由表中的flowlet表项与流的对应关系是一一对应。换句话说,不同的flowlet表项对应的流不同,flowlet路由表包括的flowlet表项的数目与匹配的流的数目相同。49.在另一些实施例中,不同的流身份信息可能会确定相同的标识。在此情况下,可能出现一个flowlet表项对应多个flowlet流的情况。换句话说,flowlet路由表包括的flowlet表项的数目可能会小于匹配的流的数目。50.flowlet表项中的有效信息字段用于确定是否能够根据该flowlet表项中的下一跳端口字段记录的下一跳端口转发匹配的报文。51.在一些实施例中,有效信息字段可以包括有效位字段和老化标记字段。52.在另一些实施例中,有效信息字段可以包括有效位字段和时间戳字段。53.有效位字段的值可以为1或者0。54.若flowlet表项中的有效位字段的值为1,则表示该flowlet表项是一个有效的路由表项。在此情况下,如果该报文没有超时,则可以根据该flowlet表项中的下一跳端口字段记录的下一跳端口转发匹配的报文。55.若flowlet表项中的有效位字段的值为0,则表示该flowlet表项不是一个有效的路由表项。在此情况下,该flowlet表项不可以作为用于处理与该flowlet表项匹配的报文的路由表项。在此情况下,需要flowlet路由分配模块140重新为该报文分配一个新的下一跳端口,并将有效位字段设置1。56.在一些实施例中,若flowlet表项中的有效位字段的值为0,则表示该flowlet表项是一个有效的路由表项;若flowlet表项中的有效位字段的值为1,则表示该flowlet表项不是一个有效的路由表项。57.老化标记字段的值可以为1或者0。老化标记字段可以用于判断报文所属的flowlet是否老化。58.flowlet查询模块120可以维护一个定时器。该定时器可以设置一个时间阈值t。时间阈值t是决定两个报文是否属于同一个flowlet的最小时间间隔。老化标记字段的值根据两个报文处理时间间隔是否超过时间阈值t来确定。当有效位为1时,任意报文到达时将老化位置1;当定时器超时的时刻,如果老化位为0则认为报文所属的flowlet老化,此时将有效位置0,否则有效位不变;定时器超时后总是将老化位置0。59.假设报文1和报文2是转发节点100接收到的同一个流中两个连续的报文,处理报文1的时间为t1。假设报文1是报文2的前一个报文。flowlet查询模块120可以在t1时刻启动该定时器,如果该定时器超过时间阈值t且还未处理报文2,那么可以认为报文2所属的flowlet老化,此时可以将该flowlet表项中的老化标记字段的值和有效位字段的值设置为0;如果该定时器超过时间阈值t之前已经处理报文2,那么可以认为报文2所属的flowlet未老化。此时,flowlet表项中的老化标记字段为1。定时器继续计时,当定时器的时间到达时间阈值t,那么将该flowlet表项中的老化标记字段设置为0。60.报文的处理时间可以是转发节点100接收到报文的时间,也可以是标识计算模块110计算得到报文的标识的时间,也可以是flowlet查询模块120获取到该报文的时间,本技术实施例对此并不限定。61.时间戳字段用于记录前一报文的处理时间。时间戳字段可以用于判断报文所属的flowlet是否老化。当有效位为1时,可以用当前报文的处理时间与时间戳字段记录的当前报文的前一报文的处理时间相减,如果相减结果大于预设的时间阈值,那么可以认为当前报文所属的flowlet,将有效位设置为0,表示该flowlet已不再有效;如果相减结果小于或等于该预设的时间阈值,那么可以认为当前报文所属的flowlet未老化,保持有效位的值为1。62.还以上述报文1和报文2为例,假设仍以t表示该时间阈值,用t2表示报文2的处理时间。时间戳字段记录的是报文1的处理时间,即t1。假设有效位的值为1,如果t2-t1》t,那么将有效位设置为0;如果t2-t1≤t,那么保持有效位的值不变。63.综上所述,flowlet表项的有效位的值可以根据老化标记字段的值或者时间戳字段的值确定。在有效位字段的值为1的情况下,如果根据老化标记字段或者时间戳字段确定报文所属的flowlet老化,那么可以将有效位字段的值设置为0;如果根据老化标记字段或者时间戳字段确定报文所属的flowlet未老化,那么可以将有效位字段的值保持不变。64.有效位字段的值如果为0可以认为当前报文与当前报文的前一个报文是属于不同的flowlet。例如,当前报文可以是该流的下一个flowlet的首报文,或者是一个标识相同的流的flowlet的首个报文。65.3)判断模块13066.判断模块130用于判断报文所属的流是否满足大流条件。67.在一些实施例中,判断模块130可以利用滑动窗口算法判断一个报文所属的流是否满足大流条件。68.在一些实施例中,判断模块130中可以保存一个滑窗计数桶,该滑窗计数桶可以包括至少一个哈希表,该至少一个哈希表中的每个表包括多个统计表项,该多个统计表项中的每个统计表项可以包括以下字段:标识字段、计数值字段、大流标记字段。判断模块130可以获取标识计算模块110确定的报文的标识,确定该至少一个哈希表中的每个哈希表是否存在与该报文匹配的统计表项(以下简称匹配统计表项),其中与该报文匹配的统计表项的标识字段中的标识与该报文的标识相同。69.如果该至少一个哈希表中只有一个哈希表包括一个匹配统计表项,那么可以将该匹配统计表项的计数值字段保存的计数值加1,然后将更新后的计数值(即加1后的计数值)与一个预设阈值相比,若更新后的计数值大于该预设阈值,那么可以确定该报文所属的流满足该大流条件,若更新后的计数值不大于该预设阈值,那么可以确定该报文所属的流不满足该大流条件。70.如果该至少一个哈希表中的多个哈希表中的每个哈希表都包括一个匹配统计表项,那么可以将其中一个哈希表中匹配统计表项的计数值字段保存的计数值加1,然后将全部匹配表项的计数值相加,相加后的结果与一个预设阈值相比,若相加后的结果大于该预设阈值,那么可以确定该报文所属的流满足该大流条件,若相加后的结果不大于该预设阈值,那么可以确定该报文所属的流不满足该大流条件。71.例如,该至少一个哈希表中的哈希表1,哈希表2和哈希表3都包括与报文匹配的匹配统计表项,哈希表1,哈希表2和哈希表3中的计数值分别为16,29,和31。在接收到该报文后,可以将哈希表1中的计数值加1,在此情况下,哈希表1中的计数值变为17。然后哈希表2、哈希表3以及更新后的哈希表1的计数值相加(即29 31 17)与预设阈值相比。72.在确定一个报文所属的流满足该大流条件的情况下,可以将与该报文匹配的统计表项中的大流标记字段的值修改为1,表示该报文所属的流为大流。如果一个报文所属的流不满足该大流条件的情况下,则无需修改大流标记字段的值,即保持大流标记字段的值为默认值0,表示该报文所属的流为小流。73.在一些实施例中,如果该多个统计表项中不存在与该报文匹配的统计表项,那么可以新建立一个统计表项,该新建的统计表项中的标识字段中的标识为该报文的标识,计数值字段中的计数值为1,大流标记字段的值为0,表示该报文所属的流为小流。74.在另一些实施例中,如果多个统计表项不存在与该报文匹配的统计表项,那么可以从该多个统计表项中确定一个统计表项,将该统计表项中的标识字段的标识修改为该报文的标识,计数值字段中的计数值修改为1,大流标志字段的值设置为0,表示该报文所属的流为小流。确定的统计表项可以是长时间没有匹配报文的统计表项。75.在一些实施例中,在确定一个报文所属的流满足该大流条件的情况下,可以将与该报文匹配的统计表项中的大流标记字段的值修改为0,表示该报文所属的流为大流。如果一个报文所属的流不满足该大流条件的情况下,则无需修改大流标记字段的值,即保持大流标记字段的值为默认值1,表示该报文所属的流为小流。76.在另一些实施例中,统计表项可以仅包括标识字段和计数值字段。在此情况下,每接收一个报文并将匹配的统计表性中的计数值加1后,根据更新后的计数值(或者全部匹配表项的计数值相加的结果)与预设阈值进行比较,根据比较结果,判断该报文所属的流是否为大流。77.在另一些实施例中,判断模块130可以利用计数-最小略图(count-minsketch,cm-sketch)一个报文所属的流是否满足大流条件。78.利用cm-sketch判断一个报文所属的流是否满足大流条件的基本思想如下:存在一个长度为n的数组,用来计数,数组中的每个元素的初始值为0;标识计算模块110确定的报文的标识是一个0到n之间的一个数,因此可以利用报文的标识作为元素的索引。判断模块130获取标识计算模块110确定的报文的标识,根据该报文的标识可以查找到数组中多个元素,其中该多个元素与多个值一一对应,该多个值中的最小值是该流的计数值;将多个值中的最小值加1,将更新后的元素的值(即加1后的元素的值)与一个预设阈值相比,若更新后的元素的值大于该预设阈值,那么可以确定该报文所属的流满足该大流条件,若更新后的元素的值不大于该预设阈值,那么可以确定该报文所属的流不满足该大流条件;若该数组中没有与该报文的标识对应的元素,那么可以确定该报文所属的流不满足大流条件。79.可选的,在一些实施例中,可以设置一个定时器。当定时器超时时,可以将滑窗计数桶或者基于cm-sketch的数组中的部分或全部清空或者老化。80.图1所示的各个单元是一种逻辑功能划分,也可以有另外的划分方式。例如,大流条件判断和flowlet查询可以由一个功能模块实现。例如,用于判断是否满足大流条件的表可以与flowlet路由表合并在一起。为了便于描述,可以将合并后的表也称为flowlet路由表。该flowlet路由表中可以包括标识字段、有效信息字段以及下一跳端口字段。标识字段、有效信息字段以及下一跳端口字段的具体功能可以参见上述内容。该flowlet路由表中还可以包括计数值字段和大流标记字段。该flowlet路由表可以存储部分未满足大流条件的表项。这些表项的大流标记字段的值为否定值(例如0),即只有满足大流条件的表项的有效位字段和大流标记字段的值为1。在该实施例中,该flowlet路由表中的表项可能被新来的报文对应的表项替代。比如,该flowlet路由表使用哈希表构造,其中的每一个表项的位置通过哈希计算得到。当新来的报文的位置和现有表项相同时,如果该表项的有效位为0或者流确认已经老化,则使用新来报文生成的表项代替现有的表项。上述实例只保存部分满足大流条件的表项以及一些新来的流(或者曾经被老化而从该flowlet路由表中删除的流)新建的表项,对于新建的表项,其大流标记可能为0,只有用于判断是否满足大流条件的计数值超过阈值时,该表项的大流标记字段的值修改为1。81.4)flowlet路由分配模块14082.flowlet路由分配模块140负责为报文分配下一跳端口。83.在一些实施例中,flowlet路由分配模块140可以基于动态路由表确定报文的下一跳端口。动态路由表包括多个动态表项,该多个动态表项中的每个动态表项可以包括一个标识字段和一个下一跳端口字段,该标识字段可以包括一个标识,该下一跳端口字段可以包括多个下一跳端口。在一些实施例中,动态路由表可以保存在转发节点100上或与转发节点通信的其他设备(比如存储设备)上。84.flowlet路由分配模块140可以确定该多个动态表项中是否存在与待分配下一跳端口的报文(为了便于描述,以下将“待分配下一跳端口的报文”简称为“待分配报文”)匹配的动态表项,其中与该待分配报文匹配的动态表项中的标识字段包括的标识与该待分配报文的标识相同。若存在与该待分配报文匹配的动态表项(可以称为匹配动态表项),则可以从该匹配动态表项中的下一跳端口字段包括的多个下一跳端口中确定一个作为分配给该待分配报文的下一跳端口。为了便于描述,可以将分配给该待分配报文的下一跳端口称为目标下一跳端口。若不存在与该待分配报文匹配的动态表项,则可以按照预先配置的默认下一跳端口转发该报文。85.可选的,在一些实施例中,该目标下一跳端口可以是该多个下一跳端口中的任一个。86.可选的,在另一些实施例中,flowlet路由分配模块140可以确定该多个下一跳端口中的每个下一跳端口对应的传输路径的路径质量;根据获取到的路径质量选择该目标下一跳端口。例如,可以确定该多个路径质量中满足预设条件的一个路径质量对应的下一跳端口为该目标下一跳端口。87.路径质量可以通过路径的吞吐量、端到端时延、丢包率或抖动率中的一个或多个来反映。例如,可以是吞吐量、时延、丢包率或抖动率中的一个或多个的值,也可以是根据吞吐量、时延、丢包率或抖动率中的一个或多个的值计算的到的路径质量评分。88.该预设条件可以根据需要设置。例如,可以选择路径质量最好的一个路径对应的下一跳端口为该目标下一跳端口,例如时延最低的、吞吐量最大的、丢包率最低的或者抖动率最低的路径对应的下一跳端口。又如,可以在多个吞吐量相同的路径中选择时延最低的路径对应的下一跳端口为该目标下一跳端口。又如,可以选择时延满足预设时延阈值的多个路径中吞吐量最大的路径对应的下一跳端口为该目标下一跳端口。89.可选的,在另一些实施例中,flowlet路由分配模块140可以选择flowlet查询模块120存储的flowlet路由表包括的多个flowlet表项中的多个下一跳端口中的一个作为该目标下一跳端口。例如,可以选择负载最小的一个作为该目标下一跳端口。90.5)flowlet路由转发模块15091.flowlet路由转发模块150可以根据flowlet查询模块120确定的flowlet表项中的下一跳端口转发报文。92.6)ecmp路由转发模块160。93.ecmp路由转发模块160中可以保存一个ecmp路由表。该ecmp路由表可以包括多个ecmp表项,该多个ecmp表项中的每个ecmp表项可以包括标识字段和下一跳端口字段。94.如果判断模块130确定的报文不满足该大流条件,那么可以将该报文发送至ecmp路由转发模块160。ecmp路由转发模块160可以确定ecmp路由表包括的多个ecmp表项中是否有与该报文匹配的ecmp表项。如果有与该报文匹配的ecmp表项(以下简称匹配ecmp表项),则根据该匹配ecmp表项的下一跳端口字段中的下一跳端口转发该报文。如果没有与该报文匹配的ecmp表项,则可以通过默认的下一跳端口转发该报完。95.该ecmp路由表可以是一个静态ecmp路由表。该静态ecmp路由表可以由组表(grouptable)和成员表(membertable)组成。根据报文的流身份信息,可以从组表中查询到一个基(base)地址。根据查询到的基地址和偏移值,从成员表中确定一个下一跳端口转发该报文。该偏移值是根据报文的流身份信息确定的。例如,可以根据流身份信息的哈希值确定,也可以根据标识计算模块110确定的报文的标识确定。一个基地址对应多个偏移值,该多个偏移值中的每个偏移值对应于一个下一跳端口。96.该ecmp路由表可以是一个静态ecmp路由表。该静态ecmp路由表可以由组表(grouptable)和成员表(membertable)组成。根据报文的流身份信息,可以从组表中查询到一个基(base)地址。根据查询到的基地址和偏移值,从成员表中确定一个下一跳端口转发该报文。该偏移值是根据报文的流身份信息确定的。例如,可以根据流身份信息的哈希值确定,也可以根据标识计算模块110确定的报文的标识确定。一个基地址对应多个偏移值,该多个偏移值中的每个偏移值对应于一个下一跳端口。97.该ecmp路由表可以是一个静态ecmp路由表。该静态ecmp路由表可以由组表(grouptable)和成员表(membertable)组成。根据报文的流身份信息,可以从组表中查询到一个基(base)地址。根据查询到的基地址和偏移值,从成员表中确定一个下一跳端口转发该报文。该偏移值是根据报文的流身份信息确定的。例如,可以根据流身份信息的哈希值确定,也可以根据标识计算模块110确定的报文的标识确定。一个基地址对应多个偏移值,该多个偏移值中的每个偏移值对应于一个下一跳端口。98.在确定了接收到的报文的标识后,转发节点100对该报文可以有两种处理方式:99.处理方式1:判断模块130先根据报文的标识确定该报文所属的流是否满足大流条件;若满足,则flowlet查询模块120确定是否有匹配的flowlet流表;根据确定结果,确定根据匹配的flowlet流表或者新建的flowlet流表或者更新的flowlet流表转发该报文;若不满足,则ecmp路由转发模块160根据匹配的ecmp表项转发该报文。100.处理方式2:flowlet查询模块120根据报文的标识确定flowlet流表中是否有匹配的flowlet表项;若有,则根据匹配的flowlet表项或更新的flowlet表项转发该报文;若没有,则判断模块130根据报文的标识确定该报文所属的流是否满足大流条件;若满足该大流条件,则新建flowlet表项并根据新建的flowlet表项转发该报文;若不满足该大流条件,则ecmp路由转发模块160根据匹配的ecmp表项转发该报文。101.图2是对应于处理方式1的报文处理流程图。102.201,根据报文的流身份信息,确定该报文的标识。103.202,根据该报文的标识,确定该报文所属的流是否满足大流条件。104.如果该报文所属的流不满足该大流条件,则执行步骤203;如果该报文所属的流满足该大流条件,则执行步骤204。105.203,根据ecmp路由表转发该报文。106.204,确定flowlet路由表中是否有与该报文的标识匹配的表项。107.如果该flowlet路由表中有与该报文的标识匹配的flowlet表项,则执行步骤205;如果该flowlet路由表中没有与该报文的标识匹配的flowlet表项,则执行步骤209和步骤210。108.205,确定是否需要更新匹配的flowlet表项。109.若不需要更新匹配的flowlet表项,则可以执行步骤206;若需要更新匹配的flowlet表项,则可以执行步骤207和步骤208。110.判断是否需要更新匹配的flowlet表项可以根据与该报文的标识匹配的flowlet表项中有效信息字段(即有效位字段和老化标记字段,或者,有效位字段和时间戳字段)。如上所述,在有效位字段为1的情况下,可以根据老化标记字段或时间戳字段确定报文所属的flowlet是否老化,如果确定结果为老化,那么需要将有效位字段设置为0,此时可以确定需要更新匹配的flowlet表项;如果确定结果为未老化,那么保持有效位字段的值不变,此时可以确定不需要更新匹配的flowlet表项。111.206,根据匹配的flowlet表项转发该报文。112.207,更新匹配的flowlet表项。113.208,根据更新后的匹配的flowlet表项转发该报文。114.209,在flowlet路由表中新建flowlet表项。115.210,根据新建的flowlet表项转发该报文。116.图3是在根据处理方式1处理该报文的情况下,转发节点100中各个模块的关系示意图。117.如图3所示,标识计算模块110可以确定报文的标识并将确定的报文的标识发送至判断模块130。118.判断模块130确定该报文所属的流是否满足大流条件,若是,则由flowlet查询模块120负责处理该报文;若否,则由ecmp路由转发模块160根据保存的ecmp路由表转发该报文。119.flowlet查询模块120判断该保存的flowlet路由表中是否有与报文匹配的flowlet表项:120.1)若有匹配的flowlet表项且不需要更新匹配的flowlet表项,则由flowlet路由转发模块150转发该报文;121.2)若没有匹配的flowlet表项,则由flowlet路由分配模块140分配新的下一跳端口并根据分配的新的下一调端口新建flowlet表项,然后由flowlet路由转发模块150根据新建的flowlet表项转发该报文;122.3)若有匹配的flowlet表项且需要更新匹配的flowlet表项,则由flowlet路由分配模块140分配新的下一跳端口并根据分配的新的下一调端口更新匹配的flowlet表项,然后由flowlet路由转发150模块根据更新后的匹配的flowlet表项转发该报文。123.图4是对应于处理方式2的报文处理流程图。124.401,根据报文的流身份信息,确定该报文的标识。125.402,确定flowlet路由表中是否有与该报文的标识匹配的表项。126.若该flowlet路由表中有与该报文的标识匹配的flowlet表项,则执行步骤403;若该flowlet路由表中没有与该报文的标识匹配的flowlet表项,则执行步骤407。127.403,确定是否需要更新匹配的flowlet表项。128.若不需要更新匹配的flowlet表项,则可以执行步骤404;若需要更新匹配的flowlet表项,则执行不行405和步骤406。129.404,根据匹配的flowlet表项,转发该报文。130.405,更新匹配的flowlet表项。131.406,根据更新后的匹配的flowlet表现,转发该报文。132.407,确定该报文所属的流是否满足大流条件。133.若该报文所属的流满足大流条件,则执行步骤408和步骤409;若该报文所属的流不满足该大流条件,则执行步骤410。134.408,在该flowlet路由表中新建flowlet表项。135.409,根据新建的flowlet表项转发该报文。136.410,根据ecmp路由表转发该报文。137.图5是在根据处理方式2处理该报文的情况下,转发节点100中各个模块的关系示意图。138.如图5所示,标识计算模块110可以确定报文的标识并将该报文的表示发送至flowlet查询模块120。139.flowlet判断该保存的flowlet路由表中是否有与报文匹配的flowlet表项:140.1)若有匹配的flowlet表项且不需要更新匹配的flowlet表项,则由flowlet路由转发模块150转发该报文;141.2)若有匹配的flowlet表项且需要更新匹配的flowlet表项,则由flowlet路由分配模块140分配新的下一跳端口并根据分配的新的下一调端口更新匹配的flowlet表项,然后由flowlet路由转发模块150根据更新后的匹配的flowlet表项转发该报文;142.3)若没有匹配的flowlet表项则由判断模块130继续处理。143.判断模块130确定该报文所属的流是否为满足大流条件;若不是,则由ecmp路由转发模块160根据保存的ecmp路由表转发该报文;若是,则由flowlet路由分配模块140分配新的下一跳端口并根据分配的新的下一调端口新建flowlet表项,然后由flowlet路由转发模块150根据新建的flowlet表项转发该报文。144.为了帮助本领域技术人员更好地理解本技术的技术方案,下面结合具体实施例对本技术的技术方案进行描述。145.为了便于描述,用流a、流b和流c表示转发节点100接收到的三条不同的流。换句话说,流a、流b和流c中的任意两条流的流身份信息不同。用报文a1表示转发节点100接收到的流a中的第一个报文,报文a2表示转发节点100接收到的流a中的第二个报文,报文a3表示转发节点100接收到的流a中的第三个报文,以此类推;类似的,用报文b1表示转发节点100接收到的流b中的第一个报文,报文b2表示转发节点100接收到的流b中的第二个报文,报文b3表示转发节点100接收到的流b中的第三个报文,以此类推;类似的,用报文c1表示转发节点100接收到的流c中的第一个报文,报文c2表示转发节点100接收到的流c中的第二个报文,报文c3表示转发节点100接收到的流c中的第三个报文,以此类推。146.报文a1,报文a2,报文a3,……,报文ax均是流a中的报文(x为大于3的正整数),因此,报文a1至报文ax中的任意两个报文的流身份信息相同,可以用ida表示根据流a中的报文的流身份信息确定的标识。147.类似的,报文b1,报文b2,报文b3,……,报文by均是流b中的报文(y为大于3的正整数),因此,报文b1至报文by中的任意两个报文的流身份信息相同,可以用idb表示根据流b中的报文的流身份信息确定的标识。148.类似的,报文c1,报文c2,报文c3,……,报文cz均是流c中的报文(z为大于3的正整数),因此,报文c1至报文cz中的任意两个报文的流身份信息相同,可以用idc表示根据流c中的报文的流身份信息确定的标识。149.假设转发节点100在接入网络时处于初始状态。换句话说,转发节点100在此之前没有接收过任何报文。在此情况下,转发节点100的flowlet查询模块120保存的flowlet路由表为一个空的路由表。为了便于描述,以下假设flowlet路由表的flowlet表项中包括的字段分为:标识字段、有效位字段、老化标记字段以及下一跳端口字段。判断模块130用于判断流是否满足大流条件的滑窗计数桶中的哈希表或cm-sketch中的数组也为空。为便于描述,以下假设判断模块130基于滑窗计数桶确定报文所属的流是否满足大流条件且假设计数值大或等于100的流被认为是大流。ecmp路由转发模块160中保存的ecmp路由表可以是一个预先设定好下一跳端口字段的ecmp路由表,该ecmp路由表包括组表和成员表。换句话说,在此情况下,flowlet路由表、滑窗计数桶以及ecmp路由表分别如表1、表2和表3所示。为了便于描述,表3中仅示出了ecmp路由表中的成员表。150.表1151.标识有效位老化标记下一跳端口ꢀꢀꢀꢀ152.表2153.标识计数值大流标记ꢀꢀꢀ154.表3[0155][0156]如上所述,表1(即flowlet路由表)是一个空的路由表,表2(即滑窗计数桶)也是一个空的表,表3(即ecmp路由表中的成员表)是配置好下一跳端口的路由表。[0157]假设转发节点100接收到报文a1,且报文a1是转发节点100接收到的第一个报文。[0158]假设转发节点100按照如图2所示的流程处理报文。在此情况下,转发节点100可以根据如表2所示的滑窗计数桶判断报文a1所在的流是否满足大流条件。由于该滑窗计数桶中还没有任何数据,因此可以将报文a1的相关信息添加到该滑窗计数桶中得到如表4所示的滑窗计数桶。[0159]表4[0160]标识计数值大流标记ida10[0161]如表4所示,转发节点100仅接收到一个表示为ida的报文,因此,计数值为1。如上所述,计数值大于或等于100的流被认为是大流。由于现在的计数值仅为1,因此大流标记为0,即报文a1所属的流不是大流。[0162]在此情况下,转发节点100可以根据ecmp路由表转发报文a1。假设根据流a中的报文的流身份信息为base0。假设根据流a中的报文的流身份信息确定的偏移值为offseta。那么根据表3可以确定报文a1的下一跳端口为端口1。假设转发节点100按照如图4所示的流程处理报文。在此情况下,转发节点100需要先判断当前的flowlet路由表中是否有标识字段中的标识为ida的flowlet表项,即与报文a1匹配的flowlet表项。如表1所示,当前的flowlet路由表是一个空的路由表,因此没有与报文a1匹配的路由表。在此情况下,转发节点100可以确定报文a1所属的流是否满足大流条件。转发节点100可以确定报文a1所属的流是否满足大流条件的具体过程以及后续流程与转发节点按照如图2所示的流程处理报文中相应的步骤相同为了简洁,在此就不再赘述。[0163]假设转发节点100接收到报文b1,且报文b1是转发节点100接收到的第二个报文。[0164]假设转发节点100按照如图2所示的流程处理报文。在此情况下,转发节点100可以根据如表2所示的滑窗计数桶判断报文b1所属的流是否满足大流条件。由于该滑窗计数桶没有包括与报文b1所属的流匹配的表项,因此可以建立与报文b1所属的流匹配的表项,得到如表5所示的滑窗计数桶。[0165]表5[0166]标识计数值大流标记ida10idb10[0167]如表5所示,转发节点100仅接收到一个表示为idb的报文,因此,计数值为1。如上所述,计数值大于或等于100的流被认为是大流。由于现在的计数值仅为1,因此大流标记为0,即报文b1所属的流不是大流。[0168]在此情况下,转发节点100可以根据ecmp路由表转发报文b1。假设根据流b中的报文的流身份信息确定的基地址也为base0。假设根据流b中的报文的流身份信息确定的偏移值为offsetb。那么根据表3可以确定报文b1的下一跳端口为端口1。[0169]假设转发节点100按照如图4所示的流程处理报文。在此情况下,转发节点100需要先判断当前的flowlet路由表中是否有标识字段中的标识为idb的flowlet表项,即与报文b1匹配的flowlet表项。如表1所示,当前的flowlet路由表是一个空的路由表,因此没有与报文b1匹配的路由表。在此情况下,转发节点100可以确定报文b1所属的流是否满足大流条件。转发节点100可以确定报文b1所属的流是否满足大流条件的具体过程以及后续流程与转发节点按照如图2所示的流程处理报文中相应的步骤相同为了简洁,在此就不再赘述。[0170]假设转发节点100接收到报文c1,且报文c1是转发节点100接收到的第三个报文。转发节点100处理报文c1的方式和处理报文a1和b1的方式类似,为了简洁,在此就不再赘述。在处理完报文c1后,如滑窗计数桶可以更新为如表6所示。[0171]表6[0172]标识计数值大流标记ida10idb10idc10[0173]假设转发节点100又陆续接收到了报文a2至报文a99,报文b2至报文b86,报文c2至报文c16。在此情况下,滑窗计数桶更新为如表7所示。[0174]表7[0175]标识计数值大流标记ida990idb860idc160[0176]可见,到目前为止,流a、流b和流c的对应的计数值都没有大于或等于预设的阈值100。因此,流a、流b和流c均不满足大流条件,相应的大流标记为0。报文a2至报文a99,报文b2至报文b86,报文c2至报文c16都按照如表3所示的ecmp路由表转发。[0177]假设转发节点100接收到了报文a100,并假设转发节点100按照如图2所示的流程处理报文a100。在此情况下,转发节点100将表7更新为如表8所示。[0178]表8[0179]标识计数值大流标记ida1001idb860idc160[0180]如表8所示,在接收到报文a100后,与报文a100所属的流对应的表项(即标识字段为ida的表项)的计数值等于预设阈值,因此,可以将大流标记设置为1。在此情况下,流a被认为符合大流条件。[0181]转发节点100判断flowlet路由表中是否包含与报文a100匹配的flowlet表项(即标识字段中的标识为ida的flowlet表项)。由于流a是第一个被判定为符合大流条件的流,因此,在此之前不会建立flowlet表项。因此,到目前为止,flowlet路由表还是一个空的路由表。在此情况下,flowlet路由表中不包含与报文a100匹配的flowlet表项。因此,可以在flowlet路由表中建立与报文a100匹配的flowlet表项。由于报文a100是流a中的一个报文,因此与报文a100匹配的flowlet表项也可以认为是与流a匹配的flowlet表项。假设确定的用于转发流a的下一跳端口为端口11。那么,可以将如表1所示的flowlet路由表更新为如表9所示。表9中的老化标记字段的值是计时器超时前老化标记字段的值。[0182]表9[0183]标识有效位老化标记下一跳端口ida11端口11[0184]在此情况下,转发节点100可以按照新建立的flowlet表项转发报文a100。[0185]假设转发节点100接收到了报文a100,并假设转发节点100按照如图4所示的流程处理报文a100。在此情况下,转发节点100判断flowlet路由表中是否包含与报文a100匹配的flowlet表项(即标识字段中的标识为ida的flowlet表项)。到目前为止,尚未有一个流a被判定为符合大流条件的流,因此,到目前为止,flowlet路由表还是一个空的路由表。在此情况下,flowlet路由表中不包含与报文a100匹配的flowlet表项。[0186]转发节点100继续判断流a是否满足大流条件。在接收到报文a100后,转发节点100将表7更新为如表8所示。如表8所示,在接收到报文a100后,与报文a100所属的流对应的表项(即标识字段为ida的表项)的计数值等于预设阈值,因此,可以将大流标记设置为1。在此情况下,流a被认为符合大流条件。在此情况下,转发节点100可以在flowlet路由表中建立与报文a100匹配的flowlet表项。假设确定的用于转发流a的下一跳端口为端口11。那么,可以将如表1所示的flowlet路由表更新为如表9所示。转发节点100可以按照新建立的flowlet表项转发报文a100。[0187]假设转发节点100又接收到了报文a101,且报文a101没有超时(即报文a101与报文a100属于同一个flowlet)。[0188]如果转发节点100按照如图2所示的流程处理报文a101,转发节点100先更新滑窗计数桶中流a对应的表项,得到如表10所示的表。[0189]表10[0190]标识计数值大流标记ida1011idb860idc160[0191]如表10所示,流a对应的表项的大流标记为1。在此情况下,流a被认为符合大流条件。[0192]转发节点100判断flowlet路由表中是否包含与报文a101匹配的flowlet表项(即标识字段中的标识为ida的flowlet表项)。假设报文a101未超时,那么用于判断是否包含与报文a100匹配的flowlet表项的flowlet路由表是如表9所示的路由表。如表9所示,该flowlet路由表中包括标识字段中的标识为ida的flowlet表项,且有效位和老化标记均为1,在此情况下,转发节点100可以按照与报文a101匹配的flowlet表项转发报文a101。[0193]如果转发节点100按照如图4所示的流程处理报文a101,转发节点100判断flowlet路由表中是否包含与报文a101匹配的flowlet表项(即标识字段中的标识为ida的flowlet表项)。假设报文a101未超时,那么用于判断是否包含与报文a100匹配的flowlet表项的flowlet路由表是如表9所示的路由表。如表9所示,该flowlet路由表中包括标识字段中的标识为ida的flowlet表项,且有效位和老化标记均为1。在此情况下,转发节点100可以确定报文a101不是新的flowlet的首个报文,因此,转发节点100可以按照与报文a101匹配的flowlet表项转发报文a101。[0194]假设转发节点100又陆续接收到了报文a102至报文a120,报文b87至报文b122,报文c17至报文c86。在此情况下,滑窗计数桶更新为如表11所示。[0195]表11[0196]标识计数值大流标记ida1201idb1221idc860[0197]flowlet路由表更新为如表12所示。表12中的老化标记字段的值是计时器超时前老化标记字段的值。[0198]表12[0199]标识有效位老化标记下一跳端口ida11端口11idb10端口12[0200]假设转发节点100有接收到了报文b123且报文b123超时。假设转发节点100按照如图2所示的流程处理报文b123。在此情况下,转发节点100可以确定报文b123所属的流b满足大流条件。转发节点100确定如表12所示的flowlet流表是否有匹配的flowlet表项。如表12所示的flowlet路由表中有匹配的表项。但是如表12,老化标记字段的值为0。因此,需要将表12中有效位的值设置为0。在此情况下,需要更新匹配的flowlet表项,为流b重新分配一个新的下一跳端口。假设为流b重新分配的新的下一条端口为端口18。在此情况下,如表12所示的flowlet路由表中与流b匹配的flowlet表项需要更新,得到如表13所示的flowlet路由表。表13中的老化标记字段的值是计时器超时前老化标记字段的值。[0201]表13[0202]标识有效位老化标记下一跳端口ida11端口11idb11端口18[0203]在此情况下,转发节点100可以按照更新后的与流b匹配的flowlet表项通过端口18转发报文b123。[0204]本技术实施例中所称的转发节点可以是一个具有ip报文转发功能的网络设备(例如交换机、路由器等)。上述转发节点实现的各个步骤也可以由网络设备中的部件实现,例如,可以由网络设备中的芯片系统实现。该芯片系统包括逻辑电路。该逻辑电路可以与输入/输出接口耦合,通过输入输出接口传输报文,以实现上述方法实施例中的各个步骤。该逻辑电路可以是编程门阵列(fieldprogrammablegatearray,fpga),可以是专用集成芯片(applicationspecificintegratedcircuit,asic),还可以是网络处理器(networkprocessor,np),还可以是其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,或其他集成芯片等。[0205]在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。[0206]可以理解,本技术实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。[0207]根据本技术实施例提供的方法,本技术还提供一种计算机程序产品,该计算机程序产品包括:计算机程序代码,当该计算机程序代码在网络设备上运行时,使得该网络设备执行上述实施例中任意一个实施例的方法。[0208]根据本技术实施例提供的方法,本技术还提供一种计算机可读介质,该计算机可读介质存储有程序代码,当该程序代码在网络设备上运行时,使得该网络设备执行上述所示实施例中任意一个实施例的方法。[0209]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0210]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0211]在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0212]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0213]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0214]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0215]以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献