CN111404817A - 一种提升网络通信设备分片数据包转发性能的方法及系统 - Google Patents

一种提升网络通信设备分片数据包转发性能的方法及系统 Download PDF

Info

Publication number
CN111404817A
CN111404817A CN202010214667.7A CN202010214667A CN111404817A CN 111404817 A CN111404817 A CN 111404817A CN 202010214667 A CN202010214667 A CN 202010214667A CN 111404817 A CN111404817 A CN 111404817A
Authority
CN
China
Prior art keywords
data packet
information
ipc
function
fragment
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
Application number
CN202010214667.7A
Other languages
English (en)
Other versions
CN111404817B (zh
Inventor
唐远生
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Tenda Technology Co Ltd
Original Assignee
Shenzhen Tenda Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenzhen Tenda Technology Co Ltd filed Critical Shenzhen Tenda Technology Co Ltd
Priority to CN202010214667.7A priority Critical patent/CN111404817B/zh
Publication of CN111404817A publication Critical patent/CN111404817A/zh
Application granted granted Critical
Publication of CN111404817B publication Critical patent/CN111404817B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/14Routing performance; Theoretical aspects
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/16Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
    • H04L69/164Adaptation or special uses of UDP protocol
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Abstract

本发明提供一种提升网络通信设备分片数据包转发性能的方法及系统,属于通讯领域。本发明包括如下步骤:初始化内存池;内核加速模块由驱动程序获取数据包,判断当前数据包是否为一条UDP链接的前两个数据包,如果是,走标准协议栈,内核加快模块的回调函数向内存池中记录该条UDP链接的ipc转发信息,如果否,执行下一步;内核加速模块根据保存的ipc转发信息封装数据包;调用驱动发包函数发送数据包。本发明的有益效果为:提升了IPV4 UDP分片数据包转发性能。

Description

一种提升网络通信设备分片数据包转发性能的方法及系统
技术领域
本发明涉及无线通讯领域,尤其涉及一种提升网络通信设备分片数据包转发性能的方法,还涉及一种实现所述提升网络通信设备分片数据包转发性能的方法的系统。
背景技术
性能是衡量一款网络通信设备好坏的最直接的评价,其中性能指标主要包括吞吐量、报文转发率、最大并发连接数、每秒新建连接数、转发时延、抖动等。
在竞争激烈的通信设备市场,为提升用户上网体验及提高网络通信设备市场竞争力,需用同等的硬件资源或成本,创造出更高性能的设备。
目前绝大部分Linux系统的网络通信设备转发IPV4 UDP(User DatagramProtocol的简称,中文名是用户数据报协议)分片数据包,都是在标准内核协议栈里实现,当协议栈收到UDP分片数据包时,ip_defrag函数会将数据包先进行缓存,直到接收完成所有分片时,才将该数据包重新分片转发。
现有技术存在如下问题:
(1)标准内核协议栈转发IPV4 UDP分片数据包,转发性能的好坏完全取决于通信设备的CPU处理能力;
(2)部分低端网络设备,特别是家用通信产品,内存及CPU较差,产品转发IPV4 UDP分片数据包吞吐量未达标准水平,急需一些方法去优化该转发性能,提高吞吐量,以提高产品市场竞争力。
发明内容
为解决现有技术中的问题,本发明提供一种提升网络通信设备分片数据包转发性能的方法及系统。
本发明的提升网络通信设备分片数据包转发性能的方法包括如下步骤:
S1:初始化内存池;
S2:内核加速模块由驱动程序获取数据包,判断当前数据包是否为一条UDP链接的前两个数据包,如果是,走标准协议栈,内核加快模块的回调函数向内存池中记录该条UDP链接的ipc转发信息,如果否,执行下一步;
S3:内核加速模块根据保存的ipc转发信息封装数据包;
S4:调用驱动发包函数发送数据包。
本发明作进一步改进,在步骤S1中,所述内存池包括保存ipc信息的ipc cache容器和存储分片信息的fragment cache容器。
本发明作进一步改进,在步骤S2中,UDP链接跟踪的第一个数据包为发送包,第二个数据包为接收包,当第一个数据包走标准协议栈时,所述内核加速模块的处理方法包括如下步骤:
A1:当UDP链接的第一个数据包在协议栈查完路由和查完NAT后,从ip_output函数进入Netfilter框架NF_INET_POST_ROUTING链nf_nat_packet函数填充NAT信息时,内核加速模块在该函数注册回调;
A2:内核加速模块根据链接跟踪方向确定记录该链接的snat转发信息,通过skb_dst函数取出路由信息,通过__ipv4_neigh_lookup_noref函数查询邻居子系统信息;
A3:_ctf_ipc_add函数根据路由信息确定并记录该链接的发送接口至ipc,根据邻居子系统记录源mac地址和目的mac地址至ipc,根据传入的nat信息记录snat源ip和源端口信息至ipc,并记录该链接方向skb五元组及链接跟踪信息至ipc,
A4:_ctf_ipc_add函数将该链接做snat的ipc信息存入ipc cache容器中。
本发明作进一步改进,UDP链接第一个数据包在标准协议栈做完snat后,该UDP链接已经记录了snat及dnat信息,当第二个数据包走标准协议栈时,所述内核加速模块的处理方法包括如下步骤:
B1:当UDP链接的第二个数据包从ip层ip_rcv函数进入Netfilter框架NF_INET_PRE_ROUTING链时,所述内核加速模块直接调用nf_nat_packet函数填充dnat信息;
B2:所述内核加速模块记录该UDP链接的dnat ipc信息;
B3:根据转入的nat信息目的ip通过ip_route_input函数查询路由信息,并通过__ipv4_neigh_lookup_noref函数查询邻居子系统信息;
B4:_ctf_ipc_add函数根据路由信息确定并记录该链接的发送接口至ipc,根据邻居子系统记录源mac地址和目的mac地址至ipc,根据传入的nat信息记录dnat ip和端口信息至ipc,并记录该链接方向skb五元组及链接跟踪信息至ipc;
B5:_ctf_ipc_add函数将该链接做dnat的ipc信息存入ipc cache容器中。
本发明作进一步改进,在步骤S3中,当该条UDP链接的第三个及后面的数据包,即分片发送包及ACK回应包从驱动程序进入内核加速模块时,所述内核加速模块对数据包进行分类处理,所述内核加速模块的处理方法包括如下步骤:
C1:find_fragEntry函数首先会根据该数据包ip头部标识符id、源ip、目的ip、协议在fragment cache容器中查找是否缓存了该数据包的源端口、目的端口的端口信息;
C2:如果存在,则先取出端口信息,并判断当前分片数据包是否是一个完整数据包的最后一个分片数据包,如果是则释放该分片数据包在fragment cache容器的端口信息,并根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息,否则直接根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息,
如果不存在,则判断该数据包是否是分片数据包,如果是分片数据包并且是第一片数据包,add_fragEntry函数根据分片数据包标识符id、源ip、目的ip、源端口、目的端口、协议在fragment cache容器中缓存端口信息,并根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache查找NAT转发信息;如果不是分片数据包,则直接根据数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息;
C3:判断ipc信息中NAT转发信息是否存在,如果不存在,数据包走标准协议栈,如果存在,则根据NAT转发信息确定该数据包是做snat或dnat,并进行相应封装。
本发明作进一步改进,所述数据包的封装方法为:
D1:如果该数据包做snat,则根据ipc记录的snat ip信息,修改数据包ip头部源ip地址;如果做dnat,则根据ipc记录的dnat ip信息,修改数据包ip头部目的ip地址;
D2:重新计算ip头部校验和;
D3:判断该数据包是否为一个完整udp数据包的第一个分片数据包或者不是分片包,如果是,重新计算UDP头部校验和,然后执行下一步,如果否,直接执行下一步;
D4:修改数据包mac层源mac与目的mac地址;
D5:根据ipc信息修改数据包skb->dev为发送设备,
封装完成后,通过发送设备Dev工具函数ndo_start_xmit发包。
本发明还提供一种实现所述提升网络通信设备分片数据包转发性能的方法的系统,包括,包括:
内存池初始化单元:用于初始化内存池;
接收单元:用于获取数据包;
第一判断单元:用于判断当前数据包是否为一条UDP链接的前两个数据包,如果是,将数据包发送至内核走标准协议栈,如果否,将数据包发送至封装单元;
回调记录单元:用于前两个数据包走标准协议栈时,向内存池中记录该条UDP链接的ipc转发信息;
封装单元:用于根据保存的ipc转发信息封装数据包;
发送单元:用于在驱动层发送数据包。
与现有技术相比,本发明的有益效果是:数据包从驱动到驱动,跳过了整个内核协议栈的相关处理,单位时间内CPU可以转发更多的IPV4 UDP分片数据包,从而提升了IPV4UDP分片数据包转发性能;不需在标准Linux内核完整地缓存所有分片,才将该数据包重新分片转发,减小了分片数据包在内核的内存使用;耦合性低,可适用于所有的网络通信设备。
附图说明
图1为本发明方法流程图;
图2为本发明一实施例方法流程图。
具体实施方式
下面结合附图和实施例对本发明做进一步详细说明。
如图1所示,本发明的提升网络通信设备分片数据包转发性能的方法包括如下步骤:
S1:初始化内存池;
S2:内核加速模块由驱动程序获取数据包,判断当前数据包是否为一条UDP链接的前两个数据包,如果是,走标准协议栈,内核加快模块的回调函数向内存池中记录该条UDP链接的ipc转发信息,如果否,执行下一步;
S3:内核加速模块根据保存的ipc转发信息封装数据包;
S4:调用驱动发包函数发送数据包。
由于该发明适用于所有网络通信设备提升IPV4 UDP分片数据包转发吞吐量,并且能够替代内核标准协议栈转发数据包,并与内核协议栈中的部分函数交互,故将该发明以内核加速模块的形式(本例命名为Fast_udp_fragment内核模块)进行描述。
如图2所示,标准协议栈转发IPV4 UDP分片数据包的流程如图2左半边所示,右半边则是本发明Fast_udp_fragment内核模块提升IPV4 UDP分片数据包转发性能的数据包发包流程。在标准协议栈转发IPV4 UDP分片数据包的流程中,eth_type_trans进程用于确定数据包上层协议,数据包类型,完成skb->data指针偏移到网络层头部等动作。
netif_rx进程的作用是:将从网卡驱动收到的数据包sk_buff放到内核接收队列中通过__skb_queue_tail函数实现;ksoftirqd函数用于内核线程,进程调度;do_softirq函数用于产生软中断,通过全局变量softirq_vec的函数指针调用net_rx_action;Net_rx_action函数负责从当前CPU中获取softnet_data数据,控制一次中断处理的数据包个数,调用Process_backlog对网络数据进行真正处理。
Process_backlog进程用于通过__skb_dequeue函数不断处理队列取得sk_buff数据包传上协议栈进行处理;netif_receive_skb进程根据不同的协议调用不同的协议处理函数,网桥的处理入口netif_receive_skb里面,针对IP协议,ip_rcv函数将被调用。
ip_rcv进程对IP头部合法性进行严格检查,然后把具体功能交给ip_rcv_finish;ip_rcv_finish进程用于执行完PRE_ROUTING上的钩子函数后,所有钩子都全部返回NF_ACCEPT后,数据包会交由ip_rcv_finish()函数。这个函数主要功能是做路由选择。
ip_route_input进程用于先在路由缓存中查找,没找到则由ip_route_input_slow函数从路由表中查,并加入到缓存中;ip_route_input_slow进程用于进行路由,并把skb->dst->input函数指针指向ip_local_deliver或ip_error或ip_forward或ip;ip_options_compile进程用于检查ip数据包的内容。
ip_forward_finish进程用于执行完IP_FORWARD的钩子函数后,所有钩子都返回NF_ACCEPT,数据包交由ip_forward_finish函数处理,主要将数据包送入指向ip_output或ip_mc_output阶段。ip_forward_options进程为IP数据报文选项,记录路由选项、时间戳等;ip_send进程用于数据包到达Ip_output前,对分片与不分片数据包进行不同处理。
ip_fragment进程用于如果是分片包,会调用ip_defrag函数将数据包先进行缓存,收完整个数据包再进行发送。
Ip_output进程用于设置输出设备和协议;ip_finish_output进程用于经过POST_ROUTING钩子点,最后调用ip_finish_output进程,对skb进行分片判断,需要分片,则分片后输出,不需要分片则直接输出。ip_finish_output2进程用于对skb的头部空间进行检查,看是否能够容纳下二层头部,若空间不足,则需要重新申请skb。
dev_queue_xmit进程根据配置情况选择发送数据包的排队规则,也就是进入流量控制子系统;hard_start_xmit进程调用驱动发送函数发送数据包。
见图2,本发明Fast_udp_fragment内核模块提升IPV4 UDP分片数据包转发性能的数据包发包流程如右侧框中所示。在步骤S1中,所述内存池包括保存ipc信息的ipc cache容器和存储分片信息的fragment cache容器。
在步骤S2中,Fast_udp_fragment内核模块为了能够正确学习到每条UDP链接的NAT信息、链接跟踪信息,路由信息等,不对每条UDP链接的前面2个数据包(1个发送包+1个接收包)进行加速转发,让其走标准协议栈。
UDP链接跟踪的第一个数据包为发送包,第二个数据包为接收包,当第一个数据包走标准协议栈时,所述Fast_udp_fragment内核模块的处理方法包括如下步骤:
A1:当UDP链接的第一个数据包在协议栈查完路由和查完NAT(Network AddressTranslation,网络地址转换)后,从ip_output函数进入Netfilter框架NF_INET_POST_ROUTING链nf_nat_packet函数填充NAT信息时,Fast_udp_fragment内核模块在该函数注册回调;
A2:Fast_udp_fragment内核模块根据链接跟踪方向确定记录该链接的snat(源地址转换)转发信息,通过skb_dst函数取出路由信息,通过__ipv4_neigh_lookup_noref函数查询邻居子系统信息;
A3:_ctf_ipc_add函数根据路由信息确定并记录该链接的发送接口至ipc(ipcache,ip层转发的缓存信息,ip层:即TCP/IP协议栈三层),每条链接对应2条ipc,分别记录链接做snat和dnat的所有信息),根据邻居子系统记录源mac地址和目的mac地址至ipc,根据传入的nat信息记录snat源ip和源端口信息至ipc,并记录该链接方向skb(数据包)五元组及ct(链接跟踪)等信息至ipc,
A4:_ctf_ipc_add函数将该链接做snat的ipc信息存入ipc cache容器(内存池)中。
本发明在UDP链接第一个数据包在标准协议栈做完snat后,该UDP链接已经记录了snat及dnat(目的地址转换)信息,当第二个数据包走标准协议栈时,所述Fast_udp_fragment内核模块的处理方法包括如下步骤:
B1:当UDP链接的第二个数据包从ip层ip_rcv函数进入Netfilter框架NF_INET_PRE_ROUTING链时,所述内核加速模块直接调用nf_nat_packet函数填充dnat信息;
B2:所述Fast_udp_fragment内核模块记录该UDP链接的dnat ipc信息;
B3:于是Fast_udp_fragment内核模块记录该链接的dnat ipc信息,由于此时数据包没有路由,需要根据转入的nat信息目的ip通过ip_route_input函数查询路由信息,并通过__ipv4_neigh_lookup_noref函数查询邻居子系统信息;
B4:_ctf_ipc_add函数根据路由信息确定并记录该链接的发送接口至ipc,根据邻居子系统记录源mac地址和目的mac地址至ipc,根据传入的nat信息记录dnat ip和端口信息至ipc,并记录该链接方向skb五元组及ct链接跟踪等信息至ipc;
B5:_ctf_ipc_add函数将该链接做dnat的ipc信息存入ipc cache容器中。
当该条UDP链接的第三个及后面的数据包,即分片发送包及ACK回应包从驱动程序进入Fast_udp_fragment内核模块时,所述Fast_udp_fragment内核模块对数据包进行分类处理,所述内核加速模块的处理方法包括如下步骤:
C1:find_fragEntry函数首先会根据该数据包ip头部标识符id、源ip、目的ip、协议在fragment cache容器中查找是否缓存了该数据包的源端口、目的端口的端口信息;
C2:如果存在,则先取出端口信息,并判断当前分片数据包是否是一个完整数据包的最后一个分片数据包,如果是则释放该分片数据包在fragment cache容器的端口信息,并根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息,否则直接根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息,
如果不存在端口信息,则判断该数据包是否是分片数据包,如果是分片数据包并且是第一片数据包,add_fragEntry函数根据分片数据包identifier标识符id、源ip、目的ip、源端口、目的端口、协议在fragment cache容器中缓存端口信息,并根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache查找NAT转发信息;如果不是分片数据包(即ACK回应包),则直接根据数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息;
C3:判断ipc信息中NAT转发信息是否存在,如果不存在,数据包走标准协议栈,如果存在,则根据NAT转发信息确定该数据包是做snat或dnat,并进行相应封装。
本例所述数据包的封装方法为:
D1:如果该数据包做snat,则根据ipc记录的snat ip信息,修改数据包ip头部源ip地址;如果做dnat,则根据ipc记录的dnat ip信息,修改数据包ip头部目的ip地址;
D2:重新计算ip头部校验和,由于修改了数据包ip头部信息,ip头部checksum校验和需要重新计算;
D3:判断该数据包是否为一个完整udp数据包的第一个分片数据包或者不是分片包(即ACK回应包),如果是,重新计算UDP头部校验和,由于伪头部发生了变化,UDP头部也需要重新计算校验和,然后执行下一步,如果否,直接执行下一步;
D4:修改数据包mac层源mac与目的mac地址;
D5:根据ipc信息修改数据包skb->dev为发送设备,
封装完成后,通过发送设备Dev工具函数ndo_start_xmit发包。
Fast_udp_fragment内核模块只是提升网络通信设备IPV4 UDP分片数据包转发性能优化方案的一个实施例,运用该发明编写的内核模块只需在内核nf_nat_packet函数添加回调函数,用于记录每条UDP链接的ipc转发信息,从而根据所述ipc转发信息实现封装及转发数据包的均在本发明的实现构思中。
本发明具有以下有益效果:
本发明在CPU存在瓶颈时,提出一种提升网络通信设备IPV4 UDP分片数据包转发性能的优化方案;每条UDP链接的第三个及后面的分片数据包及ACK回应包从驱动进入Fast_udp_fragment内核模块,然后根据保存的ipc信息为数据包封装三层nat信息、路由dev信息、二层邻居子系统等信息,直接调用驱动发包函数ndo_start_xmit发送数据包,数据包从驱动到驱动,跳过了整个内核协议栈的相关处理,单位时间内CPU可以转发更多的IPV4 UDP分片数据包,从而提升了IPV4 UDP分片数据包转发性能;本发明不需在标准Linux内核完整地缓存所有分片,才将该数据包重新分片转发,一定程度上减小了分片数据包在内核缓存的内存使用;本发明只需在内核nf_nat_packet函数添加回调函数,用于记录每条UDP链接的ipc转发信息,耦合性低,可适用于所有的网络通信设备。
以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明所作的等效变化均在本发明的保护范围内。

Claims (7)

1.一种提升网络通信设备分片数据包转发性能的方法,其特征在于,包括如下步骤:
S1:初始化内存池;
S2:内核加速模块由驱动程序获取数据包,判断当前数据包是否为一条UDP链接的前两个数据包,如果是,走标准协议栈,内核加快模块的回调函数向内存池中记录该条UDP链接的ipc转发信息,如果否,执行下一步;
S3:内核加速模块根据保存的ipc转发信息封装数据包;
S4:调用驱动发包函数发送数据包。
2.根据权利要求1所述的提升网络通信设备分片数据包转发性能的方法,其特征在于:在步骤S1中,所述内存池包括保存ipc信息的ipc cache容器和存储分片信息的fragmentcache容器。
3.根据权利要求2所述的提升网络通信设备分片数据包转发性能的方法,其特征在于:在步骤S2中,UDP链接跟踪的第一个数据包为发送包,第二个数据包为接收包,当第一个数据包走标准协议栈时,所述内核加速模块的处理方法包括如下步骤:
A1:当UDP链接的第一个数据包在协议栈查完路由和查完NAT后,从ip_output函数进入Netfilter框架NF_INET_POST_ROUTING链nf_nat_packet函数填充NAT信息时,内核加速模块在该函数注册回调;
A2:内核加速模块根据链接跟踪方向确定记录该链接的snat转发信息,通过skb_dst函数取出路由信息,通过__ipv4_neigh_lookup_noref函数查询邻居子系统信息;
A3:_ctf_ipc_add函数根据路由信息确定并记录该链接的发送接口至ipc,根据邻居子系统记录源mac地址和目的mac地址至ipc,根据传入的nat信息记录snat源ip和源端口信息至ipc,并记录该链接方向skb五元组及链接跟踪信息至ipc,
A4:_ctf_ipc_add函数将该链接做snat的ipc信息存入ipc cache容器中。
4.根据权利要求3所述的提升网络通信设备分片数据包转发性能的方法,其特征在于:UDP链接第一个数据包在标准协议栈做完snat后,该UDP链接已经记录了snat及dnat信息,当第二个数据包走标准协议栈时,所述内核加速模块的处理方法包括如下步骤:
B1:当UDP链接的第二个数据包从ip层ip_rcv函数进入Netfilter框架NF_INET_PRE_ROUTING链时,所述内核加速模块直接调用nf_nat_packet函数填充dnat信息;
B2:所述内核加速模块记录该UDP链接的dnat ipc信息;
B3:根据转入的nat信息目的ip通过ip_route_input函数查询路由信息,并通过__ipv4_neigh_lookup_noref函数查询邻居子系统信息;
B4:_ctf_ipc_add函数根据路由信息确定并记录该链接的发送接口至ipc,根据邻居子系统记录源mac地址和目的mac地址至ipc,根据传入的nat信息记录dnat ip和端口信息至ipc,并记录该链接方向skb五元组及链接跟踪信息至ipc;
B5:_ctf_ipc_add函数将该链接做dnat的ipc信息存入ipc cache容器中。
5.根据权利要求4所述的提升网络通信设备分片数据包转发性能的方法,其特征在于:在步骤S3中,当该条UDP链接的第三个及后面的数据包,即分片发送包及ACK回应包从驱动程序进入内核加速模块时,所述内核加速模块对数据包进行分类处理,所述内核加速模块的处理方法包括如下步骤:
C1:find_fragEntry函数首先会根据该数据包ip头部标识符id、源ip、目的ip、协议在fragment cache容器中查找是否缓存了该数据包的源端口、目的端口的端口信息;
C2:如果存在,则先取出端口信息,并判断当前分片数据包是否是一个完整数据包的最后一个分片数据包,如果是则释放该分片数据包在fragment cache容器的端口信息,并根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息,否则直接根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息,
如果不存在,则判断该数据包是否是分片数据包,如果是分片数据包并且是第一片数据包,add_fragEntry函数根据分片数据包标识符id、源ip、目的ip、源端口、目的端口、协议在fragment cache容器中缓存端口信息,并根据分片数据包五元组信息通过ipc_lookkup函数在ipc cache查找NAT转发信息;如果不是分片数据包,则直接根据数据包五元组信息通过ipc_lookkup函数在ipc cache容器中查找NAT转发信息;
C3:判断ipc信息中NAT转发信息是否存在,如果不存在,数据包走标准协议栈,如果存在,则根据NAT转发信息确定该数据包是做snat或dnat,并进行相应封装。
6.根据权利要求5所述的提升网络通信设备分片数据包转发性能的方法,其特征在于:所述数据包的封装方法为:
D1:如果该数据包做snat,则根据ipc记录的snat ip信息,修改数据包ip头部源ip地址;如果做dnat,则根据ipc记录的dnat ip信息,修改数据包ip头部目的ip地址;
D2:重新计算ip头部校验和;
D3:判断该数据包是否为一个完整udp数据包的第一个分片数据包或者不是分片包,如果是,重新计算UDP头部校验和,然后执行下一步,如果否,直接执行下一步;
D4:修改数据包mac层源mac与目的mac地址;
D5:根据ipc信息修改数据包skb->dev为发送设备,
封装完成后,通过发送设备Dev工具函数ndo_start_xmit发包。
7.一种实现权利要求1-6任一项所述的提升网络通信设备分片数据包转发性能的方法的系统,其特征在于:包括:
内存池初始化单元:用于初始化内存池;
接收单元:用于获取数据包;
第一判断单元:用于判断当前数据包是否为一条UDP链接的前两个数据包,如果是,将数据包发送至内核走标准协议栈,如果否,将数据包发送至封装单元;
回调记录单元:用于前两个数据包走标准协议栈时,向内存池中记录该条UDP链接的ipc转发信息;
封装单元:用于根据保存的ipc转发信息封装数据包;
发送单元:用于在驱动层发送数据包。
CN202010214667.7A 2020-03-24 2020-03-24 一种提升网络通信设备分片数据包转发性能的方法及系统 Active CN111404817B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010214667.7A CN111404817B (zh) 2020-03-24 2020-03-24 一种提升网络通信设备分片数据包转发性能的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010214667.7A CN111404817B (zh) 2020-03-24 2020-03-24 一种提升网络通信设备分片数据包转发性能的方法及系统

Publications (2)

Publication Number Publication Date
CN111404817A true CN111404817A (zh) 2020-07-10
CN111404817B CN111404817B (zh) 2022-06-03

Family

ID=71413966

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010214667.7A Active CN111404817B (zh) 2020-03-24 2020-03-24 一种提升网络通信设备分片数据包转发性能的方法及系统

Country Status (1)

Country Link
CN (1) CN111404817B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112968844A (zh) * 2021-02-05 2021-06-15 武汉绿色网络信息服务有限责任公司 一种发送分片报文的方法与装置
CN113438097A (zh) * 2021-05-21 2021-09-24 翱捷科技股份有限公司 一种网络加速的实现方法及装置
CN113691554A (zh) * 2021-09-01 2021-11-23 深圳市大洲智创科技有限公司 一种提升网络设备数据转发性能的方法
CN117056378A (zh) * 2023-10-11 2023-11-14 北京人大金仓信息技术股份有限公司 一种缓存数据与全局实例数据的同步方法及相关设备

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101860487A (zh) * 2010-05-28 2010-10-13 中兴通讯股份有限公司 互联网协议ip分片报文的转发方法及接口板
CN102123082A (zh) * 2011-01-14 2011-07-13 中兴通讯股份有限公司 数据包转发方法和设备
CN102638453A (zh) * 2012-03-13 2012-08-15 广州华多网络科技有限公司 一种基于Linux系统服务器的语音数据内核转发方法
CN102946347A (zh) * 2012-12-07 2013-02-27 烽火通信科技股份有限公司 一种加速Linux系统本地数据包处理的方法及装置
CN102957600A (zh) * 2011-08-19 2013-03-06 中兴通讯股份有限公司 一种数据报文转发方法及装置
CN103647716A (zh) * 2013-11-22 2014-03-19 上海斐讯数据通信技术有限公司 一种数据包快速转发方法及装置
US20150063118A1 (en) * 2013-08-05 2015-03-05 Akademia Gomiczo-Hutnicza im. Stanislawa Staszica w Krakowie Device for multipath routing of packets in computer networking and the method for its use
US20150319079A1 (en) * 2010-06-30 2015-11-05 Cisco Technology, Inc., A Corporation Of California Service Node Using Services Applied by an Application Node
CN107395504A (zh) * 2017-07-28 2017-11-24 江西山水光电科技股份有限公司 一种超长帧业务报文转发的方法及装置
CN107995130A (zh) * 2017-12-05 2018-05-04 西安交大捷普网络科技有限公司 一种分片报文的快转方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101860487A (zh) * 2010-05-28 2010-10-13 中兴通讯股份有限公司 互联网协议ip分片报文的转发方法及接口板
US20150319079A1 (en) * 2010-06-30 2015-11-05 Cisco Technology, Inc., A Corporation Of California Service Node Using Services Applied by an Application Node
CN102123082A (zh) * 2011-01-14 2011-07-13 中兴通讯股份有限公司 数据包转发方法和设备
CN102957600A (zh) * 2011-08-19 2013-03-06 中兴通讯股份有限公司 一种数据报文转发方法及装置
CN102638453A (zh) * 2012-03-13 2012-08-15 广州华多网络科技有限公司 一种基于Linux系统服务器的语音数据内核转发方法
CN102946347A (zh) * 2012-12-07 2013-02-27 烽火通信科技股份有限公司 一种加速Linux系统本地数据包处理的方法及装置
US20150063118A1 (en) * 2013-08-05 2015-03-05 Akademia Gomiczo-Hutnicza im. Stanislawa Staszica w Krakowie Device for multipath routing of packets in computer networking and the method for its use
CN103647716A (zh) * 2013-11-22 2014-03-19 上海斐讯数据通信技术有限公司 一种数据包快速转发方法及装置
CN107395504A (zh) * 2017-07-28 2017-11-24 江西山水光电科技股份有限公司 一种超长帧业务报文转发的方法及装置
CN107995130A (zh) * 2017-12-05 2018-05-04 西安交大捷普网络科技有限公司 一种分片报文的快转方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112968844A (zh) * 2021-02-05 2021-06-15 武汉绿色网络信息服务有限责任公司 一种发送分片报文的方法与装置
CN112968844B (zh) * 2021-02-05 2022-05-31 武汉绿色网络信息服务有限责任公司 一种发送分片报文的方法与装置
CN113438097A (zh) * 2021-05-21 2021-09-24 翱捷科技股份有限公司 一种网络加速的实现方法及装置
CN113438097B (zh) * 2021-05-21 2022-08-23 翱捷科技股份有限公司 一种网络加速的实现方法及装置
CN113691554A (zh) * 2021-09-01 2021-11-23 深圳市大洲智创科技有限公司 一种提升网络设备数据转发性能的方法
CN117056378A (zh) * 2023-10-11 2023-11-14 北京人大金仓信息技术股份有限公司 一种缓存数据与全局实例数据的同步方法及相关设备
CN117056378B (zh) * 2023-10-11 2024-04-26 北京人大金仓信息技术股份有限公司 一种缓存数据与全局实例数据的同步方法及相关设备

Also Published As

Publication number Publication date
CN111404817B (zh) 2022-06-03

Similar Documents

Publication Publication Date Title
CN111404817B (zh) 一种提升网络通信设备分片数据包转发性能的方法及系统
US20200358886A1 (en) Data Transmission Method, Apparatus, And System
US8526441B2 (en) System and method for handling out-of-order frames
CN101217493B (zh) 一种tcp数据包的传输方法
JP2000332817A (ja) パケット処理装置
CN108881008A (zh) 一种数据传输的方法、装置和系统
CN110300081B (zh) 一种数据传输的方法和设备
CN101494605B (zh) 一种基于以太网驱动的数据转发方法和装置
WO2020063298A1 (zh) 处理tcp报文的方法、toe组件以及网络设备
WO2022022229A1 (zh) 一种处理报文的方法及装置
CN101436978A (zh) 使用udp协议进行可靠数据传输的方法
WO2017162117A1 (zh) 一种集群精确限速方法和装置
CN115002023A (zh) 一种链路聚合方法、链路聚合装置、电子设备及存储介质
WO2019243890A2 (en) Multi-port data transmission via udp
CN103166912A (zh) 一种数据包的传输方法、系统
EP1460804A2 (en) System and method for handling out-of-order frames (fka reception of out-of-order tcp data with zero copy service)
JP2015164295A (ja) 情報伝送システム、情報通信装置、情報伝送装置、及びプログラム
CN112929278B (zh) 一种网络通信设备多核并行快速转发数据包的方法及系统
CN109873763A (zh) 一种通信方法及设备
CN116089053A (zh) 一种数据处理方法、装置以及存储介质
WO2014100973A1 (zh) 视频处理方法、设备及系统
CN109428819B (zh) 传输数据的方法、网络组件、设备和计算机存储介质
CN113726635B (zh) 一种报文处理方法、装置及电子设备
JP2012049883A (ja) 通信装置およびパケット処理方法
CN117221417A (zh) 一种tcp/ip协议卸载引擎装置

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