CN101626337B - 基于虚拟网卡技术的多隧道并发模型实现方法 - Google Patents

基于虚拟网卡技术的多隧道并发模型实现方法 Download PDF

Info

Publication number
CN101626337B
CN101626337B CN2009100338515A CN200910033851A CN101626337B CN 101626337 B CN101626337 B CN 101626337B CN 2009100338515 A CN2009100338515 A CN 2009100338515A CN 200910033851 A CN200910033851 A CN 200910033851A CN 101626337 B CN101626337 B CN 101626337B
Authority
CN
China
Prior art keywords
tunnel
microsoft loopback
loopback adapter
packet
client
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
Application number
CN2009100338515A
Other languages
English (en)
Other versions
CN101626337A (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.)
NANJING CITY LINKAGE SYSTEM INTEGRATION CO Ltd
Linkage Technology Co Ltd
Original Assignee
NANJING CITY LINKAGE SYSTEM INTEGRATION 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 NANJING CITY LINKAGE SYSTEM INTEGRATION CO Ltd filed Critical NANJING CITY LINKAGE SYSTEM INTEGRATION CO Ltd
Priority to CN2009100338515A priority Critical patent/CN101626337B/zh
Publication of CN101626337A publication Critical patent/CN101626337A/zh
Application granted granted Critical
Publication of CN101626337B publication Critical patent/CN101626337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

基于虚拟网卡技术的多隧道并发模型实现方法:建立隧道时,应用程序的处理进程获取虚拟地址,进行虚拟网卡使用实例的注册,建立与虚拟网卡通信的文件描述字;当虚拟网卡接收到协议栈转发的数据时,根据数据包的目的地址,将数据包转发给相应的文件描述字,从而交由正确的处理进程进行处理;每个隧道的处理过程分为建立隧道、数据转发以及拆除隧道:建立隧道时客户端发送建立隧道请求,隧道网关的应用程序fork一个新的进程来处理该请求:隧道建立成功后,隧道网关负责转发客户端与应用服务器之间的通信数据:当客户端断开tcp连接或是超时,拆除隧道连接,隧道网关将回收地址池分配出去的虚拟地址,进行虚拟网卡虚拟实例注销。

Description

基于虚拟网卡技术的多隧道并发模型实现方法
一、技术领域
本发明涉及基于虚拟网卡技术的多隧道并发模型实现方法。涉及大并发量、大数据量的数据处理,需要多个进程或是线程能并发的与虚拟网卡进行数据交互的方法。
二、背景技术
虚拟网卡技术被广泛的应用于VPN领域,如开源项目OpenVpn,其就使用了tun/tap驱动程序来实现虚拟网卡的功能。
使用tun驱动的应用程序在初始化虚拟网卡时,会建立一个文件描述字fd,此后,应用程序通过该文件描述字与虚拟网卡进行数据交互。
大并发量、大数据量的TCP应用程序模型,往往都是一个进程或一个线程来处理一个独立的Tcp连接,通过启用多进程或多线程的方式,来实现对大并发量、大数据量的支持。如果以此基础来实现多隧道的并发模型,这就需要多个进程或是线程能并发的与虚拟网卡进行数据交互。使用tup驱动来实现此种应用时,处理并发连接的进程和使用tun驱动的进程之间需要进行额外的数据通信,显然,这存在着一定的性能缺陷。
三、发明内容
本发明的发明目的是:提供一种基于虚拟网卡技术的多隧道并发模型实现方法,尤其是实现一种虚拟网卡驱动程序,该驱动能支持与多进程间的并发通信,从而支持多隧道的建立,解决性能问题。通过对虚拟网卡驱动的修改实现:修改启动虚拟网卡的驱动操作,并在此基础之上,增加注册虚拟网卡实例的功能。以此基础来实现多进程或是多线程与虚拟网卡的并发数据交互,从而支持大并发量、大数据量的处理。
一种基于虚拟网卡技术的支持大并发量、大数据量的多隧道并发模型实现方法:建立隧道时,应用程序的处理进程获取虚拟地址,然后进行虚拟网卡使用实例的注册,建立与虚拟网卡通信的文件描述字;当虚拟网卡接收到协议栈转发的数据时,根据数据包的目的地址(即虚拟地址),将数据包转发给相应的文件描述字,从而交由正确的处理进程进行处理;
每个进程处理一个隧道,一个隧道的处理过程可分为建立隧道、数据转发以及拆除隧道,具体步骤如下:
●建立隧道
客户端发送建立隧道请求,隧道网关的应用程序fork一个新的进程来处理该请求:
1)fork一个新的进程,处理客户端的建立TCP连接请求;
2)接收客户端的建立隧道请求;
3)选取一个未使用的虚拟地址,准备分配给客户端;
4)以该虚拟地址为关键IP,调用虚拟网卡的DUMMY_INSTANCE_REGISTER服务,完成虚拟网卡使用实例的注册;
5)返回给客户端隧道建立成功报文;
●数据转发
隧道建立成功后,隧道网关负责转发客户端与应用服务器之间的通信数据:
1)客户端将IP数据包封装入隧道报文,将隧道报文发送给隧道网关;
2)隧道网关处理进程接收到数据包后,解析隧道报文,提取其中封装的IP数据包,然后将IP数据包通过与虚拟网卡关联的文件描述字,提交给虚拟网卡驱动;
3)虚拟网卡驱动将数据包提交给协议栈,协议栈通过路由匹配,将数据包转发给应用服务器;
4)应用服务器将响应数据包发送给隧道网关;
5)隧道网关协议栈根据路由,将数据包传送给虚拟网卡;
6)虚拟网卡驱动根据数据包的目的地址(虚拟地址),查看与其对应的虚拟网卡实例是否已经注册,如果已经注册,则唤醒相应的隧道网关处理进程读取数据;否则丢弃该数据包;
7)隧道网关处理进程读取数据之后,将其封装入隧道报文,发送给客户端;
●拆除隧道
当客户端断开tcp连接或是超时时,则需要拆除隧道连接,隧道网关将回收地址池分配出去的虚拟地址,并调用虚拟网卡的DUMMY_INSTANCE_UNREGISTER服务,进行虚拟网卡的虚拟实例的注销。
本发明的有益效果是:实现了基于虚拟网卡技术的多隧道并发模型;解决了使用tun驱动的性能低下的问题,性能提升50%以上;虚拟网卡驱动的实现原理基本同tun驱动,本发明修改了启动虚拟网卡的驱动操作,并在此基础之上,增加了注册虚拟网卡实例的功能。
四、附图说明
图1是本发明关系图
图2是隧道建立过程示意图
图3是转发数据示意图
图4是隧道拆除过程示意图
五、具体实施方式
如图所示:基于虚拟网卡技术的支持大并发量、大数据量的多隧道并发模型实现方法:建立隧道时,应用程序的处理进程获取虚拟地址,进行虚拟网卡使用实例的注册,建立与虚拟网卡通信的文件描述字;当虚拟网卡接收到协议栈转发的数据时,根据数据包的目的地址(即虚拟地址),将数据包转发给相应的文件描述字,从而交由正确的处理进程进行处理。
虚拟网卡驱动的实现过程如下:原理说明
1)启动虚拟网卡
启动虚拟网卡时,不再建立文件描述字与虚拟网卡的对应关系。虚拟网卡驱动只完成IP地址设置,路由设置等基本工作;
2)注册虚拟网卡使用实例
应用程序注册虚拟网卡使用实例时,以从地址分配模块获取的虚拟地址作为关键字,传送给虚拟网卡驱动;虚拟网卡驱动添加一个数据包接收缓存队列,创建一个文件描述字,并使得该文件描述字、添加的数据包接收缓存队列,关键字虚拟地址这三者相互关联;
3)数据转发
转发应用程序数据
虚拟网卡驱动接收到应用程序提交的数据时,只需简单的将数据包转交给系统协议栈,由协议栈进行下一步处理;
Figure G2009100338515D00032
转发协议栈数据
虚拟网卡驱动接收到系统协议栈提交的数据时,判断数据包的目的地址是否已注册了实例,没有则丢弃该数据包,否则将数据包加入相应的数据包接收队列;应用程序可以通过注册使用实例时建立的文件描述字,读取该数据包;
4)注销虚拟网卡使用实例
应用程序注销虚拟网卡使用实例时,以注册的虚拟地址作为关键字,传送给虚拟网卡驱动;虚拟网卡驱动释放资源,删除与该实例相关联的数据包接收缓存队列,关闭关联的文件描述字;
5)关闭虚拟网卡
虚拟网卡驱动停止服务,删除虚拟路由,虚拟网卡地址;
●宏定义
#define INSTANCE_MAX_NUM  1024             /*支持的最大实例数*/
Figure G2009100338515D00033
DUMMY_NET_DEV_REGISTER                     /*启动虚拟网卡*/
Figure G2009100338515D00034
DUMMY_NET_DEV_UNREGISTER                   /*关闭虚拟网卡*/
Figure G2009100338515D00035
DUMMY_INSTANCE_REGISTER                    /*注册实例*/
Figure G2009100338515D00036
DUMMY_INSTANCE_UNREGISTER                  /*注销实例*/
●数据结构定义
struct lsv_dev_struct_t{
unsigned long flags;
int            attached;
uid_t    owner;
wait_queue_head_t      read_wait[INSTANCE_MAX_NUM];/*等待队列*/
struct sk_buff_head    readq[INSTANCE_MAX_NUM];    /*网络缓冲区队列*/
struct net_device         *dev;    /*linux抽象网络设备结构*/
struct net_device_stats  stats;    /*网卡状态信息结构*/
struct fasync_struct     *fasync;  /*文件异步通知结构*/
unsigned long if_flags;
u8 dev_addr[ETH_ALEN];
u32 chr_filter[2];
u32 net_filter[2];
};
2.多隧道模型的实现过程:
客户端,隧道网关以及应用服务器的关系参见图1,多隧道模型实现包括系统初始化、建立隧道、数据转发以及拆除隧道:
●系统初始化
隧道网关应用程序初始化,建立TCP多进程服务模型,并打开虚拟网卡生成的字符设备,调用DUMMY_NET_DEV_REGISTER服务,启动虚拟网卡;
●建立隧道
客户端发送建立隧道请求,隧道网关的应用程序fork一个新的进程来处理该请求,可参见图2;
1)fork一个新的进程,处理客户端的建立TCP连接请求;
2)接收客户端的建立隧道请求;
3)选取一个未使用的虚拟地址,准备分配给客户端;
4)以该虚拟地址为关键IP,调用虚拟网卡的DUMMY_INSTANCE_REGISTER服务,完成虚拟网卡使用实例的注册;
5)返回给客户端隧道建立成功报文;
●数据转发
隧道建立成功后,隧道网关负责转发客户端与应用服务器之间的通信数据,可参见图3,具体过程如下:
1)客户端将IP数据包封装入隧道报文,将隧道报文发送给隧道网关;
2)隧道网关处理进程接收到数据包后,解析隧道报文,提取其中封装的IP数据包,然后将IP数据包通过与虚拟网卡关联的文件描述字,提交给虚拟网卡驱动;
3)虚拟网卡驱动将数据包提交给协议栈,协议栈通过路由匹配,将数据包转发给应用服务器;
4)应用服务器将响应数据包发送给隧道网关;
5)隧道网关协议栈根据路由,将数据包传送给虚拟网卡;
6)虚拟网卡驱动根据数据包的目的地址(虚拟地址),查看与其对应的虚拟网卡实例是否已经注册,如果已经注册,则唤醒相应的隧道网关处理进程读取数据;否则丢弃该数据包;
7)隧道网关处理进程读取数据之后,将其封装入隧道报文,发送给客户端;
●拆除隧道
当客户端断开tcp连接或是超时时,则需要拆除隧道连接,隧道网关将回收地址池分配出去的虚拟地址,并调用虚拟网卡的DUMMY_INSTANCE_UNREGISTER服务,进行虚拟网卡的虚拟实例的注销。

Claims (1)

1.一种基于虚拟网卡技术的多隧道并发模型实现方法:建立隧道时,应用程序的处理进程获取虚拟地址,进行虚拟网卡使用实例的注册,建立与虚拟网卡通信的文件描述字;当虚拟网卡接收到协议栈转发的数据时,根据数据包的目的地址即虚拟地址,将数据包转发给相应的文件描述字,从而交由正确的处理进程进行处理;
其特征是每个进程处理一个隧道,一个隧道的处理过程分为建立隧道、数据转发以及拆除隧道,具体步骤如下:
●建立隧道
客户端发送建立隧道请求,隧道网关的应用程序fork一个新的进程来处理该请求:
1)fork一个新的进程,处理客户端的建立TCP连接请求;
2)接收客户端的建立隧道请求;
3)选取一个未使用的虚拟地址,准备分配给客户端;
4)以该虚拟地址为关键IP,调用虚拟网卡的DUMMY_INSTANCE_REGISTER服务,完成虚拟网卡使用实例的注册;
5)返回给客户端隧道建立成功报文;
●数据转发
隧道建立成功后,隧道网关负责转发客户端与应用服务器之间的通信数据:
1)客户端将IP数据包封装入隧道报文,将隧道报文发送给隧道网关;
2)隧道网关处理进程接收到数据包后,解析隧道报文,提取其中封装的IP数据包,然后将IP数据包通过与虚拟网卡关联的文件描述字,提交给虚拟网卡驱动;
3)虚拟网卡驱动将数据包提交给协议栈,协议栈通过路由匹配,将数据包转发给应用服务器;
4)应用服务器将响应数据包发送给隧道网关;
5)隧道网关协议栈根据路由,将数据包传送给虚拟网卡;
6)虚拟网卡驱动根据数据包的目的地址即虚拟地址,查看与其对应的虚拟网卡实例是否已经注册,如果已经注册,则唤醒相应的隧道网关处理进程读取数据;否则丢弃该数据包;
7)隧道网关处理进程读取数据之后,将其封装入隧道报文,发送给客户端;
●拆除隧道
当客户端断开TCP连接或是超时,则需要拆除隧道连接,隧道网关将回收地址池分配出去的虚拟地址,并调用虚拟网卡的DUMMY_INSTANCE_UNREGISTER服务,进行虚拟网卡的虚拟实例的注销。
CN2009100338515A 2009-06-18 2009-06-18 基于虚拟网卡技术的多隧道并发模型实现方法 Active CN101626337B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2009100338515A CN101626337B (zh) 2009-06-18 2009-06-18 基于虚拟网卡技术的多隧道并发模型实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2009100338515A CN101626337B (zh) 2009-06-18 2009-06-18 基于虚拟网卡技术的多隧道并发模型实现方法

Publications (2)

Publication Number Publication Date
CN101626337A CN101626337A (zh) 2010-01-13
CN101626337B true CN101626337B (zh) 2011-09-28

Family

ID=41522031

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2009100338515A Active CN101626337B (zh) 2009-06-18 2009-06-18 基于虚拟网卡技术的多隧道并发模型实现方法

Country Status (1)

Country Link
CN (1) CN101626337B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102377630A (zh) * 2011-10-13 2012-03-14 华为技术有限公司 基于流量工程隧道的虚拟专用网络实现方法及系统
CN103312661B (zh) * 2012-03-07 2016-02-17 腾讯科技(深圳)有限公司 一种服务访问方法及装置
CN102843292B (zh) * 2012-08-20 2015-05-27 成都卫士通信息产业股份有限公司 一种跨运营商网络的vpn数据处理方法及装置
CN107276873B (zh) * 2016-04-08 2020-03-24 深圳岚锋创视网络科技有限公司 一种访问服务的方法及装置
CN106412137B (zh) * 2016-12-20 2019-07-09 北京并行科技股份有限公司 一种文件下载系统及文件下载方法
CN108718268B (zh) * 2017-04-07 2022-01-28 格尔软件股份有限公司 一种提高vpn服务端并发处理性能的方法
CN108965088B (zh) * 2017-05-25 2021-11-30 中兴通讯股份有限公司 创建静态隧道的方法及装置
CN109525462B (zh) * 2018-12-14 2020-09-25 奇安信科技集团股份有限公司 网关测试方法及装置
CN109584668A (zh) * 2018-12-29 2019-04-05 中铁工程装备集团有限公司 一种基于虚拟现实和大数据的隧道掘进机实训平台
CN111786870B (zh) * 2019-04-04 2022-01-04 厦门网宿有限公司 数据传输方法及strongswan服务器
CN111786867B (zh) * 2019-04-04 2021-11-16 厦门网宿有限公司 一种数据传输方法及服务器
CN111786868B (zh) * 2019-04-04 2022-04-22 厦门网宿有限公司 服务器之间的数据传输方法及strongswan服务器
CN111245699B (zh) * 2020-01-15 2021-08-17 广州华多网络科技有限公司 远程通信服务控制方法、服务器及客户端
CN112491720B (zh) * 2020-11-10 2022-02-15 网宿科技股份有限公司 一种平滑升级方法及系统
CN112737915B (zh) * 2020-12-29 2022-10-25 优刻得科技股份有限公司 基于智能网卡的内网隧道跨域网关转发方法、系统、设备和介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007006321A (ja) * 2005-06-27 2007-01-11 Kddi R & D Laboratories Inc Vpnトンネル接続トポロジを決定する管理サーバ及びプログラム
CN101068189A (zh) * 2007-05-18 2007-11-07 清华大学 在IPv6中用主机间隧道支持IPv4应用程序的方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007006321A (ja) * 2005-06-27 2007-01-11 Kddi R & D Laboratories Inc Vpnトンネル接続トポロジを決定する管理サーバ及びプログラム
CN101068189A (zh) * 2007-05-18 2007-11-07 清华大学 在IPv6中用主机间隧道支持IPv4应用程序的方法

Also Published As

Publication number Publication date
CN101626337A (zh) 2010-01-13

Similar Documents

Publication Publication Date Title
CN101626337B (zh) 基于虚拟网卡技术的多隧道并发模型实现方法
EP1868093B1 (en) Method and system for a user space TCP offload engine (TOE)
CN103312601A (zh) 用户态到内核态的数据报文处理方法
CN110138553B (zh) 一种IPSec VPN网关数据包处理装置及方法
US20030115350A1 (en) System and method for efficient handling of network data
US7826350B1 (en) Intelligent network adaptor with adaptive direct data placement scheme
US8356112B1 (en) Intelligent network adaptor with end-to-end flow control
CN101599991A (zh) 一种基于高速通信协议的提升网络文件系统性能的方法
CN102469064A (zh) 通信实现方法及通信设备
US7573895B2 (en) Software assisted RDMA
CN104281493A (zh) 一种提升应用交付通讯平台多进程程序性能的方法
CN103154897A (zh) 用于电信网络应用的核抽象层
CN103164244A (zh) 一种基于通用可扩展固件接口的固件系统远程更新方法
CN110167197B (zh) Gtp下行数据传输优化方法及装置
CN101052031A (zh) 苹果计算机与无线通讯终端进行数据交互的方法
US6839732B1 (en) Efficient use of domain socket pairs in communication for tightly coupled transactions
CN106339263B (zh) 一种多软件运行环境之间通信的方法
US8589587B1 (en) Protocol offload in intelligent network adaptor, including application level signalling
WO2014075489A1 (zh) 流量管理调度方法及装置
CN100391150C (zh) 数据传送装置及数据传送方法
CN101883345B (zh) 一种处理at指令的方法及装置
CN103078720B (zh) 报文处理方法及装置
US7953876B1 (en) Virtual interface over a transport protocol
EP3977705B1 (en) Streaming communication between devices
CN101931591A (zh) 多个分组数据业务共享数据链路的方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant