CN112506674A - Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法 - Google Patents

Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法 Download PDF

Info

Publication number
CN112506674A
CN112506674A CN201910871217.2A CN201910871217A CN112506674A CN 112506674 A CN112506674 A CN 112506674A CN 201910871217 A CN201910871217 A CN 201910871217A CN 112506674 A CN112506674 A CN 112506674A
Authority
CN
China
Prior art keywords
linux
application
protocol stack
module
veth
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
CN201910871217.2A
Other languages
English (en)
Other versions
CN112506674B (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.)
Beijing Huayao Technology Co ltd
Original Assignee
Beijing Huayao 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 Beijing Huayao Technology Co ltd filed Critical Beijing Huayao Technology Co ltd
Priority to CN201910871217.2A priority Critical patent/CN112506674B/zh
Publication of CN112506674A publication Critical patent/CN112506674A/zh
Application granted granted Critical
Publication of CN112506674B publication Critical patent/CN112506674B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/541Interprogram communication via adapters, e.g. between incompatible applications
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0803Configuration setting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/50Address allocation
    • H04L61/5007Internet protocol [IP] addresses
    • 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/161Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明是一种Linux系统下用户态TCP/IP协议栈与Linux本地应用通信的系统及方法,该系统是由应用交付设备的应用程序模块与该应用交付设备的Linux本地应用通信模块构成,其中,所述的应用交付设备的应用程序模块内至少包括用户态TCP/IP协议栈模块、DPDK模块,特别地,在应用交付设备的应用程序模块内和Linux本地应用通信模块内对应地安装一对逻辑互通的虚拟网卡。本发明应用交付设备产品实现了本机用户态TCP/IP协议栈,通过DPDK在用户空间实现了虚拟网卡的收包和发包,进而实现了与Linux本地应用的通信,不需要物理网卡及网线;所有数据包在内存中进行传输,提升了通信性能。

Description

Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及 方法
技术领域
本发明涉及网络应用交付控制领域,特别涉及一种Linux系统下用户态TCP/IP协议栈与Linux本地应用通信的系统及方法。
背景技术
Linux系统是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux系统将自身划分为两部分,一部分为核心软件(kernel),也称作内核空间;另一部分为普通应用程序,这部分称为用户空间(Userspace)。用户空间中的代码运行在较低的特权级别上,只能看到允许它们使用的部分系统资源,并且不能使用某些特定的系统功能,也不能直接访问内核空间和硬件设备,以及其他一些具体的使用限制。
TCP/IP协议栈(TCP/IP Protocol Stack)是一个网络通讯模型,或称一整个网络传输协议家族,为互联网的基础通讯架构。这个协议家族的两个核心协议,包括TCP(传输控制协议)和IP(网际协议),为这个家族中最早通过的标准。由于在网络通讯协议普遍采用分层的结构,当多个层次的协议共同工作时,类似计算机科学中的堆栈。把TCP/IP协议栈放在Linux系统用户空间(userspace)来运行是一种技术趋势,由此带来的好处有很多,例如:由于不需要修改Linux内核源代码所以能使整个系统更稳定,不会造成整个操作系统(Operating System,简称OS)的重启进而造成系统对外提供的服务中断。另外,在Linux系统用户空间运行TCP/IP协议栈还能避免GPL(General Public License,GNU通用公共授权),从而保护公司自有的软件知识产权。
在APV的某些应用场景中,APV应用需要与本机的Linux本地应用程序进行通信,那么一般地,可以通过两块物理网卡实现:该场景中,需要将添加一块物理网卡,由Linux内核接管,并通过物理网线与之前APV上的网卡进行互联,如图1所示。现有技术方案存在以下缺点:
1.需要添加新的物理网卡及网线,增加了系统的使用成本。
2.需要将物理网卡接入正确的物理网络设备才能实现网络的互通,增加了系统的维护及管理成本。
3.现有方案网络数据包需经过物理设备,传输效率较低。
发明内容
为克服已有技术中存在的问题,本发明提出并设计了一种无需物理网卡及网线即可实现的用户态TCP/IP协议栈与Linux本地应用通信的方法。
一种Linux系统下用户态TCP/IP协议栈与Linux本地应用通信的系统,是由应用交付设备的应用程序模块与该应用交付设备的Linux本地应用通信模块构成,其中,所述的应用交付设备中的应用程序模块内至少包括用户态TCP/IP协议栈模块、DPDK模块,所述的Linux本地应用通信模块模块内至少包括Socket接口、Linux TCP/IP协议栈、网卡设备驱动程序等,特别地,在应用交付设备的应用程序模块内和Linux本地应用通信模块内对应地安装一对逻辑互通的虚拟网卡。
一种Linux系统下用户态TCP/IP协议栈与Linux本地应用通信的方法,其特征是由以下步骤实现的:
1.在应用交付设备的应用程序模块内和Linux本地应用通信模块内对应地创建一对逻辑互通的虚拟网卡veth-0和虚拟网卡veth-1;
2.在所述Linux本地应用通信模块的协议栈中设置所述的虚拟网卡veth-1的IP地址;
3.通过应用交付设备的应用程序模块中的DPDK模块驱动所述的虚拟网卡veth-0,使得应用交付设备的应用程序模块中用户态TCP/IP协议栈可以使用虚拟网卡veth-0进行收发包;
4.在应用交付设备的应用程序模块的用户态TCP/IP协议栈中设置所述虚拟网卡veth-0的IP地址;
5.所述的应用交付设备与Linux本地应用进行通信。
本发明应用交付设备产品实现了自己的用户态TCP/IP协议栈,本发明通过DPDK在用户空间实现了虚拟网卡的收包和发包,进而实现了与Linux本地应用的通信,不需要物理网卡及网线,节约了成本;不需要进行物理连线操作,无需人工维护,提升了易用性;所有数据包在内存中进行传输,提升了通信性能。
附图说明
图1是本发明已有技术示意图;
图2是一种本发明系统结构实例示意图。
具体实施方式
在以下的叙述中,为了使读者更好地理解本申请而提出了许多技术细节。但是,本领域的普通技术人员可以理解,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也是本申请各权利要求所要求保护的技术方案。
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
如图2所示,一种Linux系统下用户态TCP/IP协议栈与Linux本地应用通信的系统,是由应用交付设备的应用程序模块与该应用交付设备的Linux本地应用通信模块构成,其中,所述的应用交付设备可以是Array(产品商标)APV(Application Delivery Controller应用交付控制器,简称:APV)系列产品,所述的Array APV应用程序110内至少包括APV用户态TCP/IP协议栈模块111、DPDK模块112,所述的Linux本地应用通信模块模块120内至少包括Socket接口121、Linux TCP/IP协议栈122、网卡设备驱动程序123等,特别地,在ArrayAPV应用程序模块内和Linux本地应用通信模块内对应地安装一对逻辑互通的虚拟网卡113和114。
一种Linux系统下用户态TCP/IP协议栈与Linux本地应用通信的方法,是由以下步骤实现的:
1.在应用交付设备的应用程序模块内和Linux本地应用通信模块内对应地创建一对逻辑互通的虚拟网卡,例如在Array APV中和Linux本地应用通信模块内对应地创建一对逻辑互通的veth-0和veth-1;
2.在所述Linux协议栈中设置所述虚拟网卡veth-1的IP地址,例如veth-1的IP地址为192.0.0.1;
3.通过Array APV应用程序模块中的DPDK模块驱动所述的veth-0,使得Array APV应用程序模块的用户态TCP/IP协议栈可以使用veth-0进行收发包;
4.在Array APV应用程序模块的用户态TCP/IP协议栈中设置veth-0的IP地址,例如veth-0的IP地址为:192.0.0.2;
5.Array APV与Linux本地应用通信模块可以使用192.0.0.1及192.0.0.2的IP地址进行通信。
进一步地,上述方法可以通过以下程序实现:
1.在Linux中创建一对Linux虚拟网卡veth-0及veth-1
ip link add dev veth-0 type veth peer name veth-1
2.启用这一对虚拟网卡
ip link set dev veth-0 up
ip link set dev veth-1 up
3.在Linux协议栈中设置veth-0的ip地址
ip addr add 192.0.0.1/24 dev veth-0
4.关闭veth-0的tso特性
ethtool -K veth-0 tso off
5.编程实现在APV用户态协议栈中管理veth-1,并将192.0.0.2/24地址加入veth-1中
需要说明的是,本发明各设备实施方式中提到的各单元都是逻辑单元,在物理上,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现,这些逻辑单元本身的物理实现方式并不是最重要的,这些逻辑单元所实现的功能的组合才是解决本发明所提出的技术问题的关键。此外,为了突出本发明的创新部分,本发明没有引入上述各设备实施方式以及与解决本发明所提出的技术问题关系不太密切的单元,但这并不表明不存在上述设备实施方式以及其它有关实施单元。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。

Claims (2)

1.一种Linux系统下用户态TCP/IP协议栈与Linux本地应用通信的系统,是由应用交付设备的应用程序模块与该应用交付设备的Linux本地应用通信模块构成,其中,所述的应用程序模块内至少包括用户态TCP/IP协议栈模块、DPDK模块,所述的Linux本地应用通信模块内至少包括Socket接口、Linux TCP/IP协议栈、网卡设备驱动程序,其特征是在应用交付设备的应用程序模块内和Linux本地应用通信模块内对应地安装一对逻辑互通的虚拟网卡。
2.一种Linux系统下用户态TCP/IP协议栈与Linux本地应用通信的方法,其特征是由以下步骤实现的:
1.在应用交付设备的应用程序模块内和Linux本地应用通信模块内对应地创建一对逻辑互通的虚拟网卡veth-0和虚拟网卡veth-1;
2.在所述Linux本地应用通信模块的协议栈中设置所述的虚拟网卡veth-1的IP地址;
3.通过应用交付设备中应用程序模块的DPDK模块驱动所述的虚拟网卡veth-0,使得所述应用程序模块中用户态TCP/IP协议栈可以使用虚拟网卡veth-0进行收发包;
4.在所述应用程序模块的用户态TCP/IP协议栈中设置所述的虚拟网卡veth-0的IP地址;
5.所述的应用交付设备的应用程序模块与Linux本地应用进行通信。
CN201910871217.2A 2019-09-16 2019-09-16 Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法 Active CN112506674B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910871217.2A CN112506674B (zh) 2019-09-16 2019-09-16 Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910871217.2A CN112506674B (zh) 2019-09-16 2019-09-16 Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法

Publications (2)

Publication Number Publication Date
CN112506674A true CN112506674A (zh) 2021-03-16
CN112506674B CN112506674B (zh) 2024-02-02

Family

ID=74923771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910871217.2A Active CN112506674B (zh) 2019-09-16 2019-09-16 Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法

Country Status (1)

Country Link
CN (1) CN112506674B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113726577A (zh) * 2021-09-01 2021-11-30 网络通信与安全紫金山实验室 基于应用和用户态协议栈的网络管理方法及网络架构
CN114640627A (zh) * 2022-03-10 2022-06-17 网宿科技股份有限公司 报文转发方法及装置、非易失性存储介质、处理器

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102685243A (zh) * 2012-05-22 2012-09-19 清华大学 一种轻量级tcp/ip协议栈的实现方法
CN103840994A (zh) * 2012-11-23 2014-06-04 华耀(中国)科技有限公司 一种用户端通过 vpn 访问内网的系统及方法
US20160226959A1 (en) * 2015-01-30 2016-08-04 Nicira, Inc. Edge datapath using inter-process transports for data plane processes
CN106020926A (zh) * 2016-04-29 2016-10-12 华为技术有限公司 一种用于虚拟交换机技术中数据传输的方法及装置
CN106101012A (zh) * 2016-07-06 2016-11-09 广州海格通信集团股份有限公司 一种卫星ip网关协议适配的方法
US20170163538A1 (en) * 2015-12-02 2017-06-08 Macau University Of Science And Technology PacketUsher: Accelerating Computer-Intensive Packet Processing
CN108270676A (zh) * 2016-12-31 2018-07-10 普天信息技术有限公司 一种基于IntelDPDK的网络数据处理方法及装置
CN108366018A (zh) * 2017-01-26 2018-08-03 普天信息技术有限公司 一种基于dpdk的网络数据包处理方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102685243A (zh) * 2012-05-22 2012-09-19 清华大学 一种轻量级tcp/ip协议栈的实现方法
CN103840994A (zh) * 2012-11-23 2014-06-04 华耀(中国)科技有限公司 一种用户端通过 vpn 访问内网的系统及方法
US20160226959A1 (en) * 2015-01-30 2016-08-04 Nicira, Inc. Edge datapath using inter-process transports for data plane processes
US20170163538A1 (en) * 2015-12-02 2017-06-08 Macau University Of Science And Technology PacketUsher: Accelerating Computer-Intensive Packet Processing
CN106020926A (zh) * 2016-04-29 2016-10-12 华为技术有限公司 一种用于虚拟交换机技术中数据传输的方法及装置
CN106101012A (zh) * 2016-07-06 2016-11-09 广州海格通信集团股份有限公司 一种卫星ip网关协议适配的方法
CN108270676A (zh) * 2016-12-31 2018-07-10 普天信息技术有限公司 一种基于IntelDPDK的网络数据处理方法及装置
CN108366018A (zh) * 2017-01-26 2018-08-03 普天信息技术有限公司 一种基于dpdk的网络数据包处理方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
ZONGYAO LI: ""HPSRouter: A high performance software router based on DPDK"", 《2018 20TH INTERNATIONAL CONFERENCE ON ADVANCED COMMUNICATION TECHNOLOGY (ICACT)》 *
别体伟;华蓓;: "用户空间协议栈的并行化与性能优化", 电子技术, no. 08 *
赵欢欢;张根全;张惠鑫;: "基于DPDK混合中断轮询模式的报文传输框架", 无线电通信技术, no. 03 *
马骥: ""一种基于DPDK的双协议栈实现系统及实现方法"", 《科技成果》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113726577A (zh) * 2021-09-01 2021-11-30 网络通信与安全紫金山实验室 基于应用和用户态协议栈的网络管理方法及网络架构
CN113726577B (zh) * 2021-09-01 2023-10-24 网络通信与安全紫金山实验室 基于应用和用户态协议栈的网络管理方法及网络架构
CN114640627A (zh) * 2022-03-10 2022-06-17 网宿科技股份有限公司 报文转发方法及装置、非易失性存储介质、处理器
CN114640627B (zh) * 2022-03-10 2024-02-20 网宿科技股份有限公司 报文转发方法及装置、非易失性存储介质、处理器

Also Published As

Publication number Publication date
CN112506674B (zh) 2024-02-02

Similar Documents

Publication Publication Date Title
CN101266590B (zh) 动态切换设备配置的方法和系统
US5537558A (en) Apparatus and method for communicating multiple devices through one PCMCIA interface
CN100405303C (zh) 数据处理系统
US20070005867A1 (en) Virtual peripheral device interface and protocol for use in peripheral device redirection communication
CN101957808B (zh) 多cpu间的通信方法、系统及cpu
EP2862065A1 (en) Intermediary virtual machine task management
KR20100101677A (ko) 통합된 커넥터 아키텍처
CN103942178A (zh) 多核处理器上实时操作系统与非实时操作系统之间的通信方法
CN102662910B (zh) 基于嵌入式系统的网络交互体系及网络交互方法
CN113312141B (zh) 用于卸载串行端口模拟的计算机系统、存储介质和方法
CN106127059B (zh) 一种arm平台上可信密码模块的实现和服务方法
CN112506674B (zh) Linux系统下用户态TCP/IP协议栈与本地应用通信的系统及方法
US7636797B2 (en) LPC configuration sharing method
US20160077986A1 (en) Electronic apparatus providing real-time switching and sharing of usb electronic devices among hosts
JP4444101B2 (ja) バスシステム、バスシステム内で用いるためのステーション、及びバスインタフェース
CN113157624B (zh) 一种串口通信方法、装置、设备及存储介质
US20240086339A1 (en) Systems, methods, and devices for accessing a device operating system over an interconnect
CN112035900B (zh) 一种高性能密码卡以及其通信方法
US20200007400A1 (en) Systems and methods for extending link layer discovery over virtual ethernet bridges
CN117909998A (zh) 一种在云电脑共享使用宿主机硬件加密卡的方法
US11249934B2 (en) Data access method and apparatus
CN110659143A (zh) 一种容器间的通讯方法、装置及电子设备
US10075398B2 (en) Systems and methods for enabling a host system to use a network interface of a management controller
CN116136790A (zh) 任务处理方法和装置
KR20000035025A (ko) 클라이언트 전원이 오프되어 있는 동안에 클라이언트 컴퓨터 시스템의 개개의 초기화 셋팅에 원격으로 억세스하기 위한 데이터 처리 시스템 및 방법

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