一种报文分流方法及装置的制造方法

文档序号:10515396阅读:446来源:国知局
一种报文分流方法及装置的制造方法
【专利摘要】一种报文分流方法及装置,该方法包括:将网卡流控制器的过滤器掩码中的源和目的IP地址掩码、源端口号掩码设置为0,将目的端口号掩码设置为非0;为各处理器核心分配不同的端口号集合,设置各处理器核心所关联的网卡报文队列与端口号集合的对应关系;处理器核心使用为其分配的端口号集合中的端口号设置接收到的正向报文的源端口号,发送该正向报文;网卡接收到反向报文后使用过滤器掩码进行流控制器过滤,将该反向报文分流到与其目的端口号所属的端口号集合所对应的网卡报文队列;处理器核心对与其关联的网卡报文队列中的反向报文进行处理。本申请充分利用网卡硬件已有的流控制器的过滤器分流技术将同一条流的报文送到同一个处理器核心上处理。
【专利说明】
-种巧文分流方法及装置
技术领域
[0001] 本申请涉及网络通信领域,尤其涉及一种报文分流方法及装置。
【背景技术】
[0002] 在网络设备中,二层设备只需要处理包转发,而四层及W上设备如NAT(化twork AcMress Translation,网络地址转换)网关、VPN(Vi;rtual Private 化twork,虚拟专用网) 网关则需要维护会话信息,只有确定了报文所属的会话后才可W提取相应的会话信息进行 报文的处理。而对于设置有多处理器或多核处理器的网络设备,如果多个处理器核必同时 处理同一个会话会涉及到复杂的会话加锁、报文出、入接口保序等问题,送不仅会增加系统 的复杂性,还会对系统性能造成严重影响,因此需要将属于同一条流/同一个会话的报文 送到同一个处理器核必上处理。
[0003] 目前主流网卡硬件一般都提供了分流功能,可W通过设置硬件过滤条件实现分 流。W INTCL(英特尔)82599网卡为例,其提供的RSS(Receive-Side Scaling,接收端调 节)分流功能可W根据报文的五元组将报文分流到特定的处理器核必进行处理,但是只能 支持最多32K(32X1024)个不同的五元组组合,送对于网关类应用显然远远不够。
[0004] 此外,网络设备在对报文进行处理时可能会改变报文的IP (Internet Protocol, 互联网协议)地址和端口号。例如,报文在经过源NAT设备处理后其源IP地址会改变;再 女口,报文经过VPN设备处理后可能被加上一个新的IP头,送同样会改变报文的IP地址。如 果同一条流/同一个会话的正向报文(即由连接发起者发送的报文)和反向报文(即发送 给连接发起者的报文)的IP地址不完全相同,则依赖网卡RSS分流功能很难将双向会话分 流到同一个处理器核必进行处理。
[0005] 公开号为"103269317A",名称为"基于对称多处理SMP系统的无锁化通信方法和 系统"的中国专利中披露了一种RSS报文分流方法,该方法的主要思路是将整个系统运行于 管道(pipeline)模式,并且将一个处理器核必(例如,记作CoreA)用于处理报文分流,报 文都由网卡送到CoreA,由CoreA执行一次哈希(HASH)运算后再根据哈希运算的结果将报 文发送给对应的处理器核必。
[0006] 上述分流方法需要使用一个处理器核必专用于报文分流,不进行其它业务的处 理,浪费了处理器资源,而且该处理器核必容易成为整个系统的性能瓶颈。此外,由于使用 上述分流方法时整个系统运行于管道模式下,一次报文处理需要由多个处理器核必共同完 成,因此一次报文处理所需的数据需要存储在多个处理器核必所对应的高速缓冲存储器 Kache)中,送将会降低处理器的化Che命中率,进一步降低了系统性能。

【发明内容】

[0007] 本申请的目的在于提供报文分流方法及装置。
[0008] 为了达到上述目的,本申请公开了一种报文分流方法,该方法包括:
[0009] 将网卡流控制器的过滤器掩码中的源IP地址掩码、目的IP地址掩码和源端口号 掩码设置为0,将目的端口号掩码设置为非ο值;
[0010] 为各处理器核必分配不同的端口号集合,并设置各处理器核必所关联的网卡报文 队列与所述端口号集合的对应关系;
[0011] 处理器核必使用为其分配的端口号集合中的端口号设置其接收到的正向报文的 源端口号,通过网卡发送该正向报文;
[0012] 网卡接收到反向报文后使用所述过滤器掩码进行流控制器过滤,将该反向报文分 流到与其目的端口号所属的端口号集合所对应的网卡报文队列;
[0013] 处理器核必对与其关联的网卡报文队列中的反向报文进行处理;
[0014] 其中,不同端口号集合中的端口号与所述目的端口号掩码进行按位与所得的结果 不同;同一端口号集合中的端口号与所述目的端口号掩码进行按位与所得的结果相同。
[001引此外,所述目的端口号掩码的值为;OxFFFF?m;
[0016] 其中,0<m<16,《表示二进制左移。
[0017] 此外,所述端口号集合中的端口号为非知名端口号。
[0018] 此外,采用如下方式设置处理器核必所关联的网卡报文队列与所述端口号集合的 对应关系:
[0019] 将为处理器核必分配的端口号集合中的端口号与所述目的端口号掩码进行按位 与的结果值设置到与该处理器核必关联的网卡报文队列所对应的寄存器中。
[0020] 此外,所述端口号集合包括;Pi,P2, -",ρ。;
[0021] 端口号集合Ρ冲包含的端口号为1 ;1《i《η;
[0022] 其中,m > 10, η《16 - m。
[0023] 为了达到上述目的,本申请还公开了一种报文分流装置,该装置包括:
[0024] 掩码设置模块,用于将网卡流控制器的过滤器掩码中的源IP地址掩码、目的IP地 址掩码和源端口号掩码设置为0,将目的端口号掩码设置为非0值;
[00巧]端口号分配模块,用于为各处理器核必分配不同的端口号集合,并设置各处理器 核必所关联的网卡报文队列与所述端口号集合的对应关系;
[0026] 处理器核必,用于使用为其分配的端口号集合中的端口号设置其接收到的正向报 文的源端口号,通过网卡发送该正向报文;
[0027] 网卡,用于在接收到反向报文后使用所述过滤器掩码进行流控制器过滤,将该反 向报文分流到与其目的端口号所属的端口号集合所对应的网卡报文队列;
[0028] 所述处理器核必,还用于对与其关联的网卡报文队列中的反向报文进行处理;
[0029] 其中,不同端口号集合中的端口号与所述目的端口号掩码进行按位与所得的结果 不同;同一端口号集合中的端口号与所述目的端口号掩码进行按位与所得的结果相同。
[0030] 此外,所述掩码设置模块将所述目的端口号掩码设置为;OxFFFF?m ;
[0031] 其中,0<m<16,《表示二进制左移。
[0032] 此外,所述端口号分配模块分配的所述端口号集合中的端口号为非知名端口号。
[0033] 此外,所述端口号分配模块采用如下方式设置处理器核必所关联的网卡报文队列 与所述端口号集合的对应关系:
[0034] 将为处理器核必分配的端口号集合中的端口号与所述目的端口号掩码进行按位 与的结果值设置到与该处理器核必关联的网卡报文队列所对应的寄存器中。
[0035] 此外,所述端口号分配模块分配的所述端口号集合包括;Ρι,Ρζ,一,Ρ。;
[0036] 端口号集合Ρ冲包含的端口号为;2"Η 1,…,2""- 1 ;1《i《η ;
[0037] 其中,m > 10, η《16 - m。
[003引与现有技术相比,本申请可W获得包括W下技术效果:
[0039] 充分利用网卡硬件已有的流控制器的过滤器分流技术,将属于同一条流/同一个 会话的报文送到同一个处理器核必上处理,避免了管道模式对系统性能造成的不利影响;
[0040] 通过将知名端口号排除在分配给各处理器核必的端口号集合之外,可W将本申请 的过滤器分流技术与网卡硬件的其它分流技术结合使用,避免了具有知名端口的大量报文 被集中分配到一个处理器核必而造成的各处理器核必负载不均衡的问题。
[0041] 当然,实施本申请的任一产品并不一定需要同时达到W上所述的所有技术效果。
【附图说明】
[0042] 此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申 请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
[0043] 图1是本申请实施例的一种报文分流方法的方法流程图;
[0044] 图2是本申请实施例的另一种报文分流方法的方法流程图;
[0045] 图3是本申请实施例的另一种报文分流方法的方法流程图;
[0046] 图4是使用本申请的报文分流方法的源NAT网关的报文处理过程示意图;
[0047] 图5是本申请实施例的报文分流装置的装置结构图。
【具体实施方式】
[0048] W下将配合附图及实施例来详细说明本申请的实施方式,藉此对本申请如何应用 技术手段来解决技术问题并达成技术功效的实现过程能充分理解并据W实施。
[0049] 在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、 网络接口和内存。
[0050] 内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/ 或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质 的示例。
[0051] 计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可W由任何方法 或技术来实现信息存储。信息可W是计算机可读指令、数据结构、程序的模块或其他数据。 计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、 动态随机存取存储器值RAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电 可擦除可编程只读存储器巧EPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器 (CD-ROM)、数字多功能光盘值VD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁 性存储设备或任何其他非传输介质,可用于存储可W被计算设备访问的信息。按照本文中 的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据 信号和载波。
[OOW] 连施例描沐
[0053] 下面W-实施例对本申请方法的实现作进一步说明。如图1所示,为本申请实施 例的一种报文分流方法的方法流程图,该方法包括:
[0054] 步骤S100 ;将网卡流控制器的过滤器(Flow Director Filters)的过滤器掩码中 的源IP地址掩码、目的IP地址掩码和源端口号掩码设置为0,将目的端口号掩码设置为非 0值。
[00巧]步骤S102 ;为各处理器核必分配不同的端口号集合,并设置各处理器核必所关联 的网卡报文队列与所述端口号集合的对应关系;
[0056] 上述端口号集合中包含的端口号满足如下条件;不同端口号集合中的端口号与所 述目的端口号掩码进行按位与所得的结果不同;同一端口号集合中的端口号与所述目的端 口号掩码进行按位与所得的结果相同。
[0057] 步骤S104 ;处理器核必使用为其分配的端口号集合中的端口号设置其接收到的 正向报文的源端口号,通过网卡发送该正向报文。
[0058] 步骤S106 ;网卡接收到反向报文后使用所述过滤器掩码进行流控制器过滤,将该 反向报文分流到与其目的端口号所属的端口号集合所对应的网卡报文队列。
[0059] 步骤S108 ;处理器核必对与其关联的网卡报文队列中的反向报文进行处理。
[0060] 下面W第二实施例对本申请方法的实现作进一步说明。如图2所示,为本申请实 施例的另一种报文分流方法的方法流程图;本实施例中,在源NAT网关中应用报文分流方 法;该方法包括:
[006。 步骤S200庙源NAT网关中设置网卡的流控制器的过滤器掩码;
[0062] 源NAT网关中的操作系统及上层应用软件可W使用网卡提供的接口进行过滤器 掩码的设置。
[0063] 网卡的过滤器掩码包括:源IP地址掩码(sou;rce_ip_mask)、目的IP地址掩码 (dest_ip_mask)、源端口 号掩码(sou;rce_po;rt_mask)和目的端口 号掩码(dest_po;rt_ mask)。
[0064] 为了实现本发明的分流方法,需要排除报文中源IP地址、目的IP地址和源端口号 对分流的影响,因此令:
[0065] source_ip_mask = 0 ;
[0066] dest_ip_mask = 0 ;
[0067] source_port_mask = 0 ;
[0068] 并将dest_po;rt_mask设置为任意一个非0值。
[0069] 四层协议无论是TCP(Transfe;r Control Protocol,传输控制协议)还是UDP〇Jser 化tagram Protocol,用户数据报协议),其端口号都由2个字节表示,端口号的取值范围是 0~65535。端口号可分为Η类:
[0070] 知名端口号(Well Known Ports),知名端口号也可称为系统保留端口号,端口号 的范围是;〇~1023 ;知名端口号被用于常用的网络服务;
[0071] 注册端口号,端口号的范围是:1024~49151,注册端口号被分配给用户进程或应 用程序使用;
[007引动态端口号值ynamic Ports),端口号的范围是:49152~65535,动态端口号一般 不用于固定分配给某种服务,而用于动态分配。
[0073] 注册端口号和动态端口号可统称为非知名端口号。
[0074] 设置非0值的端口号掩码(例如,上述目的端口号掩码)本质上是将端口号划分 为多个不同的端口号集合。例如,令dest_po;rt_mask = 0x01,则将所有的可用端口号(包 括知名端口号、注册端口号和动态端口号)分为两个端口号集合:端口号最低位值为1的端 口号集合和端口号最低位值为0的端口号集合。每个端口号集合中包含2"个端口号。
[0075] 此外,为了提高程序的运行效率,节省用于存储变量的内存等系统资源,需要每个 端口号集合中包含连续的端口号,因此,可W将dest_po;rt_mask从最低比特位开始的连续 m个比特值设置为0,其余比特值设置为1。即将端口号划分为个不同的端口号集 合,每个端口号集合中包含2"个端口号。目P,本实施例中,可W将dest_port_mask设置为: 0xFFFF?m ;
[0076] 其中,0<m<16,"<<"表示二进制左移。
[0077] 步骤S202 ;为源NAT网关的各处理器核必分配不同的端口号集合,即将各端口号 集合中包含的端口号作为资源分配给各处理器核必;
[007引 由于知名端口号(端口号为0~1023)用于常用的网络服务,源NAT网关的网卡 接收到的正向报文的目的端口号通常为知名端口号,送一类正向报文通常应当使用网卡的 RSS分流功能进行分流,W便将该类正向报文均匀分流到多个处理器核必进行处理,通常不 需要通过本申请中采用的流控制器的过滤器进行分流。
[0079] 因此,在为各处理器核必分配端口号集合时,通常应当避免分配包含知名端口的 端口号集合。
[0080] 本实施例中,令10,从2"开始,划分W下η个端口号集合:
[0081] Ρι= 12"·,…,2"·"- U .
[0082] Ρζ= {2川,…,2"·"- 1}.
[0083] …
[0084] Ρι= 1,…,之"·"- U .
[0085] …
[0086] Ρη= 1,…,2?·+η_ 1};
[0087] 其中,η《16-m。
[0088] 本步骤中,可W为一个处理器核必分配一个端口号集合,也可W为一个处理器核 必分配多个端口号集合。
[0089] 步骤S204 ;在源NAT网关的网卡中分别设置各处理器核必所关联的网卡报文队列 与为各处理器核必所分配的端口号集合之间的对应关系;
[0090] 源NAT网关在初始化过程中会为各处理器核必分配网卡报文队列,建立处理器核 必与网卡报文队列之间的关联关系。
[0091] 源NAT网关中的操作系统及上层应用软件可W使用网卡提供的接口设置网卡报 文队列与端口号集合之间的对应关系。
[009引例如,源NAT网关中包含N个处理器核必;Corel,…,Core,;
[0093] 与各处理器核必关联的网卡报文队列分别记作;Qi,…,Qw;
[0094] 为各处理器核必分配的端口号集合分别为;Pi,…,Pw;
[009引本步骤中将通过网卡提供的接口建立起Qi和P 1之间的对应关系。
[0096] 不同类型的网卡提供不同的接口进行Qi和Pi之间对应关系的建立。例如,可朗尋 端口号集合Pi中的任意一个端口号P i [ j]与目的端口号掩码dest_po;rt_mask的按位与计 算的结果值;Pi[j]&dest_po;rt_mask设置到Qi所对应的网卡寄存器中。
[0097] 步骤S206 ;源NAT网关的处理器核必接收到正向报文后,根据该正向报文的五元 组(即源IP地址、目的IP地址、源端口号、目的端口号和协议类型)查找对应的会话信息;
[0098] 如果未查找到对应的会话信息,则为该正向报文创建会话,并从为该处理器核必 分配的端口号集合中选择一个端口号作为对应会话的临时端口号,保存对应的会话信息, 并使用该临时端口号修改该正向报文的源端口号后,通过网卡发送该正向报文;
[0099] 如果查找到对应的会话信息,则从对应的会话信息中提取该会话的临时端口号, 并使用该临时端口号修改该正向报文的源端口号后,通过网卡发送该正向报文。
[0100] 步骤S208 ;源NAT网关的网卡接收到反向报文后,使用过滤器掩码进行流控制器 过滤,将该反向报文分流到与其目的端口号所属的端口号集合所对应的网卡报文队列中;
[0101] 流控制器过滤的主要过程包括:
[0102] 1)使用过滤器掩码和从反向报文中提取的四元组(源IP地址、目的IP地址、源端 口号和目的端口号)进行按位与运算;
[0103] 由于本发明中将过滤器掩码中的源IP地址掩码、目的IP地址掩码和源端口号掩 码设置为0,本步骤可W表示为:
[0104]
[0105]
[0106] 上述sou;rce_ip为反向报文的源IP地址,dest_ip为反向报文的目的IP地址, sou;rce_pcxrt为反向报文的源端口号,dest_pcxrt为反向报文的目的端口号。
[0107] 根据按位与化)运算的特征,pMASK的值仅由dest_port&dest_po;rt_mask的值决 定。
[0108] 2)使用pMSK值进行哈希查找,找到与pMSK值相对应的网卡报文队列,该网卡报 文队列就是与dest_port&dest_po;rt_mask的值相对应,也就是与反向报文的目的端口号 所属的端口号集合所对应的网卡报文队列;
[0109] 3)将反向报文送入对应的网卡报文队列中。
[0110] 由步骤S204中的描述可知,由于网卡报文队列与处理器核必之间存在对应关系, 而与处理器核必相对应的网卡报文队列又与为该处理器核必所分配的端口号集合相对应 (即与dest_port&dest_po;rt_mask的值相对应),因此经过上述流控制器过滤,最终将反向 报文交由与该报文的目的端口所属的端口号集合相对应的处理器核必进行处理。
[01U] 步骤S210 ;源NAT网关的处理器核必对与其关联的网卡报文队列中的反向报文进 行处理。
[0112] 由上可知,使用本实施例的报文分流方法,在源NAT网关中实现了同一条流/同一 个会话的正向报文和反向报文由相同的处理器核必进行处理的目的。
[0113] 下面W第Η实施例对本申请方法的实现作进一步说明。如图3所示,为本申请实 施例的另一种报文分流方法的方法流程图;本实施例中,在VPN网关中应用报文分流方法; 该方法包括:
[0114] 步骤S300庙VPN网关中设置网卡的流控制器的过滤器掩码;
[011引为了实现本发明的分流方法,需要排除报文中源IP地址、目的IP地址和源端口号 对分流的影响,因此令:
[0116] source_ip_mask = 0 ;
[0117] dest_ip_mask = 0 ;
[0118] source_port_mask = 0 ;
[0119] dest_po;rt_mask = (0xFFFF<<m);其中 0<m<16。
[0120] 当然,本实施例也可W将dest_port_mask设置为任意的非0值。
[0121] 步骤S302 ;为VPN网关的各处理器核必分配不同的端口号集合,即将各端口号集 合中包含的端口号作为资源分配给各处理器核必;
[0122] 同样,为了避免分配包含知名端口的端口号集合,本实施例中,令10,从2"开 始,划分W下η个端口号集合:
[012引 Ρι= {2"·,…,2"·"- 1}.
[0124] Ρζ= {2 m",...,2-+2- 1};
[0125] …
[0126] Pi= 口。" 1,…,2"·"- 1};
[0127] …
[0128] Pn= 1,…,2"·+。一 1}.
[0129] 其中,η《16-m。
[0130] 本步骤中,可W为一个处理器核必分配一个端口号集合,也可W为一个处理器核 必分配多个端口号集合。
[0131] 步骤S304 ;在VPN网关的网卡中分别设置各处理器核必所关联的网卡报文队列与 为各处理器核必所分配的端口号集合之间的对应关系;
[0132] VPN网关中的操作系统及上层应用软件可W使用网卡提供的接口设置网卡报文队 列与端口号集合之间的对应关系。
[0133] 例如,VPN网关中包含N个处理器核必;Corel,…,Core,;
[0134] 与各处理器核必关联的网卡报文队列分别记作;Qi,…,Qw;
[0135] 为各处理器核必分配的端口号集合分别为;Pi,···,?,;
[0136] 本步骤中将通过网卡提供的接口建立起Qi和P 1之间的对应关系。
[0137] 步骤S306 ;VPN网关的处理器核必接收到正向报文后,根据该正向报文的五元组 (即源IP地址、目的IP地址、源端口号、目的端口号和协议类型)查找对应的会话信息;
[0138] 如果未查找到对应的会话信息,则为该正向报文创建会话,并从为该处理器核必 分配的端口号集合中选择一个端口号作为对应会话的临时端口号,保存对应的会话信息, 并使用该临时端口号作为该正向报文的外部IP头的源端口号,为该正向报文添加外部IP 头后通过网卡发送该正向报文;
[0139] 如果查找到对应的会话信息,则从对应的会话信息中提取该会话的临时端口号, 并使用该临时端口号作为该正向报文的外部IP头的源端口号,为该正向报文添加外部IP 头后通过网卡发送该正向报文。
[0140] 步骤S308 ;VPN网关的网卡接收到反向报文后,使用过滤器掩码进行流控制器过 滤,将该反向报文分流到与其目的端口号所属的端口号集合所对应的网卡报文队列中。
[0141] 步骤S310 ;VPN网关的处理器核必对与其关联的网卡报文队列中的反向报文进行 处理。
[0142] 由上可知,使用本实施例的报文分流方法,在VPN网关中实现了同一条流/同一个 会话的正向报文和反向报文由相同的处理器核必进行处理的目的。 阳14引 府巧连例描沐
[0144] 下面W-应用实例对本申请方法的实现作进一步说明。如图4所示,为使用本申 请的报文分流方法的源NAT网关的报文处理过程示意图。
[0145] 假设客户端发出正向报文;报文1,其源IP地址为;1. 1. 1. 1,源端口号为;1234, 目的IP地址为;2. 2. 2. 2,目的端口号为;80 ;
[014引报文1到达源NAT网关后,由于该报文的目的端口号为80,为知名端口号,没有包 含在分配给各处理器核必的端口号集合中,因此网卡使用其它分流方式(例如,RSS分流功 能)将报文1分流到某一处理器粉,例如,Corel。上;
[0147] Corel。接收到报文1后根据报文1的四元组未查询到对应的会话信息,因此执行 NAT逻辑,为报文1选择一个NAT IP地址(例如,3. 3. 3. 3),并从Corel。对应的端口号集合 中选择一个端口号(例如,40961)作为临时端口号,并使用上述IP地址和临时端口号修改 报文1的源IP地址和源端口号,保存相关会话信息后,将报文1转换为报文Γ,通过源NAT 网关的网卡发送报文Γ;
[014引源NAT网关的网卡接收到目的IP地址为3. 3. 3. 3,目的端口号为40961的反向报 文(记作:报文2)后,使用过滤器掩码进行流控制器过滤,将报文2分流到Corel。进行处 理;
[0149] Corel。根据NAT逻辑,根据保存的会话信息,使用IP地址1. 1. 1. 1,W及端口号 1234修改报文2的目的IP地址和目的端口号,将报文2转换为报文2',通过源NAT网关的 网卡发送报文2'。
[0150] 由上可知,属于同一条流/同一个会话的正向报文和反向报文都被分流到了同一 个处理器核必进行处理。
[0151] 下面W另一实施例对本申请装置的实现作进一步说明。如图5所示,为本申请实 施例的报文分流装置的装置结构图,报文分流装置包括:掩码设置模块500、端口号分配模 块502、处理器核必504、网卡506 ;其中:
[0152] 掩码设置模块,用于将网卡流控制器的过滤器掩码中的源IP地址掩码、目的IP地 址掩码和源端口号掩码设置为0,将目的端口号掩码设置为非0值;
[0153] 端口号分配模块,用于为各处理器核必分配不同的端口号集合,并设置各处理器 核必所关联的网卡报文队列与端口号集合的对应关系;
[0154] 处理器核必,用于使用为其分配的端口号集合中的端口号设置其接收到的正向报 文的源端口号,通过网卡发送该正向报文;
[01巧]网卡,用于在接收到反向报文后使用过滤器掩码进行流控制器过滤,将该反向报 文分流到与其目的端口号所属的端口号集合所对应的网卡报文队列;
[0156] 处理器核必,还用于对与其关联的网卡报文队列中的反向报文进行处理;
[0157] 不同端口号集合中的端口号与目的端口号掩码进行按位与所得的结果不同;同一 端口号集合中的端口号与目的端口号掩码进行按位与所得的结果相同。
[0158] 掩码设置模块将目的端口号掩码设置为;0xFFFF?m ;其中,0<m<16,《表示二进 制左移。
[0159] 优选地,端口号分配模块分配的端口号集合包括;Pi,口2,…,P。;
[0160] 端口号集合P冲包含的端口号为1 ;1《i《η;
[0161 ]其中,10,η《16 - m。
[0162] 端口号分配模块分配的端口号集合中的端口号为非知名端口号。
[0163] 端口号分配模块采用如下方式设置处理器核必所关联的网卡报文队列与端口号 集合的对应关系:
[0164] 将为处理器核必分配的端口号集合中的端口号与目的端口号掩码进行按位与的 结果值设置到与该处理器核必关联的网卡报文队列所对应的寄存器中。
[0165] 所述装置与前述的方法流程描述对应,更具体的描述请参考上述方法流程的叙 述,不再一一赏述。
[0166] 上述说明示出并描述了本申请的若干优选实施例,但如前所述,应当理解本申请 并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、 修改和环境,并能够在本文所述发明构想范围内,通过上述教导或相关领域的技术或知识 进行改动。而本领域人员所进行的改动和变化不脱离本申请的精神和范围,则都应在本申 请所附权利要求的保护范围内。
【主权项】
1. 一种报文分流方法,其特征在于,该方法包括: 将网卡流控制器的过滤器掩码中的源IP地址掩码、目的IP地址掩码和源端口号掩码 设置为0,将目的端口号掩码设置为非0值; 为各处理器核心分配不同的端口号集合,并设置各处理器核心所关联的网卡报文队列 与所述端口号集合的对应关系; 处理器核心使用为其分配的端口号集合中的端口号设置其接收到的正向报文的源端 口号,通过网卡发送该正向报文; 网卡接收到反向报文后使用所述过滤器掩码进行流控制器过滤,将该反向报文分流到 与其目的端口号所属的端口号集合所对应的网卡报文队列; 处理器核心对与其关联的网卡报文队列中的反向报文进行处理; 其中,不同端口号集合中的端口号与所述目的端口号掩码进行按位与所得的结果不 同;同一端口号集合中的端口号与所述目的端口号掩码进行按位与所得的结果相同。2. 根据权利要求1所述的方法,其特征在于, 所述目的端口号掩码的值为:〇xFFFF〈〈m ; 其中,0〈m〈16,〈〈表示二进制左移。3. 根据权利要求1所述的方法,其特征在于, 所述端口号集合中的端口号为非知名端口号。4. 根据权利要求1所述的方法,其特征在于, 采用如下方式设置处理器核心所关联的网卡报文队列与所述端口号集合的对应关 系: 将为处理器核心分配的端口号集合中的端口号与所述目的端口号掩码进行按位与的 结果值设置到与该处理器核心关联的网卡报文队列所对应的寄存器中。5. 根据权利要求2所述的方法,其特征在于, 所述端口号集合包括七,P2,…,Pn; 端口号集合Pi中包含的端口号为:2m+11,~,2m+1- 1 ;1彡i彡η; 其中,m > 10, η < 16 - m。6. -种报文分流装置,其特征在于,该装置包括: 掩码设置模块,用于将网卡流控制器的过滤器掩码中的源IP地址掩码、目的IP地址掩 码和源端口号掩码设置为0,将目的端口号掩码设置为非0值; 端口号分配模块,用于为各处理器核心分配不同的端口号集合,并设置各处理器核心 所关联的网卡报文队列与所述端口号集合的对应关系; 处理器核心,用于使用为其分配的端口号集合中的端口号设置其接收到的正向报文的 源端口号,通过网卡发送该正向报文; 网卡,用于在接收到反向报文后使用所述过滤器掩码进行流控制器过滤,将该反向报 文分流到与其目的端口号所属的端口号集合所对应的网卡报文队列; 所述处理器核心,还用于对与其关联的网卡报文队列中的反向报文进行处理; 其中,不同端口号集合中的端口号与所述目的端口号掩码进行按位与所得的结果不 同;同一端口号集合中的端口号与所述目的端口号掩码进行按位与所得的结果相同。7. 根据权利要求6所述的装置,其特征在于, 所述掩码设置模块将所述目的端口号掩码设置为:〇xFFFF〈〈m ; 其中,0〈m〈16,〈〈表示二进制左移。8. 根据权利要求6所述的装置,其特征在于, 所述端口号分配模块分配的所述端口号集合中的端口号为非知名端口号。9. 根据权利要求6所述的装置,其特征在于, 所述端口号分配模块采用如下方式设置处理器核心所关联的网卡报文队列与所述端 口号集合的对应关系: 将为处理器核心分配的端口号集合中的端口号与所述目的端口号掩码进行按位与的 结果值设置到与该处理器核心关联的网卡报文队列所对应的寄存器中。10. 根据权利要求7所述的装置,其特征在于, 所述端口号分配模块分配的所述端口号集合包括:Pi,P2,…,Pn; 端口号集合Pi中包含的端口号为:2m+11,~,2m+1- 1 ;1彡i彡η; 其中,m > 10, η < 16 - m。
【文档编号】H04L12/861GK105871741SQ201510037385
【公开日】2016年8月17日
【申请日】2015年1月23日
【发明人】肖寒, 孙成浩, 祝顺民, 姜邦杰
【申请人】阿里巴巴集团控股有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1