Skip to content

Commit

Permalink
quic: fix pcap outputs
Browse files Browse the repository at this point in the history
  • Loading branch information
riptl authored and ripatel-fd committed Jan 9, 2025
1 parent 8318af4 commit 993606b
Show file tree
Hide file tree
Showing 11 changed files with 157 additions and 116 deletions.
5 changes: 3 additions & 2 deletions contrib/quic/agave_compat/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ mod bindings {
}

use crate::bindings::{
fd_aio_pcapng_get_aio, fd_aio_pcapng_join, fd_aio_pcapng_start, fd_aio_pcapng_t, fd_boot,
fd_aio_pcapng_get_aio, fd_aio_pcapng_join, fd_aio_pcapng_start_l3, fd_aio_pcapng_t, fd_boot,
fd_halt, fd_pcapng_fwrite_tls_key_log, fd_quic_connect, fd_quic_get_aio_net_rx, fd_quic_init,
fd_quic_limits_t, fd_quic_new_anonymous, fd_quic_new_anonymous_small, fd_quic_service,
fd_quic_set_aio_net_tx, fd_quic_t, fd_rng_t, fd_udpsock_align, fd_udpsock_footprint,
Expand Down Expand Up @@ -216,7 +216,7 @@ unsafe fn agave_to_fdquic_bench() {
"wb\x00".as_ptr() as *const c_char,
);
assert!(!pcap_file.is_null());
fd_aio_pcapng_start(pcap_file as *mut c_void);
fd_aio_pcapng_start_l3(pcap_file as *mut c_void);
fflush(pcap_file);

static mut PCAP_FILE_GLOB: *mut FILE = std::ptr::null_mut();
Expand Down Expand Up @@ -276,6 +276,7 @@ unsafe fn agave_to_fdquic_bench() {
"data={:.3} Gbps net_rx=({:.3} Gbps {:.3} Mpps)",
net_rx_gbps, net_rx_mpps, stream_rx_gbps
);
println!("{}", metrics.pkt_no_conn_cnt);
}
});

Expand Down
2 changes: 1 addition & 1 deletion contrib/quic/go_compat/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -392,7 +392,7 @@ func main() {
if C.fd_quic_test_pcap == nil {
log.Fatal("fopen failed")
}
C.fd_aio_pcapng_start(unsafe.Pointer(C.fd_quic_test_pcap))
C.fd_aio_pcapng_start_l3(unsafe.Pointer(C.fd_quic_test_pcap))
}

clientTest(fdQuic)
Expand Down
4 changes: 2 additions & 2 deletions contrib/quic/rust_compat/src/quiche.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::bindings::{
fd_aio_pcapng_get_aio, fd_aio_pcapng_join, fd_aio_pcapng_start, fd_aio_pcapng_t, fd_halt,
fd_aio_pcapng_get_aio, fd_aio_pcapng_join, fd_aio_pcapng_start_l3, fd_aio_pcapng_t, fd_halt,
fd_pcapng_fwrite_tls_key_log, fd_quic_get_aio_net_rx, fd_quic_init,
fd_quic_new_anonymous_small, fd_quic_service, fd_quic_set_aio_net_tx, fd_quic_t, fd_rng_t,
fd_udpsock_align, fd_udpsock_footprint, fd_udpsock_get_tx, fd_udpsock_join, fd_udpsock_new,
Expand Down Expand Up @@ -46,7 +46,7 @@ pub(crate) unsafe fn quiche_to_fdquic() {
"wb\x00".as_ptr() as *const c_char,
);
assert!(!pcap_file.is_null());
fd_aio_pcapng_start(pcap_file as *mut c_void);
fd_aio_pcapng_start_l3(pcap_file as *mut c_void);
fflush(pcap_file);

static mut PCAP_FILE_GLOB: *mut FILE = std::ptr::null_mut();
Expand Down
4 changes: 2 additions & 2 deletions contrib/quic/rust_compat/src/quinn.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use crate::bindings::{
fd_aio_pcapng_get_aio, fd_aio_pcapng_join, fd_aio_pcapng_start, fd_aio_pcapng_t, fd_halt,
fd_aio_pcapng_get_aio, fd_aio_pcapng_join, fd_aio_pcapng_start_l3, fd_aio_pcapng_t, fd_halt,
fd_pcapng_fwrite_tls_key_log, fd_quic_get_aio_net_rx, fd_quic_init,
fd_quic_new_anonymous_small, fd_quic_service, fd_quic_set_aio_net_tx, fd_quic_t, fd_rng_t,
fd_udpsock_align, fd_udpsock_footprint, fd_udpsock_get_tx, fd_udpsock_join, fd_udpsock_new,
Expand Down Expand Up @@ -94,7 +94,7 @@ pub(crate) unsafe fn quinn_to_fdquic(crypto_provider: CryptoProvider) {
"wb\x00".as_ptr() as *const c_char,
);
assert!(!pcap_file.is_null());
fd_aio_pcapng_start(pcap_file as *mut c_void);
fd_aio_pcapng_start_l3(pcap_file as *mut c_void);
fflush(pcap_file);

static mut PCAP_FILE_GLOB: *mut FILE = std::ptr::null_mut();
Expand Down
228 changes: 122 additions & 106 deletions src/disco/quic/test_quic_metrics.txt

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions src/util/net/fd_pcapng.h
Original file line number Diff line number Diff line change
Expand Up @@ -186,6 +186,7 @@ fd_pcapng_idb_defaults( fd_pcapng_idb_opts_t * opt,
/* FD_PCAPNG_LINKTYPE_*: Link types (currently only Ethernet supported) */

#define FD_PCAPNG_LINKTYPE_ETHERNET (1U) /* IEEE 802.3 Ethernet */
#define FD_PCAPNG_LINKTYPE_RAW (101U) /* IPv4 or IPv6 */
#define FD_PCAPNG_LINKTYPE_COOKED (113U) /* Linux "cooked" capture */

ulong
Expand All @@ -205,6 +206,12 @@ fd_pcapng_fwrite_pkt( long ts,
ulong payload_sz,
void * file );

ulong
fd_pcapng_fwrite_cooked( long ts,
void const * payload,
ulong payload_sz,
void * file );

/* fd_pcapng_fwrite_tls_key_log writes TLS key log info to a PCAPNG via
a DSB (Decryption Secrets Block). Similar semantics to fwrite
(returns 1 on success and 0 on failure, but will dispatch multiple
Expand Down
15 changes: 15 additions & 0 deletions src/waltz/aio/fd_aio_pcapng.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,21 @@ fd_aio_pcapng_start( void * pcapng ) {
return 1UL;
}

ulong
fd_aio_pcapng_start_l3( void * pcapng ) {
fd_pcapng_shb_opts_t shb_opts = {0};
fd_pcapng_shb_defaults( &shb_opts );

if( FD_UNLIKELY( 1UL!=fd_pcapng_fwrite_shb( &shb_opts, pcapng ) ) )
return 0UL;

if( FD_UNLIKELY( 1UL!=fd_pcapng_fwrite_idb(
FD_PCAPNG_LINKTYPE_RAW, NULL, pcapng ) ) )
return 0UL;

return 1UL;
}

fd_aio_pcapng_t *
fd_aio_pcapng_join( void * _mitm,
fd_aio_t const * dst,
Expand Down
2 changes: 2 additions & 0 deletions src/waltz/aio/fd_aio_pcapng.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,8 @@ FD_PROTOTYPES_BEGIN
ulong
fd_aio_pcapng_start( void * pcapng );

ulong
fd_aio_pcapng_start_l3( void * pcapng );

/* fd_aio_pcapng_join formats the memory region at mitm for use as an
fd_aio_pcapng_t (with matching size and alignment requirements).
Expand Down
2 changes: 1 addition & 1 deletion src/waltz/quic/fd_quic.c
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ fd_quic_new( void * mem,
/* Default clock source */
quic->cb.now = fd_quic_clock_wallclock;
quic->cb.now_ctx = NULL;
quic->config.tick_per_us = 1000.0f;
quic->config.tick_per_us = 1000.0;

/* Copy layout descriptors */
quic->limits = *limits;
Expand Down
2 changes: 1 addition & 1 deletion src/waltz/quic/tests/fd_quic_test_helpers.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ fd_quic_virtual_pair_pcap( fd_quic_virtual_pair_t * pair,

/* Write pcapng header */

FD_TEST( 1UL==fd_aio_pcapng_start( pcap ) );
FD_TEST( 1UL==fd_aio_pcapng_start_l3( pcap ) );

/* Install captures */

Expand Down
2 changes: 1 addition & 1 deletion src/waltz/quic/tests/test_quic_server.c
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ main( int argc, char ** argv ) {

fd_aio_t const * aio_rx = fd_quic_get_aio_net_rx( quic );
if( fd_quic_test_pcap ) {
FD_TEST( 1UL==fd_aio_pcapng_start( fd_quic_test_pcap ) );
FD_TEST( 1UL==fd_aio_pcapng_start_l3( fd_quic_test_pcap ) );
static fd_aio_pcapng_t pcap_rx[1];
FD_TEST( fd_aio_pcapng_join( pcap_rx, aio_rx, fd_quic_test_pcap ) );
aio_rx = fd_aio_pcapng_get_aio( pcap_rx );
Expand Down

0 comments on commit 993606b

Please sign in to comment.