CN109361723B - 一种udp有效报文发送时序控制方法 - Google Patents
一种udp有效报文发送时序控制方法 Download PDFInfo
- Publication number
- CN109361723B CN109361723B CN201810349149.9A CN201810349149A CN109361723B CN 109361723 B CN109361723 B CN 109361723B CN 201810349149 A CN201810349149 A CN 201810349149A CN 109361723 B CN109361723 B CN 109361723B
- Authority
- CN
- China
- Prior art keywords
- network
- sending
- data
- message
- length
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/62—Establishing a time schedule for servicing the requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
- H04L49/9063—Intermediate storage in different physical parts of a node or terminal
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/161—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields
- H04L69/162—Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields involving adaptations of sockets based mechanisms
-
- 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/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/164—Adaptation or special uses of UDP protocol
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Communication Control (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种UDP有效报文发送时序控制方法,采用通用硬件与软件的相结合,用原始套接字技术,直接绕过操作系统的协议栈和低层MAC,可完全控制低层网络报文的任意组包及参数修改,并且采用多线程技术将数据填充和发送分开,收发各自独享1个CPU核,可确保网络全速发送,同时采用无效网络报文填充有效网络报文间的时间,达到纳秒级控制有效网络报文间的时间间隔。
Description
技术领域
本发明涉及网络技术领域,特别涉及一种UDP有效报文发送时序控制方法。
背景技术
随着网络技术的不断发展,网络技术也在嵌入式实时系统中得到普遍应用,为适应不同的实时应用需求,甚至还出现了各种实时协议,以确保应用的实时性;但上述实时应用基本都是在10微秒到毫秒量级的精度。
由于网络连接的便利、经济和良好扩展性,目前也用在了高速数据采集和回放系统。这类系统对有效网络报文的间隔时间控制一般都要求在纳秒级,采用过去常规的软件技术无法实现,一般需采用定制开发专用硬件如FPGA来实现高精度有效网络报文发送时序控制,这种实现方式有如下缺点:
1、研制成本高昂,需要新增加非标软硬件设备,开发成本高,而且是不同应用可能需要不同的软硬件;
2、维护成本高,为了适应不同的需求,至少需要修改FPGA程序,并调试测试,这需要花费大量的时间;
3、兼容性较差,网络协议比较复杂,硬件层面实现时基本是只满足部分网络协议功能,很多网络控制、管理协议无法满足要求。
还有一种方式是可以自研网卡的驱动,在驱动低层实现网络报文间隔时序的控制,但其通用性很差,也会存在协议的兼容性问题。
发明内容
本发明为解决上述问题,提供一种UDP有效报文发送时序控制方法,采用原始套接字,直接绕过操作系统的协议栈和低层MAC,可完全控制低层网络报文的任意组包及参数修改,并且采用多线程技术将数据填充和发送分开,并各自独享1个CPU核,可确保网络全速发送,同时采用无效网络报文填充有效网络报文间的时间,达到纳秒级控制有效网络报文间的时间间隔。
为达到上述目的,本发明采用的技术方案是:一种UDP有效报文发送时序控制方法,包括:
S1、软件主程序创建原始套接字,对低层网络报文组包完全控制;
S2、内存映射套接字内部发送缓冲区到用户空间;
S3、软件主程序分别创建两个线程,为填充数据线程和发射数据线程;
S4、填充数据线程根据有效网络报文的长度计算链路发送时间,并根据网络协议标准组织好报文并放入发送缓冲区,设置数据需要发送标志,填充数据线程根据有效网络报文间的间隔时间计算无效网络报文长度,并将无效网络报文并放入发送缓冲区,设置数据需要发送标志;
S5、发送数据线程不断查询发送缓冲区的发送标志是否为有效标志,如果是,将调用操作系统内核启动DMA发送数据,如果没有有效的标志,将继续查询;
S6、经过上层软件按一定时序要求组织的网络报文最终经DMA发送到源网卡的PHY层,源网卡和目标网卡经过网络线点对点通信或是交换机互联,若是网络点对点通信,目标网卡将自动对无效报文丢弃,若是经过交换机互连,在交换层将自动对无效报文丢弃。
进一步地,原始套接字的发送缓冲区通过内存映射方式映射到用户空间,应用层软件能直接控制网络报文的发送;内存映射后将返回的地址保留,供后续所述数据填充线程访问;
进一步地,填充数据线程和所述发送数据线程固定放在2个独立CPU核上运行,所述填充数据线程和所述发送数据线程通过发送缓冲区中的发送标志通信;
进一步地,填充数据线程根据有效网络报文的长度计算链路发送时间和填充数据线程根据有效网络报文间的间隔时间计算无效网络报文长度对于千兆网络均是通过t=(8+12+LMAC+ LIP+LUDP+Ldat)*8ns这一公式实现;其中:其中LMAC是网络报文中MAC头的长度,LIP是网络报文中IP头的长度,LUDP是网络报文中UDP协议头的长度,Ldat是网络报文中数据的长度;8+12=20字节是网络链路层传输数据时需要的前导数据及千兆网络报文最小时间间隔对应的数据长度,千兆情况下,8ns为内部工作时钟的周期即125MHz;
进一步地,填充数据线程根据有效网络报文间的间隔时间计算无效网络报文长度时需在网络报文组包阶段人为的使MAC/IP/UDP字段的关键参数为符合协议要求;
进一步地,关键参数包括长度、IP校验和MAC地址等。
综上所述,本发明具备以下优点:
本发明采用原始套接字,直接绕过操作系统的协议栈和低层MAC,可完全控制低层网络报文的任意组包及参数修改,并且采用多线程技术将数据填充和发送分开,并各自独享1个CPU核,可确保网络全速发送,同时采用无效网络报文填充有效网络报文间的时间,达到纳秒级控制有效网络报文间的时间间隔。
附图说明
图1是本发明工作流程示意图。
具体实施方式
下面结合附图及实施例对本发明作进一步描述:
实施例1:
一种UDP有效报文发送时序控制方法,网络报文的通信双方可以通过网线点对点连接,也可通过能在2层或3层交换下线速工作的交换机连接,即源网卡和目标网卡经过网络线点对点通信或是交换机互联,网络报文的发送方启动后,软件主程序先创建原始套接字,以便应用层完全控制网络报文组包过程;然后将原始套接字的发送缓冲区通过内存映射方式映射到用户空间,以便应用层软件直接控制网络报文的发送;而内存映射后将返回的地址保留,供后续数据填充线程访问发送空间用。
软件主程序分别创建两个线程,为填充数据线程和发射数据线程,两者各自独享1个CPU核,避免核的上下文切换导致的数据间隔时间的不稳定,具体的,填充数据线程不断查询可用的发送缓冲区、填充数据(包括有效网络报文和无效网络报文),并设置待发送标志,发送数据线程不断查询是否有数据需要发送。
填充数据线程和发射数据线程通过发送缓冲区中的发送标志通信。
在填充数据线程中,首先检查是否有可用的发送缓冲区,然后根据有效网络报文的长度计算链路发送时间,在千兆网络中具体通过如下公式计算:
t=(8+12+LMAC+ LIP+LUDP+Ldat)*8ns
其中:其中LMAC是网络报文中MAC头的长度,LIP是网络报文中IP头的长度,LUDP是网络报文中UDP协议头的长度,Ldat是网络报文中数据的长度;8+12=20字节是网络链路层传输数据时需要的前导数据及千兆网络报文最小时间间隔对应的数据长度,千兆情况下,8ns为内部工作时钟的周期即125MHz。
链路发送时间计算完成后,根据网络协议标准组织好报文并放入发送缓冲区,设置数据需要发送标志。
同理,无效网络报文长度同样根据上述公式和有效网络报文间的间隔时间计算,具体的,LMAC、LIP、LUDP等都是已知的,即可算出Ldat,值得注意的是,填充数据线程根据有效网络报文间的间隔时间计算无效网络报文长度时需在网络报文组包阶段人为的使MAC/IP/UDP字段的关键参数为符合协议要求,改关键参数为长度、IP校验和MAC地址等。
发送数据线程不断查询发送缓冲区的发送标志是否为有效标志,如果是,将调用操作系统内核启动DMA发送数据,如果没有有效的标志,将继续查询,这样能确保低层是以全速在发送数据。
经过上层软件按一定时序要求组织的网络报文最终经DMA发送到源网卡的PHY层,而众所周知,源网卡和目标网卡经过网络线点对点通信或是交换机互联,若是网络点对点通信,目标网卡将自动对无效报文丢弃,若是经过交换机互连,在交换层将自动对无效报文丢弃,在这种方式下,无论哪种连接方式,都可使到达应用层的有效数据报文的间隔时间是均匀的、可控的,且控制有效网络报文之间的时间间隔精度可达纳秒级。
综上所述,本方式是通过硬件与软件的结合,成本低,且后期仅需要调整软件,可满足不同时序控制需求,维护成本低,且本方式兼容性好,可支持标准的上层协议如单播UDP、多播UDP、TCP等,还支持链路层协议
上述实施方式只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所做的等效变换或修饰,都应涵盖在本发明的保护范围之内。
Claims (5)
1.一种UDP有效报文发送时序控制方法,其特征在于,包括:
S1、软件主程序创建原始套接字,对低层网络报文组包完全控制;
S2、将原始套接字的发送缓冲区通过内存映射方式映射到用户空间,以便应用层软件直接控制网络报文的发送;而内存映射后将返回的地址保留,供后续数据填充线程访问发送空间用;
S3、软件主程序分别创建两个线程,为填充数据线程和发射数据线程;
S4、填充数据线程根据有效网络报文的长度计算链路发送时间,并根据网络协议标准组织好报文并放入发送缓冲区,设置数据需要发送标志,填充数据线程根据有效网络报文间的间隔时间计算无效网络报文长度,并将无效网络报文并放入发送缓冲区,设置数据需要发送标志;
S5、发送数据线程不断查询发送缓冲区的发送标志是否为有效标志,如果是,将调用操作系统内核启动DMA发送数据,如果没有有效的标志,将继续查询;
S6、经过上层软件按一定时序要求组织的网络报文最终经DMA发送到源网卡的PHY层,源网卡和目标网卡经过网络线点对点通信或是交换机互联,若是网络点对点通信,目标网卡将自动对无效报文丢弃,若是经过交换机互连,在交换层将自动对无效报文丢弃。
2.根据权利要求1所述一种UDP有效报文发送时序控制方法,其特征在于:所述填充数据线程和所述发送数据线程固定放在2个独立CPU核上运行,所述填充数据线程和所述发送数据线程通过发送缓冲区中的发送标志通信。
3.根据权利要求2所述一种UDP有效报文发送时序控制方法,其特征在于:所述填充数据线程根据有效网络报文的长度计算链路发送时间和所述填充数据线程根据有效网络报文间的间隔时间计算无效网络报文长度对于千兆网络均是通过t=(8+12+LMAC+ LIP+LUDP+Ldat)*8ns这一公式实现;其中:其中LMAC是网络报文中MAC头的长度,LIP是网络报文中IP头的长度,LUDP是网络报文中UDP协议头的长度,Ldat是网络报文中数据的长度;8+12=20字节是网络链路层传输数据时需要的前导数据及千兆网络报文最小时间间隔对应的数据长度,千兆情况下,8ns为内部工作时钟的周期即125MHz。
4.根据权利要求1或3所述一种UDP有效报文发送时序控制方法,其特征在于:所述填充数据线程根据有效网络报文间的间隔时间计算无效网络报文长度时需在网络报文组包阶段人为的使MAC/IP/UDP字段的关键参数为符合协议要求。
5.根据权利要求4所述一种UDP有效报文发送时序控制方法,其特征在于:所述关键参数包括长度、IP校验和MAC地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810349149.9A CN109361723B (zh) | 2018-04-18 | 2018-04-18 | 一种udp有效报文发送时序控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810349149.9A CN109361723B (zh) | 2018-04-18 | 2018-04-18 | 一种udp有效报文发送时序控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109361723A CN109361723A (zh) | 2019-02-19 |
CN109361723B true CN109361723B (zh) | 2021-08-31 |
Family
ID=65349608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810349149.9A Active CN109361723B (zh) | 2018-04-18 | 2018-04-18 | 一种udp有效报文发送时序控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109361723B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111447302B (zh) * | 2020-03-30 | 2022-12-27 | 山东华辰连科通信网络有限公司 | 一种利用raw socket模拟多客户端测试DHCP的方法和系统 |
CN113076178B (zh) * | 2021-02-25 | 2024-01-02 | 厦门科灿信息技术有限公司 | 报文存储方法、装置及设备 |
CN116318801B (zh) * | 2022-12-26 | 2024-07-12 | 中国人民解放军战略支援部队信息工程大学 | 一种soho路由器数据修改方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008039455A2 (en) * | 2006-09-26 | 2008-04-03 | Kyocera Wireless Corp. | Socket based passive server |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
CN103200085A (zh) * | 2013-04-16 | 2013-07-10 | 中航网信(北京)科技有限公司 | 一种实现vxlan报文线速收发的方法及系统 |
CN103561032A (zh) * | 2013-11-08 | 2014-02-05 | 山东大学 | TCP/IP协议下Modbus设备网络通信的方法 |
CN103997500A (zh) * | 2014-06-04 | 2014-08-20 | 西北工业大学 | 一种轻量级实时tcp/ip协议栈的实现方法 |
CN104917814A (zh) * | 2015-04-21 | 2015-09-16 | 浙江大学 | 一种基于java的网络传输协议转换中间件 |
CN106101026A (zh) * | 2016-06-07 | 2016-11-09 | 深圳证券通信有限公司 | 一种高可靠低延迟的udp多播方法 |
-
2018
- 2018-04-18 CN CN201810349149.9A patent/CN109361723B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008039455A2 (en) * | 2006-09-26 | 2008-04-03 | Kyocera Wireless Corp. | Socket based passive server |
CN101540727A (zh) * | 2009-05-05 | 2009-09-23 | 曙光信息产业(北京)有限公司 | 一种ip报文的硬件分流方法 |
CN103200085A (zh) * | 2013-04-16 | 2013-07-10 | 中航网信(北京)科技有限公司 | 一种实现vxlan报文线速收发的方法及系统 |
CN103561032A (zh) * | 2013-11-08 | 2014-02-05 | 山东大学 | TCP/IP协议下Modbus设备网络通信的方法 |
CN103997500A (zh) * | 2014-06-04 | 2014-08-20 | 西北工业大学 | 一种轻量级实时tcp/ip协议栈的实现方法 |
CN104917814A (zh) * | 2015-04-21 | 2015-09-16 | 浙江大学 | 一种基于java的网络传输协议转换中间件 |
CN106101026A (zh) * | 2016-06-07 | 2016-11-09 | 深圳证券通信有限公司 | 一种高可靠低延迟的udp多播方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109361723A (zh) | 2019-02-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109361723B (zh) | 一种udp有效报文发送时序控制方法 | |
CN106302199B (zh) | 一种基于三层交换机设备的用户态协议栈实现方法及系统 | |
US7526577B2 (en) | Multiple offload of network state objects with support for failover events | |
US10587734B2 (en) | Method for operating a software defined network and a software defined network | |
US11489945B2 (en) | TCP packet processing method, toe component, and network device | |
CN101068198B (zh) | 楼宇系统中传输信息的方法、装置和系统 | |
US20030165160A1 (en) | Gigabit Ethernet adapter | |
EP1385313B1 (en) | System and method for managing multiple protocol stacks | |
US8670451B2 (en) | Network system, terminal, and gateway | |
US7269661B2 (en) | Method using receive and transmit protocol aware logic modules for confirming checksum values stored in network packet | |
KR20140048815A (ko) | Tcp 가속화를 포함하는 내장형 자동차용 획득 장치를 위한 분산형 측정 배열 | |
CN111935009B (zh) | 数据包路由方法、装置、设备、系统及存储介质 | |
CN1777142A (zh) | 在网络环境仿真中采用虚拟网卡实现数据通信的方法 | |
CN107332834B (zh) | 一种Windows系统下PRP网络连接方法 | |
EP3633934A1 (en) | Sdn-based arp implementation method and apparatus | |
WO2021088813A1 (zh) | 报文封装方法及装置、报文解封装方法及装置 | |
CN101778093A (zh) | 基于udp协议的数据传输方法 | |
CN101635676B (zh) | 一种报文处理方法和一种网络设备 | |
EP1515511A2 (en) | Multiple offload of network state objects with support for failover events | |
CN109005150B (zh) | 基于以太网mac地址的无链接通信方法及系统 | |
CN102255800A (zh) | Can总线上ip数据包和can消息之间数据格式相互转换的方法 | |
CN106506306A (zh) | 一种数据报文传输的方法和装置 | |
US9461952B2 (en) | Method for processing messages | |
CN110912942B (zh) | 一种降低udp报文发送时延的方法 | |
CN100518134C (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 |