ICMPv6 echo reply handler#56
Conversation
Implements roadmap item 7: ICMPv6 echo reply (auto-respond to ping6). New module dpdk-udp/src/icmpv6.rs provides: - ICMPv6 packet parsing (echo request/reply) - ICMPv6 frame building with IPv6 pseudo-header checksum - Icmpv6Handler that auto-responds to echo requests - Integration into UdpSocket RX path (parallel to IPv4 ICMP) 24 unit tests covering: - Build/parse roundtrip for echo request and reply - Checksum computation and corruption detection - Handler address matching (responds only to local IPs) - Edge cases (truncated frames, wrong protocol, IPv4 rejection) - Wire format verification - Synthetic performance benchmark (build+parse cycle)
Synthetic Performance Results — Graviton (run)Commit: ✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01) Synthetic UDP Performance ResultsMeasures framework overhead: sync
Avg sync/async ratio: 1.0x, worst: 1.1x
|
Synthetic Performance Results (run)Commit: ✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01) Synthetic UDP Performance ResultsMeasures framework overhead: sync
Avg sync/async ratio: 0.9x, worst: 1.0x
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
1 similar comment
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
✅ Integration Tests Passed — Graviton (run)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-echo-server.log sender-test-client.log |
✅ Integration Tests Passed (Run 26141415678)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-echo-server.log sender-test-client.log receiver-test-client-iperf.log sender-test-client-iperf.log Full Application Logs (last 200 lines each)receiver-echo-server.logsender-echo-server.logsender-test-client.logreceiver-test-client-iperf.logsender-test-client-iperf.log
|
Check off ipv6 roadmap task related to ICMPv6 echo reply handler #56
Roadmap item addressed
IPv6 task 7: ICMPv6 echo reply — auto-respond to
ping6, parallel to our existing IPv4 ICMP echo reply.Changes
New module
dpdk-udp/src/icmpv6.rsproviding:Icmpv6Packet— parsed ICMPv6 echo request/reply structparse_icmpv6_packet()— parse ICMPv6 echo from raw Ethernet frames (handles extension headers)build_icmpv6_frame()/build_echo6_request()— frame construction with IPv6 pseudo-header checksumicmpv6_checksum()— RFC 4443 §2.3 checksum using IPv6 pseudo-headerIcmpv6Handler— stateful handler that auto-responds to echo requests for registered local IPsIntegration into
UdpSocket:icmpv6_handlerfield, initialized on bindauto_icmpis enabled and ethertype is IPv6Tests added (24)
make_echo_reply()address/field swappingTradeoffs
Ipv6Addr::UNSPECIFIEDsince the socket is currently IPv4-only. OnceSocketAddrV6support lands (task 3), the handler will be initialized with the actual bound IPv6 address.auto_icmpflag to control ICMPv6 responses (same toggle for v4 and v6).