aws / s2n-quic

An implementation of the IETF QUIC protocol
https://crates.io/crates/s2n-quic
Apache License 2.0
1.15k stars 120 forks source link

Quant interop issues #563

Open WesleyRosenblum opened 3 years ago

WesleyRosenblum commented 3 years ago

The Quant client has a couple of issues that are causing interop failures:

  1. Quant was updated to use the Draft 33 initial salt on Dec 16
  2. Quant fails an assertion check when s2n-quic retires the initial connection ID used during the handshake. This is likely a bug
    dec_frames frame.c:1393 HANDSHAKE_DONE
    abandon_pn pn.c:136 abandoning clnt Handshake processing
    validate_pmtu pkt.c:174 PMTU 1472 validated
    dec_new_cid_frame frame.c:1105 NEW_CONNECTION_ID seq=1 rpt=1 len=16 dcid=1:f780dae634e407fcf8ef015bfa9fc9fe srt=5605420c8220e5afdf4762a52fc03519
    dec_new_cid_frame frame.c:1105 NEW_CONNECTION_ID seq=2 rpt=1 len=16 dcid=2:53376708d16b58ee742860e80ea730af srt=d95fbead5bbd916166f22040a1620918
    dec_new_cid_frame frame.c:1129 rpt 1 <= prev max 1, ignoring
    dec_new_cid_frame frame.c:1105 NEW_CONNECTION_ID seq=3 rpt=1 len=16 dcid=3:dd69e1f1045f09c19f7ee6419d206fe9 srt=ae66adb0abe28f7029816767fb35f794
    dec_new_cid_frame frame.c:1129 rpt 1 <= prev max 1, ignoring
    dec_retire_cid_frame frame.c:1194 RETIRE_CONNECTION_ID seq=0
    0.146   conns_by_id_del conn.c:787 conns_by_id size 3
    conns_by_id_del conn.c:794 conns_by_id size 2
    use_next_dcid conn.c:215 migration to dcid 1:f780dae634e407fcf8ef015bfa9fc9fe for clnt conn (was 0:f66838703f6e489aab5e1ee100212fa2)
    0.147   cid_retire cid.c:178 ABORT: assertion failed: 
    id->available == false && id->retired == false 
    can only retire active cid [errno 2 = No such file or directory]
    /lib/x86_64-linux-gnu/libasan.so.5(+0x6cd30) [0x7fd225729d30]
    util_die at /src/lib/deps/warpcore/lib/src/util.c:398
    cid_retire at /src/lib/src/cid.c:178
    use_next_dcid at /src/lib/src/conn.c:222
    do_conn_mgmt at /src/lib/src/conn.c:534
    tx at /src/lib/src/conn.c:701
    rx at /src/lib/src/conn.c:1658
    loop_run at /src/lib/src/loop.c:103 (discriminator 3)
    q_ready at /src/lib/src/quic.c:1008 (discriminator 3)
    main at /src/bin/client.c:613
WesleyRosenblum commented 3 years ago

Issue to Quant: https://github.com/NTAP/quant/issues/77