A high-performance packet parsing method applied to satellite-borne routing

By using a multi-pointer method to parse AOS frames, the problem of uncertain position of IP data in AOS frames is solved, achieving efficient data processing and parsing and improving the performance of satellite communication systems.

CN119544840BActive Publication Date: 2025-11-07CHONGQING UNIV OF POSTS & TELECOMM
View PDF 2 Cites 0 Cited by

Patent Information

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

AI Technical Summary

Technical Problem

Existing technologies make it difficult to accurately locate the start and end positions of IP data within AOS frames, resulting in IP data packets being scattered across different AOS frames and affecting the data processing performance of satellite communication systems.

Method used

The MPDU data field is extracted from the AOS data frame using a multi-pointer method. The MPDU data field is re-aligned by calculating the first-level and second-level header and tail pointers, and the IPv6 packet is extracted from the MPDU buffer using the multi-pointer method.

Benefits of technology

It enables flexible and efficient parsing of AOS frames with widths that are integer multiples of any byte, thereby improving the data processing performance of satellite communication systems.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119544840B_ABST
    Figure CN119544840B_ABST
Patent Text Reader

Abstract

The application relates to the field of satellite communication, in particular to a high-performance FPGA packet analysis method applied to on-board routing, which comprises the following steps: receiving a current AOS data frame, wherein the AOS data frame comprises an MPDU 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 the 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 an IPv6 data packet, and extracting the IPv6 data packet from the MPDU data field by using a multi-pointer method according to the first-level head pointer, the first-level tail pointer, the second-level head pointer and the second-level tail pointer; the application provides an AOS frame analysis method capable of processing large bit width, which can be used for any byte integer multiple bit width; meanwhile, the application can support configuration analysis of the lengths of various data parts in the AOS frame to meet the requirements of various tasks, and has good flexibility.
Need to check novelty before this filing date? Find Prior Art

Description

TECHNICAL FIELD

[0001] The present application relates to the field of satellite communication, in particular to a high-performance packet analysis method for FPGA applied to on-board routing. BACKGROUND

[0002] Satellite communication systems have the characteristics of wide area coverage and high reliability, and play an increasingly important role in various aspects of today's social life. Today, the world's major 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, the large-scale satellite constellation systems such as Starlink and OneWeb developed rapidly in recent years are typical representatives. At the same time, in order to meet the various needs of space missions and to provide better support and protection for various space missions, the CCSDS standard is proposed, and the AOS protocol is proposed to improve the convenience and flexibility of data processing. The AOS protocol is suitable for various communication types between spacecraft and spacecraft, spacecraft and unmanned space platforms, spacecraft and ground, etc., improving the convenience and flexibility of data processing, carrying various businesses such as remote sensing, telemetry, image transmission, and scientific research and exploration, etc.

[0003] The AOS standard is a protocol developed to build high-speed information channels and improve information transmission in space. It can store valid information payloads in Multiplexed Protocol Data Units (MPDU) through multiplexing technology, and then transmit data in the form of AOS frames, which can perfectly compatible with IP data format. For satellite communication systems, routing technology is used to classify packets, find paths, and forward data within the communication system. Considering that AOS is widely used in space equipment, the input information is not in the form of IP data, so the AOS data needs to be converted to IP data first. Therefore, the performance of AOS data conversion to IP data will directly affect the performance of routing in satellites, and designing a high-performance AOS and IP data conversion system is of practical significance.

[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 leads to the possibility 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 IP data in AOS frames and update the start and end points according to the end position of the next IP packet. SUMMARY

[0005] To solve the above technical problems, the present application adopts a high-performance packet analysis method for FPGA applied to on-board routing, which comprises:

[0006] S1. Receive the current AOS data frame A. t The AOS data frame includes an MPDU data field, and the AOS data frame consists of multiple fields of length W. The first-level header pointer P of the MPDU data field is calculated. Begin-1,t First-level tail pointer P End-1,t Second-level head pointer P Begin-2,t and the second-level tail pointer P End-2,t According to pointer P Begin-1,t P End-1,t Extract the MPDU data field from the AOS data frame; pointer P Begin-1,t P End-1,t Pointers P point to the fields containing the start and end bytes of the MPDU data field, respectively. Begin-2,t P End-2,t These point to the byte positions of the start and end bytes of the MPDU data field in the corresponding fields, 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] Onboard routing includes MPDU caching and IPv6 data caching; the multi-pointer method for extracting IPv6 packets from the MPDU data field includes: based on the second-level header pointer P Begin-2,t The MPDU data field is re-aligned at the header to obtain aligned data. This aligned data is then stored in the MPDU buffer according to the bit width W, and then... (The sentence is incomplete and ends abruptly.) 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 cache and store it in the IPv6 data cache, and then output IPv6 packets based on the IPv6 data cache.

[0009] The MPDU data field includes: multiple fields M with a length of W and width of 1 bit. c,i Header realignment of the MPDU data field includes: obtaining the MPDU data field M c Data M delayed by one clock cycle c+1 Data M c+1 Includes multiple fields M with a length of bit width W. c+1,i According to the second-level header pointer P of the MPDU data field Begin-2,t For each field M respectively c,i and each field M c+1,i The data is divided to obtain field M. c,i The first N data and the following WN-bit data and field M c+1 The first N data and the following WN-bit data Sequentially, each field M c+1,i The last WN bits of data With field M c,i+1 The first N data The data is concatenated to obtain aligned data; where c represents the clock and i is the index of the field.

[0010] Retrieving data from the MPDU cache and storing it in the IPv6 data cache using a multi-pointer method includes:

[0011] S21. Obtain the length of the IPv6 packet, and set the header pointer, tail pointer, and address pointer of the IPv6 packet according to the first-level header pointer, second-level header pointer, and length of the IPv6 packet currently stored in the MPDU data field in the MPDU cache.

[0012] S22. Retrieve data from the MPDU buffer sequentially according to the bit width W, store the retrieved data into the IPv6 data buffer according to the bit width W, and simultaneously increment the address pointer sequentially. When the address pointer reaches the tail pointer of the IPv6 packet but not the second-level tail pointer of the MPDU data field currently stored in the MPDU buffer, the IPv6 data buffer stores a complete IPv6 packet, and proceed to step S23; when the address pointer reaches the second-level tail pointer of the MPDU data field currently stored in the MPDU buffer but not the tail pointer of the IPv6 packet, the IPv6 data buffer stores an incomplete IP packet, and proceed to step S24; when the address pointer reaches the tail pointer of the IPv6 packet and simultaneously reaches the second-level tail pointer of the MPDU data field currently stored in the MPDU buffer, proceed to step S26.

[0013] S23. Output the complete IPv6 data packet stored in the IPv6 data cache. When the complete IPv6 data packet is output, update the address pointer and the header and tail pointers of the IPv6 data packet, and return to step S22.

[0014] S24. 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 During input, calculate data frame A. t+1 MPDU data field first-level header pointer First-level tail pointer Second-level head pointer P Begin-2,t+1 and the second-level tail pointer P End-2,t+1 According to the pointer In data frame A t+1 Extract the MPDU data field from data frame A.t+1 aligning the header, obtaining aligned data, and storing the aligned data into the MPDU buffer;

[0015] S25, judging whether the next AOS data frame matches the incomplete IP data packet, if not, discarding the incomplete IP data packet and executing step S21, if yes, updating the pointer according to the AOS data frame A t End-1,t updating the pointer obtaining the final first header pointer P Begin-1,t+1 and first tail pointer P End-1,t+1 of the MPDU data field and executing step S22;

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

[0017] setting the header pointer and tail pointer of the IPv6 data packet and address pointer includes:

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

[0019] Hdr_end = Hdr_begin + len

[0020] pos = Hdr_begin

[0021] wherein, Hdr_begin and Hdr_end are the header 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 header pointer and tail pointer of the IPv6 data packet includes:

[0023] Hdr_begin = Hdr_end

[0024] Hdr_end = Hdr_begin + len

[0025] pos = Hdr_begin

[0026] wherein, Hdr_begin and Hdr_end are the header 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 comprises: an MPDU header and an MPDU package field; the MPDU header comprises a leading header pointer; the MPDU package field comprises a tail of a previous CCSDS package; the judging whether the next AOS data frame matches the incomplete IP data package comprises: extracting the tail of the previous CCSDS package 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, to obtain a tail length L Tail , obtaining an incomplete IP data package length L Exist , when the sum of the incomplete IP data package length L Exist and the tail length L Tail is equal to a complete IPv6 data package length len, the next AOS data frame matches the incomplete IP data package; otherwise, the next AOS data frame does not match the incomplete IP data package.

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

[0029] S11, calculating a starting byte position L begin and an ending byte position L end of the MPDU data field according to a leading header length L head , an insertion field length L Insert and an MPDU data field length L Mpdu of the AOS data frame;

[0030] S12, calculating a primary header pointer, a primary tail pointer, a secondary header pointer and a secondary tail pointer according to the starting byte position L begin and the ending byte position L end .

[0031] The calculating the starting byte position L begin and the ending byte position L end of the MPDU data field comprises: adding the leading header length L head and the insertion field length L Insert of the AOS data frame to obtain the starting byte position L begin , and adding the leading header length L head , the insertion field length L Insert and the MPDU data field length L Mpdu of the AOS data frame to obtain the ending byte position L end .

[0032] The calculating the primary head pointer and the primary tail pointer and the secondary head pointer and the secondary tail pointer comprises: dividing the starting byte position L begin and the ending byte position L end by W respectively to obtain the primary head pointer P Begin-1 and the primary tail pointer P End-1; the start byte position L begin and the end byte position L end respectively, to obtain a secondary head pointer P Begin-2 and a secondary tail pointer P End-2 .

[0033] Advantages:

[0034] The application proposes a method for processing large bit width by multi-pointer analyzing AOS frame, which can extract IPv6 data packet from MPDU data field of AOS frame by multi-pointer method, and can be used for any byte integer multiple bit width, and has good flexibility. BRIEF DESCRIPTION OF DRAWINGS

[0035] Figure 1 AOS frame structure schematic diagram provided by the embodiment of the application;

[0036] Figure 2 Overall design framework diagram provided by the embodiment of the application;

[0037] Figure 3 Data splicing module schematic diagram provided by the embodiment of the application;

[0038] Figure 4 Flow chart of a FPGA high-performance packet analysis method applied to satellite-borne routing provided by the embodiment of the application;

[0039] Figure 5 Pointer updating algorithm flow chart provided by the embodiment of the application. DETAILED DESCRIPTION

[0040] The technical solutions in the embodiments of the application will be clearly and completely described below with reference to the drawings in the embodiments of the application. Obviously, the described embodiments are only part of the embodiments of the application, rather than all the embodiments of the application. Based on the embodiments in the application, all other embodiments obtained by those skilled in the art without creative work fall within the protection scope of the application.

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

[0042] As shown in Figure 4 , Figure 5 , the application adopts a FPGA high-performance packet analysis method applied to satellite routing, and adopts two double-port RAMs, one for buffering MPDU data and one for buffering IPv6 data, the depth and width of the MPDU buffer (RAM_MPDU) are determined according to the set data bit width and packet length, and the RAM can buffer a complete MPDU data; the IPv6 data buffer (RAM_IP) is determined according to the standard maximum IP packet, and the size is greater than the standard maximum packet size.

[0043] The specific steps are as follows:

[0044] S1, receiving the current AOS data frame A t , the AOS data frame includes an MPDU data field, and the AOS data frame is composed of multiple fields with a bit width W; calculating the first-level head pointer P Begin-1,t , the first-level tail pointer P End-1,t , the second-level head pointer P Begin-2,t and the second-level tail pointer P End-2,t of the MPDU data field; extracting the MPDU data field in the AOS data frame according to the pointers P Begin-1,t , P End-1,t ; the pointers P Begin-1,t , P End-1,t point to the starting byte and ending byte of the MPDU data field respectively, and the pointers P Begin-2,t , P End-2,t point to the byte position of the starting byte and ending byte of the MPDU data field in the corresponding field; wherein, t is time;

[0045] Calculating the first-level head pointer P Begin-1,t , the first-level tail pointer P End-1,t , the second-level head pointer P Begin-2,t and the second-level tail pointer P Endv2,t of the MPDU data field include:

[0046] Based on the dominant header length L of the AOS data frame head Insertion field length L Insert and 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 each by W to obtain 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 Taking the remainder of W, we obtain the second-level head pointer P. Begin-2 and the second-level 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 and realigning the header of the MPDU data field, store the MPDU data field into the MPDU cache.

[0055] like Figure 3 As shown, the MPDU data field includes: multiple fields M with a length of bit width W. c,i Header realignment of the MPDU data field includes:

[0056] Obtain MPDU data field M c Data M delayed by one clock cycle c+1 Data M c+1 Includes multiple fields M with a length of bit width W.c+1,i ;According to the second-level header pointer of the MPDU data field, each field M is processed separately. c,i and each field M c+1,i The data is divided to obtain field M. c,i The first N data and the following WN-bit data and field M c+1 The first N data and the following WN-bit data Sequentially, each field M c+1,i The last WN bits of data With field M c,i+1 The first N data The data is concatenated to obtain aligned data; where c represents the clock and i is the index of the field.

[0057] S3. Obtain the length of the IPv6 packet, and set the header pointer, tail pointer, and address pointer of the IPv6 packet according to the first-level header pointer, the second-level header pointer, and the length of the IPv6 packet;

[0058] The IPv6 packet header pointer Hdr_begin, tail pointer Hdr_end, and address pointer pos are set based on the first-level header pointer, the second-level header pointer, and the length len of the IPv6 packet, 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. Retrieve data from the MPDU buffer sequentially according to the bit width W, store the retrieved data into the IPv6 data buffer according to the bit width W, and simultaneously increment the address pointer sequentially: pos = pos + 1. Then, based on the first-level tail pointer P of the current MPDU buffer data... End-1,t Determine if the address pointer has reached the second-level tail pointer P of the current MPDU buffer. End-2,t Specifically, when pos = W × (P End-1,t -1)+P End-2,t At that time, the address pointer reaches the second-level tail pointer P of the MPDU data field currently stored in the MPDU cache. End-2,tWhen the address pointer reaches the tail pointer of the IPv6 packet but not the second-level tail pointer of the MPDU data field currently stored in the MPDU cache, the IPv6 data cache stores a complete IPv6 packet, and step S5 is executed; when the address pointer reaches the second-level tail pointer of the MPDU data field currently stored in the MPDU cache but not the tail pointer of the IPv6 packet, the IPv6 data cache stores an incomplete IP packet, and step S6 is executed; when the address pointer reaches the tail pointer of the IPv6 packet and simultaneously reaches the second-level tail pointer of the MPDU data field currently stored in the MPDU cache, step S8 is executed; where, when the address pointer reaches the tail pointer of the IPv6 packet but not the second-level tail pointer, since data of length W is read from the MPDU cache at this time, if the first few bits of data have already been stored in the IPv6 data cache, but the remaining data needs to be used when concatenating the next IP packet, a register is needed to store the remaining data. When data is retrieved from the MPDU cache again according to the bit width W, the remaining data is concatenated with the newly retrieved data.

[0063] S5. Output the complete IPv6 data packet stored in the IPv6 data cache. When the complete IPv6 data packet is output, update the address pointer and the header and tail pointers of the IPv6 data packet, and return to step S4.

[0064] Since the data stored in the IP cache is the W byte containing the IP data header, the actual start bit of the IP data is not necessarily located in the highest bit. When outputting, the second pointer information of the header pointer needs to be passed to the next module at the same time to facilitate the repositioning of the header.

[0065] Updating the address pointer and the header and tail pointers of IPv6 packets 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 During input, calculate data frame A. t+1 MPDU data field first-level header pointer First-level tail pointer Second-level head pointer P Begin-2,t+1 and the second-level tail pointer P End-2,t+1 According to the pointer In data frame A t+1extracting the MPDU data field, the MPDU data field of the data frame A t+1 is head realigned to obtain aligned data, and the aligned data is stored in the MPDU buffer;

[0070] S7, judging whether the next AOS data frame matches the incomplete IP data packet, if not, discarding the incomplete IP data packet, and performing step S3; if yes, updating the pointer according to the first tail pointer P t of the AOS data frame A End-1,t ; obtaining the final first head pointer P Begin-1,t+1 and the first tail pointer P End-1,t+1 of the MPDU data field, and performing step S4;

[0071] updating the pointer of the MPDU data field of the data frame A t according to the first tail pointer P End-1,t of the AOS data frame A t+1 ; comprising:

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

[0073]

[0074] The judging whether the next AOS data frame matches the incomplete IP data packet comprises: extracting the tail of the previous CCSDS packet stored in the MPDU data field of the next AOS data frame according to the first head pointer of the MPDU data field of the next AOS data frame, obtaining the tail length L Tail , obtaining the length L Exist of the incomplete IP data packet, and when the sum of the length L Exist of the incomplete IP data packet and the tail length L Tail is equal to the length len of the complete IPv6 data packet, the next AOS data frame matches the incomplete IP data packet; otherwise, the next AOS data frame does not match the incomplete IP data packet. Specifically:

[0075] len=L Exist +L Tail , the length is correct, and the incomplete IP data packet is reserved

[0076] len≠L Exist +L Tail , the length is incorrect, and the incomplete IP data packet is discarded

[0077] S8, resetting the MPDU buffer, the IPv6 data buffer, the address pointer, the head pointer and the tail pointer of the MPDU data field and the IP data packet, and sending a request for receiving the next AOS data frame, and when the next AOS data frame is detected, performing step S1;

[0078] As Figure 2 The application further provides a high-performance packet analysis system of FPGA applied to satellite routing, which comprises 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 extracts MPDU data fields from AOS data frames through parallel reception of the AOS data frames.

[0080] The MPDU data splicing module acquires data after one clock of the MPDU data fields, splices the MPDU data fields and the data after one clock of the MPDU data fields according to the secondary header pointer of the MPDU data, and obtains aligned data, which is the data with the highest bit of the MPDU start as the real data packet. That is, since the input data is of large bit width, the MPDU data start point can appear at any bit position, and the module makes the data header realign, ensuring that the start point is the start point of the real data.

[0081] The MPDU cache and IP data extraction module stores the spliced data into the MPDU cache, and adopts a multi-pointer method to store the data from the MPDU cache into the IPv6 data cache.

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

[0083] The above embodiments further explain the purpose, technical solutions and advantages of the application. It should be understood that the above embodiments are only preferred embodiments of the application, and are not intended to limit the application. Any modification, equivalent replacement, improvement, etc. made to the application within the spirit and principles of the application should be included in the protection scope of the application.

Claims

1. An FPGA high-performance packet parsing method applied to spaceborne routing, characterized in that, Comprising: S1, receiving a current AOS data frame A t , the AOS data frame comprising an MPDU data field, the AOS data frame being composed of a plurality of fields with a bit width W; calculating a first level head pointer P Begin-1,t , a first level tail pointer P End-1,t , a second level head pointer P Begin-2,t , and a second level tail pointer P End-2,t of the MPDU data field; extracting the MPDU data field from the AOS data frame according to the pointers P Begin-1,t , P End-1,t ; the pointers P Begin-1,t , P End-1,t pointing to the fields where the starting byte and the ending byte of the MPDU data field are located respectively, and the pointers P Begin-2,t , P End-2,t pointing to the byte positions of the starting byte and the ending byte of the MPDU data field in the corresponding fields respectively; wherein t is time; S2, according to the pointer P Begin-1,t , P End-1,t , P Begin-2,t , P End-2,t extracting the IPv6 packet from the MPDU data field using the multi-pointer method; The satellite borne routing includes MPDU buffer and IPv6 data buffer; the multi-pointer method is used to extract IPv6 data packet from MPDU data field, including: according to the second header pointer P Begin-2,t MPDU data field is re-aligned to obtain aligned data, the aligned data is stored in MPDU buffer according to bit width W, and the MPDU buffer is output according to the pointer P Begin-1,t , P End-1,t , P Begin-2,t , P End-2,t The multi-pointer method is used to extract data from MPDU buffer and store in IPv6 data buffer, and IPv6 data packet is output according to IPv6 data buffer. The data is taken out from the MPDU buffer and stored in the IPv6 data buffer by using the multi-pointer method, including: S21, obtaining the length of the IPv6 data packet, setting the head pointer and tail pointer of the IPv6 data packet and the address pointer according to the first head pointer, the second head pointer of the MPDU data field currently stored in the MPDU buffer and the length of the IPv6 data packet; S22, taking out data from the MPDU buffer in turn according to the bit width W, storing the taken-out data in the IPv6 data buffer according to the bit width W and simultaneously incrementing the address pointer in turn, when the address pointer reaches the tail pointer of the IPv6 data packet and has not reached the second tail pointer of the MPDU data field currently stored in the MPDU buffer, the IPv6 data buffer stores a complete IPv6 data packet, and step S23 is executed; when the address pointer reaches the second tail pointer of the MPDU data field currently stored in the MPDU buffer and has not reached the tail pointer of the IPv6 data packet, the IPv6 data buffer stores an incomplete IP data packet, and step S24 is executed; when the address pointer reaches the tail pointer of the IPv6 data packet and simultaneously reaches the second tail pointer of the MPDU data field currently stored in the MPDU buffer, step S26 is executed; S23, outputting the complete IPv6 data packet stored in the IPv6 data buffer, when the complete IPv6 data packet is outputted completely, updating the address pointer and the head pointer and tail pointer of the IPv6 data packet, and returning to step S22; S24, sending a request for receiving the next AOS data frame and waiting for the next AOS data frame input, when detecting the next AOS data frame A t+1 , calculating the first level head pointer of the MPDU data field of the data frame A t+1 , the first level tail pointer , the second level head pointer P Begin-2,t-1 , and the second level tail pointer P End-2,t+1 ; according to the pointers , extracting the MPDU data field in the data frame A t+1 , performing head realignment on the MPDU data field of the data frame A t+1 , obtaining aligned data, and storing the aligned data into the MPDU cache;​ S25, judging whether the next AOS data frame matches the incomplete IP data packet, if not, discarding the incomplete IP data packet and executing step S21; if yes, updating the pointer according to the first-level head pointer P t and the first-level tail pointer P End-1,t of the AOS data frame A to obtain the final first-level head pointer P Begin-1,t+1 and the first-level tail pointer P End-1,t+1 of the MPDU data field, and executing step S22; S26, resetting the MPDU buffer, the IPv6 data buffer, the address pointer and the head pointer and tail pointer of the MPDU data field and the IP data packet; The structure of the AOS data frame further comprises: a leading head, an insertion domain and a tail; extracting the MPDU data field from the AOS data frame comprises: S11, Length L of the preamble of the AOS data frame head , Length L of the inserted field Insert , Length L of the MPDU data field Mpdu Calculate the start byte position L of the MPDU data field begin and the end byte position L end ; S12、According to the start byte position L begin and the end byte position L end Calculate the first-level head pointer, the first-level tail pointer, the second-level head pointer, and the second-level tail pointer.

2. The FPGA high-performance packet parsing method applied to satellite routing according to claim 1, wherein, The MPDU data field includes: multiple fields M with a length of W and width of 1 bit. c,i Header realignment of the MPDU data field includes: obtaining the MPDU data field M c Data M delayed by one clock cycle c+1 Data M c+1 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 respectively c,i and each field M c+1,i The data is divided to obtain field M. c,i The first N data and the following WN-bit data and field M c+1 The first N data and the following WN-bit data Sequentially, each field M c+1,i The last WN bits of data With field M c,i+1 The first N data The data is concatenated to obtain aligned data; where c represents the clock and i is the index of the field.

3. The FPGA high-performance packet parsing method applied to satellite routing according to claim 1, wherein, Setting the head pointer and tail pointer of the IPv6 data packet and the address pointer comprises: Hdr_begin = W x P Begin-1,t + P Begin-2,t Hdr_end = Hdr_begin + len pos = Hdr_begin Wherein, 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.

4. The FPGA high-performance packet parsing method applied to satellite routing according to claim 1, wherein, Updating the address pointer and the head pointer and tail pointer of the IPv6 data packet comprises: Hdr_begin = Hdr_end Hdr_end = Hdr_begin + len pos = Hdr_begin Wherein, 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.

5. The FPGA high-performance packet parsing method applied to satellite routing according to claim 1, wherein, The MPDU data field comprises: an MPDU header and an MPDU packet field; the MPDU header comprises a leading header pointer; the MPDU packet field comprises a tail of a previous CCSDS packet; the judging whether the next AOS data frame matches the incomplete IP data packet comprises: 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, to obtain a tail length L Tail , obtaining an incomplete IP data packet length L Exist , when the sum of the incomplete IP data packet length L Exist and the tail length L Tail is equal to a complete IPv6 data packet length len, the next AOS data frame matches the incomplete IP data packet; otherwise, the next AOS data frame does not match the incomplete IP data packet; wherein, CCSDS is a standardized data transmission format.

6. The FPGA high-performance packet parsing method applied to satellite routing according to claim 1, wherein, Calculate the starting byte position L of the MPDU data field begin and end byte position L end This includes: setting the dominant header length L of the AOS data frame. head Insertion field length L Insert Add them together to get the starting byte position L. begin The dominant header length L of the AOS data frame head Insertion field length L Insert and MPDU data field length L Mpdu Add them together to get the end byte position L. end .

7. The FPGA high-performance packet parsing method applied to satellite routing according to claim 1, wherein, Computing the first-level head and tail pointers and the second-level head and tail pointers comprises dividing the start byte position L begin and the end byte position L end by W, respectively, to obtain a first-level head pointer P Begin-1 and a first-level tail pointer P End-1 ; and taking the remainder of the start byte position L begin and the end byte position L end with respect to W, respectively, to obtain a second-level head pointer P Begin-2 and a second-level 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