CN108170509B - 一种避免数据流对应的网卡队列号缓存过早失效的方法 - Google Patents
一种避免数据流对应的网卡队列号缓存过早失效的方法 Download PDFInfo
- Publication number
- CN108170509B CN108170509B CN201711343121.6A CN201711343121A CN108170509B CN 108170509 B CN108170509 B CN 108170509B CN 201711343121 A CN201711343121 A CN 201711343121A CN 108170509 B CN108170509 B CN 108170509B
- Authority
- CN
- China
- Prior art keywords
- network card
- virtual network
- device driver
- queue number
- user mode
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4411—Configuring for operating with peripheral devices; Loading of device drivers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开的一种避免数据流对应的网卡队列号缓存过早失效的方法,包括以下步骤:用户态进程使用多队列模式打开虚拟网卡设备驱动,并获取网卡队列号;虚拟网卡设备驱动创建一个新缓存表;用户态进程通过虚拟网卡设备驱动接口将虚拟网卡设备驱动创建的新缓存表内的所有缓存条目清空;用户态进程将获取到的网卡队列号以新连接会话的对端地址作为主键添加至虚拟网卡设备驱动创建的新缓存表中;在关闭连接会话时,用户态进程通过虚拟网卡设备驱动接口将查询到的缓存条目删除。本发明使得在虚拟网卡设备收到回包数据时,不会因虚拟网卡设备驱动缓存的网卡队列号失效而无法将回包数据发送至正确的用户态进程内。
Description
技术领域
本发明涉及Linux平台数据通信的技术领域,尤其涉及一种基于Linux虚拟网卡多队列模式的避免数据流对应的网卡队列号缓存过早失效的方法。
背景技术
Linux平台虚拟网卡设备在多队列工作模式下,为了能使用户态进程发往虚拟网卡设备的数据包的回包能够正确回到此进程,虚拟网卡设备驱动会以该数据流的原地址和目的地址作为主键,缓存此进程所对应的网卡队列号,以便在收到回包数据时根据地址对能正确找到发送者进程对应的网卡队列号,并将回包数据发送到该进程内。
Linux平台虚拟网卡设备驱动仅将数据流对应的队列号缓存3秒,3秒内没有更新的缓存条目会失效。失效后再有该条目的数据流经过时,便无法获取到队列号。此时Linux平台虚拟网卡设备会随机选取一个网卡队列,导致可能没有将数据发送到之前的用户态进程。
对于Linux平台虚拟网卡设备驱动而言,其因缺少必要的上下文信息而无法准确控制缓存条目的有效性,只能通过简单的3秒超时来淘汰不活跃的缓存条目。对于用户态进程而言,其拥有足够的信息得知缓存条目应该被缓存多久,却没有控制Linux平台虚拟网卡设备驱动缓存的接口。
为此,本申请人进行了有益的探索和尝试,找到了一种使得用户态进程能够根据自身需求控制虚拟网卡设备驱动对数据流对应的网卡队列号的缓存的方法,下面将要介绍的技术方案便是在这种背景下产生的。
发明内容
本发明所要解决的技术问题:提供一种基于Linux虚拟网卡多队列模式的避免数据流对应的网卡队列号缓存过早失效的方法。
本发明所解决的技术问题可以采用以下技术方案来实现:
一种避免数据流对应的网卡队列号缓存过早失效的方法,包括以下步骤:
用户态进程使用多队列模式打开虚拟网卡设备驱动,并从虚拟网卡设备驱动中获取与其对应的网卡队列号;
虚拟网卡设备驱动创建一个与用户态进程相对应的新缓存表,该新缓存表用于以IP地址作为主键保存对应的虚拟网卡队列号;
用户态进程通过虚拟网卡设备驱动接口将虚拟网卡设备驱动创建的新缓存表内的所有缓存条目清空;
用户态进程将获取到的网卡队列号以新连接会话的对端地址作为主键添加至虚拟网卡设备驱动创建的新缓存表中;
在关闭连接会话时,用户态进程通过虚拟网卡设备驱动接口以连接会话的对端地址作为主键查询虚拟网卡设备驱动创建的新缓存表,并通过虚拟网卡设备驱动接口将查询到的缓存条目删除。
在本发明的一个优选实施例中,所述虚拟网卡设备在接收回包数据时,首先根据回包数据流的原地址和目的地址作为主键从原有的缓存表中查询网卡队列号,若查询到有效的网卡队列号,则将回包数据通过该网卡队列号所对应的网卡队列发送至相对应的用户态进程;若查询失败,则根据回包数据的目的地址作为主键从新缓存表中查询网卡队列号,若查询到有效的网卡队列号,则将回包数据通过该网卡队列号所对应的网卡队列发送至相对应的用户态进程,否则选择随机网卡队列发送至用户态进程。
由于采用了如上的技术方案,本发明的有益效果在于:本发明的方法使得使用Linux平台虚拟网卡设备的用户态进程能够增加、删除、清空和查询其缓存的数据流对应的网卡队列号的缓存条目,使得在Linux平台虚拟网卡设备收到回包数据时,不会因虚拟网卡设备驱动缓存的网卡队列号失效而无法将回包数据发送至正确的用户态进程内。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的流程示意图。
图2是本发明的虚拟网卡设备驱动在接收到回包后查找对应用户态进程的流程示意图。
具体实施方式
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。
参见图1,图中给出的是一种基于Linux虚拟网卡多队列模式的避免数据流对应的网卡队列号缓存过早失效的方法,包括以下步骤:
步骤S1,用户态进程(服务端)使用多队列模式打开虚拟网卡设备驱动;
步骤S2,用户态进程从虚拟网卡设备驱动中获取与其对应的网卡队列号;
步骤S3,虚拟网卡设备驱动创建一个与用户态进程相对应的新缓存表,该新缓存表用于以IP地址作为主键保存对应的虚拟网卡队列号;
步骤S4,用户态进程通过虚拟网卡设备驱动接口将虚拟网卡设备驱动创建的新缓存表内的所有缓存条目清空;
步骤S5,虚拟网卡设备驱动开始接收网络数据;
步骤S6,虚拟网卡设备驱动判断用户态进程的连接会话是否已存在,若判断为是,则进入步骤S10,若判断为否,则进入步骤S7;
步骤S7,虚拟网卡设备驱动为用户态进程创建新连接会话;
步骤S8,用户态进程将获取到的网卡队列号以新连接会话的对端地址作为主键添加至虚拟网卡设备驱动创建的新缓存表中;
步骤S9,将网络数据写入虚拟网卡设备驱动内;
步骤S10,连接会话是否需要关闭,若判断为是,则进入步骤S11,若判断为否,则进入返回步骤S9;
步骤S11,用户态进程通过虚拟网卡设备驱动接口以连接会话的对端地址作为主键查询虚拟网卡设备驱动创建的新缓存表,并通过虚拟网卡设备驱动接口将查询到的缓存条目删除;
步骤S12,虚拟网卡设备驱动关闭连接会话,并返回步骤S9。
参见图2,虚拟网卡设备在接收回包数据时,按照以下步骤进行操作:
步骤S9.1,虚拟网卡设备接收回包数据流;
步骤S9.2,虚拟网卡设备根据回包数据流的原地址和目的地址计算哈希值;
步骤S9.3,虚拟网卡设备根据哈希值从“原有缓存表”中查找网卡队列号;
步骤S9.4,判断是否查询到有效的网卡队列号,若判断为是,则进入步骤S9.8,若判断为否,则进入步骤S9.5;
步骤S9.5,虚拟网卡设备根据回包数据的目的地址在“新缓存表”中查找网卡队列号;
步骤S9.6,判断是否查询到有效的网卡队列号,若判断为是,则进入步骤S9.8,若判断为否,则进入步骤S9.7;
步骤S9.7,选择随机网卡队列;
步骤S9.8,将回包数据通过选择的网卡队列号所对应的网卡队列发送至相对应的用户态进程。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (2)
1.一种避免数据流对应的网卡队列号缓存过早失效的方法,其特征在于,包括以下步骤:
用户态进程使用多队列模式打开虚拟网卡设备驱动,并从虚拟网卡设备驱动中获取与其对应的网卡队列号;
虚拟网卡设备驱动创建一个与用户态进程相对应的新缓存表,该新缓存表用于以IP地址作为主键保存对应的虚拟网卡队列号;
用户态进程通过虚拟网卡设备驱动接口将虚拟网卡设备驱动创建的新缓存表内的所有缓存条目清空;
用户态进程将获取到的网卡队列号以新连接会话的对端地址作为主键添加至虚拟网卡设备驱动创建的新缓存表中;
在关闭连接会话时,用户态进程通过虚拟网卡设备驱动接口以连接会话的对端地址作为主键查询虚拟网卡设备驱动创建的新缓存表,并通过虚拟网卡设备驱动接口将查询到的缓存条目删除。
2.如权利要求1所述的避免数据流对应的网卡队列号缓存过早失效的方法,其特征在于,所述虚拟网卡设备在接收回包数据时,首先根据回包数据流的原地址和目的地址作为主键从原有的缓存表中查询网卡队列号,若查询到有效的网卡队列号,则将回包数据通过该网卡队列号所对应的网卡队列发送至相对应的用户态进程;若查询失败,则根据回包数据的目的地址作为主键从新缓存表中查询网卡队列号,若查询到有效的网卡队列号,则将回包数据通过该网卡队列号所对应的网卡队列发送至相对应的用户态进程,否则选择随机网卡队列发送至用户态进程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711343121.6A CN108170509B (zh) | 2017-12-14 | 2017-12-14 | 一种避免数据流对应的网卡队列号缓存过早失效的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711343121.6A CN108170509B (zh) | 2017-12-14 | 2017-12-14 | 一种避免数据流对应的网卡队列号缓存过早失效的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108170509A CN108170509A (zh) | 2018-06-15 |
CN108170509B true CN108170509B (zh) | 2021-11-26 |
Family
ID=62525325
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711343121.6A Active CN108170509B (zh) | 2017-12-14 | 2017-12-14 | 一种避免数据流对应的网卡队列号缓存过早失效的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108170509B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113300979B (zh) * | 2021-02-05 | 2024-09-17 | 阿里巴巴集团控股有限公司 | Rdma网络下的网卡队列创建方法以及装置 |
CN114726930A (zh) * | 2022-03-30 | 2022-07-08 | 深信服科技股份有限公司 | 一种数据包跟踪方法、系统、装置及可读存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9047208B1 (en) * | 2012-12-10 | 2015-06-02 | Qlogic, Corporation | Method and system of configuring virtual function in peripheral devices |
CN106598747A (zh) * | 2016-12-15 | 2017-04-26 | 东软集团股份有限公司 | 网络数据包的并行处理方法及装置 |
CN107317759A (zh) * | 2017-06-13 | 2017-11-03 | 国家计算机网络与信息安全管理中心 | 一种网卡的线程级动态均衡调度方法 |
-
2017
- 2017-12-14 CN CN201711343121.6A patent/CN108170509B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9047208B1 (en) * | 2012-12-10 | 2015-06-02 | Qlogic, Corporation | Method and system of configuring virtual function in peripheral devices |
CN106598747A (zh) * | 2016-12-15 | 2017-04-26 | 东软集团股份有限公司 | 网络数据包的并行处理方法及装置 |
CN107317759A (zh) * | 2017-06-13 | 2017-11-03 | 国家计算机网络与信息安全管理中心 | 一种网卡的线程级动态均衡调度方法 |
Also Published As
Publication number | Publication date |
---|---|
CN108170509A (zh) | 2018-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106612301B (zh) | 更新数据的推送方法和装置 | |
CN105812351B (zh) | 实现会话共享的方法和系统 | |
KR102100710B1 (ko) | 컨텐츠 중심 네트워크에서 컨텐츠 소유자 및 노드의 패킷 전송 방법 | |
KR101773730B1 (ko) | 컴퓨팅 디바이스에 의해 제공되는 위치 데이터 포인트를 사용한 위치 정보 결정 | |
US10693858B2 (en) | CDN-based access control method and related device | |
US9686229B2 (en) | Identifying an efficient destination server | |
JP3449326B2 (ja) | データ検索システム及びパケット処理装置並びに制御方法 | |
WO2017148158A1 (zh) | 一种家庭网关利用云平台识别接入设备类型的系统 | |
CN112866111A (zh) | 流表管理的方法和装置 | |
CN108170509B (zh) | 一种避免数据流对应的网卡队列号缓存过早失效的方法 | |
WO2014206276A1 (en) | Domain name resolution method, domain name server, and domain name access method, system and terminal | |
CN1969525A (zh) | 用于减少通信网络上的传输量的通信服务器、方法和系统 | |
KR101907932B1 (ko) | 묶음 콘텐츠를 위한 네트워크 기반 콘텐츠 캐싱 지원하는 패킷 포워딩 구조 및 방법 | |
WO2018121373A1 (zh) | 基于操作系统内核网桥的数据转发方法和装置 | |
RU2005124131A (ru) | Устройство обработки информации, способ управления содержанием, способ управления информацией содержания и компьютерная программа | |
US20030236864A1 (en) | File downloading system and method | |
WO2011103784A1 (zh) | 一种数据操作方法和数据操作设备 | |
CN104951466A (zh) | 一种poi信息搜索方法、装置、系统及相关设备 | |
CN113316926A (zh) | 域名处理方法、装置、电子设备以及存储介质 | |
WO2014161261A1 (zh) | 数据的存储方法及装置 | |
CN106202485A (zh) | 数据操作方法和系统 | |
US20150304271A1 (en) | Address resolution protocol buffer and buffering method thereof | |
US11347646B2 (en) | Method, device and computer program product for managing cache based on matching API | |
WO2019019382A1 (zh) | 缓存处理方法、装置、计算机设备和存储介质 | |
CN108241685B (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 |