网络设备的报文分流方法和装置与流程

文档序号:31773719发布日期:2022-10-12 07:49阅读:52来源:国知局
网络设备的报文分流方法和装置1.本技术是向中国专利局提交的申请号为201910423117.3,申请日为2019年05月21日,发明创造名称为“网络设备的报文分流方法和装置”的发明专利申请的分案申请。
技术领域
:2.本技术涉及信息
技术领域
:,更具体地,涉及一种网络设备的报文分流方法和装置。
背景技术
::3.网络设备通常包括多个处理单元(例如,多核处理器),通常采用每个核对应一个转发进程(线程)的多核轮询收包模型,当多个转发核从一个网口收包时,需要对共享资源进行锁保护,即同一时刻只有一个转发进程(线程)可以从同一个网络端口收包、处理、发包。为了提高多核并发能力,达到报文在多核上处理的负载均衡,可以基于接收端扩展(receive-sidescaling,rss)技术的分流或者软件哈希(hash)分流2种方式。4.rss报文分流技术中同一报文流的报文都由一个处理单元来处理,即将具有相同的源ip地址、目的ip地址、源端口号和目的端口号的报文作为同一报文流的报文转发至多处理单元中的目标处理单元。5.由于,rss分流技术旨在基于预先指定报文特定字段(例如,报文头中的四元组),计算哈希(hash)值,再基于计算的哈希值确定处理报文的处理单元。当大量报文采用隧道封装技术进行封装后,报文的隧道协议头相同,或者说报文的隧道协议头中的特定字段(例如,四元组)相同,则基于上文介绍的rss技术,这些封装后的报文都被转发至相同的处理单元,通过同一个处理单元处理。这样,导致网络设备中的某些处理单元的负载过大,增大处理报文的时延较大。技术实现要素:6.本技术提供一种网络设备的报文分流方法和装置,在多处理单元中对隧道协议封装的报文进行分流时,有利于减少网络设备处理第一报文的时延。7.第一方面,提供一种网络设备的报文分流方法,所述网络设备包括多处理单元,所述方法由所述网络设备执行所述方法包括:接收第一报文;根据所述第一报文的隧道协议报文头,将所述第一报文分流至所述多处理单元中的第一处理单元进行转发;若所述第一处理单元无法处理所述第一报文,根据所述第一报文的内层报文头,重新对所述第一报文进行分流。8.在本技术实施例中,当第一处理单元无法处理第一报文时,可以通过第一报文的内层报文头,重新对第一报文进行分流,有利于减少网络设备处理第一报文的时延,避免了传统的报文分流方法中,将第一报文分流至第一处理单元后,第一处理单元无法处理该报文,导致报文传输超时。9.在一种可能的实现方式中,若所述第一处理单元无法处理所述第一报文,根据所述第一报文的内层报文头,重新对所述第一报文进行分流,包括:若所述第一处理单元的负载满足预设条件,根据所述第一报文的内层报文头,重新对所述第一报文进行分流。10.在本技术实施例中,当第一处理单元的负载满足预设条件,可以通过第一报文的内层报文头,重新对第一报文进行分流,有利于降低第一处理单元的负载,以在多个处理单元之间实现负载均衡提供基础。避免了传统的基于报文的隧道报文头进行分流的过程中,由于封装后的报文都被转发至相同的处理单元(例如第一处理单元),导致网络设备中的某些处理单元的负载过大,某些处理单元的负载过小,引发网络设备中的处理单元负载不均衡。11.在一种可能的实现方式中,所述方法还包括:获取所述第一报文的第一调度规则;根据所述第一调度规则确定由所述网络设备的网卡对所述第一报文的内层报文头,重新对所述第一报文进行分流;所述根据所述第一报文的内层报文头,重新对所述第一报文进行分流,包括:通过所述网卡基于所述第一报文的内层报文头,重新对所述第一报文进行分流。12.在本技术实施例中,根据第一调度规则的指示,由网卡根据第一报文的内层报文头对第一报文进行重新分流,无需增加新的模块以实现重新分流,有利于简化网络设备的负载程度。13.在一种可能的实现方式中,所述方法还包括:获取所述第一报文的第二调度规则;根据所述第二调度规则确定由所述网络设备的分流模块对所述第一报文的内层报文头,重新对所述第一报文进行分流;所述根据所述第一报文的内层报文头,重新对所述第一报文进行分流,包括:通过所述分流模块基于所述第一报文的内层报文头,重新对所述第一报文进行分流。14.在本技术实施例中,根据第二调度规则的指示,由分流根据第一报文的内层报文头对第一报文进行重新分流,有利于扩大本技术的应用场景,例如,即使是在网卡不支持重新分流的场景下,也可以使用本技术实施例的方法。15.在一种可能的实现方式中,所述根据所述第一报文的内层报文头,重新对所述第一报文进行分流,包括:根据所述第一报文的内层报文头,重新将所述第一报文分流至所述多处理单元中除所述第一处理单元之外的其他处理单元。16.在一种可能的实现方式中,所述根据所述第一报文的内层报文头,重新对所述第一报文进行分流,包括:根据所述第一报文的内层报文头,基于接收端扩展rss策略对所述第一报文进行分流。17.第二方面,提供一种网络设备,所述网络设备包括多处理单元,所述多处理单元包括第一处理单元,所述网络设备用于:接收第一报文;根据所述第一报文的隧道协议报文头,将所述第一报文分流至所述第一处理单元进行转发;若所述第一处理单元无法处理所述第一报文,还用于根据所述第一报文的内层报文头,重新对所述第一报文进行分流。18.在一种可能的实现方式中,所述网络设备还用于:若所述第一处理单元的负载满足预设条件,根据所述第一报文的内层报文头,重新对所述第一报文进行分流。19.在一种可能的实现方式中,所述网络设备还用于:获取所述第一报文的第一调度规则;根据所述第一调度规则确定由所述网络设备的网卡对所述第一报文的内层报文头,重新对所述第一报文进行分流;通过所述网卡基于所述第一报文的内层报文头,重新对所述第一报文进行分流。20.在一种可能的实现方式中,所述网络设备还用于:获取所述第一报文的第二调度规则;根据所述第二调度规则确定由所述网络设备的分流模块对所述第一报文的内层报文头,重新对所述第一报文进行分流;通过所述分流模块基于所述第一报文的内层报文头,重新对所述第一报文进行分流。21.在一种可能的实现方式中,所述多处理单元还用于:根据所述第一报文的内层报文头,重新将所述第一报文分流至所述多处理单元中除所述第一处理单元之外的其他处理单元。22.第三方面,提供一种网络设备,包括处理器和存储器,所述存储器用于存储计算机程序,所述处理器用于从存储器中调用并运行所述计算机程序,使得所述网络设备执行上述各方面的方法。23.第四方面,提供一种网络设备,所述网络设备包括用于执行上述各个方面中方法的各个模块。24.第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面中任一种可能实现方式中的方法。25.第六方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。26.需要说明的是,上述计算机程序代码可以全部或者部分存储在第一存储介质上,其中第一存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本技术实施例对此不作具体限定。27.第七方面,提供了一种芯片系统,该芯片系统包括处理器,用于网络设备实现上述方面中所涉及的功能,例如,生成,接收,发送,或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存终端设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。附图说明28.图1示出了本技术实施例适用网络设备的示意图。29.图2是基于隧道协议封装的ipsec报文的格式的示意性框图。30.图3是本技术提供的网络设备的报文分流方法的示意性流程图。31.图4是本技术实施例的报文分流方法的示意性流程图。32.图5是本技术实施例的网络设备的示意图。33.图6是本技术实施例的网络设备的示意性框图。具体实施方式34.下面将结合附图,对本技术中的技术方案进行描述。35.网络设备(例如,企业路由器)用于连接多个逻辑上分开的网络,所谓的逻辑网络就是代表一个单独的网络或者一个子网。当数据从一个子网传输到另一个子网时可以通过路由器来完成。企业路由器主要是连接企业局域网与广域网(internet),采用企业路由器可以实现企业异种网络互联、多个子网互联。36.例如,总部与分支机构之间可以通过虚拟私有网络(virturalprivatenetwork,vpn)实现安全沟通与资源共享,集成有vpn功能的网关设备a和网关设备b分别部署在分支机构及总部的出口上,并通过运营商1和运营商2建立互联网协议安全性(internetprotocolsecurity,ipsec)隧道,通过加密和验证等方式为ip数据包的传输提供端到端的安全服务。37.在一段时间内,一个源ip地址和目的ip地址之间传输的单向报文流,所有报文具有相同的源端口号、目的端口号、协议号和源、目的ip地址,即五元组内容相同。38.为了实时的处理网络数据流量,高性能的服务器采用多路多核,为了充分利用各个处理器以处理大量的网络数据,可以采用网络数据的聚合和分散技术。聚合从外网输入的所有数据流,根据一定的分流策略包聚合的数据流分散到多个队列中去,队列与cpu一一对应,即一个cpu处理一个队列中的数据,这样可以充分利用多路多核的cpu资源。39.多核处理器是指在一块处理器中集成两个或多个完整的计算引擎(内核)。在多核、多处理器环境中,当访问多个转发核共享的资源时需要进行加锁处理,即同一时刻只有一个转发进程可以从同一个网络端口收包、处理、发包。40.为了避免加锁带来的开销及对系统性能的负面影响,在系统设计时通常会设法避免资源共享,对于路由器、交换机、网络服务器等网络设备,属于同一报文流的报文都采用同一个转发核来处理,以避免报文跨转发核处理所带来的转发核之间的资源共享。41.下面,对本技术涉及的相关术语作简要介绍。42.1、隧道封装43.隧道技术(tunneling)是一种通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。新的帧头提供路由信息,以便通过互联网传递被封装的负载数据。44.为创建隧道,隧道的客户机和服务器在创建隧道过程中双方必须使用相同的隧道协议。隧道技术可分别以第2层或第3层隧道协议为基础。其中,第2层隧道协议对应于osi模型的数据链路层,使用帧作为数据交换单位。点对点隧道协议(pptp)、第二层隧道协议(l2tp)和第2层转发协议(l2f)都属于第2层隧道协议,将用户数据封装在点对点协议(ppp)帧中通过互联网发送。第3层隧道协议对应于osi模型的网络层,使用包作为数据交换单位。ipip(ipoverip)以及ipsec隧道模式属于第3层隧道协议,是将ip包封装在附加的ip包头中通过ip网络传送。45.隧道协议是由传输的载体、不同的封装格式以及用户数据包组成的,区别在于用户的数据包是被封装在不同数据包中在隧道中传输。46.2、ipsec协议47.互联网安全协议(internetprotocolsecurity,ipsec)是一个协议包,对ip协议的分组进行加密和认证来保护ip协议的网络传输协议族,即相互关联的协议的集合。ipsec协议通过包封装技术,能够利用internet可路由的地址,封装内部网络的ip地址,实现异地网络的互通。48.ipsec是ietf制定的三层隧道加密协议,为internet上传输的数据提供了高质量的、可互操作的、基于密码学的安全保证。ipsec协议给出了应用于ip层上网络数据安全的体系结构,包括网络认证协议认证头(authenticationheader,ah)、封装安全载荷(encapsulatingsecuritypayload,esp)和密钥管理协议因特网密钥交换(internetkeyexchange,ike)以及用于网络认证及加密算法等。ah协议和esp协议用于提供安全服务,ike协议用于密钥交换。49.其中,认证头ah为ip数据报提供无连接数据完整性、消息认证以及防重放攻击保护;封装安全载荷esp用于提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性;安全关联sa用于提供算法和数据包,提供ah、esp操作所需的参数。50.ah协议提供数据源认证、数据完整性校验和防报文重放功能,保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。ah的工作原理是在数据包上添加身份验证报文头,此报文头插在标准ip包头后面,对数据提供完整性保护。可选择的认证算法有(messagedigest5,md5)、安全哈希算法(securehashalgorithm1,sha-1)。51.esp协议提供加密、数据源认证、数据完整性校验和防报文重放功能。esp协议在每一个数据包的标准ip包头后面添加一个esp报文头,并在数据包后面追加一个esp尾。esp将需要保护的用户数据进行加密后再封装到ip包中以保证数据的机密性。esp的加密算法有des、3des、aes等。用户可以选择md5、sha-1算法保证报文的完整性和真实性。52.ipsec的安全机制包括认证和加密,其中,认证机制使ip通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改;加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。53.ipsec安全服务包括数据机密性(confidentiality)、数据完整性(dataintegrity)、数据来源认证(dataauthentication)、防重放(anti-replay)。54.其中,数据机密性用于ipsec发送方在通过网络传输包前对包进行加密;数据完整性用于ipsec接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改;数据来源认证用于ipsec在接收端可以认证发送ipsec报文的发送端是否合法;防重放用于ipsec接收方可检测并拒绝接收过时或重复的报文。55.3、数据报文56.报文是网络中交换与传输的数据单元,也是网络传输的单元,报文包含了将要发送的完整的数据信息。报文在传输过程中会不断地封装成分组、包、帧来传输,封装的方式就是添加一些控制信息组成的首部,称为报文头。57.4、rss分流58.rss(receivesidescaling,rss)是一种能够在多处理器系统下使接收报文在多个处理单元(例如,cpu)之间高效分发的网卡驱动技术。多队列网卡技术通过多队列网卡驱动的支持,对传入数据包的头文件进行哈希处理在多个处理器之间分配接收网络流量,将各个队列通过中断绑定到不同的核上,以满足网卡的需求。网卡对接收到的报文进行解析,获取ip地址、协议和四元组。网卡通过配置的hash函数根据报文头的特定字段(例如,四元组),计算出哈希值(hashvalue),并基于hash值的最低有效位(leastsignificantbit,lsb)作为reta(redirectiontable)的索引,查询reta确定处理报文的处理单元。59.网卡支持多个接收和传输队列,即多队列。在接收报文流的时候,一个网卡能够发送不同的包到不同的队列,为了在不同的cpu之间分散处理。网卡针对每一个包,通过一个过滤器来指定这个包属于少数几个流中的一个流。每个流中的数据包被控制在一个单独的接收队列中,而队列轮回的被cpu进行处理,称为接收方扩展rss。60.多队列网卡的驱动提供了一个内核模块参数,用来指定硬件队列个数。例如,bnx2x驱动使用的参数是num_queues.如果设备支持足够多的队列,在rss配置中一个cpu对应一个接收队列。或者至少每个内存域一个接收队列,一个内存域包含一系列的cpu,并共享一个特殊的内存级别(例如,l1,l2,numa节点)。61.rss设备的间接表在驱动初始化的时候进行映射,默认的映射是队列均匀的发布在间接表中。但是,在运行的时候使用ethtool命令(‑‑show-rxfh-indirand‑‑set-rxfh-indir),间接表可以被查看或者被修改。修改间接表可以给不同的队列设置不同比例的权重。62.每个接收队列有一个单独的irq,即中断号。nic通过irq来通知cpu什么时候新的数据包到达了指定的队列。pcie设备使用msi-x来路由每个中断到cpu。有效的队列到irq的映射是由/proc/interrupts来制定的。在默认设置中一个中断能被任何一个cpu处理,因为包处理部分发生在接收中断处理函数中。63.当关注低延时或者接收中断处理成为瓶颈时应该启用rss。分担负载在不同的cpu之间从而减少了队列长度。对于低延时的网络可以创建和cpu个数一样多的队列。在一种高效的配置中拥有最少的队列并且没有队列溢出。这是因为,默认下中断聚合启用的情况下,中断的总数目会随着每个增加的队列而增加。64.rss分流是网卡更好的利用多核处理器的一个必要条件,具备多个rss队列的网卡,可以将不同的网络连接分成不同的队列,进而分别发送到不同的cpu核心上进行处理,从而将负荷分散实现负载均衡,充分利用多核处理器的能力。65.5、控制面和转发面66.网路设备的控制平面与转发平面可以是物理分离,也可以是逻辑分离。例如,核心交换机、核心路由器可以采用物理分离。其主控板上的处理单元(例如,cpu)不负责报文转发,专注于系统的控制;而业务板中的处理单元(例如,cpu)则专注于数据报文转发。67.控制平面指系统中用来传送指令、计算表项的部分。诸如协议报文转发、协议表项计算、维护等都属于控制平面的范畴。例如在路由系统中,负责路由协议学习、路由表项维护的进程就属于控制平面。68.转发平面指系统中用来进行数据报文的封装、转发的部分。诸如数据报文的接收、解封装、封装、转发等都属于转发平面的范畴。例如系统接收到ip报文后,需要进行解封装,查路由表,从出接口转发等工作,系统中负责以上行为的进程则属于转发平面。69.系统的控制平面进行协议交互、路由计算后,生成若干表项,下发到转发平面,指导转发平面对报文进行转发。例如:路由器通过ospf协议建立了路由表项,再进一步生成转发信息库(forwardinginformationbase,fib)表、快速转发表等,指导系统进行ip报文转发。70.需要说明的是,在本技术实施例中上文中提及的包或数据包与下文中的报文的含义相同,可以替换。71.图1示出了本技术实施例适用网络设备的示意图。图1所示的网络设备100包括网卡110,以及多个处理单元120。72.网卡110具有rss分流功能,通过对接收的网络数据包基于三元组或五元组进行哈希(hash)计算,完成硬件分流的任务,将不同hash值的报文分流至不同的处理单元。73.多个处理单元120,每个处理单元对应不同的接收队列,接收单元用于存储接收到的待处理的报文,处理单元可以从对应的接收队列中获取报文,并对报文进行处理,例如转发等。74.需要说明的是,上述处理单元可以为处理器中的核,则上述处理单元又称转发核。上述多个处理单元还可以是独立的处理器,本技术实施例对此不作限定。75.由于,rss分流技术旨在基于预先指定报文特定字段(例如,报文头中的五元组),计算哈希(hash)值,再基于计算得到的哈希值确定处理报文的处理单元。当大量报文采用隧道封装技术进行封装后,报文的隧道协议头相同,或者说,位于隧道协议头的特定字段(例如,五元组)相同,则基于上文介绍的rss技术,这些封装后的报文由于具体相同的特定字段,被转发至相同的处理单元,通过同一个处理单元处理。这样,导致网络设备中的某些处理单元的负载过大,某些处理单元的负载过小,引发网络设备中多处理单元之间的负载不均衡。76.为了避免上述问题,本技术实施例提供一种基于多处理单元的报文分流方案,当第一报文根据隧道协议头被分流至第一处理单元后,第一处理单元无法处理该报文,则可以根据第一报文的内层报文头重新对该报文进行分流,有利于改善网络设备中多处理单元之间的负载不均衡。77.为了便于理解,先结合表1介绍本技术实施例适用的rss分流策略。再结合图2介绍报文基于隧道协议封装的ipsec报文的格式。78.如表1所示的跳转表的规格为256个表项,配置有8个接收队列(queue,q),跳转表(indirectiontable)里重复队列0到队列7一共16次。79.表1跳转表[0080][0081]rss分流需要预先配置网卡的rsshash键(key)字段,比如,将报文的源ip、源端口、目的ip、目的端口作为哈希键,网卡硬件根据哈希键计算hash值,根据跳转表的规格决定取hash值的lsb,比如跳转表的规格是128,可以取7位lsb。低7位0-127对应到跳转表表里的指定接收队列号,每个接收队列绑定一个处理单元,这样,达到多处理单元并行收发不同hash值对应流的目的。[0082]以下,对本技术的报文格式进行简要介绍。[0083]目前,ipsec协议的报文主要基于通用路由封装协议(genericroutingencapsulation,gre)隧道进行隧道封装,gre隧道可以将多播报文和广播报文封装到单播的报文中再经过ipsec加密。[0084]采用ipsec加密的gre隧道可以进行vpn部署,其中将ipsec技术加密后的报文经过隧道封装,再从隧道传输,称为greoveripsec。通过gre来建立虚拟隧道运行动态路由协议,通过在虚拟隧道的接口设备上配置访问控制列表(accesscontrollist,acl)、服务质量(qualityofservice,qos)等技术来对报文进行过滤,并ipsec技术对gre隧道中传输的数据进行保护,其报文的具体封装格式可以参见图2。[0085]下文结合图3介绍本技术实施例的网络设备的报文分流方法的示意性流程图。图3所示的方法可以由多处理单元所在的网络设备执行,例如可以是图1所示的网络设备。其中,第一处理单元可以是多处理单元中的任意一个处理单元。图3所示的方法包括步骤310至步骤330。[0086]310,接收第一报文。[0087]上述第一报文基于隧道协议封装的报文。上述第一报文可以包括两个报文头,即隧道协议报文头以及内层报文头。其中,隧道协议报文头用于指示第一报文通过隧道被传输,内层报文头指示第一报文基于ipsec协议被传输。作为一种可能的报文格式,可以参见图2。[0088]320,根据所述第一报文的隧道协议报文头,将所述第一报文分流至所述第一处理单元进行转发。[0089]可选地,基于上文介绍的rss分流策略,从隧道协议报文头中选取特定字段,并根据特定字段将所述第一报文分流至第一处理单元。[0090]需要说明的是,上述特定字段可以是隧道协议报文头中的五元组、四元组或二元组等,本技术实施例对此不作限定。[0091]330,若所述第一处理单元无法处理所述第一报文,根据所述第一报文的内层报文头,重新对所述第一报文进行分流。[0092]需要说明的是,上述第一处理单元无法处理第一报文的原因有很多种,具体可以是第一处理单元满足预设条件,例如,第一处理单元的过载,或者第一处理单元的计算量满足预设阈值等,具体的条件可以参见下文中预设条件中关于情况#a2的介绍,为了简洁,在此不再赘述。[0093]可选地,上述步骤330包括:根据所述第一报文的内层报文头,重新将所述第一报文分流至所述多处理单元中除所述第一处理单元之外的其他处理单元。[0094]下文具体介绍本技术实施例的报文分流方法的预设条件。需要说明的是,上述网络设备包括多核处理器时,下文中的控制单元可以是多核处理器中的控制核,处理单元可以是多核处理器中的转发核。上述网络设备包括多处理器时,下文中的控制单元可以是多处理器中的用于控制的处理器,处理单元可以是多处理器中的用于转发的处理器。[0095]情况#a1[0096]当处理单元#1的cpu占用率小于第一阈值时,控制单元根据该处理单元#1的负载信息确定处理单元#1采用rss分流模式,即报文流解密解封装后可以直接在该处理单元#1进行转发。[0097]例如,当处理单元#1的cpu占用率小于90%时,控制单元根据该处理单元#1的负载信息确定处理单元#1采用rss分流模式。[0098]或者,当处理单元#1的端口流量小于第二阈值时,控制单元根据该处理单元#1的负载信息确定处理单元#1采用rss分流模式,即报文流解密解封装后可以直接在该处理单元进行转发。[0099]例如,当处理单元#1的端口流量小于50%时,控制单元根据该处理单元#1的负载信息确定处理单元#1采用rss分流模式。[0100]情况#a2[0101]当处理单元#1的cpu占用率大于上述第一阈值时,控制单元根据该处理单元#1的负载信息确定处理单元#1采用二次分流模式。[0102]例如,当处理单元#1的cpu占用率大于90%时,控制单元根据该处理单元#1的负载信息确定处理单元#1采用二次分流模式。[0103]或者,当处理单元#1的端口流量大于第二阈值时,控制单元根据该处理单元#1的负载信息确定处理单元#1采用二次分流模式。[0104]例如,当处理单元#1的端口流量大于50%时,控制单元根据该处理单元#1的负载信息确定处理单元#1采用rss分流模式。[0105]上述步骤330中的分流可以是通过基于网卡执行的硬件分流实现,也可以通过基于软件模块的软件分流实现,本技术实施例对此不作限定。对于部分网络设备而言,部分网络设备仅支持对外部接收的报文进行分流,而不支持处理网络设备通过内部物理通道返回的报文,即网卡不支持步骤330所示的二次分流时,可以采用软件分流的方式对报文进行分流。当然,若网卡支持步骤330所示的二次分流时,可以直接使用基于网卡的硬件分流方案,无需增加软件模块,实现上述基于软件的报文分流方案。[0106]需要说明的是,若网卡支持软件回送和硬件流分流,则可以利用网卡的内部环回(loopback)模式发给网卡,网卡根据原始报文(或者内层报文)的特定字段进行第二次分流,即将解封装后的报文直接发回给其他处理单元。[0107]若网卡不支持软件回送,则可以采用软件流分流的方式进行第二次分流,即将报文送到分流模块,该分流模块根据原始报文的特定字段进行第二次分流,即将解封装后的报文直接发回给其他处理单元。[0108]在本技术的实施例中,网络设备的控制面可以包括调度分析模块,用于对进入隧道的隧道封装报文流进行流量监控,并根据处理单元的负载水平确定报文流的分流模式。[0109]例如,当处理单元#1的cpu占用率小于90%时,控制单元根据该处理单元的负载信息确定处理单元#1采用rss分流模式。[0110]例如,当处理单元#1的端口流量小于50%时,控制单元根据该处理单元的负载信息确定处理单元#1采用rss分流模式。[0111]例如,当处理单元#1的cpu占用率大于90%时,控制单元根据该处理单元的负载信息确定处理单元#1采用二次分流模式。[0112]例如,当处理单元#1的端口流量大于50%时,控制单元根据该处理单元的负载信息确定处理单元#1采用二次分流模式。[0113]可选的,该二次分流模式包括硬件分流模式、软件分流模式。[0114]下文结合图4介绍本技术实施例的报文分流方法的示意性流程图,图4所示的方法由网络设备执行,并且该网络设备包括网卡、多个转发核以及控制核。[0115]在s501,网卡(例如,以太网卡)接收第一报文。[0116]在s502,网卡向多个转发核中的第一转发核转发第一报文。[0117]网络可以通过哈希计算(hash)确定处理第一报文对应的第一转发核。[0118]在s503,第一转发核向控制核上报第一隧道的加密报文流量,以及第一转发核的负载,第一隧道为传输第一报文使用的隧道。[0119]需要说明的是,上述s503在第一转发核收到第一报文后执行,或者由上述第一转发核周期性地向控制器上报,本技术实施例对此不作限定。[0120]在s504,控制核基于第一隧道的加密报文流量,第一转发核的负载,生成调度规则。[0121]上述调度规则在不同的情况下可以指示不同的调度模式,下文结合三种情况具体说明。[0122]调度模式一、在第一转发核的负载过载,且网卡支持上述二次分流模式时,上述调度规则用于指示由网卡根据第一报文的内层报文进行二次分流。[0123]调度模式二、在第一转发核的负载过载,且网卡不支持上述二次分流模式时,上述调度规则用于指示由分流模块根据第一报文的内层报文进行二次分流。[0124]调度模式三、在第一转发核的负载未过载时,上述调度规则用于指示由第一转发核直接对第一报文进行转发。[0125]需要说明的是,在上述调度模式三中,第一转发核转发第一报文的具体流程可以参见传统的报文转发流程,为了简洁,在此不再赘述。[0126]上述第一转发核的负载信息可以是转发核的cpu占用率、转发核的端口流量信息等。[0127]情况#a1[0128]当转发核#1的cpu占用率小于第一阈值时,控制核根据该转发核的负载信息确定转发核#1采用rss分流模式,即报文流解密解封装后可以直接在该转发核进行转发。[0129]例如,当转发核#1的cpu占用率小于90%时,控制核根据该转发核的负载信息确定转发核#1采用rss分流模式。[0130]或者,当转发核#1的端口流量小于第二阈值时,控制核根据该转发核的负载信息确定转发核#1采用rss分流模式,即报文流解密解封装后可以直接在该转发核进行转发。[0131]例如,当转发核#1的端口流量小于50%时,控制核根据该转发核的负载信息确定转发核#1采用rss分流模式。[0132]情况#a2[0133]当转发核#1的cpu占用率大于第一阈值时,控制核根据该转发核的负载信息确定转发核#1采用二次分流模式。[0134]例如,当转发核#1的cpu占用率大于90%时,控制核根据该转发核的负载信息确定转发核#1采用二次分流模式。[0135]或者,当转发核#1的端口流量大于第二阈值时,控制核根据该转发核的负载信息确定转发核#1采用二次分流模式。[0136]例如,当转发核#1的端口流量大于50%时,控制核根据该转发核的负载信息确定转发核#1采用二次分流模式。[0137]在s505,控制器向第一转发核发送调度规则。[0138]在s506,第一转发核对所述第一报文流进行解封装,以便后续可以根据第一报文的内层报文头对第一报文进行二次分流。[0139]在s507,若调度规则指示由网卡对第一报文进行二次分流,则第一转发核将解封装后的第一报文转发至网卡;若调度规则指示由分流模块对第一报文进行二次分流,则第一转发核将解封装后的第一报文转发至分流模块。[0140]需要说明的是,第一报文转发至网卡后,网卡基于内层报文头对第一报文进行二次分流,具体地,可以对内层报文进行hash计算,重新确定转发核。上述第一报文转发至分流模块后,分流模块基于内层报文头对第一报文进行二次分流,具体地,可以对内层报文进行hash计算,重新确定转发核。[0141]还需要说明的是,在重新确定转发核后,解封装后的第一报文可以按照传统报文分流的方式被传输至重新确定的转发核。例如,网卡可以将解封装后的第一报文发送至收包模块,由收包模块转发至重新确定的转发核。又例如,分流模块可以将解封装后的第一报文发送至收包模块,由收包模块转发至重新确定的转发核。[0142]上文结合图1至图4介绍了本技术实施例的方法,下文结合图5至图6介绍本技术实施例的装置。需要说明的是,图5至图6所示的装置可以实现上述方法中各个步骤,为了简洁,在此不再赘述。[0143]图5是本技术实施例的网络设备的示意图,所述网络设备的包括多处理单元,图5所示的网络设备500,可以包括接收模块510以及处理模块520。[0144]所述网络设备通过接收模块510接收第一报文;[0145]所述网络设备通过处理模块520根据所述第一报文的隧道协议报文头,将所述第一报文分流至所述第一处理单元进行转发;[0146]若所述第一处理单元无法处理所述第一报文,所述网络设备通过处理模块520根据所述第一报文的内层报文头,重新对所述第一报文进行分流。[0147]可选地,作为一个实施例,所述网络设备还用于:通过所述处理模块520获取所述第一报文的第一调度规则;通过所述处理模块520根据所述第一调度规则确定由所述网络设备的网卡对所述第一报文的内层报文头,重新对所述第一报文进行分流;通过所述网卡基于所述第一报文的内层报文头,重新对所述第一报文进行分流。[0148]可选地,作为一个实施例,所述网络设备还用于:通过所述处理模块520获取所述第一报文的第二调度规则;通过所述处理模块520根据所述第二调度规则确定由所述网络设备的分流模块对所述第一报文的内层报文头,重新对所述第一报文进行分流;通过所述分流模块基于所述第一报文的内层报文头,重新对所述第一报文进行分流。[0149]可选地,作为一个实施例,若所述第一处理单元的负载满足预设条件,所述网络设备通过处理模块520根据所述第一报文的内层报文头,重新对所述第一报文进行分流。[0150]可选地,作为一个实施例,所述网络设备通过处理模块520根据所述第一报文的内层报文头,重新将所述第一报文分流至所述多处理单元中除所述第一处理单元之外的其他处理单元。[0151]可选地,作为一个实施例,所述网络设备通过处理模块520根据所述第一报文的内层报文头,基于接收端扩展rss策略对所述第一报文进行分流。[0152]在可选的实施例中,所述处理模块520可以为多个处理核620中的部分处理核,所述接收模块510可以为输入输出接口630。所述网络设备600还可以包括存储器610,具体如图6所示。[0153]图6是本技术实施例的网络设备的示意性框图。图6所示的网络设备600可以包括:存储器610、处理器620、输入/输出接口630。其中,存储器610、处理器620和输入/输出接口630通过通信连接相连,该存储器610用于存储程序指令,该处理器620用于执行该存储器620存储的程序指令,以控制输入/输出接口630接收输入的数据和信息,输出操作结果等数据。[0154]上述处理器620包括多内核。每个内核可以对应上文中介绍的处理单元。[0155]应理解,在本技术实施例中,该处理器620可以采用通用的中央处理器(centralprocessingunit,cpu),微处理器,应用专用集成电路(applicationspecificintegratedcircuit,asic),或者一个或多个集成电路,用于执行相关程序,以实现本技术实施例所提供的技术方案。[0156]该存储器610可以包括只读存储器和随机存取存储器,并向处理器620提供指令和数据。处理器620的一部分还可以包括非易失性随机存取存储器。例如,处理器620还可以存储设备类型的信息。[0157]在实现过程中,上述方法的各步骤可以通过处理器620中的硬件的集成逻辑电路或者软件形式的指令完成。结合本技术实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器610,处理器620读取存储器610中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。[0158]应理解,本技术实施例中,该处理器可以为中央处理单元(centralprocessingunit,cpu),该处理器还可以是其它通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。[0159]还应理解,本技术实施例中,该存储器可以包括只读存储器和随机存取存储器,并向处理器提供指令和数据。处理器的一部分还可以包括非易失性随机存取存储器。例如,处理器还可以存储设备类型的信息。[0160]还应理解,本技术实施例中,“第一”、“第二”、“第三”等仅仅是为了区分,并不在顺序上进行限定。[0161]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本技术的范围。[0162]所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。[0163]在本技术所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。[0164]所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。[0165]另外,在本技术各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。[0166]所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。[0167]以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1