GTP packet aggregation support implemented#11
GTP packet aggregation support implemented#11Arsalan-Zanganeh wants to merge 63 commits intodeep-observability-lab:mainfrom
Conversation
New Setup for Interns
Analysis of Filtering Rule Added
Fb external
comprehensive exploration and explanation of DPDK GRO library
add out-of-order part
Added instructions for plain build and modified dpdk-testpmd command.
Added instructions for plain build and modified dpdk-testpmd command.
Added instructions for setting up an LTTng trace session in the README.
Added instructions for setting up an LTTng trace session in the README.
gro tracepoints added and ptype assigned
Tcpreplay test
Tcpreplay test
Updated tcpreplay command to use topspeed and increased loop count.
There was a problem hiding this comment.
Pull request overview
This pull request implements GTP (GPRS Tunneling Protocol) packet aggregation support for DPDK's Generic Receive Offload (GRO) library. The implementation adds new GRO types for handling GTP-encapsulated TCP and UDP over IPv4 packets, along with comprehensive tracing support for monitoring packet reassembly operations.
Changes:
- Added GTP TCP/IPv4 and GTP UDP/IPv4 GRO support with new reassembly tables and flow processing logic
- Implemented tracing infrastructure for GRO operations including new trace points for header extraction and packet processing
- Updated build configuration and documentation to support trace functionality and provide GTP replay testing instructions
Reviewed changes
Copilot reviewed 80 out of 6792 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| gro/Trace Files/GTP Trace Files/gro_gtp_tcp4.c | Implements GTP TCP/IPv4 packet reassembly logic with flow management and merging operations |
| gro/Trace Files/GTP Trace Files/gro_gtp_udp4.c | Implements GTP UDP/IPv4 fragment reassembly with flow tracking and packet merging |
| gro/Trace Files/GTP Trace Files/gro_trace.h | Defines trace points for monitoring GRO operations and header extraction |
| gro/Trace Files/GTP Trace Files/gro_trace_points.c | Registers trace points for GRO library events |
| gro/Trace Files/GTP Trace Files/gro_tcp4.c | Updates TCP/IPv4 reassembly with trace point integration for header monitoring |
| gro/Trace Files/GTP Trace Files/rte_gro.h | Adds new GRO type flags for GTP TCP/UDP IPv4 support |
| gro/Trace Files/GTP Trace Files/meson.build | Updates build configuration to include new GTP GRO source files |
| gro/README.md | Adds documentation for trace setup, GTP replay testing, and dpdk-testpmd configuration |
| gro/dpdk-25.03/* | Adds complete DPDK 25.03 application infrastructure including test utilities, graph processing, and build system |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
|
||
| #ifndef _GRO_GTP_UDP4_H_ | ||
| #define _GRO_GTP_UDP4_H_ | ||
|
|
There was a problem hiding this comment.
There is trailing whitespace at the end of line 7. Remove the trailing whitespace to maintain consistent code formatting.
|
|
||
| #ifndef _GRO_GTP_TCP4_H_ | ||
| #define _GRO_GTP_TCP4_H_ | ||
|
|
There was a problem hiding this comment.
There is trailing whitespace at the end of line 7. Remove the trailing whitespace to maintain consistent code formatting.
|
|
||
| // dst->vxlan_hdr.vx_flags = src->vxlan_hdr.vx_flags; | ||
| // dst->vxlan_hdr.vx_vni = src->vxlan_hdr.vx_vni; | ||
| dst->gtp_hdr.teid = src->gtp_hdr.teid; |
There was a problem hiding this comment.
There is trailing whitespace at the end of line 173. Remove the trailing whitespace to maintain consistent code formatting.
| dst->gtp_hdr.teid = src->gtp_hdr.teid; | |
| dst->gtp_hdr.teid = src->gtp_hdr.teid; |
|
|
||
| portid = ethdev_portid_by_ip4(v4_config->ip, 0); | ||
| if (portid < 0) { | ||
| printf("Invalid portid found to add neigh\n"); |
There was a problem hiding this comment.
Corrected spacing in error message from 'add neigh' to 'add neigh'.
| printf("Invalid portid found to add neigh\n"); | |
| printf("Invalid portid found to add neigh\n"); |
| } | ||
|
|
||
| static int | ||
| route6_rewirte_table_update(struct route_ipv6_config *ipv6route) |
There was a problem hiding this comment.
Corrected spelling of function name from 'route6_rewirte_table_update' to 'route6_rewrite_table_update'.
| } | ||
|
|
||
| static int | ||
| route4_rewirte_table_update(struct route_ipv4_config *ipv4route) |
There was a problem hiding this comment.
Corrected spelling of function name from 'route4_rewirte_table_update' to 'route4_rewrite_table_update'.
| # Copyright(c) 2023 Marvell. | ||
| # | ||
| graph <STRING>usecase coremask <UINT64>mask bsz <UINT16>size tmo <UINT64>ns model <(rtc,mcd,default)>model_name <(pcap_enable)>capt_ena <UINT8>pcap_ena <(num_pcap_pkts)>capt_pkts_count <UINT64>num_pcap_pkts <(pcap_file)>capt_file <STRING>pcap_file # Command to create graph for given usecase | ||
| graph start # Comanmd to start a graph |
There was a problem hiding this comment.
Corrected spelling of 'Comanmd' to 'Command'.
| { "test-vector", 1, 0, 'v' }, | ||
| { "lcores", 1, 0, 'l' }, | ||
| { "snr", 1, 0, 's' }, | ||
| { "iter_max", 6, 0, 't' }, |
There was a problem hiding this comment.
The second argument to the long option structure should be 0 (no argument), 1 (required argument), or 2 (optional argument). The value 6 is invalid and will cause unexpected behavior. Based on line 267 which uses optarg, this should be 1 (required_argument).
| { "iter_max", 6, 0, 't' }, | |
| { "iter_max", 1, 0, 't' }, |
No description provided.