CN111162935A - 一种基于包级别数据分流的网络通信方法及系统 - Google Patents
一种基于包级别数据分流的网络通信方法及系统 Download PDFInfo
- Publication number
- CN111162935A CN111162935A CN201911298535.0A CN201911298535A CN111162935A CN 111162935 A CN111162935 A CN 111162935A CN 201911298535 A CN201911298535 A CN 201911298535A CN 111162935 A CN111162935 A CN 111162935A
- Authority
- CN
- China
- Prior art keywords
- data packet
- packet
- network card
- data
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0823—Configuration setting characterised by the purposes of a change of settings, e.g. optimising configuration for enhancing reliability
-
- 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/19—Flow control; Congestion control at layers above the network layer
- H04L47/193—Flow control; Congestion control at layers above the network layer at the transport layer, e.g. TCP related
-
- 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/24—Traffic characterised by specific attributes, e.g. priority or QoS
- H04L47/2441—Traffic characterised by specific attributes, e.g. priority or QoS relying on flow classification, e.g. using integrated services [IntServ]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出一种基于包级别数据分流的网络通信方法及系统,数据包能够按照需求,提前在服务器端商用多队列网卡中进行区分,分流至不同的队列上。本发明包括:数据包修改规则的约定与配置,客户端驱动侧数据包类型信息标注,服务器端数据包的硬件分流与差异化处理,以及服务器端数据包恢复四个部分。数据包的修改与恢复过程都在驱动层完成,整体过程对上层协议栈透明,系统的部署简单容易。系统将网卡对数据包的分类能力从数据流级别提高到了数据包级别,为差异化处理不同类型的数据包提供了支持,能有效改善数据中心服务器上的资源使用的不确定性,可期待获取高效的服务吞吐能力和特定类型数据包的服务处理优化能力。
Description
技术领域
本发明涉及数据中心和云计算服务器网络优化领域,特别涉及到一种实现包级别的数据分类处理的方法与系统,可以应用在使用商用多队列网卡的传统数据中心内部。
背景技术
为了降低数据包的响应时延,现有的技术往往是基于数据包包头域的不同,将不同数据包按照不同的流进行分类,分流到不同的网卡队列中,等待上层进行处理。在传统的网络中,这类技术代表有RSS,Flow director,Vlan filter,SR_IOV等。通过这些技术,高优先级的应用程序的数据流被分流到特定的网卡队列上,通过调度能获取更多的网络资源与服务器端资源,例如可以通过使用不同的CPU处理不同的网卡队列,就能让流量互相之间互相分开,减少资源的竞争,从而消除了应用之间的排队时延,低了数据包的响应延迟,达到数据包优先处理的功能。但是这类技术有一个明显的缺陷,现有数据包的分流方案仅基于五元组等TCP/IP包头内容进行流处理,忽略了应用层信息等可用来区分请求优先级的内容,致使面对数据中心内一条长流承载多个具有不同优先级请求的这类应用,无法区分请求的优先级,使得高优先级请求的延迟得不到保障。
现有技术解决这个问题的一种常用方法是使用智能网卡替换传统的商用网卡。智能网卡一般自带处理器,具有可编程能力,能够提供硬件层面数据包级别识别与分流能力。这类方法一般能取得不错的效果,能有效的识别不同类型的数据包,但往往在部署时会涉及到成本高和改造难等问题。一方面这类网卡的价格过高,单价往往是普通商用网卡的3到4倍,另一方面在智能网卡替换商用网卡的过程中,往往需要将正在运行的设备断网断电,拆卸网卡,重新布线,这在现有已在运行的数据中心内部是完全不能接受的。
发明内容
本发明的目的是解决上述现有技术只能通过昂贵的智能网卡完成数据包包级别的硬件分流问题,提出了一种基于传统商用多队列网卡识别不同类型数据包方法及系统,该方法与系统通过客户端(例如服务器、手机移动端、传感器或者个人计算机)驱动修改数据包,将数据包的类型信息写入到数据包头部特定域的方式,让服务器端网卡能识别不同类型数据包。数据包的修改在客户端的驱动层进行,数据包的复原在服务器端的驱动层进行,整个数据包的处理过程对上层协议栈与应用透明,上层协议栈不需要做任何额外的修改。驱动作为Linux系统模块化的一部分,可以随时进行修改,插入与卸载的操作,整体的解决方案具有高效以及部署方便的两项优势。
具体来说,本发明提出一种基于包级别数据分流的网络通信方法,其中包括:
步骤100:客户端与服务器端根据具体应用程序的需求,共同制定数据包的分类与修改规则。规则将数据包分为几种不同的类型,并指定数据包包头域内特定域的值,作为数据包类型的标志位,不同类型的数据包具有特定的标志位。客户端侧与服务器侧使用同一种数据包的分类与修改规则。
步骤200:根据步骤100对数据包的分类与修改规则,客户端的网卡驱动根据待发送数据包的类型,将数据包的类型信息写入到数据包指定域上,供服务器端网卡识别,实现数据包的标签化。
步骤300:根据步骤100的数据包指定域的分配方案,服务器端网卡硬件对接收到的数据包包头域中预设偏移处的值进行识别,作为数据包类型的标签,根据该标签将该数据包放入相应网卡收包队列上。服务器端网卡驱动对从不同网卡收包队列中收取的数据包提供不同的处理策略,满足上层应用的需求。
步骤400:服务器端网卡驱动对收到的数据包进行恢复,数据包应在驱动层准确恢复至客户端修改前的状态,确保数据包的修改与恢复过程对上层应用程序与协议栈透明。
所述的基于包级别数据分类的网络通信方法,其中步骤100共同制定数据包的分类与修改规则时,包括:
步骤110:在数据包包头中选择特定域时的基本要求有两个。选取的指定域能被服务器端商用多队列网卡识别,作为网卡硬件分流的依据;选取的指定域在被修改后,数据包依旧能在现有的网络中,正确的从客户端传输到服务器端的网卡上。
步骤120:客户端侧为确保数据包在现有网络上的传输,将部分数据包的信息offloading到网卡上填写,例如数据包的校验码信息。
步骤130:服务器端侧根据数据包的分类与修改规则,配置商用多队列网卡的分流规则。网卡将数据包的标志位作为分流标准。
所述的基于包级别数据分类的网络通信方法,其中步骤100选取数据包的指定域作为标志位,包括:
一般可以选取数据包包长域作为标志位,在网络环境允许时可以选择数据包源端口号,数据包目的端口号或者数据包的源IP域作为标志位。选取的指定域时也可以将数据包包头内的多个域进行组合,整体作为标志位存在。
所述的基于包级别数据分类的网络通信方法步骤200中,对标志位进行修改时,该步骤包括:
步骤210:客户端网卡驱动按照步骤100记录的分类与修改规则,检查所有待发送数据包的类型,并按照数据包的类型不同,修改数据包的标志位。
步骤220:检查待发送队列,当有数据包需要发送时,跳转至步骤210,否则等待挂起,直至有新的数据包需要被发送。
所述的基于包级别数据分类的网络通信方法的步骤300所述的服务器端网卡驱动对不同的网卡收包队列提供不同的处理策略,其中包括:
步骤310:网卡硬件对接收到的数据包包头域中预设偏移处的值进行识别,对数据包进行分流。
步骤320:服务器端网卡驱动在接收数据包时,驱动直接通过数据包来自的网卡的收包队列,确定数据包的具体类型。
步骤330:差异化的处理方式需要满足上层应用程序的具体需求。例如可以为不同收包队列设定优先级的策略,将某些收包队列设定为高优先级队列,收到的数据包优先进行处理。
所述的基于包级别数据分类的网络通信方法的步骤400所述,其中包括:
步骤410:服务器端网卡驱动根据数据包的类型以及数据包的修改方案,确认客户端驱动对数据包的修改内容。
步骤420:对客户端对数据包的修改内容进行恢复,将数据包复原回客户端修改前的状态。
步骤430:检查收包队列中是否还有其他的数据包,当有数据包需要接收时,跳转至步骤410,否则等待挂起,直至新的数据包需要被收取。
本发明还提出了一种基于包级别数据分流的网络通信系统,其中包括:
模块10:客户端配置模块,主要完成数据包分类修改方法的约定以及网卡的配置两项工作,此模块部署在客户端侧的网卡驱动中,与服务器端共同约定数据包的分类与修改方案,同时为了保证修改过的数据包依旧能在网络上正确的进行传输,需要配置商用网卡offloading选项。
模块20:客户端数据包分类与修改模块,此模块部署在客户端侧的网卡驱动中。此模块根据模块10收到的数据包的分类信息规则,分析待发送的数据包的类型,并对待发送的数据包进行修改。修改后的数据包在特定的包头域上携带分类信息。
模块30:服务器端配置模块,主要完成分类信息收集以及网卡的配置两项工作。此模块部署在服务器端侧的网卡驱动中,根据与客户端约定的数据包分类与修改规则,对网卡进行分流配置,让不同类型的数据包能够分流至不同的网卡收包队列上。
模块40:服务器端网卡数据包恢复模块,服务器端网卡驱动对来自客户端的数据包进行恢复操作,将数据包恢复至客户端修改前的状态,才能进行后续的处理。
模块50:服务器端网卡数据包调度模块,为满足上层应用的需求,网卡驱动对不同类型的数据包采取差异化的处理。
所述的基于包级别数据分流的网络通信系统,其中该指定域为数据包包长域,或数据包源端口号,或数据包目的端口号。该指定域可以按照需求选择一种或者组合选用都可,其中特别指定数据包包长域为最常用指定域。
系统所述的基于包级别数据分流的网络通信系统,其中该上层协议栈为内核态协议栈或用户态协议栈。
系统所述的基于包级别数据分流的网络通信系统,其中该服务器端配置的网卡具有可配置分流表。
所述的基于包级别数据分流的网络通信系统,其中模块10包含:
模块11:记录客户端与服务器端约定好的数据包的分类修改方法,明确数据包的修改规则。
模块12:为了确保修改后的数据包能正确的在现有的商用网络上进行传输,客户端侧网卡驱动开启网卡的各项校验码填充offloading功能,确保修改后的数据包能正确的在现有的商用网络上进行传输。
所述的基于包级别数据分流的网络通信系统,其中模块20包含:
模块21:客户端根据模块10种,约定的数据包的分类信息,检查所有待发送的数据包,对数据包进行分类。
模块22:客户端侧网卡驱动根据数据包的类型,以及约定的数据包修改规则,对数据包进行修改。将类型信息写入到数据包特定的标志位上,完成数据包的标签化。
所述的基于包级别数据分流的网络通信系统,其中模块30包含:
模块31:记录客户端与服务器端约定好的数据包的修改与分类方法,功能同模块11。
模块32:服务器端通过修改商用多队列网卡的分流规则,让商用网卡能识别修改的数据包标志位。规定不同网卡收包队列接收不同类型的数据包。
所述的基于包级别数据分流的网络通信系统,其中模块40包含:
模块41:数据包类型确认模块,直接根据收取数据包的网卡队列,确认数据包的类型。
模块42:数据包恢复模块,根据数据包的类型信息,在模块31记录的数据包修改方案中进行核对,找出数据包的修改规则,并根据规则对数据包的标志位进行恢复。
由以上方案可知,本发明的优点在于:
通过1)客户端按照数据包的类型修改数据包,确保不同类型的数据包能被服务器端的网卡硬件识别分流至不同的收包队列;2)服务器端网卡驱动对不同的收包队列提供不同的处理方式支持,满足上层应用程序的需求;3)服务器端收到数据包后,需要对数据包进行恢复,确保数据包在提交给上层协议栈进行处理时,上层协议栈能够获取到客户端修改前的数据包,从而预期实现单节点支持百万级高并发TCP连接,相比标准linux内核协议栈,对特定类型的数据包限定尾延迟总并发度提高和限定并发度高优先级的尾延迟降低均可达一个数量级改进。使用本发明技术后,特定类型数据包的请求的延迟将得到保障,提高用户体验,提高应用收益等。另外值得的一提的是,数据包的修改,硬件分类,复原都在协议栈层之下进行,基于协议栈开发的上层应用程序不需要进行任何修改直接接入。
附图说明
图1为本发明数据分类处理流程实施图;
图2为系统总体模块设计分布图。
具体实施方式
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。
由于现有的商用网卡与智能网卡的区别在于,现有的商用网卡一般只能识别数据包头部的信息。我们认为可以考虑让客户端分担一部分数据包的包分类工作,让客户端在数据包发送前,提前对数据包进行预处理。在不影响传输的情况下,客户端将对数据包的头部进行修改,在与服务器端约定好数据包的修改方案的前提下,并将数据包类型相关的信息写入到数据包的头部。通过这种方式,服务器端的普通商用网卡也能对原本不能识别的不同类型数据包进行分流。服务器端在收到数据包后,只需要按照实现约定好的修改方案对数据包进行复原,就能够正确的将数据包交付给上层应用程序。考虑到现实网络的复杂性,我们不希望更改现有的协议栈本身,决定客户端与服务器端对数据包的修改放到网卡驱动层进行。在Linux系统中,驱动作为一个模块可以随时的插入与卸载,而且不需要对整个系统进行重编译,同时由于基于现有网络分层的架构,不对上层协议栈更改意味着可以不对上层的应用程序进行任何更改,更适合专利的部署。
经过分析目前IP头与TCP头部,发现试图在数据包头部找出一个可修改部分是十分困难的。IP与MAC地址域是数据包在现有的网络上传输的重要凭证,如果这部分的内容被修改,数据包有可能无法正常的从客户端传输到服务器的网卡上;现有的TCP包头保留位域可能会在特定的情况下被协议栈使用,具有特定的意义,也不能作为可修改的数据包类型标志位;相对于其他TCP的包头域,数据包的长度域并不是敏感信息,在满足不超过当前网络的MTU(Maximum Transmission Unit)的情况下,数据包可以在尾部添加额外的字节,长度域可增加任意的长度。同时数据包的包长域作为数据包头部的一部分,也可以被服务器端的普通商用网卡识别,例如被网卡的分流策略进行识别。因此可以在客户端将数据包类型信息写入数据包包长域中,供服务器端的网卡在对不同流进行分流处理时,作为第一种标志位进行识别。如果客户端的NAT规则允许,可以选择源端口号作为第二种标志位;如果服务器端的防火墙是可配置的,也可以选择目的端口号作为第三种标志位。三种标志位按照需求选择一种或者组合选用都可。
为让本发明的上述特征和效果能阐述的更明确易懂,下文特举实施例,并配合说明书附图作详细说明如下。需要注意的是,本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的部分。“包括”或者“包含”等类似的词语意指在该词前的要素涵盖在该词后列举的要素,并不排除也涵盖其他要素的可能。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。本公开使用的所有术语(包括技术术语或者科学术语)与本公开所属领域的普通技术人员理解的含义相同,除非另外特别定义。还应当理解,在诸如通用字典中定义的术语应当被解释为具有与它们在相关技术的上下文中的含义相一致的含义,而不应用理想化或极度形式化的意义来解释,除非这里明确地这样定义。对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
图1为本发明处理数据方法的实施方式图,如图1所示,根据本公开的第一方案,提供了一种处理数据的方法,该方法包括步骤100至步骤400:
步骤100:约定数据包的分类与修改规则。客户端与服务端共同约定数据包的分类与修改规则,并执行各自相应的初始化工作。具体来说客户端与服务器端约定好数据包包头内某一个或者几个域作为数据包分类的标志位。一般可选择数据包的包长域作为类型的标志位,在NAT规则允许时,可以选择数据包的源端口号作为数据包类型的标志位,在服务器端防火墙允许时,可以选择目的端口号作为标志位。客户端侧需要对网卡进行配置,将数据包的校验码等信息offloading到网卡,交给网卡进行计算,确保修改后的数据包能在网络上正常的传输。服务器侧需要按照客户端约定好的数据包标志位修改方案,配置现有商用网卡的分流策略;服务器端网卡配置之后,可以将不同类型的数据包根据客户端添加的标志位分流到不同的网卡队列上。
步骤200:数据包的修改。在客户端侧,当上层协议栈通过客户端的网卡驱动程序在发送数据包时,网卡驱动需要检查所有待发送的数据包,将不同类型的数据包,使用与服务器端约定好的方式对数据包进行修改,让不同类型的数据包在包头中具有特定的标志位后,再发送到服务器端。
步骤300:差异化处理不同类型的数据包。由于在步骤100已经对服务器端的网卡进行了配置,服务器端网卡将按分类规则对数据包进行分流,服务器端网卡驱动在收到不同网卡的队列上的数据包时,可以直接通过数据包所属的网卡接收队列,确认数据包的类型。通过对不同网卡队列收取的数据包差异化的处理,满足上层应用程序不同的需求。
步骤400:数据包的恢复。服务器端网卡驱动需要对被客户端修改过的数据包先进行恢复,再送往上层协议栈进行处理。
协议栈可以是TCP/IP协议栈,它既可以是标准的网络协议栈(被广泛运用到各种设备,包括手机,工业机,传感器,服务器,具有通用性),也可以是定制化的协议栈。
本发明使用的网络应用程序并不与硬件设备或者网络驱动直接相连在实现通信时,只能通过网络协议栈进行转发。协议栈处理的内容包括,客户端与服务端通信时双方连接的建立,处理接收从网卡驱动送上来的数据包,验证数据包的正确性,将这些数据包交付给正确的上层应用程序(一般主机上会运行多个应用程序)。处理上层应用程序待发送的数据包,为上层应用程序发送的数据前面加入特定的数据包头,确保数据能够在现有的网络上进行传输。本发明主要目的是将数据包的修改与分流限制在驱动层,并保持整个过程对上层协议栈透明,上层协议栈无法感知到有任何修改。
在一些实例中,上述步骤100代表数据包类别的标志位可以选择任何不影响中间交换机将数据包传递给目标服务器的网卡的数据包包头域,具体来说可以使用数据包包长域,数据包的目的端口号域,数据包的源端口号域等;上述步骤300中服务器配置的现有商用网卡可以使用任何具有可配置分流表的商用网卡,例如intel的82599,x710,x520系列的网卡等等;上述步骤300中的差异化数据包处理方式,需要满足上层应用程序的需求,例如如果是按照优先级确定的数据包类别,可以优先将高优先级类别的数据包送往上层协议栈,减少高优先级数据包的排队时间;上述步骤200,步骤400使用的上层协议栈既可以是传统的内核态协议栈,也可以是目前开始在数据中心广泛使用的各种用户态协议栈。
如图2所示,总体模块设计分布图,该系统包含了客户端配置[模块11],客户端数据包分类修改[模块12],服务器端配置[模块21],服务器端数据包调度[模块22],服务器端数据包恢复[模块23]共计五个模块。
客户端配置模块[模块11],主要是完成客户端网卡驱动的初始化工作,具体描述为:主要完成分类信息收集模块以及网卡的配置两项工作,此模块部署在客户端侧的网卡驱动中,收集上层的应用程序对数据包的分类信息。网卡驱动将根据获得的分类信息,更新数据包的修改的规则,同时为了保证修改过的数据包依旧能在网络上正确的进行传输,需要配置商用网卡offloading选项
客户端数据包分类修改[模块12],主要是完成数据包的修改,具体描述为:此模块部署在客户端侧的网卡驱动中。此模块根据[模块11]收到的数据包的分类信息规则,分析待发送的数据包的类型,并对待发送的数据包进行修改。修改后的数据包在特定的包头域上携带分类信息。
服务器端配置[模块21],主要是完成服务器端网卡驱动的初始化工作,具体描述为:主要完成分类信息收集模块以及网卡的配置两项工作。此模块部署在服务器端侧的网卡驱动中,收集上层的应用程序对数据包的分类信息以及不同类型的数据包需要实现的操作信息。对网卡进行分流配置,配置现有的网卡设备,让不同类型的数据包分流至不同的网卡收包队列上。
服务器端数据包调度[模块22],主要为不同的网卡队列收到的数据包提供不同的操作,用于满足上层应用程序的需求
服务器端数据包恢复[模块23],主要服务器端网卡驱动对来自客户端的数据包进行恢复操作,将数据包恢复至客户端修改前的状态,之后送往驱动上层的协议栈进行后续的处理。
以数据包长度为类型的标志位作为本一个实例进行说明,在本实例中数据包具有两种类型,为了描述方便,假定为类型1与类型2。类型1为高优先级数据包,类型2为低优先级数据包,按照上层应用需求,高优先级的数据包需要优先进行处理。在实际使用中,数据包的类型不限制为两个,调度方式也不限制于高低优先级的优先处理上。同时假定客户端会将所有类型为1的数据包的包长修改为奇数,所有类型为2的数据包的包长修改为偶数。在实际使用中,数据包的包长修改方式并不限制为这种方式。
发送端的具体事实步骤如下:
[步骤0110]
客户端与服务器端约定,将数据包类型的信息写入到数据包包头中代表数据包长度的包长域,并约定如何根据数据包的尾部的编码对数据包进行恢复。其中数据包长度为奇数的数据包为类型1,数据包长度为偶数的数据包为类型2。
[步骤0120]
配置服务器端的多队列网卡,使服务器端的网卡能将不同类型的数据包送入到网卡的特定队列中。配置服务器端系统的MTU,设定为1500–n,n为数据包的种类数,在此实例中我们有高低两种不同优先级的类型,n为2,因此将服务器端系统的MTU设定为1498。协议栈发送给驱动的数据包包长不会超过1498字节,数据包在驱动层按照要求,在尾部添加新的字节后,不会超过最大的网络MTU 1500字节的限制,同时开启网卡计算数据包checksum的功能,确保修改后的数据包校验码的正确性。
[步骤0130]
在客户端对需要修改的数据包进行预处理,在所有数据包尾部按照类别的不同,修改数据包的长度,修改后的长度满足数据包的类别信息要求。为了保证数据包的正确性,在数据包的尾部添加添加不同的编码。
其中,所述步骤0130中,包括:
[步骤0131]
当发现数据包是类别1的数据包,并且本身的长度为偶数,在数据包的尾部添加一个新的字节0xA。数据包的长度位加1,由偶数变为奇数。
[步骤0132]
当发现数据包是类别1的数据包,并且本身的长度为奇数,在数据包的尾部添加两个新的字节0xAB。数据包的长度加2,依旧保持为奇数。
[步骤0133]
当发现数据包是类别2的数据包,并且本身的长度为偶数,在数据包的尾部添加两个新的字节0xCD。数据包的长度加2,依旧保持为偶数。
[步骤0134]
当发现数据包是类别2的数据包,并且本身的长度为奇数,在数据包的尾部添加一个新的字节0xC。数据包的长度位加1,由奇数变为偶数。
[步骤0135]
将所有修改过的数据包通过网卡送往目标的服务器端。如果后续还有数据包需要发送,返回步骤[0130]
以数据包长度为类别的标志位作为本一个实例进行说明,接收方向的主要步骤如下:
[步骤0210]
发送端与接收端约定数据包包长为奇数的数据包为类别1数据包,数据包包长为偶数的数据包为类别2数据包。
[步骤0220]
配置网卡分流策略,确定一个或者多个网卡队列为类别1数据包的接收队列,网卡会将数据包长度为奇数的类别1的数据包传输到这些队列上。类别2的数据包使用网卡的其他队列进行传输,不会被传输到类型1使用的网卡队列上。
[步骤0230]
捕获发往协议栈的数据包,直接通过数据包来自的网卡队列,确认数据包的优先级与类型。
[步骤0240]
对接收到的数据包进行处理,检查数据包包头的长度域与数据包尾部的标签域,对数据包进行复原。
[步骤0250]
将类型1的高优先级数据包优先送往上层进行处理,数据包的调度。
其中,所述步骤0240中,包括:
[步骤0241]
读取数据包包头的长度域。
[步骤0242]
如果数据包是类型1的数据包,同时数据包的尾部最后的两个字节是0XxA,x为任意的字符,那么说明这个数据包被添加了一个字符,删除掉最后一个字符并将数据包的长度位减1。
[步骤0243]
如果数据包是类型1的数据包,同时数据包的尾部最后的两个字节是0XAB,那么说明这个数据包被添加了两个字符,删除掉最后两个字符并将数据包的长度位减2。
[步骤0243]
如果数据包是类型2的数据包,同时数据包的尾部最后的两个字节是0XxC,x为任意的字符,那么说明这个数据包被添加了一个字符,删除掉最后一个字符并将数据包的长度位减1。
[步骤0244]
如果数据包是类型2的数据包,同时数据包的尾部最后的两个字节是0XCD,那么说明这个数据包被添加了两个字符,删除掉最后两个字符并将数据包的长度位减2。
与现有技术相比,本发明的有益技术效果在于:
现有的商用网卡主要对数据包的包头进行解析,实现了流级别的分流操作。但是因为不同类别的数据包需要得到不同的处理方式,单纯的流级别的分类效率远远比不上直接按照数据包的类型进行分类。目前服务器端应用程序为了完成数据包包级别的分类,要么是使用纯软件的方式,通过读取数据包本身的方式判断数据包的类型,对数据包实现分类;要么是使用专用的硬件,提供包级别的识别能力,将数据包进行分流,在硬件上执行数据包的分类工作。数据包在经过了分类处理后,能提供例如优先级处理,CPU调度等一系列的处理方式减少特定类型数据包的处理时延。
但是上述的两种方法均前者会增加服务器端的CPU的开销,后者需要昂贵的智能硬件设备。本发明旨在解决如何通过使用普通商用的多队列网卡处理不同类型的数据包的问题,提出了将数据包类别信息在客户端发送时写入到数据包头部方案,通过现有商用多的队列网卡分流技术实现区分不同类别数据包的功能。使用本发明技术后,能够以较低的成本,在不需要添加额外机房设备,不对操作系统,协议栈与应用程序进行修改的前提下,在普通的商用网卡中实现了包级别的区分的能力。在本系统中,虽然在客户端侧需要更多额外的开销对数据包进行分类与修改,但一方面由于标志位在数据包包头内部定位容易,修改也不需要进行内存拷贝等高开销的工作,另一方面由客户端进行数据包分类信息的添加,相当于将这部分的开销从服务器端下放到多个客户端上,能够减少服务器端的负载,因此能够提高用户体验以及应用收益。
Claims (15)
1.一种基于包级别数据分类的网络通信方法,其特征在于,包括:
步骤100、客户端与服务器端根据应用程序需求,共同制定数据包的分类与修改规则,规则将数据包分为多种不同的类型,并指定数据包包头域内特定域的值、作为数据包类型的标志位,不同类型的数据包具有特定的标志位,客户端侧与服务器侧使用同一种数据包的分类与修改规则;
步骤200、根据步骤100对数据包的分类与修改规则,客户端的网卡驱动根据待发送数据包的类型,将数据包的类型信息写入到数据包指定域上,供服务器端网卡识别,实现数据包的标签化;
步骤300、根据步骤100的数据包指定域的分配方案,服务器端网卡硬件对接收到的数据包包头域中预设偏移处的值进行识别,对数据包进行分流,服务器端网卡驱动直接从收包队列确认数据包的类型,并对不同类型的数据包提供差异化的处理策略,用于满足上层应用的需求;
步骤400、服务器端网卡驱动对收到的数据包进行恢复,数据包应在驱动层准确恢复至客户端修改前的状态,确保数据包的修改与恢复过程对上层应用程序与协议栈透明。
2.如权利要求1所述的基于包级别数据分类的网络通信方法,其特征在于,该步骤100包含:
步骤110:选取的指定域能被服务器端商用多队列网卡识别,作为网卡硬件分流的依据;选取的指定域在被修改后,数据包依旧能在现有的网络中,正确的从客户端传输到服务器端的网卡上;
步骤120:客户端侧为确保数据包在现有网络上的传输,将部分数据包的信息offloading到网卡上填写,例如数据包的校验码信息;
步骤130:服务器端侧根据数据包的分类与修改规则,配置商用多队列网卡的分流规则,网卡将数据包的标志位作为分流标准。
3.如权利要求2所述的基于包级别数据分类的网络通信方法,其特征在于,选取数据包的指定域作为标志位,在网络环境允许时选择数据包源端口号,数据包目的端口号或者数据包的源IP域作为标志位,或者选取的指定域为将数据包包头内的多个域进行组合,整体作为标志位。
4.如权利要求1的基于包级别数据分类的网络通信方法,其特征在于,该步骤200包括:
步骤210:客户端网卡驱动按照步骤100记录的分类与修改规则,检查所有待发送数据包的类型,并按照数据包的类型不同,修改数据包的标志位;
步骤220:检查待发送队列,当有数据包需要发送时,跳转至步骤210,否则等待挂起,直至有新的数据包需要被发送。
5.如权利要求1所述的基于包级别数据分类的网络通信方法,其特征在于,该步骤300包括:
步骤310:网卡硬件对接收到的数据包包头域中预设偏移处的值进行识别,对数据包进行分流;
步骤320:服务器端网卡驱动在接收数据包时,驱动直接通过数据包来自的网卡的收包队列,确定数据包的具体类型;
步骤330:差异化的处理方式需要满足上层应用程序的具体需求。
6.如权利要求1的基于包级别数据分类的网络通信方法,其特征在于,该步骤400包括:
步骤410:服务器端网卡驱动根据数据包的类型以及数据包的修改方案,确认客户端驱动对数据包的修改内容;
步骤420:对客户端对数据包的修改内容进行恢复,将数据包复原回客户端修改前的状态;
步骤430:检查收包队列中是否还有其他的数据包,当有数据包需要接收时,跳转至步骤410,否则等待挂起,直至新的数据包需要被收取。
7.如权利要求3所述的基于包级别数据分类的网络通信方法,其特征在于,指定域为数据包的包长为类型指定域时,客户端减少发送端系统的MTU,确保了包长的数据包不会超过最大MTU限制;开启网卡的校验码offloading,确保数据包在发送时的正确性;与服务器约定,不同类型的数据包具有不同的包长特征。
8.如权利要求3所述的基于包级别数据分类的网络通信方法,其特征在于,指定域为数据包的包长为类型指定域时,根据约定好的分类修改方法,根据数据包的类型不同,修改数据包的长度域;为满足数据包的正确性,在数据包尾部增加多个特定的修饰字符与修改后的长度域匹配。
9.如权利要求3所述的基于包级别数据分类的网络通信方法,其特征在于,指定域为数据包的包长为类型指定域时,服务器端网卡驱动根据数据包的类型,尾部修饰字符的值以及数据包的修改方案,三者共同确认客户端驱动在数据包尾部额外添加的字符的个数,之后裁剪收到的数据包,将数据包增加的额外字节数删除,并恢复数据包包长域的值,将数据包能恢复至客户端修改前的状态。
10.如权利要求3所述的基于包级别数据分类的网络通信方法,其特征在于,指定域为数据包的源/目的端口等其他指定域时,采取与指定数据包长为标志位类似的方案,客户端按照数据包的类型修改数据包,确保不同类型的数据包能被服务器端的网卡硬件识别分流至不同的收包队列;服务器端网卡驱动对不同的收包队列提供不同的处理方式,并在收到数据包后,需要对数据包进行恢复,确保数据包在提交给上层协议栈进行处理时,上层协议栈能够获取到客户端修改前的数据包。
11.一种基于包级别数据分流的网络通信系统,其特征在于,包括:
模块10、客户端配置模块,用于完成数据包分类修改方法的约定以及网卡的配置两项工作,此模块部署在客户端侧的网卡驱动中,与服务器端共同约定数据包的分类与修改方案,同时为了保证修改过的数据包依旧能在网络上正确的进行传输,需要配置商用网卡offloading选项;
模块20、客户端数据包分类与修改模块,此模块部署在客户端侧的网卡驱动中,此模块根据模块10收到的数据包的分类信息规则,分析待发送的数据包的类型,并对待发送的数据包进行修改,修改后的数据包在特定的包头域上携带分类信息。
模块30、服务器端配置模块,用于完成分类信息收集以及网卡的配置两项工作,此模块部署在服务器端侧的网卡驱动中,根据与客户端约定的数据包分类与修改规则,对网卡进行分流配置,让不同类型的数据包能够分流至不同的网卡收包队列上;
模块40、服务器端网卡数据包恢复模块,服务器端网卡驱动对来自客户端的数据包进行恢复操作,将数据包恢复至客户端修改前的状态,才能进行后续的处理。
模块50、服务器端网卡数据包调度模块,为满足上层应用的需求,网卡驱动对不同类型的数据包采取差异化的处理。
12.如权利要求11所述的基于包级别数据分流的网络通信系统,其特征在于,该模块10包括:
模块11:记录客户端与服务器端约定好的数据包的分类修改方法,明确数据包的修改规则;
模块12:为了确保修改后的数据包能正确的在现有的商用网络上进行传输,客户端侧网卡驱动开启网卡的各项校验码填充offloading功能,确保修改后的数据包能正确的在现有的商用网络上进行传输。
13.如权利要求11所述的基于包级别数据分流的网络通信系统,其特征在于,该模块20包括:
模块21:客户端根据模块10,约定的数据包的分类信息,检查所有待发送的数据包,对数据包进行分类;
模块22:客户端侧网卡驱动根据数据包的类型,以及约定的数据包修改规则,对数据包进行修改;将类型信息写入到数据包特定的标志位上,完成数据包的标签化。
14.如权利要求11所述的基于包级别数据分流的网络通信系统,其特征在于,该模块30包括:
模块31:记录客户端与服务器端约定好的数据包的修改与分类方法;
模块32:服务器端通过修改商用多队列网卡的分流规则,让商用网卡能识别修改的数据包标志位,规定不同网卡收包队列接收不同类型的数据包。
15.如权利要求14所述的基于包级别数据分流的网络通信系统,其特征在于,该模块40包括:
模块41:数据包类型确认模块,直接根据收取数据包的网卡队列,确认数据包的类型;
模块42:数据包恢复模块,根据数据包的类型信息,在模块31记录的数据包修改方案中进行核对,找出数据包的修改规则,并根据规则对数据包的标志位进行恢复。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911298535.0A CN111162935B (zh) | 2019-12-17 | 2019-12-17 | 一种基于包级别数据分流的网络通信方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911298535.0A CN111162935B (zh) | 2019-12-17 | 2019-12-17 | 一种基于包级别数据分流的网络通信方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111162935A true CN111162935A (zh) | 2020-05-15 |
CN111162935B CN111162935B (zh) | 2021-06-04 |
Family
ID=70557475
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911298535.0A Active CN111162935B (zh) | 2019-12-17 | 2019-12-17 | 一种基于包级别数据分流的网络通信方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111162935B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113296718A (zh) * | 2021-07-27 | 2021-08-24 | 阿里云计算有限公司 | 数据处理方法以及装置 |
CN113518130A (zh) * | 2021-08-19 | 2021-10-19 | 北京航空航天大学 | 一种基于多核处理器的分组突发负载均衡方法及系统 |
CN115277726A (zh) * | 2022-05-30 | 2022-11-01 | 浪潮软件集团有限公司 | 一种双网络的集群数据传输方法及系统 |
CN116208680A (zh) * | 2023-05-04 | 2023-06-02 | 成都三合力通科技有限公司 | 一种服务器访问管理系统及方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039214A (zh) * | 2006-03-17 | 2007-09-19 | 华为技术有限公司 | 一种动态带宽资源分配方法及系统 |
CN101588537A (zh) * | 2009-06-17 | 2009-11-25 | 上海华为技术有限公司 | WiMAX网络中实现广播/组播的方法、装置和系统 |
CN104168590A (zh) * | 2014-08-29 | 2014-11-26 | 深圳市有方科技有限公司 | 一种用于微功率无线通信协议分析的方法及设备 |
US20170353480A1 (en) * | 2016-04-28 | 2017-12-07 | International Business Machines Corporation | Network security apparatus and method of detecting malicious behavior in computer networks via cost-sensitive and connectivity constrained classification |
CN109768939A (zh) * | 2018-11-27 | 2019-05-17 | 中国科学院计算技术研究所 | 一种支持优先级的标签化网络栈方法和系统 |
CN109814501A (zh) * | 2018-12-29 | 2019-05-28 | 北京农业信息技术研究中心 | 一种现场检测设备灵活接入的信息采集系统及方法 |
-
2019
- 2019-12-17 CN CN201911298535.0A patent/CN111162935B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039214A (zh) * | 2006-03-17 | 2007-09-19 | 华为技术有限公司 | 一种动态带宽资源分配方法及系统 |
CN101588537A (zh) * | 2009-06-17 | 2009-11-25 | 上海华为技术有限公司 | WiMAX网络中实现广播/组播的方法、装置和系统 |
CN104168590A (zh) * | 2014-08-29 | 2014-11-26 | 深圳市有方科技有限公司 | 一种用于微功率无线通信协议分析的方法及设备 |
US20170353480A1 (en) * | 2016-04-28 | 2017-12-07 | International Business Machines Corporation | Network security apparatus and method of detecting malicious behavior in computer networks via cost-sensitive and connectivity constrained classification |
CN109768939A (zh) * | 2018-11-27 | 2019-05-17 | 中国科学院计算技术研究所 | 一种支持优先级的标签化网络栈方法和系统 |
CN109814501A (zh) * | 2018-12-29 | 2019-05-28 | 北京农业信息技术研究中心 | 一种现场检测设备灵活接入的信息采集系统及方法 |
Non-Patent Citations (1)
Title |
---|
周喜红,王永安,冯亚丽: "基于MPLS标签机制的网络流量分析", 《大庆石油学院学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113296718A (zh) * | 2021-07-27 | 2021-08-24 | 阿里云计算有限公司 | 数据处理方法以及装置 |
CN113296718B (zh) * | 2021-07-27 | 2022-01-04 | 阿里云计算有限公司 | 数据处理方法以及装置 |
CN113518130A (zh) * | 2021-08-19 | 2021-10-19 | 北京航空航天大学 | 一种基于多核处理器的分组突发负载均衡方法及系统 |
CN113518130B (zh) * | 2021-08-19 | 2023-03-24 | 北京航空航天大学 | 一种基于多核处理器的分组突发负载均衡方法及系统 |
CN115277726A (zh) * | 2022-05-30 | 2022-11-01 | 浪潮软件集团有限公司 | 一种双网络的集群数据传输方法及系统 |
CN116208680A (zh) * | 2023-05-04 | 2023-06-02 | 成都三合力通科技有限公司 | 一种服务器访问管理系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111162935B (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111162935B (zh) | 一种基于包级别数据分流的网络通信方法及系统 | |
US11765074B2 (en) | System and method for facilitating hybrid message matching in a network interface controller (NIC) | |
JP4150336B2 (ja) | 共有属性に基づいて圧縮キューペアから複数の仮想キューペアを作成する構成 | |
US6757746B2 (en) | Obtaining a destination address so that a network interface device can write network data without headers directly into host memory | |
US8660137B2 (en) | Method and system for quality of service and congestion management for converged network interface devices | |
US7684423B2 (en) | System and method for virtual network interface cards based on internet protocol addresses | |
US8009672B2 (en) | Apparatus and method of splitting a data stream over multiple transport control protocol/internet protocol (TCP/IP) connections | |
US9178966B2 (en) | Using transmission control protocol/internet protocol (TCP/IP) to setup high speed out of band data communication connections | |
US6567377B1 (en) | High performance load balancing of outbound internet protocol traffic over multiple network interface cards | |
US6490632B1 (en) | High performance load balancing and fail over support of internet protocol exchange traffic over multiple network interface cards | |
US7788411B2 (en) | Method and system for automatically reflecting hardware resource allocation modifications | |
US9369398B2 (en) | Method, device, and system to prioritize encapsulating packets in a plurality of logical network connections | |
US7760741B2 (en) | Network acceleration architecture | |
US10044628B2 (en) | Methods and systems for receiving and transmitting packets based on priority levels | |
EP1018823A2 (en) | Apparatus and method for packet switching with supertrunking | |
US7751401B2 (en) | Method and apparatus to provide virtual toe interface with fail-over | |
US6760304B2 (en) | Apparatus and method for receive transport protocol termination | |
US8539089B2 (en) | System and method for vertical perimeter protection | |
KR100345539B1 (ko) | 제어 헤더 필드 및 유형 헤더 필드를 기반으로 한 광섬유채널 프레임 맵핑 방법 | |
CN104618365A (zh) | 协议报文处理方法、装置及终端 | |
CN113765718B (zh) | 一种面向quic协议的测试拓扑构建方法及装置 | |
CN113132200B (zh) | 数据转发方法、转发器、系统、服务器和存储介质 | |
US7675920B1 (en) | Method and apparatus for processing network traffic associated with specific protocols | |
CN116996444A (zh) | 基于dpdk的高速网络包处理系统及方法 | |
CN109510779A (zh) | 车载装置、信息处理单元、信息处理方法以及存储介质 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |