CN111698169B - 基于帧内容的通信端口提取方法 - Google Patents
基于帧内容的通信端口提取方法 Download PDFInfo
- Publication number
- CN111698169B CN111698169B CN202010476023.5A CN202010476023A CN111698169B CN 111698169 B CN111698169 B CN 111698169B CN 202010476023 A CN202010476023 A CN 202010476023A CN 111698169 B CN111698169 B CN 111698169B
- Authority
- CN
- China
- Prior art keywords
- data
- port
- frame content
- lookup table
- frame
- 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
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/742—Route cache; Operation thereof
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种基于帧内容的通信端口提取方法。该方法利用FPGA的端系统对数据接收缓冲的同时进行了通信端口提取功能,与软件查询的方法相比,缩短了端系统从接收到帧到确定通信端口的时间,确保了端系统接收数据的实时性要求。该方法的主要步骤如下:1、创建虚链路查找表以及端口查找表并将其存储至FPGA的端系统内;2、在FPGA的端系统中建立帧内容的通信端口提取功能模块;3、FPGA的端系统接收帧内容,并同时进行帧内容验证及缓存以及获取正确通信端口;4、帧内容根据缓存区索引PortIndex存储至端系统内的缓存区中,并等待端系统的上层软件获取帧内容。
Description
技术领域
本发明属于网络通信技术,涉及一种基于帧内容的通信端口提取方法。
背景技术
符合ARINC664 Part7标准的AFDX网络基于IEEE802.3标准以太网,通过采用虚链路(VL)的带宽隔离机制来保证通信的确定性,通过采用双余度的星型拓扑结构来提高通信的可靠性,AFDX网络端系统为主机提供数据发送和接收服务。网络层采用IPv4协议,传输层采用UDP协议,应用层有采样端口、队列端口和服务访问点三种通信端口。
网络中的数据流通过接收端系统的UDP目的端口、IP目的地址、MAC目的地址和物理以太网连接被唯一的识别。端系统在接收到网络数据帧时,根据源UDP端口号、源IP地址、虚链路、目的IP地址、目的UDP端口这五元组来确定通信端口。现有的方法是根据接收到的帧内容,通过FPGA提取出虚链路,对于目的IP地址、目的UDP端口则通过软件查询的方法进行,从而确定通信端口,但是这种方法比较依赖处理器的软件处理能力,存在较大的延时,无法确保端系统通信的实时性。
发明内容
为了解决现有接收帧内容时对于处理器的软件处理能力要求较高,存在较大延时,实时性较差的问题,本发明提出了一种基于帧内容的通信端口提取方法。
本发明的基本设计原理是:
该方法是基于FPGA中运行的端系统逻辑在接收到网络数据帧时,通过提取帧内容得到srcUDP、srcIP、VLID、dstIP、dstUDP这五元组,通过查找表查询通信端口,然后对通信端口进行验证,最后根据对帧内容校验的结果,将帧内容提交到接收缓冲区中。
本发明的具体技术方案是:
本发明提供了一种基于帧内容的通信端口提取方法,包括以下步骤:
步骤1:创建虚链路查找表以及端口查找表并将其存储至FPGA的端系统内;
所述虚链路查找表包括3×N数据,3代表列数,N代表行数;第一列数据为VLID,第二列数据为PortAddr,第三列数据为PortNum,且虚链路查找表中数据以VLID排序储存,在虚链路查找表中查找数据时采用有序查找算法;
所述端口查找表包括5×N数据,5代表列数,N代表行数;第一列数据为dstpID,第二列数据为dstUDP,第三列数据为srcudID,第四列数据为srcpID,第五列数据为srcUDP,且端口查找表中数据以dstpID、、dstUDP排序储存,在端口查找表中查找数据时采用有序查找算法;N≥1;
步骤2:在FPGA的端系统中建立帧内容的通信端口提取功能模块;
所述帧内容的通信端口提取功能模块包括数据流接收缓冲及校验功能模块、信息提取功能模块、虚链路及端口查找功能模块以及端口验证功能模块;
步骤3:FPGA的端系统接收帧内容,并同时进行帧内容缓存验证以及获取正确通信端口;
A:数据流接收缓冲及校验功能模块对帧内容中每个数据进行缓存及校验;
B:获取正确通信端口
B1:帧内容的信息提取;
信息提取功能模块从帧内容的MAC内容中提取VLID,srcudID;
信息提取功能模块从帧内容的IP内容中提取dstudID,dstpID;
信息提取功能模块从帧内容的UDP内容中提取srcUDP,dstUDP;
B2:虚链路及端口查询;
B2.1:虚链路及端口查找功能模块将步骤B1中提取的VLID与虚链路查找表中的VLID进行比较,得到步骤B1中提取的VLID对应的PortAddr和PortNum;
B2.2:根据步骤B2.1获得的PortAddr作为起始点,PortAddr+PortNum-1作为终止点,获得在端口查询表中对应的查询区域,再根据查询区域中对应的dstpID和dstUDP,确定通信端口;
B3:端口验证
端口验证功能模块根据步骤B2.2中通信端口对应的srcudID,srcpID,srcUDP与步骤B1中提取的srcudID,srcpID,srcUDP进行比对,如果相同,且数据流接收缓冲及校验功能模块验证完最后一个数据后发送验证正确指令至端口验证功能模块后,则获得缓存区索引PortIndex;否则丢弃此帧;
步骤4:帧内容根据缓存区索引PortIndex存储至端系统内的缓存区中,并等待端系统的上层软件获取帧内容。
进一步地,上述步骤B1中MAC内容提取原则是:由dstMAC(4,2B)可提取出VLID;由srcMAC(9,2B)可提取出srcudID;
其中,dstMAC(4,2B)表示帧内容第4个字节开始,取2个字节;
srcMAC(9,2B)表示帧内容第9个字节开始,取2个字节。
进一步地,上述步骤B1中IP内容提取原则是:
A:由srcIP(27,2B)可提取出srcudID,与srcMAC中提取的srcudID进行比对,相同则记录,不同则舍弃该帧;
B:由srcIP(28,1B)可提取出srcpID;
C:对于dstIP(30,4B),判断其格式;
提取dstIP[31:28],判断其二进制数值是否为“1110”,若是,则判断dstIP为多播IP地址,若不是判断dstIP为为单播IP地址;
当为多播IP地址时,提取dstIP[27:16]作为固定域,并与提前存储至FPGA中的固定域进行对比,判断是否为同一网络下,若是则提取dstIP[15:0]作为VLID,并与dstMAC(4,2B)中提取的VLID进行比对,相同则记录并赋值dstPID为255,不同则丢弃此帧;
当为单播IP地址,由dstIP[23:8]提取出dstudID,与提前存储至FPGA中的dstudID进行对比,不一致则丢弃该帧,由dstIP[7:0]提取dstpID。
进一步地,上述步骤B1中UDP内容提取原则是:由UDP(34,2B)提取srcUDP;由UDP(36,2B)提取dstUDP;
其中,UDP(34,2B)表示帧内容第34个字节开始,取2个字节;UDP(36,2B)表示帧内容第36个字节开始,取2个字节。
本发明的有益效果是:
本发明通过在FPGA的端系统中建立帧内容的通信端口提取功能模块,不需要通过软件进行查询来确定通信端口,在工作时,数据接收缓冲的过程中同时进行通信端口提取,能够快速的提取帧内容并查找确定通信端口,与软件查询相比,缩短了确定通信端口的时间,确保了端系统接收数据的实时性要求,为端系统通信的实时性提供技术支撑。
附图说明
图1为帧内容的结构分解图。
图2为帧内容验证及缓存以及获取正确通信端口实现流程原理图。
具体实施方式
下面结合附图对本发明做进一步描述:
本发明的方法是基于FPGA进行的,FPGA的端系统将帧内容大体分为MAC,IP,UDP三个部分,具体结构如图1所示。
本发明的具体流程如下:
步骤1:创建虚链路查找表(VL查找表)以及端口查找表(Port查找表)并将其存储至FPGA的端系统内;
所述虚链路查找表包括3×N数据,3代表列数,N代表行数;第一列数据为VLID,第二列数据为PortAddr,第三列数据为PortNum,且虚链路查找表中数据以VLID排序储存,在虚链路查找表中查找数据时采用有序查找算法;
所述端口查找表包括5×N数据,5代表列数,N代表行数;第一列数据为dstpID,第二列数据为dstUDP,第三列数据为srcudID,第四列数据为srcpID,第五列数据为srcUDP,且端口查找表中数据以dstpID、、dstUDP排序储存,在端口查找表中查找数据时采用有序查找算法;N≥1;
如表1所示,虚链路查找表包括3×N数据,3代表列数,N代表行数;第一列数据为VLID,第二列数据为PortAddr,第三列数据为PortNum,且虚链路查找表中数据以VLID排序储存,在虚链路查找表中查找数据时采用有序查找算法;
如表2所示,端口查找表包括5×N数据,5代表列数,N代表行数;第一列数据为dstpID,第二列数据为dstUDP,第三列数据为srcudID,第四列数据为srcpID,第五列数据为srcUDP,且端口查找表中数据以dstpID、、dstUDP排序储存,在端口查找表中查找数据时采用有序查找算法;N≥1;
需要说明的一点是:采用有序查找算法查找数据的目的是为了避免采用其他查找方式时,可能难以在数据帧接收缓冲并校验之前查找到PortIndex。另外,本发明采用的有序查找算法可优选二分查找法。
表1
表2
dstPID | dstUDP | SrcudID | SrcPID | SrcUDP |
dp(0,0) | du(0,0) | |||
dp(0,1) | du(0,1) | |||
… | … | … | … | … |
dp(0,pn(0)-1) | dp(0,pn(0)-1) | |||
dp(x,0) | du(x,0) | |||
dp(x,1) | du(x,1) | |||
… | … | … | … | … |
dp(x,pn(x)-1) | dp(x,pn(x)-1) | |||
… | … | … | … | … |
注:VLID表示虚链路ID;PortAddr端口起始地址;PortNum表示使用相同VL的端口数量;dstPID表示目的分区ID;dstUDP表示目的UDP端口号;SrcudID表示源设备ID地址;SrcPID表示源分区ID;SrcUDP表示源UDP端口号;
步骤2:在FPGA的端系统中建立帧内容的通信端口功能模块;
所述帧内容的通信端口功能模块包括数据流接收缓冲及校验功能模块、信息提取功能模块、虚链路及端口查找功能模块以及端口验证功能模块;
步骤3:FPGA的端系统接收帧内容,并同时进行帧内容缓存验证以及获取正确通信端口,具体流程如图2所示:
A:数据流接收缓冲及校验功能模块对帧内容中每个数据进行缓存及校验;
B:获取正确通信端口
B1:帧内容的信息提取;
信息提取功能模块从帧内容的MAC内容中提取VLID,srcudID,具体做法是:由dstMAC(4,2B)可提取出VLID;由srcMAC(9,2B)可提取出srcudID;dstMAC(4,2B)表示帧内容第4个字节开始,取2个字节;srcMAC(9,2B)表示帧内容第9个字节开始,取2个字节。
信息提取功能模块从帧内容的IP内容中提取dstudID,dstpID;具体做法是:
A:由srcIP(27,2B)可提取出srcudID,与srcMAC中提取的srcudID进行比对,相同则记录,不同则舍弃该帧;
B:由srcIP(28,1B)可提取出srcpID;
C:对于dstIP(30,4B),判断其格式;
提取dstIP[31:28],判断其二进制数值是否为“1110”,若是,则判断dstIP为多播IP地址,若不是判断dstIP为为单播IP地址;其中,dstIP[31:28]表示32bit数据的28至31位数据;
当为多播IP地址时,提取dstIP[27:16]作为固定域,并与提前存储至FPGA中的固定域进行对比,判断是否为同一网络下,若是则提取dstIP[15:0]作为VLID,并与dstMAC(4,2B)中提取的VLID进行比对,相同则记录并赋值dstPID为255,不同则丢弃此帧;其中,dstIP[27:16]表示32bit数据的16至27位数据;dstIP[15:0]表示32bit数据的0至15位数据;
当为单播IP地址,由dstIP[23:8]提取出dstudID,与提前存储至FPGA中的dstudID进行对比,不一致则丢弃该帧;dstIP[7:0]提取出dstpID;dstIP[23:8]表示32bit数据的8至23位数据;dstIP[7:0]表示32bit数据的0至7位数据;
信息提取功能模块从帧内容的UDP内容中提取srcUDP,dstUDP;具体做法是:由UDP(34,2B)提取srcUDP;由UDP(36,2B)提取dstUDP;
其中,UDP(34,2B)表示帧内容第34个字节开始,取2个字节;
UDP(36,2B)表示帧内容第36个字节开始,取2个字节。
B2:虚链路及端口查询;
B2.1:虚链路及端口查找功能模块将步骤B1中提取的VLID与虚链路查找表中的VLID进行比较,得到步骤B1中提取的VLID对应的PortAddr和PortNum;
B2.2:根据B2.1获得的PortAddr作为起始点,PortAddr+PortNum-1作为终止点,获得在端口查询表中对应的查询区域,再根据查询区域中对应的dstpID和dstUDP,确定通信端口;
B3:端口验证
端口验证功能模块根据步骤B2.2中通信端口对应的srcudID,srcpID,srcUDP与步骤B1中提取的srcudID,srcpID,srcUDP进行比对,如果相同,且数据流接收缓冲及校验功能模块验证完最后一个数据后发送验证正确指令至端口验证功能模块后,则获得缓存区索引PortIndex;否则丢弃此帧;
步骤4:帧内容根据缓存区索引PortIndex存储至端系统内的缓存区中,并等待端系统的上层软件获取帧内容。
该方法利用FPGA的端系统在数据接收缓冲的过程中同时进行通信端口提取功能,与软件查询的方法相比,缩短了端系统从接收到帧到确定通信端口的时间,确保了端系统接收数据的实时性要求。
Claims (1)
1.一种基于帧内容的通信端口提取方法,其特征在于,包括以下步骤:
步骤1:创建虚链路查找表以及端口查找表并将其存储至FPGA的端系统内;
所述虚链路查找表包括3×N数据,3代表列数,N代表行数;第一列数据为VLID,第二列数据为PortAddr,第三列数据为PortNum,且虚链路查找表中数据以VLID排序储存,在虚链路查找表中查找数据时采用有序查找算法;
所述端口查找表包括5×N数据,5代表列数,N代表行数;第一列数据为dstpID,第二列数据为dstUDP,第三列数据为srcudID,第四列数据为srcpID,第五列数据为srcUDP,且端口查找表中数据以dstpID、dstUDP排序储存,在端口查找表中查找数据时采用有序查找算法;N≥1;
步骤2:在FPGA的端系统中建立帧内容的通信端口提取功能模块;
所述帧内容的通信端口提取功能模块包括数据流接收缓冲及校验功能模块、信息提取功能模块、虚链路及端口查找功能模块以及端口验证功能模块;
步骤3:FPGA的端系统接收帧内容,并同时进行帧内容缓存验证以及获取正确通信端口;
A:数据流接收缓冲及校验功能模块对帧内容中每个数据进行缓存及校验;
B:获取正确通信端口
B1:帧内容的信息提取;
信息提取功能模块从帧内容的MAC内容中提取VLID,srcudID;MAC 内容提取原则是:由dstMAC(4,2B)可提取出VLID;由srcMAC(9,2B)可提取出srcudID;
其中,dstMAC(4,2B)表示帧内容第4个字节开始,取2个字节;
srcMAC(9,2B)表示帧内容第9个字节开始,取2个字节;
信息提取功能模块从帧内容的IP内容中提取dstudID,dstpID;IP内容提取原则是:
A:由srcIP(27,2B)可提取出srcudID,与srcMAC中提取的srcudID进行比对,相同则记录,不同则舍弃该帧;
B:由srcIP(28,1B)可提取出srcpID;
C:对于dstIP(30,4B),判断其格式;
提取dstIP[31:28],判断其二进制数值是否为“1110”,若是,则判断dstIP为多播IP地址,若不是判断dstIP为为单播IP地址;
当为多播IP地址时,提取dstIP[27:16]作为固定域,并与提前存储至FPGA中的固定域进行对比,判断是否为同一网络下,若是则提取dstIP[15:0]作为VLID,并与dstMAC(4,2B)中提取的VLID进行比对,相同则记录并赋值dstPID为255,不同则丢弃此帧;
当为单播IP地址,由dstIP[23:8]提取出dstudID,与提前存储至FPGA中的dstudID进行对比,不一致则丢弃该帧,由dstIP[7:0]提取dstpID;
信息提取功能模块从帧内容的UDP内容中提取srcUDP,dstUDP;
UDP内容提取原则是:由UDP(34,2B)提取srcUDP;由UDP(36,2B)提取dstUDP;其中,UDP(34,2B)表示帧内容第34个字节开始,取2个字节;UDP(36,2B)表示帧内容第36个字节开始,取2个字节;
B2:虚链路及端口查询;
B2.1:虚链路及端口查找功能模块将步骤B1中提取的VLID与虚链路查找表中的VLID进行比较,得到步骤B1中提取的VLID对应的PortAddr 和PortNum;
B2.2:根据步骤B2.1获得的PortAddr作为起始点,PortAddr+PortNum-1作为终止点,获得在端口查询表中对应的查询区域,再根据查询区域中对应的dstpID和dstUDP,确定通信端口;
B3:端口验证
端口验证功能模块根据步骤B2.2中通信端口对应的srcudID,srcpID,srcUDP与步骤B1中提取的srcudID,srcpID,srcUDP进行比对,如果相同,且数据流接收缓冲及校验功能模块验证完最后一个数据后发送验证正确指令至端口验证功能模块后,则获得缓存区索引PortIndex;否则丢弃此帧;
步骤4:帧内容根据缓存区索引PortIndex存储至端系统内的缓存区中,并等待端系统的上层软件获取帧内容。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476023.5A CN111698169B (zh) | 2020-05-29 | 2020-05-29 | 基于帧内容的通信端口提取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010476023.5A CN111698169B (zh) | 2020-05-29 | 2020-05-29 | 基于帧内容的通信端口提取方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111698169A CN111698169A (zh) | 2020-09-22 |
CN111698169B true CN111698169B (zh) | 2022-04-05 |
Family
ID=72478884
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010476023.5A Active CN111698169B (zh) | 2020-05-29 | 2020-05-29 | 基于帧内容的通信端口提取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111698169B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025643A (zh) * | 2010-12-30 | 2011-04-20 | 华为技术有限公司 | 一种流表查找方法和装置 |
CN104601427A (zh) * | 2013-10-31 | 2015-05-06 | 杭州华三通信技术有限公司 | 数据中心网络中的报文转发方法及装置 |
WO2016106506A1 (zh) * | 2014-12-29 | 2016-07-07 | 华为技术有限公司 | 一种路由方法和设备 |
CN106330720A (zh) * | 2016-08-26 | 2017-01-11 | 浪潮集团有限公司 | 一种ip报文策略表快速查找的方法 |
CN109639388A (zh) * | 2019-01-04 | 2019-04-16 | 烽火通信科技股份有限公司 | 一种基于otn/sdh融合设备的端到端业务管理方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104038425B (zh) * | 2013-03-06 | 2018-01-02 | 阿里巴巴集团控股有限公司 | 转发以太网报文的方法和装置 |
-
2020
- 2020-05-29 CN CN202010476023.5A patent/CN111698169B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102025643A (zh) * | 2010-12-30 | 2011-04-20 | 华为技术有限公司 | 一种流表查找方法和装置 |
CN104601427A (zh) * | 2013-10-31 | 2015-05-06 | 杭州华三通信技术有限公司 | 数据中心网络中的报文转发方法及装置 |
WO2016106506A1 (zh) * | 2014-12-29 | 2016-07-07 | 华为技术有限公司 | 一种路由方法和设备 |
CN106330720A (zh) * | 2016-08-26 | 2017-01-11 | 浪潮集团有限公司 | 一种ip报文策略表快速查找的方法 |
CN109639388A (zh) * | 2019-01-04 | 2019-04-16 | 烽火通信科技股份有限公司 | 一种基于otn/sdh融合设备的端到端业务管理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111698169A (zh) | 2020-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104348716B (zh) | 一种报文处理方法及设备 | |
US6665725B1 (en) | Processing protocol specific information in packets specified by a protocol description language | |
CN103067281B (zh) | 一种路由器快速转发方法及实施该方法的系统 | |
TWI661698B (zh) | 轉發乙太網路封包的方法和裝置 | |
CN108270699B (zh) | 报文处理方法、分流交换机及聚合网络 | |
US11689501B2 (en) | Data transfer method and virtual switch | |
KR100798926B1 (ko) | 패킷 스위치 시스템에서의 패킷 포워딩 장치 및 방법 | |
CN102970227A (zh) | 在asic中实现vxlan报文转发的方法和装置 | |
US20080225874A1 (en) | Stateful packet filter and table management method thereof | |
CN101645851B (zh) | 一种ip分片报文的重组方法和装置 | |
US8179792B1 (en) | Packet de-duplication | |
US20180159758A1 (en) | Virtual media access control addresses for hosts | |
CN1286857A (zh) | 减少存储器访问次数的网络包发送查询 | |
CN106713144A (zh) | 一种报文出口信息的读写方法及转发引擎 | |
CN107888710A (zh) | 一种报文转发方法及装置 | |
CN107995130A (zh) | 一种分片报文的快转方法 | |
WO2017114378A1 (zh) | Ip数据包的转发 | |
US20230006937A1 (en) | Packet flow identification with reduced decode operations | |
US8068515B2 (en) | Faster multimedia synchronization of broadcast streams using router caching of RTCP packets | |
US8050185B2 (en) | Sampling of network traffic based on CAM lookup | |
KR100501080B1 (ko) | 인터넷상 트래픽의 상위 계층 프로토콜들을 구분하는 방법및 장치 | |
CN111698169B (zh) | 基于帧内容的通信端口提取方法 | |
CN109672594B (zh) | IPoE报文处理方法、装置及宽带远程接入服务器 | |
US10185783B2 (en) | Data processing device, data processing method, and non-transitory computer readable medium | |
CN106789706B (zh) | 一种基于tcam的网络分流系统 |
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 |