FPGA (Field Programmable Gate Array) high-performance packet analysis method applied to spaceborne routing

By using the multi-pointer packet analysis method implemented by FPGA in satellite communication system, the problem of the MPDU data domain length does not match the IP data in the conversion of AOS data to IP data is solved, and efficient IPv6 packet extraction and flexible data processing are realized.

CN119544840AActive Publication Date: 2025-02-28CHONGQING UNIV OF POSTS & TELECOMM
View PDF 7 Cites 0 Cited by

Patent Information

Application Number
CN202411768769.8
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Filing Date
2024-12-04
Publication Date
2025-02-28
Estimated Expiration
2044-12-04

AI Technical Summary

Technical Problem

It is difficult for the prior art to efficiently convert AOS data to IP data in satellite communication systems, especially when the length of the MPDU data domain is not an integer multiple, it is a big challenge to accurately find the starting and ending byte positions of the IP data in the AOS frame.

Method used

Using a high-performance FPGA packet analysis method applied to satellite-borne routing, IPv6 packets are extracted from the MPDU data domain of the AOS data frame through a multi-pointer method. The method includes calculating a multi-level pointer to locate the start and end byte positions of the MPDU data domain and re-aligning and extracting the data through a cache mechanism.

Benefits of technology

It realizes efficient analysis of large bit width AOS frames and accurate extraction of IPv6 data packets, and has good flexibility and can process data with integer multiple bit widths of any byte.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 00000000_0000_ABST
    Figure 00000000_0000_ABST
Patent Text Reader

Abstract

The invention relates to the field of satellite communication, in particular to an FPGA (Field Programmable Gate Array) high-performance packet analysis method applied to spaceborne routing, which comprises the following steps of: receiving a current AOS (Advanced Operating System) data frame which comprises an MPDU (Multi-Protocol Data Unit) data field; calculating a first-level head pointer, a first-level tail pointer, a second-level head pointer and a second-level tail pointer of the MPDU data field; extracting an MPDU data field in the AOS data frame according to the first-level head pointer and the first-level tail pointer; obtaining the length of the IPv6 data packet, and extracting the IPv6 data packet from the MPDU data field by adopting a multi-pointer method according to a first-level head pointer, a first-level tail pointer, a second-level head pointer and a second-level tail pointer; the invention provides an AOS frame analysis method capable of processing a large bit width aiming at the requirement of high throughput performance, and the method can be used for integer multiple bit widths of any byte; meanwhile, in order to meet various task requirements, configuration analysis of the length of each data part in the AOS frame can be supported, and the flexibility is good.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of satellite communications, and in particular to an FPGA high-performance packet parsing method applied to satellite-borne routing. Background Art

[0002] Satellite communication systems have the characteristics of wide-area coverage and high reliability, and play an increasingly important role in all aspects of today's social life. The world's technological powers are also competing to deploy such infrastructure. At the same time, with the deep integration of satellite communication networks and the Internet, satellite Internet is also developing rapidly. For example, large-scale satellite constellation systems such as Starlink and OneWeb, which have developed rapidly in recent years, are typical representatives. At the same time, in order to meet various needs in space missions and provide better support and guarantee for the realization of various space missions, the CCSDS standard was proposed, and the convenience and flexibility of data processing were improved for the advanced on-orbit system AOS. The AOS protocol is applicable to various communication types such as between spacecraft and spacecraft, between spacecraft and unmanned space platforms, and between spacecraft and the ground, which improves the convenience and flexibility of data processing and carries a variety of services such as remote sensing, telemetry, image transmission and scientific research detection.

[0003] The AOS standard is a protocol developed to build high-speed information channels and improve information transmission in space. It can store effective information payloads in the Multiplexed Protocol Data Unit (MPDU) through multiplexing technology, thereby transmitting data in the form of AOS frames, which is perfectly compatible with IP data formats. For satellite communication systems, routing technology is used within the communication system to perform data packet classification, path finding, forwarding and other operations. Considering that AOS is widely used in aerospace equipment, that is, the input information is not in the form of intuitive IP data, it is necessary to first complete the conversion of AOS data to IP data. It can be seen that the performance of AOS data to IP data conversion will directly affect the performance of routing in the satellite, and it is of practical significance to design a high-performance AOS and IP data conversion system.

[0004] However, the length of the MPDU data field is not an integer multiple or one-to-one correspondence with the transmitted IP data, which means that the information of a unified IP data packet may be scattered in different AOS frames. It is a big challenge to accurately find the start and end byte positions of the IP data in the AOS frame and update the start and end points according to the end position of the next IP packet. Summary of the invention

[0005] In order to solve the above-mentioned prior art problems, the present invention adopts an FPGA high-performance packet parsing method applied to satellite-borne routing, comprising:

[0006] S1. Receive current AOS data frame A t , the AOS data frame includes the MPDU data field, and the AOS data frame is composed of multiple fields with a length of bit width W; calculate the first-level header pointer P of the MPDU data field Begin-1,t , first level tail pointer P End-1,t , Secondary head pointer P Begin-2,t And the secondary tail pointer P End-2,t ; According to pointer P Begin-1,t , P End-1,t Extract the MPDU data field in the AOS data frame; pointer P Begin-1,t , P End-1,t Point to the start byte and end byte of the MPDU data field respectively. Begin-2,t , P End-2,t The byte positions of the start byte and the end byte of the MPDU data field in the corresponding fields are pointed to respectively; where t is the time;

[0007] S2, according to pointer P Begin-1,t , P End-1,t , P Begin-2,t , P End-2,t A multi-pointer method is used to extract IPv6 packets from the MPDU data field.

[0008] The onboard routing includes MPDU cache and IPv6 data cache; the multi-pointer method is used to extract IPv6 data packets from the MPDU data field, including: according to the secondary header pointer P Begin-2,t Realign the head of the MPDU data field to obtain the aligned data, and store the aligned data into the MPDU buffer according to the bit width W. Begin-1,t , P End-1,t , P Begin-2,t , P End-2,t A multi-pointer method is used to retrieve data from the MPDU buffer and store it in the IPv6 data buffer, and the IPv6 data packet is output according to the IPv6 data buffer.

[0009] The MPDU data field includes: multiple fields M with a length of bit width W c,i ; Realigning the head of the MPDU data field includes: obtaining the MPDU data field M c Data M after one clock delay c+1 , data M c+1 It includes multiple fields M with a length of bit width W. c+1,i ; According to the secondary header pointer P of the MPDU data field Begin-2,t For each field M c,i and each field M c+1,i Divide and get field M c,i The first N bits of data And the last WN bits of data and field M c+1 The first N bits of data And the last WN bits of data Each field M c+1,i The last WN bits of data With field M c,i+1 The first N bits of data Splicing is performed to obtain aligned data; wherein c represents the clock and i is the index of the field.

[0010] The multi-pointer method is used to retrieve data from the MPDU buffer and store it in the IPv6 data buffer, including:

[0011] S21, obtaining the length of the IPv6 data packet, and setting the head pointer, tail pointer and address pointer of the IPv6 data packet according to the primary header pointer, secondary header pointer and the length of the IPv6 data packet of the MPDU data field currently stored in the MPDU cache;

[0012] S22, taking out data from the MPDU cache in sequence according to the bit width W, storing the taken out data into the IPv6 data cache in sequence according to the bit width W and increasing the address pointer in sequence at the same time; when the address pointer reaches the tail pointer of the IPv6 data packet but does not reach the secondary tail pointer of the MPDU data field currently stored in the MPDU cache, the IPv6 data cache stores a complete IPv6 data packet, and executes step S23; when the address pointer reaches the secondary tail pointer of the MPDU data field currently stored in the MPDU cache but does not reach the tail pointer of the IPv6 data packet, the IPv6 data cache stores an incomplete IP data packet, and executes step S24; when the address pointer reaches the tail pointer of the IPv6 data packet and simultaneously reaches the secondary tail pointer of the MPDU data field currently stored in the MPDU cache, execute step S26;

[0013] S23, output the complete IPv6 data packet stored in the IPv6 data cache, and when the complete IPv6 data packet is output, update the address pointer and the head pointer and tail pointer of the IPv6 data packet, and return to step S22;

[0014] S24, sending a request to receive the next AOS data frame and waiting for the next AOS data frame input, when the next AOS data frame A is detected t+1 On input, calculate data frame A t+1 The first level header pointer of the MPDU data field First level tail pointer Secondary head pointer P Begin-2,t+1 And the secondary tail pointer P End-2,t+1 ; According to the pointer In data frame A t+1 Extract the MPDU data field from the data frame At+1 The MPDU data field is realigned to obtain the aligned data, and the aligned data is stored in the MPDU buffer;

[0015] S25, determine whether the next AOS data frame matches the incomplete IP data packet. If not, discard the incomplete IP data packet and execute step S21; if matching, determine whether the next AOS data frame matches the incomplete IP data packet according to the AOS data frame A. t The first-level tail pointer P End-1,t Update pointer Get the final first-level header pointer P of the MPDU data field Begin-1,t+1 , first level tail pointer P End-1,t+1 , and execute step S22;

[0016] S26, reset the MPDU buffer, IPv6 data buffer, address pointer, and the head pointer and tail pointer of the MPDU data field and IP data packet.

[0017] Setting the head pointer, tail pointer and address pointer of the IPv6 data packet includes:

[0018] Hdr_begin=W×P Begin-1,t +P Begin-2,t

[0019] Hdr_end=Hdr_begin+len

[0020] pos = Hdr_begin

[0021] Among them, Hdr_begin and Hdr_end are the head pointer and tail pointer of the IPv6 data packet respectively, pos is the address pointer, and len is the length of the IPv6 data packet.

[0022] Updating the address pointer and the head and tail pointers of the IPv6 packet includes:

[0023] Hdr_begin=Hdr_end

[0024] Hdr_end=Hdr_begin+len

[0025] pos = Hdr_begin

[0026] Among them, Hdr_begin and Hdr_end are the head pointer and tail pointer of the IPv6 data packet respectively, pos is the address pointer, and len is the length of the IPv6 data packet.

[0027] The MPDU data field includes: an MPDU header and an MPDU packet field; the MPDU header includes a leading header pointer; the MPDU packet field includes the tail of the previous CCSDS packet; judging whether the next AOS data frame matches the incomplete IP data packet includes: extracting the tail of the previous CCSDS packet stored in the MPDU data field of the next AOS data frame according to the leading header pointer of the MPDU data field of the next AOS data frame, and obtaining the tail length L Tail , get the length L of the incomplete IP data packet Exist , when the length of the incomplete IP data packet is L Exist and tail length L Tail When the sum is equal to the complete IPv6 data packet length len, the next AOS data frame matches the incomplete IP data packet; otherwise, it does not match.

[0028] The structure of the AOS data frame also includes: a leading header, an insertion field, and a tail; extracting the MPDU data field from the AOS data frame includes:

[0029] S11, according to the leading header length L of the AOS data frame head , Insertion domain length L Insert And the MPDU data field length L Mpdu Calculate the starting byte position L of the MPDU data field begin and end byte position L end ;

[0030] S12, according to the starting byte position L begin and end byte position L end Calculate the first-level head pointer, first-level tail pointer, second-level head pointer, and second-level tail pointer.

[0031] Calculate the starting byte position L of the MPDU data field begin and end byte position L end Including: the leading header length L of the AOS data frame head , Insertion domain length L Insert Add together to get the starting byte position L begin , the leading header length L of the AOS data frame head , Insertion domain length L Insert And the MPDU data field length L Mpdu Add and get the end byte position L end .

[0032] Calculating the first and last level pointers and the second level pointers includes: begin and end byte position L end Divide by W to get the first-level head pointer P Begin-1 and the first-level tail pointer P End-1; Set the starting byte position L begin and end byte position L end Take the modulo of W respectively to get the secondary head pointer P Begin-2 and the secondary tail pointer P End-2 .

[0033] Beneficial effects:

[0034] Aiming at the high throughput performance requirement, the present invention proposes a method for parsing AOS frames through multiple pointers that can handle large bit widths. The method for parsing AOS frames adopts a multi-pointer method to extract IPv6 data packets from the MPDU data field of the AOS frame. It can be used for any bit width that is an integer multiple of a byte and has good flexibility. BRIEF DESCRIPTION OF THE DRAWINGS

[0035] Figure 1 A schematic diagram of the AOS frame structure provided by an embodiment of the present invention;

[0036] Figure 2 An overall design framework diagram provided for an embodiment of the present invention;

[0037] Figure 3 A schematic diagram of a data splicing module provided in an embodiment of the present invention;

[0038] Figure 4 A flowchart of a FPGA high-performance packet parsing method for on-board routing provided by an embodiment of the present invention;

[0039] Figure 5 A flowchart of a pointer updating algorithm provided by an embodiment of the present invention. DETAILED DESCRIPTION

[0040] The following will be combined with the drawings in the embodiments of the present invention to clearly and completely describe the technical solutions in the embodiments of the present invention. Obviously, the described embodiments are only part of the embodiments of the present invention, not all of the embodiments. Based on the embodiments of the present invention, all other embodiments obtained by ordinary technicians in this field without creative work are within the scope of protection of the present invention.

[0041] Figure 1It is the AOS data frame structure shown in the application protocol of the present invention. The frame composition includes a transmission frame leading header, a transmission frame insertion field, a transmission frame MPDU data field and a transmission frame tail. In the present invention, the lengths of these four parts can be flexibly configured according to the required situation; the MPDU data field includes: an MPDU header and an MPDU packet field; the MPDU header includes a reserved field and a leading header pointer; the MPDU packet field includes the tail of the previous (kth) CCSDS packet, the k+1th CCSDS packet, the k+2th CCSDS packet, ..., the Nth CCSDS packet and the first half of the N+1th CCSDS packet; wherein CCSDS is a standardized data transmission format.

[0042] like Figure 4 , Figure 5 As shown, the present invention adopts an FPGA high-performance packet parsing method applied to satellite routing, and adopts two dual-port RAMs, one for caching MPDU data and the other for caching IPv6 data. The depth and width of the MPDU cache (RAM_MPDU) are determined according to the set data bit width and packet length, ensuring that the RAM can cache a complete MPDU data; the IPv6 data cache (RAM_IP) is determined according to the standard maximum IP data packet, ensuring that the size is greater than the maximum data packet size defined by the standard.

[0043] The specific steps are as follows:

[0044] S1. Receive the current AOS data frame A t , the AOS data frame includes the MPDU data field, and the AOS data frame is composed of multiple fields with a length of bit width W; calculate the first-level header pointer P of the MPDU data field Begin-1,t , first level tail pointer P End-1,t , Secondary head pointer P Begin-2,t And the secondary tail pointer P End-2,t ; According to pointer P Begin-1,t , P End-1,t Extract the MPDU data field in the AOS data frame; pointer P Begin-1,t , P End-1,t Point to the start byte and end byte of the MPDU data field respectively. Begin-2,t , P End-2,t The byte positions of the start byte and the end byte of the MPDU data field in the corresponding fields are pointed to respectively; where t is the time;

[0045] Calculate the first level header pointer P of the MPDU data field Begin-1,t , first level tail pointer P End-1,t , Secondary head pointer P Begin-2,t And the secondary tail pointer P Endv2,t include:

[0046] According to the leading header length L of the AOS data frame head , Insertion domain length L Insert And the MPDU data field length L Mpdu Calculate the starting byte position L of the MPDU data field begin and end byte position L end , the formula is:

[0047] L begin =L head +L Insert

[0048] L end =L head +L Insert +L Mpdu

[0049] Set the input data bit width W and the starting byte position L begin and end byte position L end Divide by W to get the first-level head pointer P Begin-1 and the first-level tail pointer P End-1 ; Set the starting byte position L begin and end byte position L end Take the modulo of W respectively to get the secondary head pointer P Begin-2 and the secondary tail pointer P End-2 , the formula is:

[0050] P Begin-1 =L begin / W

[0051] P End-1 =L end / W

[0052] P Begin-2 =L begin %W

[0053] P End-2 =L End %W

[0054] S2, after indenting the MPDU data field and realigning the header, the MPDU data field is stored in the MPDU buffer;

[0055] like Figure 3 As shown, the MPDU data field includes: a plurality of fields M with a length of bit width W c,i ;Realigning the MPDU data field header includes:

[0056] Get MPDU data field M c Data M after one clock delay c+1 , data M c+1 It includes multiple fields M with a length of bit width W.c+1,i ; According to the secondary header pointer of the MPDU data field, each field M c,i and each field M c+1,i Divide and get field M c,i The first N bits of data And the last WN bits of data and field M c+1 The first N bits of data And the last WN bits of data Each field M c+1,i The last WN bits of data With field M c,i+1 The first N bits of data Splicing is performed to obtain aligned data; wherein c represents the clock and i is the index of the field.

[0057] S3, obtaining the length of the IPv6 data packet, and setting the head pointer, tail pointer and address pointer of the IPv6 data packet according to the first-level header pointer, the second-level header pointer and the length of the IPv6 data packet;

[0058] According to the first-level header pointer, the second-level header pointer and the length len of the IPv6 data packet, the head pointer Hdr_begin and the tail pointer Hdr_end of the IPv6 data packet and the address pointer pos are set, including:

[0059] Hdr_begin=W×P Begin-1,t +P Begin-2,t

[0060] Hdr_end=Hdr_begin+len

[0061] pos = Hdr_begin

[0062] S4. Take out data from the MPDU buffer in sequence according to the bit width W, store the taken out data into the IPv6 data buffer in sequence according to the bit width W, and increase the address pointer in sequence: pos=pos+1, according to the first-level tail pointer P of the data in the current MPDU buffer End-1,t Determine whether the address pointer reaches the secondary tail pointer P of the data in the current MPDU cache End-2,t Specifically, when pos=W×(P End-1,t -1)+P End-2,t When the address pointer reaches the secondary tail pointer P of the MPDU data field currently stored in the MPDU cache End-2,t; When the address pointer reaches the tail pointer of the IPv6 data packet but does not reach the secondary tail pointer of the MPDU data field currently stored in the MPDU cache, the IPv6 data cache stores a complete IPv6 data packet and executes step S5; when the address pointer reaches the secondary tail pointer of the MPDU data field currently stored in the MPDU cache but does not reach the tail pointer of the IPv6 data packet, the IPv6 data cache stores an incomplete IP data packet and executes step S6; when the address pointer reaches the tail pointer of the IPv6 data packet and simultaneously reaches the secondary tail pointer of the MPDU data field currently stored in the MPDU cache, execute step S8; wherein, when the address pointer reaches the tail pointer of the IPv6 data packet but does not reach the secondary tail pointer, since data with a length of bit width W is read out from the MPDU cache at this time, if the first few bits of data have been stored in the IPv6 data cache, but the remaining data needs to be used when the next IP data packet is spliced, a register is needed to store the remaining data at this time, and when data is taken out from the MPDU cache again according to the bit width W, the remaining data is spliced ​​with the newly taken out data.

[0063] S5, output the complete IPv6 data packet stored in the IPv6 data cache, and when the complete IPv6 data packet is output, update the address pointer and the head pointer and tail pointer of the IPv6 data packet, and return to step S4;

[0064] Since the data stored in the IP cache is W bytes where the IP data header is located, the starting bit of the actual IP data is not necessarily located at the highest bit. When outputting, the secondary pointer information of the head pointer at this time needs to be passed to the next module at the same time to facilitate the relocation of the header.

[0065] Updating the address pointer and the head and tail pointers of the IPv6 packet includes:

[0066] Hdr_begin=Hdr_end

[0067] Hdr_end=Hdr_begin+len

[0068] pos = Hdr_begin

[0069] S6, send a request to receive the next AOS data frame and wait for the next AOS data frame input. When the next AOS data frame A is detected, t+1 On input, calculate data frame A t+1 The first level header pointer of the MPDU data field First level tail pointer Secondary head pointer P Begin-2,t+1 And the secondary tail pointer P End-2,t+1 ; According to the pointer In data frame A t+1Extract the MPDU data field from the data frame A t+1 The MPDU data field is realigned to obtain the aligned data, and the aligned data is stored in the MPDU buffer;

[0070] S7, determine whether the next AOS data frame matches the incomplete IP data packet. If not, discard the incomplete IP data packet and execute step S3; if matching, t The first-level tail pointer P End-1,t Update pointer Get the final first-level header pointer P of the MPDU data field Begin-1,t+1 , first level tail pointer P End-1,t+1 , and execute step S4;

[0071] According to AOS data frame A t The first-level tail pointer P End-1,t Update data frame A t+1 Pointer to the MPDU data field include:

[0072] P Begin-1,t+1 =P End-1,t

[0073]

[0074] Determining whether the next AOS data frame matches the incomplete IP data packet includes: extracting the tail of the previous CCSDS packet stored in the MPDU data field of the next AOS data frame according to the first header pointer of the MPDU data field of the next AOS data frame to obtain the tail length L Tail , get the length L of the incomplete IP data packet Exist , when the length of the incomplete IP data packet is L Exist and tail length L Tail When the sum is equal to the complete IPv6 data packet length len, the next AOS data frame matches the incomplete IP data packet; otherwise, it does not match. Specifically:

[0075] len=L Exist +L Tail The length is correct, keep

[0076] len≠L Exist +L Tail Wrong length, discarded

[0077] S8: Reset the MPDU buffer, IPv6 data buffer, address pointer, and head pointer and tail pointer of the MPDU data field and IP data packet, and send a request to receive the next AOS data frame. When the next AOS data frame input is detected, execute step S1;

[0078] like Figure 2 As shown, the present invention also provides an FPGA high-performance packet parsing system applied to satellite-borne routing, including: an MPDU stripping module, an MPDU data splicing module, an MPDU cache and IP data extraction module, and an output management module;

[0079] The MPDU stripping module receives the AOS data frame in parallel and extracts the MPDU data field from the AOS data frame;

[0080] The MPDU data splicing module obtains the data after a delay of one clock on the MPDU data field, and splices the MPDU data field and the data after a delay of one clock on the MPDU data field according to the secondary header pointer of the MPDU data to obtain the aligned data, which takes the start of the MPDU as the data of the highest bit of the real data packet; that is, due to the input of large bit width data, the starting point of the MPDU data can appear at any bit position. This module realigns the data header to ensure that the starting point is the starting point of the real data.

[0081] The MPDU buffer and IP data extraction module stores the spliced ​​data into the MPDU buffer, and uses a multi-pointer method to retrieve data from the MPDU buffer and store it into the IPv6 data buffer.

[0082] The output management module outputs the IPv6 data packet in the IPv6 data buffer by adding some auxiliary information to the data packet header.

[0083] The above embodiments further illustrate the purpose, technical solutions and advantages of the present invention in detail. It should be understood that the above embodiments are only preferred implementation modes of the present invention and are not intended to limit the present invention. Any modifications, equivalent substitutions, improvements, etc. made to the present invention within the spirit and principles of the present invention should be included in the protection scope of the present invention.

Claims

1. A FPGA high-performance packet parsing method for onboard routing, characterized in that: include: S1. Receive the current AOS data frame A t , the AOS data frame includes the MPDU data field, and the AOS data frame is composed of multiple fields with a length of bit width W; calculate the first-level header pointer P of the MPDU data field Begin-1,t , first level tail pointer P End-1,t , Secondary head pointer P Begin-2,t And the secondary tail pointer P End-2,t ; According to pointer P Begin-1,t , P End-1,t Extract the MPDU data field in the AOS data frame; pointer P Begin-1,t , P End-1,t Point to the start byte and end byte of the MPDU data field respectively. Begin-2,t , P End-2,t Point to the byte positions of the start byte and the end byte of the MPDU data field in the corresponding fields respectively; where t is the time; S2, according to pointer P Begin-1,t , P End-1,t , P Begin-2,t , P End-2,t A multi-pointer method is used to extract IPv6 packets from the MPDU data field.

2. The FPGA high-performance packet parsing method for on-board routing according to claim 1, characterized in that: Onboard routing includes MPDU caching and IPv6 data caching; The multi-pointer method is used to extract IPv6 data packets from the MPDU data field, including: Begin-2,t Realign the head of the MPDU data field to obtain the aligned data, and store the aligned data into the MPDU buffer according to the bit width W. Begin-1,t , P End-1,t , P Begin-2,t , P End-2,t A multi-pointer method is used to retrieve data from the MPDU buffer and store it in the IPv6 data buffer, and the IPv6 data packet is output according to the IPv6 data buffer.

3. The FPGA high-performance packet parsing method for on-board routing according to claim 2, characterized in that: The MPDU data field includes: multiple fields M with a length of bit width W c,i ; Realigning the head of the MPDU data field includes: obtaining the MPDU data field M c Data M after one clock delay c+1 , data M c+1 It includes multiple fields M with a length of bit width W. c+1,i ; According to the secondary header pointer P of the MPDU data field Begin-2,t For each field M c,i and each field M c+1,i Divide and get field M c,i The first N bits of data And the last WN bits of data and field M c+1 The first N bits of data And the last WN bits of data Each field M c+1,i The last WN bits of data With field M c,i+1 The first N bits of data Splicing is performed to obtain aligned data; wherein c represents the clock and i is the index of the field.

4. The FPGA high-performance packet parsing method for on-board routing according to claim 2, characterized in that: The multi-pointer method is used to retrieve data from the MPDU buffer and store it in the IPv6 data buffer, including: S21, obtaining the length of the IPv6 data packet, and setting the head pointer, tail pointer and address pointer of the IPv6 data packet according to the primary header pointer, secondary header pointer and the length of the IPv6 data packet of the MPDU data field currently stored in the MPDU cache; S22, taking out data from the MPDU cache in sequence according to the bit width W, storing the taken out data into the IPv6 data cache in sequence according to the bit width W and increasing the address pointer in sequence at the same time; when the address pointer reaches the tail pointer of the IPv6 data packet but does not reach the secondary tail pointer of the MPDU data field currently stored in the MPDU cache, the IPv6 data cache stores a complete IPv6 data packet, and executes step S23; when the address pointer reaches the secondary tail pointer of the MPDU data field currently stored in the MPDU cache but does not reach the tail pointer of the IPv6 data packet, the IPv6 data cache stores an incomplete IP data packet, and executes step S24; when the address pointer reaches the tail pointer of the IPv6 data packet and simultaneously reaches the secondary tail pointer of the MPDU data field currently stored in the MPDU cache, execute step S26; S23, output the complete IPv6 data packet stored in the IPv6 data cache, and when the complete IPv6 data packet is output, update the address pointer and the head pointer and tail pointer of the IPv6 data packet, and return to step S22; S24, sending a request to receive the next AOS data frame and waiting for the next AOS data frame input, when the next AOS data frame A is detected t+1 On input, calculate data frame A t+1 The first level header pointer of the MPDU data field First level tail pointer Secondary head pointer P Begin-2,t+1 And the secondary tail pointer P End-2,t+1 ; According to the pointer In data frame A t+1 Extract the MPDU data field from the data frame A t+1 The MPDU data field is realigned to obtain the aligned data, and the aligned data is stored in the MPDU buffer; S25, determine whether the next AOS data frame matches the incomplete IP data packet. If not, discard the incomplete IP data packet and execute step S21; if matching, determine whether the next AOS data frame matches the incomplete IP data packet according to the AOS data frame A. t The first-level tail pointer P End-1,t Update pointer Get the final first-level header pointer P of the MPDU data field Begin-1,t+1 , first level tail pointer P End-1,t+1 , and execute step S22; S26, reset the MPDU buffer, IPv6 data buffer, address pointer, and the head pointer and tail pointer of the MPDU data field and IP data packet.

5. The FPGA high-performance packet parsing method for on-board routing according to claim 4, characterized in that: Setting the head pointer, tail pointer and address pointer of the IPv6 data packet includes: Hdr_begin=W×P Begin-1,t +P Begin-2,t Hdr_end=Hdr_begin+len pos = Hdr_begin Among them, Hdr_begin and Hdr_end are the head pointer and tail pointer of the IPv6 data packet respectively, pos is the address pointer, and len is the length of the IPv6 data packet.

6. The FPGA high-performance packet parsing method for on-board routing according to claim 4, characterized in that: Updating the address pointer and the head and tail pointers of the IPv6 packet includes: Hdr_begin=Hdr_end Hdr_end=Hdr_begin+len pos = Hdr_begin Among them, Hdr_begin and Hdr_end are the head pointer and tail pointer of the IPv6 data packet respectively, pos is the address pointer, and len is the length of the IPv6 data packet.

7. The FPGA high-performance packet parsing method for on-board routing according to claim 1, characterized in that: The MPDU data field includes: an MPDU header and an MPDU packet field; the MPDU header includes a leading header pointer; the MPDU packet field includes the tail of the previous CCSDS packet; judging whether the next AOS data frame matches the incomplete IP data packet includes: extracting the tail of the previous CCSDS packet stored in the MPDU data field of the next AOS data frame according to the leading header pointer of the MPDU data field of the next AOS data frame, and obtaining the tail length L Tail , get the length L of the incomplete IP data packet Exist , when the length of the incomplete IP data packet is L Exist and tail length L Tail When the sum is equal to the complete IPv6 data packet length len, the next AOS data frame matches the incomplete IP data packet; otherwise, it does not match; wherein, CCSDS is a standardized data transmission format.

8. The FPGA high-performance packet parsing method for on-board routing according to claim 1, characterized in that: The structure of the AOS data frame also includes: a leading header, an insertion field, and a tail; extracting the MPDU data field from the AOS data frame includes: S11, according to the leading header length L of the AOS data frame head , Insertion domain length L Insert And the MPDU data field length L Mpdu Calculate the starting byte position L of the MPDU data field begin and end byte position L end ; S12, according to the starting byte position L begin and end byte position L end Calculate the first-level head pointer, first-level tail pointer, second-level head pointer, and second-level tail pointer.

9. The FPGA high-performance packet parsing method for onboard routing according to claim 8, characterized in that: Calculate the starting byte position L of the MPDU data field begin and end byte position L end Including: the leading header length L of the AOS data frame head , Insertion domain length L Insert Add together to get the starting byte position L begin , the leading header length L of the AOS data frame head , Insertion domain length L Insert And the MPDU data field length L Mpdu Add together to get the end byte position L end .

10. The FPGA high-performance packet parsing method for on-board routing according to claim 8, characterized in that: Calculating the first and last level pointers and the second level pointers includes: begin and end byte position L end Divide by W respectively to get the first-level head pointer P Begin-1 and the first-level tail pointer P End-1 ; Set the starting byte position L begin and end byte position L end Take the modulo of W respectively to get the secondary head pointer P Begin-2 and the secondary tail pointer P End-2 .

Citation Information

Patent Citations

  • An unpacking method for satellite packet remote sensing data

    CN101170345A

  • Cache management device and method based on address pointer linked list

    CN101551736A

  • Method and device for analyzing encaptured data protocol unit

    CN106131034A

  • AOS data processing FPGA simulation verification system based on UVM

    CN114218883A

  • Data packet processing method and system, storage medium and electronic equipment

    CN115988108A