CN115297082B - 基于FPGA、eBPF协同的ARP协议处理方法及系统 - Google Patents
基于FPGA、eBPF协同的ARP协议处理方法及系统 Download PDFInfo
- Publication number
- CN115297082B CN115297082B CN202210927409.2A CN202210927409A CN115297082B CN 115297082 B CN115297082 B CN 115297082B CN 202210927409 A CN202210927409 A CN 202210927409A CN 115297082 B CN115297082 B CN 115297082B
- Authority
- CN
- China
- Prior art keywords
- arp
- data packet
- packet
- fpga
- request
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/09—Mapping addresses
- H04L61/10—Mapping addresses of different types
- H04L61/103—Mapping addresses of different types across network layers, e.g. resolution of network layer into physical layer addresses or address resolution protocol [ARP]
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Reducing energy consumption in communication networks
- Y02D30/50—Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate
Abstract
基于FPGA、eBPF协同的ARP协议处理方法及系统,该方法通过eBPF接收FPGA转发的网络数据包,如果网络数据包为IP数据包,在ARP数据表中查询数据包目的IP的MAC地址,若存在目的MAC条目,若ARP请求计数不大于第一预设阈值,增加ARP信息中的ARP匹配计数;若ARP匹配计数不大于第二预设阈值,提取MAC地址填充到业务IP数据包后再转发到FPGA;若ARP数据包解析结果为ARP请求包,判断是否为解析本机的IP地址请求,若为解析本机的IP地址请求,生成对应的ARP应答包,将解析本机的MAC地址填充进ARP应答包后再转发到FPGA。本发明减少成本,可防止ARP数量过多造成的业务中断。
Description
技术领域
本发明涉及计算机网络通信技术领域,具体涉及一种基于FPGA、eBPF协同的ARP协议处理方法及系统。
背景技术
FPGA是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物,是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的。eBPF是将原先的BPF发展成一个指令集更复杂、应用范围更广的“内核虚拟机”;eBPF支持在用户态将C语言编写的一小段“内核代码”注入到内核中运行。
目前,基于FPGA的ARP协议处理有两种方案:纯FPGA实现方案以及软件和FPGA协同实现方案。现有的两种方案均需专用的硬件空间储存ARP数据表,当ARP数量超越硬件储存空间时,处理性能会急剧下降,严重时会导致业务中断。同时,通过硬件承担IP数据处理过程中大量MAC地址查询的操作,硬件成本高。如何低成本高性能的进行ARP协议处理是亟待解决的问题。
发明内容
为此,本发明提供一种基于FPGA、eBPF协同的ARP协议处理方法及系统,以解决传统ARP协议处理的硬件成本高及ARP数量过多容易造成业务中断的问题。
为了实现上述目的,本发明提供如下技术方案:基于FPGA、eBPF协同的ARP协议处理方法,包括:
通过FPGA接收网络数据包,判断所述网络数据包的来源:
若所述网络数据包来源为内网口,将所述网络数据包转发到外网口;
若所述网络数据包来源为外网口,根据数据包协议号判断所述网络数据包的类型,a)如果所述网络数据包为IP数据包,则将所述网络数据包转发到eBPF进行处理;b)如果所述网络数据包为ARP数据包,接收来自外网口的包含ARP请求或ARP应答的ARP数据包,再转发到eBPF进行处理;
通过eBPF接收FPGA转发的所述网络数据包,根据数据包协议号判断所述网络数据包的类型:
c)如果所述网络数据包为IP数据包,解析接收的IP数据包,并在ARP数据表中查询数据包目的IP的MAC地址,对查询结果进行判断:
若存在目的MAC条目,判断ARP请求计数是否大于第一预设阈值,若ARP请求计数不大于第一预设阈值,增加ARP信息中的ARP匹配计数;
判断ARP匹配计数是否大于第二预设阈值,若ARP匹配计数不大于第二预设阈值,提取ARP信息中的MAC地址填充到业务IP数据包后再转发到FPGA;
d)如果所述网络数据包为ARP数据包,对ARP数据包进行解析,若ARP数据包解析结果为ARP请求包,判断是否为解析本机的IP地址请求,若为解析本机的IP地址请求,生成对应的ARP应答包,将解析本机的MAC地址填充进ARP应答包后再转发到FPGA。
作为基于FPGA、eBPF协同的ARP协议处理方法优选方案,通过FPGA接收网络数据包之前,初始化FPGA的网络接口运行参数,通过初始化网络接口运行参数的FPGA接收网络数据包;
通过eBPF接收FPGA转发的所述网络数据包之前,进行ARP数据表初始化,ARP数据表包含IP地址、MAC地址、ARP匹配计数、ARP请求计数信息。
作为基于FPGA、eBPF协同的ARP协议处理方法优选方案,若ARP请求计数大于第一预设阈值,删除查询到的ARP信息,缓存IP数据包并生成对应目的IP的ARP请求包后再转发到FPGA。
作为基于FPGA、eBPF协同的ARP协议处理方法优选方案,若ARP匹配计数大于第二预设阈值,增加ARP请求计数并生成ARP请求包,然后提取ARP信息中的MAC地址填充到业务IP数据包,并转发到FPGA。
作为基于FPGA、eBPF协同的ARP协议处理方法优选方案,若不是解析本机的IP地址请求,丢弃对应的ARP数据包。
作为基于FPGA、eBPF协同的ARP协议处理方法优选方案,若ARP数据包解析结果为ARP应答包:
遍历ARP数据表,根据ARP匹配计数利用LRU机制删除指定时间内未使用ARP信息,并清空相应的ARP匹配计数;
解析ARP应答包数据,提取MAC地址信息,储存到ARP数据表中并清空相应ARP请求计数;
遍历缓存列表,根据ARP应答包的IP地址匹配缓存目的IP地址,得到符合条件的缓存数据包。
本发明还提供一种基于FPGA、eBPF协同的ARP协议处理系统,包括:
数据来源判断模块,用于通过FPGA接收网络数据包,判断所述网络数据包的来源;
第一数据转发模块,用于若所述网络数据包来源为内网口,将所述网络数据包转发到外网口;
第一类型判断模块,用于若所述网络数据包来源为外网口,根据数据包协议号判断所述网络数据包的类型;
第二数据转发模块,用于如果所述网络数据包为IP数据包,则将所述网络数据包转发到eBPF进行处理;
第三数据转发模块,用于如果所述网络数据包为ARP数据包,接收来自外网口的包含ARP请求或ARP应答的ARP数据包,再转发到eBPF进行处理;
第二类型判断模块,用于通过eBPF接收FPGA转发的所述网络数据包,根据数据包协议号判断所述网络数据包的类型;
第一解析处理模块,用于如果所述网络数据包为IP数据包,解析接收的IP数据包,并在ARP数据表中查询数据包目的IP的MAC地址,对查询结果进行判断;
ARP请求处理模块,用于若存在目的MAC条目,判断ARP请求计数是否大于第一预设阈值,若ARP请求计数不大于第一预设阈值,增加ARP信息中的ARP匹配计数;
ARP匹配处理模块,用于判断ARP匹配计数是否大于第二预设阈值,若ARP匹配计数不大于第二预设阈值,提取ARP信息中的MAC地址填充到业务IP数据包后再转发到FPGA;
第二解析处理模块,用于如果所述网络数据包为ARP数据包,对ARP数据包进行解析;
解析本机判断模块,用于若ARP数据包解析结果为ARP请求包,判断是否为解析本机的IP地址请求;
ARP应答处理模块,用于若为解析本机的IP地址请求,生成对应的ARP应答包,将解析本机的MAC地址填充进ARP应答包后再转发到FPGA。
作为基于FPGA、eBPF协同的ARP协议处理系统优选方案,还包括:
FPGA初始化模块,用于通过FPGA接收网络数据包之前,初始化FPGA的网络接口运行参数,通过初始化网络接口运行参数的FPGA接收网络数据包;
eBPF初始化模块,用于通过eBPF接收FPGA转发的所述网络数据包之前,进行ARP数据表初始化,ARP数据表包含IP地址、MAC地址、ARP匹配计数、ARP请求计数信息。
作为基于FPGA、eBPF协同的ARP协议处理系统优选方案,所述ARP请求处理模块中,若ARP请求计数大于第一预设阈值,删除查询到的ARP信息,缓存IP数据包并生成对应目的IP的ARP请求包后再转发到FPGA。
作为基于FPGA、eBPF协同的ARP协议处理系统优选方案,所述ARP匹配处理模块中,若ARP匹配计数大于第二预设阈值,增加ARP请求计数并生成ARP请求包,然后提取ARP信息中的MAC地址填充到业务IP数据包,并转发到FPGA;
所述解析本机判断模块中,若不是解析本机的IP地址请求,丢弃对应的ARP数据包。
作为基于FPGA、eBPF协同的ARP协议处理系统优选方案,还包括:
ARP数据表处理模块,用于若ARP数据包解析结果为ARP应答包,遍历ARP数据表,根据ARP匹配计数利用LRU机制删除指定时间内未使用ARP信息,并清空相应的ARP匹配计数;
ARP应答包解析模块,用于若ARP数据包解析结果为ARP应答包,解析ARP应答包数据,提取MAC地址信息,储存到ARP数据表中并清空相应ARP请求计数;
缓存处理模块,用于若ARP数据包解析结果为ARP应答包,遍历缓存列表,根据ARP应答包的IP地址匹配缓存目的IP地址,得到符合条件的缓存数据包。
本发明具有如下优点:通过FPGA接收网络数据包,判断网络数据包的来源:若网络数据包来源为内网口,将网络数据包转发到外网口;若网络数据包来源为外网口,根据数据包协议号判断网络数据包的类型,a)如果网络数据包为IP数据包,则将网络数据包转发到eBPF进行处理;b)如果网络数据包为ARP数据包,接收来自外网口的包含ARP请求或ARP应答的ARP数据包,再转发到eBPF进行处理;通过eBPF接收FPGA转发的网络数据包,根据数据包协议号判断网络数据包的类型:c)如果网络数据包为IP数据包,解析接收的IP数据包,并在ARP数据表中查询数据包目的IP的MAC地址,对查询结果进行判断:若存在目的MAC条目,判断ARP请求计数是否大于第一预设阈值,若ARP请求计数不大于第一预设阈值,增加ARP信息中的ARP匹配计数;判断ARP匹配计数是否大于第二预设阈值,若ARP匹配计数不大于第二预设阈值,提取ARP信息中的MAC地址填充到业务IP数据包后再转发到FPGA;d)如果网络数据包为ARP数据包,对ARP数据包进行解析,若ARP数据包解析结果为ARP请求包,判断是否为解析本机的IP地址请求,若为解析本机的IP地址请求,生成对应的ARP应答包,将解析本机的MAC地址填充进ARP应答包后再转发到FPGA。本发明利用eBPF处理时机早于内核协议栈的优势,使用eBFF实现的ARP数据表代替硬件储存实现的ARP数据表,减少硬件成本,可以防止ARP数量过多造成的业务中断。
附图说明
为了更清楚地说明本发明的实施方式或现有技术中的技术方案,下面将对实施方式或现有技术描述中所需要使用的附图作简单地介绍。显而易见地,下面描述中的附图仅仅是示例性的,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图引申获得其他的实施附图。
本说明书所绘示的结构、比例、大小等,均仅用以配合说明书所揭示的内容,以供熟悉此技术的人士了解与阅读,并非用以限定本发明可实施的限定条件,故不具技术上的实质意义,任何结构的修饰、比例关系的改变或大小的调整,在不影响本发明所能产生的功效及所能达成的目的下,均应仍落在本发明所揭示的技术内容能涵盖的范围内。
图1为本发明实施例1提供的基于FPGA、eBPF协同的ARP协议处理方法中FPGA逻辑示意图;
图2为本发明实施例1提供的基于FPGA、eBPF协同的ARP协议处理方法中eBPF逻辑示意图;
图3为本发明实施例2提供的基于FPGA、eBPF协同的ARP协议处理系统示意图。
具体实施方式
以下由特定的具体实施例说明本发明的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本发明的其他优点及功效,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
由于纯FPGA实现方案以及软件和FPGA协同实现方案。现有的两种方案均需专用的硬件空间储存ARP数据表,当ARP数量超越硬件储存空间时,处理性能会急剧下降,严重时会导致业务中断。同时,通过硬件承担IP数据处理过程中大量MAC地址查询的操作,硬件成本高。
有鉴于此,本发明利用eBPF处理时机早于内核协议栈的优势,使用eBFF实现的ARP数据表代替硬件储存实现的ARP数据表,可以减少硬件成本以及防止ARP数量过多造成的业务中断问题。以下为本发明技术方案的具体实施情况。
实施例1
参见图1和图2,本发明实施例1提供一种基于FPGA、eBPF协同的ARP协议处理方法,FPGA处理过程中包括以下步骤:
S001:FPGA上电后完成复位,初始化FPGA的网络接口等运行参数,下一步转到S002;
S002:通过完成初始化的多个网口接收网络数据包,下一步转到S003;
S003:判断网络数据包来源:如果网络数据包来源为内网口,则转到S301处理;如果网络数据包来源为外网口,则转到S004处理;
S004:根据数据包协议号判断数据包类型:如果为IP数据包,则转到S101处理;如果为ARP数据包,则转到S201处理;
S101:判断为业务IP数据包,下一步转到S102;
S102:将IP数据包转发到eBPF,由eBPF进行处理;
S201:接收到来自外网口ARP请求、ARP应答等ARP数据包,下一步转到S102;
S301:接收到来自eBPF的网络数据包,下一步转到S302;
S302:通过外网口转发网络数据包。
eBPF处理流程包括以下步骤:
S401:解析本机上电后完成复位,内核加载eBPF,完成ARP数据表初始化,ARP数据表包含IP地址、MAC地址、ARP匹配计数、ARP请求计数等信息,下一步转到S402;
S402:接收FPGA转发的网络数据包,下一步转到S403;
S403:根据数据包协议号判断网络数据包类型:如果为IP数据包,则转到S501处理;如果为ARP数据包,则转到S504处理;
S404:解析ARP数据包类型:如果为ARP应答包,则转到S601处理;如果为ARP请求包,则转到S701处理;
S501:解析接收的IP数据包,下一步转到S502;
S502:在ARP数据表中查询数据包目的IP的MAC地址,下一步转到S503;
S503:对查询结果进行判断:若存在目的MAC条目,则转到S505;否则转到S504;
S504:缓存IP数据包并生成对应目的IP的ARP请求包,下一步转到S511;
S505:判断ARP请求计数是否大于第一预设阈值(默认为3):若大于第一预设阈值,则转到S506;否则转到S507;
S506:删除查询到的ARP信息,下一步转到S504;
S507:增加ARP信息中的ARP匹配计数,下一步转到S508;
S508:判断ARP匹配计数是否大于第二预设阈值(默认3000),若大于第二预设阈值,则转到S509;否则转到S510;
S509:增加ARP请求计数并生成对应目的IP的ARP请求包,下一步转到S510;
S510:提取ARP信息中的MAC地址填充到业务IP数据包中,下一步转到S511;
S511:将填充或的IP数据包转发到FPGA;
S601:解析接收的数据包为ARP应答包,下一步转到S602;
S602:遍历ARP数据列表,根据ARP匹配计数利用LRU机制删除指定时期内未用ARP信息,并清空相应的ARP匹配计数,下一步转到S603;
S603:解析ARP应答包数据,提取MAC地址信息,储存到ARP数据表中并清空相应ARP请求计数,下一步转到S604;
S604:遍历缓存列表,根据ARP应答包的IP地址匹配缓存目的IP地址,符合条件的缓存数据包转到S507处理;
S701:解析接收的网络数据包为ARP请求包,下一步转到S702;
S702:判断是否为解析本机IP地址的请求:若是解析本机IP,则转到S704;否则转到S703;
S703:丢弃数据包并结束处理;
S704:生成对应的ARP应答包,将解析本机的MAC填充进数据包,下一步转到S511。
综上所述,本发明通过FPGA接收网络数据包,判断网络数据包的来源:若网络数据包来源为内网口,将网络数据包转发到外网口;若网络数据包来源为外网口,根据数据包协议号判断网络数据包的类型,a)如果网络数据包为IP数据包,则将网络数据包转发到eBPF进行处理;b)如果网络数据包为ARP数据包,接收来自外网口的包含ARP请求或ARP应答的ARP数据包,再转发到eBPF进行处理;通过eBPF接收FPGA转发的网络数据包,根据数据包协议号判断网络数据包的类型:c)如果网络数据包为IP数据包,解析接收的IP数据包,并在ARP数据表中查询数据包目的IP的MAC地址,对查询结果进行判断:若存在目的MAC条目,判断ARP请求计数是否大于第一预设阈值,若ARP请求计数不大于第一预设阈值,增加ARP信息中的ARP匹配计数;判断ARP匹配计数是否大于第二预设阈值,若ARP匹配计数不大于第二预设阈值,提取ARP信息中的MAC地址填充到业务IP数据包后再转发到FPGA;d)如果网络数据包为ARP数据包,对ARP数据包进行解析,若ARP数据包解析结果为ARP请求包,判断是否为解析本机的IP地址请求,若为解析本机的IP地址请求,生成对应的ARP应答包,将解析本机的MAC地址填充进ARP应答包后再转发到FPGA。若ARP请求计数大于第一预设阈值,删除查询到的ARP信息,缓存IP数据包并生成对应目的IP的ARP请求包后再转发到FPGA。若ARP匹配计数大于第二预设阈值,增加ARP请求计数并生成ARP请求包,然后提取ARP信息中的MAC地址填充到业务IP数据包,并转发到FPGA。若不是解析本机的IP地址请求,丢弃对应的ARP数据包。若ARP数据包解析结果为ARP应答包:遍历ARP数据表,根据ARP匹配计数利用LRU机制删除指定时间内未使用ARP信息,并清空相应的ARP匹配计数;解析ARP应答包数据,提取MAC地址信息,储存到ARP数据表中并清空相应ARP请求计数;遍历缓存列表,根据ARP应答包的IP地址匹配缓存目的IP地址,得到符合条件的缓存数据包,再次转到ARP匹配计数及后续步骤。本发明利用eBPF处理时机早于内核协议栈的优势,使用eBFF实现的ARP数据表代替硬件储存实现的ARP数据表,减少硬件成本,可以防止ARP数量过多造成的业务中断。
需要说明的是,本公开实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本公开实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成所述的方法。
需要说明的是,上述对本公开的一些实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于上述实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
实施例2
参见图3,本发明实施例2提供一种基于FPGA、eBPF协同的ARP协议处理系统,包括:
数据来源判断模块101,用于通过FPGA接收网络数据包,判断所述网络数据包的来源;
第一数据转发模块102,用于若所述网络数据包来源为内网口,将所述网络数据包转发到外网口;
第一类型判断模块103,用于若所述网络数据包来源为外网口,根据数据包协议号判断所述网络数据包的类型;
第二数据转发模块104,用于如果所述网络数据包为IP数据包,则将所述网络数据包转发到eBPF进行处理;
第三数据转发模块105,用于如果所述网络数据包为ARP数据包,接收来自外网口的包含ARP请求或ARP应答的ARP数据包,再转发到eBPF进行处理;
第二类型判断模块201,用于通过eBPF接收FPGA转发的所述网络数据包,根据数据包协议号判断所述网络数据包的类型;
第一解析处理模块202,用于如果所述网络数据包为IP数据包,解析接收的IP数据包,并在ARP数据表中查询数据包目的IP的MAC地址,对查询结果进行判断;
ARP请求处理模块203,用于若存在目的MAC条目,判断ARP请求计数是否大于第一预设阈值,若ARP请求计数不大于第一预设阈值,增加ARP信息中的ARP匹配计数;
ARP匹配处理模块204,用于判断ARP匹配计数是否大于第二预设阈值,若ARP匹配计数不大于第二预设阈值,提取ARP信息中的MAC地址填充到业务IP数据包后再转发到FPGA;
第二解析处理模块205,用于如果所述网络数据包为ARP数据包,对ARP数据包进行解析;
解析本机判断模块206,用于若ARP数据包解析结果为ARP请求包,判断是否为解析本机的IP地址请求;
ARP应答处理模块207,用于若为解析本机的IP地址请求,生成对应的ARP应答包,将解析本机的MAC地址填充进ARP应答包后再转发到FPGA。
本实施例中,还包括:
FPGA初始化模块100,用于通过FPGA接收网络数据包之前,初始化FPGA的网络接口运行参数,通过初始化网络接口运行参数的FPGA接收网络数据包;
eBPF初始化模块200,用于通过eBPF接收FPGA转发的所述网络数据包之前,进行ARP数据表初始化,ARP数据表包含IP地址、MAC地址、ARP匹配计数、ARP请求计数信息。
本实施例中,ARP请求处理模块203中,若ARP请求计数大于第一预设阈值,删除查询到的ARP信息,缓存IP数据包并生成对应目的IP的ARP请求包后再转发到FPGA。
本实施例中,所述ARP匹配处理模块204中,若ARP匹配计数大于第二预设阈值,增加ARP请求计数并生成ARP请求包,然后提取ARP信息中的MAC地址填充到业务IP数据包,并转发到FPGA;
所述解析本机判断模块206中,若不是解析本机的IP地址请求,丢弃对应的ARP数据包。
本实施例中,还包括:
ARP数据表处理模块208,用于若ARP数据包解析结果为ARP应答包,遍历ARP数据表,根据ARP匹配计数利用LRU机制删除指定时间内未使用ARP信息,并清空相应的ARP匹配计数;
ARP应答包解析模块209,用于若ARP数据包解析结果为ARP应答包,解析ARP应答包数据,提取MAC地址信息,储存到ARP数据表中并清空相应ARP请求计数;
缓存处理模块210,用于若ARP数据包解析结果为ARP应答包,遍历缓存列表,根据ARP应答包的IP地址匹配缓存目的IP地址,得到符合条件的缓存数据包。
需要说明的是,上述系统各模块/单元之间的信息交互、执行过程等内容,由于与本申请实施例1中的方法实施例基于同一构思,其带来的技术效果与本申请方法实施例相同,具体内容可参见本申请前述所示的方法实施例中的叙述,此处不再赘述。
实施例3
本发明实施例3提供一种非暂态计算机可读存储介质,所述计算机可读存储介质中存储有基于FPGA、eBPF协同的ARP协议处理方法的程序代码,所述程序代码包括用于执行实施例1或其任意可能实现方式的基于FPGA、eBPF协同的ARP协议处理方法的指令。
计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(SolidState Disk、SSD))等。
实施例4
本发明实施例4提供一种电子设备,包括:存储器和处理器;
所述处理器和所述存储器通过总线完成相互间的通信;所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行实施例1或其任意可能实现方式的基于FPGA、eBPF协同的ARP协议处理方法。
具体的,处理器可以通过硬件来实现也可以通过软件来实现,当通过硬件实现时,该处理器可以是逻辑电路、集成电路等;当通过软件来实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现,该存储器可以集成在处理器中,可以位于所述处理器之外,独立存在。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
虽然,上文中已经用一般性说明及具体实施例对本发明作了详尽的描述,但在本发明基础上,可以对之作一些修改或改进,这对本领域技术人员而言是显而易见的。因此,在不偏离本发明精神的基础上所做的这些修改或改进,均属于本发明要求保护的范围。
Claims (10)
1.基于FPGA、eBPF协同的ARP协议处理方法,其特征在于,包括:
通过FPGA接收网络数据包,判断所述网络数据包的来源:
若所述网络数据包来源为内网口,将所述网络数据包转发到外网口;
若所述网络数据包来源为外网口,根据数据包协议号判断所述网络数据包的类型,a)如果所述网络数据包为IP数据包,则将所述网络数据包转发到eBPF进行处理;b)如果所述网络数据包为ARP数据包,接收来自外网口的包含ARP请求或ARP应答的ARP数据包,再转发到eBPF进行处理;
通过eBPF接收FPGA转发的所述网络数据包,根据数据包协议号判断所述网络数据包的类型:
c)如果所述网络数据包为IP数据包,解析接收的IP数据包,并在ARP数据表中查询数据包目的IP的MAC地址,对查询结果进行判断:
若存在目的MAC条目,判断ARP请求计数是否大于第一预设阈值,若ARP请求计数不大于第一预设阈值,增加ARP信息中的ARP匹配计数;
判断ARP匹配计数是否大于第二预设阈值,若ARP匹配计数不大于第二预设阈值,提取ARP信息中的MAC地址填充到业务IP数据包后再转发到FPGA;
d)如果所述网络数据包为ARP数据包,对ARP数据包进行解析,若ARP数据包解析结果为ARP请求包,判断是否为解析本机的IP地址请求,若为解析本机的IP地址请求,生成对应的ARP应答包,将解析本机的MAC地址填充进ARP应答包后再转发到FPGA。
2.根据权利要求1所述的基于FPGA、eBPF协同的ARP协议处理方法,其特征在于,通过FPGA接收网络数据包之前,初始化FPGA的网络接口运行参数,通过初始化网络接口运行参数的FPGA接收网络数据包;
通过eBPF接收FPGA转发的所述网络数据包之前,进行ARP数据表初始化,ARP数据表包含IP地址、MAC地址、ARP匹配计数、ARP请求计数信息。
3.根据权利要求1所述的基于FPGA、eBPF协同的ARP协议处理方法,其特征在于,若ARP请求计数大于第一预设阈值,删除查询到的ARP信息,缓存IP数据包并生成对应目的IP的ARP请求包后再转发到FPGA。
4.根据权利要求3所述的基于FPGA、eBPF协同的ARP协议处理方法,其特征在于,若ARP匹配计数大于第二预设阈值,增加ARP请求计数并生成ARP请求包,然后提取ARP信息中的MAC地址填充到业务IP数据包,并转发到FPGA。
5.根据权利要求4所述的基于FPGA、eBPF协同的ARP协议处理方法,其特征在于,若不是解析本机的IP地址请求,丢弃对应的ARP数据包。
6.根据权利要求1所述的基于FPGA、eBPF协同的ARP协议处理方法,其特征在于,若ARP数据包解析结果为ARP应答包:
遍历ARP数据表,根据ARP匹配计数利用LRU机制删除指定时间内未使用ARP信息,并清空相应的ARP匹配计数;
解析ARP应答包数据,提取MAC地址信息,储存到ARP数据表中并清空相应ARP请求计数;
遍历缓存列表,根据ARP应答包的IP地址匹配缓存目的IP地址,得到符合条件的缓存数据包。
7.基于FPGA、eBPF协同的ARP协议处理系统,其特征在于,包括:
数据来源判断模块,用于通过FPGA接收网络数据包,判断所述网络数据包的来源;
第一数据转发模块,用于若所述网络数据包来源为内网口,将所述网络数据包转发到外网口;
第一类型判断模块,用于若所述网络数据包来源为外网口,根据数据包协议号判断所述网络数据包的类型;
第二数据转发模块,用于如果所述网络数据包为IP数据包,则将所述网络数据包转发到eBPF进行处理;
第三数据转发模块,用于如果所述网络数据包为ARP数据包,接收来自外网口的包含ARP请求或ARP应答的ARP数据包,再转发到eBPF进行处理;
第二类型判断模块,用于通过eBPF接收FPGA转发的所述网络数据包,根据数据包协议号判断所述网络数据包的类型;
第一解析处理模块,用于如果所述网络数据包为IP数据包,解析接收的IP数据包,并在ARP数据表中查询数据包目的IP的MAC地址,对查询结果进行判断;
ARP请求处理模块,用于若存在目的MAC条目,判断ARP请求计数是否大于第一预设阈值,若ARP请求计数不大于第一预设阈值,增加ARP信息中的ARP匹配计数;
ARP匹配处理模块,用于判断ARP匹配计数是否大于第二预设阈值,若ARP匹配计数不大于第二预设阈值,提取ARP信息中的MAC地址填充到业务IP数据包后再转发到FPGA;
第二解析处理模块,用于如果所述网络数据包为ARP数据包,对ARP数据包进行解析;
解析本机判断模块,用于若ARP数据包解析结果为ARP请求包,判断是否为解析本机的IP地址请求;
ARP应答处理模块,用于若为解析本机的IP地址请求,生成对应的ARP应答包,将解析本机的MAC地址填充进ARP应答包后再转发到FPGA。
8.根据权利要求7所述的基于FPGA、eBPF协同的ARP协议处理系统,其特征在于,还包括:
FPGA初始化模块,用于通过FPGA接收网络数据包之前,初始化FPGA的网络接口运行参数,通过初始化网络接口运行参数的FPGA接收网络数据包;
eBPF初始化模块,用于通过eBPF接收FPGA转发的所述网络数据包之前,进行ARP数据表初始化,ARP数据表包含IP地址、MAC地址、ARP匹配计数、ARP请求计数信息。
9.根据权利要求8所述的基于FPGA、eBPF协同的ARP协议处理系统,其特征在于,所述ARP请求处理模块中,若ARP请求计数大于第一预设阈值,删除查询到的ARP信息,缓存IP数据包并生成对应目的IP的ARP请求包后再转发到FPGA;
所述ARP匹配处理模块中,若ARP匹配计数大于第二预设阈值,增加ARP请求计数并生成ARP请求包,然后提取ARP信息中的MAC地址填充到业务IP数据包,并转发到FPGA;
所述解析本机判断模块中,若不是解析本机的IP地址请求,丢弃对应的ARP数据包。
10.根据权利要求9所述的基于FPGA、eBPF协同的ARP协议处理系统,其特征在于,还包括:
ARP数据表处理模块,用于若ARP数据包解析结果为ARP应答包,遍历ARP数据表,根据ARP匹配计数利用LRU机制删除指定时间内未使用ARP信息,并清空相应的ARP匹配计数;
ARP应答包解析模块,用于若ARP数据包解析结果为ARP应答包,解析ARP应答包数据,提取MAC地址信息,储存到ARP数据表中并清空相应ARP请求计数;
缓存处理模块,用于若ARP数据包解析结果为ARP应答包,遍历缓存列表,根据ARP应答包的IP地址匹配缓存目的IP地址,得到符合条件的缓存数据包。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210927409.2A CN115297082B (zh) | 2022-08-03 | 2022-08-03 | 基于FPGA、eBPF协同的ARP协议处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210927409.2A CN115297082B (zh) | 2022-08-03 | 2022-08-03 | 基于FPGA、eBPF协同的ARP协议处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115297082A CN115297082A (zh) | 2022-11-04 |
CN115297082B true CN115297082B (zh) | 2023-08-25 |
Family
ID=83827105
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210927409.2A Active CN115297082B (zh) | 2022-08-03 | 2022-08-03 | 基于FPGA、eBPF协同的ARP协议处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115297082B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789728A (zh) * | 2017-01-25 | 2017-05-31 | 甘肃农业大学 | 一种基于NetFPGA的VoIP流量实时识别方法 |
CN114567614A (zh) * | 2022-03-07 | 2022-05-31 | 江苏新质信息科技有限公司 | 基于fpga实现arp协议处理的方法及装置 |
CN114584526A (zh) * | 2022-03-07 | 2022-06-03 | 江苏新质信息科技有限公司 | 一种arp协议处理方法、系统、存储介质及电子设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10616382B2 (en) * | 2016-09-02 | 2020-04-07 | Accedian Networks Inc. | Efficient capture and streaming of data packets |
-
2022
- 2022-08-03 CN CN202210927409.2A patent/CN115297082B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106789728A (zh) * | 2017-01-25 | 2017-05-31 | 甘肃农业大学 | 一种基于NetFPGA的VoIP流量实时识别方法 |
CN114567614A (zh) * | 2022-03-07 | 2022-05-31 | 江苏新质信息科技有限公司 | 基于fpga实现arp协议处理的方法及装置 |
CN114584526A (zh) * | 2022-03-07 | 2022-06-03 | 江苏新质信息科技有限公司 | 一种arp协议处理方法、系统、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115297082A (zh) | 2022-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9866479B2 (en) | Technologies for concurrency of cuckoo hashing flow lookup | |
WO2020236269A1 (en) | System and method for facilitating efficient utilization of an output buffer in a network interface controller (nic) | |
US20120191800A1 (en) | Methods and systems for providing direct dma | |
US9311044B2 (en) | System and method for supporting efficient buffer usage with a single external memory interface | |
CN105589664A (zh) | 虚拟存储高速传输方法 | |
KR102126592B1 (ko) | 멀티코어 프로세서들에 대한 내부 및 외부 액세스를 갖는 룩-어사이드 프로세서 유닛 | |
CN109564502A (zh) | 应用于存储设备中的访问请求的处理方法和装置 | |
CN114500633B (zh) | 数据转发方法、相关装置、程序产品及数据传输系统 | |
US7561585B2 (en) | Manufacture and method for accelerating network address translation | |
US10185783B2 (en) | Data processing device, data processing method, and non-transitory computer readable medium | |
CN115297082B (zh) | 基于FPGA、eBPF协同的ARP协议处理方法及系统 | |
US9288163B2 (en) | Low-latency packet receive method for networking devices | |
US9137167B2 (en) | Host ethernet adapter frame forwarding | |
CN114567614B (zh) | 基于fpga实现arp协议处理的方法及装置 | |
US8898353B1 (en) | System and method for supporting virtual host bus adaptor (VHBA) over infiniband (IB) using a single external memory interface | |
CN108183926B (zh) | 一种数据包处理方法和装置 | |
US8069304B2 (en) | Determining the presence of a pre-specified string in a message | |
CN113132273B (zh) | 一种数据转发方法及装置 | |
Dalessandro et al. | iSER storage target for object-based storage devices | |
WO2019095942A1 (zh) | 一种数据传输方法及通信设备 | |
Li et al. | Optimal Design of UDP Protocol in Embedded Real-Time OS | |
US9104637B2 (en) | System and method for managing host bus adaptor (HBA) over infiniband (IB) using a single external memory interface | |
CN115996203B (zh) | 网络流量分域方法、装置、设备和存储介质 | |
EP4283468A1 (en) | Data transmission system and related device | |
US11882039B1 (en) | UDF-based traffic offloading methods and systems |
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 |