時雨堂 QUIC 開発ログ
日時: | 2020-12-08 |
---|---|
作: | 時雨堂 |
バージョン: | 2020.1 |
概要
時雨堂 で開発中の Erlang/OTP による QUIC / WebTransport の開発ログです。
目的
WebRTC が QUIC ベースの WebTransport を利用する可能性が高くなってきたため
- WebTransport に対応するため
- Erlang/OTP アピールのため
方針
- コードは公開しない
- Erlang/OTP NIF を利用しない
- Erlang/OTP ssl モジュールを利用しない
- QUIC 自体の販売予定はない
ゴール
- WebRTC SFU Sora での WebTransport 対応
- RFC 化されたタイミングで対応完了していること
- quic.shiguredo.jp:4433 の公開
- WebSocket による QUIC テストのログ情報の取得
- https://quic.shiguredo.jp/log/:initial-dst-connection-id に繋ぐことで接続しているクライアント単位で情報を取得可能にする
進捗
QUIC タイムライン
一番上が最新
- draft-32 へ追従を開始
- draft-19 へ追従を開始
- Retry に対応
- Version Negotiation に対応
- draft-18 へ追従を開始
- ACK Range へ切り替える
- draft-17 の卒業
- CRYPTO フレームの再送対応を開始した
- 再送やパケロスの調査を開始した
- ngtcp2 draft-17 と Short Header Packet のやり取りが成功した
- ngtcp2 draft-17 と Handshake が成功した
- ngtcp2 draft-17 ブランチをビルドして動作を確認した
- draft-17 へ追従を開始
- Initial Saltを変更
- Frame Type を変更
- Long Header Packet Typeを変更
- Label を pn から hp に変更
- Label を "quic " から "tls " に戻し "quic key" などに変更
- Transport Parameters の Type を変更
- Transport Parameters の Length を変更
- Protection Header の暗号化と復号に対応
- ngtcp2 draft-15 と Short Header Packet のやり取りが成功した
- keylog を出力し、Wireshark で QUIC パケットが復号できるようにした
- ngtcp2 draft-15 と Handshake が成功した
- サーバから Handshake パケットを送って QUIC のハンドシェイクを完了できるようにした
- EncryptedExtensions に QUIC TransportParameters を追加できるようにした
- ClientHello から QUIC Transport Parameters を取り出してデコードできるようにした
- サーバ Handshake Packet で CRYPTO フレームを分割できるようにした
- RSA 2048 の証明書とかだと必ず分割が必要なので
- サーバ Handshake Packet を生成、暗号化できるようにした
- クライアント Initial Packet からサーバ Initial Packet を生成、暗号化できるようにした
- QUIC Frame のエンコーダーを実装した
- QUIC Packet のエンコーダーを実装した
- QUIC 専用の TLS 1.3 ライブラリを実装した
- Record が不要
- SeqNum が不要
- QUIC 向け ClientHello 拡張が必要
- PacketNumber Protection 向けの鍵が必要
- Header Protection 向け鍵に draft-17 で変更
- ChangeCipherSpec は不要
- Alert は QUIC 向けにマッピングが必要
- クライアント Initial Packet をパース、復号できるようにした
- ngtcp2 のログと pcap からテストベクターを生成した
- ngtcp2 は secret や key を出力してくれる機能がある
- ngtcp2 を使って pcap を取得した
- ngtcp2 の使い方を覚えた
- QUIC フレームのデコーダーを実装した
- QUIC パケットのデコーダーを実装した
- QUIC TLS のドラフトをざっと眺めた
- 英語ができないので翻訳したもの
- QUIC Transport のドラフトをざっと眺めた
- 英語ができないので翻訳したもの
- SO_REUSEPORT を利用した UDP の仕組みを用意した
- UDP 1 ソケットをスケールするのは Erlang/OTP だと厳しいので
- TLS 1.3 1-RTT の実装した
- TLS 1.3 0-RTT は未実装
- QUIC 1-RTT が実装終わり次第着手予定
- TLS 1.3 0-RTT は未実装
- TLS 1.3 理解した
- TLS/DTLS 1.2 までの実装経験あり
2020-12-08
- 1.5 年ぶりに draft-32 への追従を開始
- WebTransport である QuicTransport への対応を目標とする
- HTTP/3 対応は行わない
2019-04-08
- ngtcp2 draft-19 とやり取りを確認した
2019-03-22
- draft-19 の追従を開始した
- draft-18 を卒業した
- ngtcp2 draft-18 とやり取りを確認した
2019-02-20
- HTTP/3 は別に
2019-02-08
- Version Negotiation に対応した
- Retry に対応した
2019-01-27
- draft-18 の追従を開始した
- draft-17 を卒業した
2019-01-21
- CRYPTO フレームの再送対応を開始した
2019-01-10
- 再送とパケロスの調査を開始した
2019-01-09
- ngtcp2 draft-17 とメッセージのやり取りを確認した
2019-01-08
- ngtcp2 draft-17 とハンドシェイクを確認した
2019-01-07
- draft-17 に追従を開始した
- ngtcp2 draft-17 の動作を確認した
2019-01-04
- QUIC 1-RTT が動作した
- keylog を出力するようにした
- Wireshark で QUIC が復号できることを確認した
2018-12-30
- QUIC 1-RTT ハンドシェイクが動作した
2018-12-26
- draft-16 をメインに進めてる
2018-12-24
- 進捗をわかりやすくした
2018-12-23
- draft-16 をメインに進めてる、 draft-17 は ngtcp2 が draft-17 に対応したタイミングで進める
- TLS 1.3 は QUIC 専用の実装を用意することにした
- record や application_data を利用しない、暗号化や復号が Payload タイプということで既存を流用はめんどくさい
- Erlang/OTP でフルスクラッチで実装した TLS 1.3 があるので、それを最小限実装に落としていく
2018-12-22
- draft-16 も並行して開発していくことに
- draft-16 用は quic16 prefix をつけて残すことにした
2018-12-21
- draft-17 に追従を開始
- ngtcp2 の draft-17 ブランチを参考に
- initial salt の更新
- packet number protection を header protection へ変更
- label を修正
2018-12-16
- SO_REUSEPORT を利用した同一ポートでの UDP スケール仕組みを用意した
2018-12-11
- draft-16 で Client Initial Packet のデコードが成功した
2018-11-28
- TLS 1.3 (1-RTT) over TCP が OpenSSL 1.1.1 の s_client で動作を確認
2018-11-06
QUIC が WebRTC に入る可能性が高いため QUIC の開発に着手
参考 RFC (ドラフト 含む)
QUIC
- draft-ietf-quic-invariants-03 - Version-Independent Properties of QUIC
- draft-ietf-quic-recovery-32 - QUIC Loss Detection and Congestion Control
- draft-ietf-quic-tls-19 - Using TLS to Secure QUIC
- draft-ietf-quic-transport-19 - QUIC: A UDP-Based Multiplexed and Secure Transport - RFC 8032 - Edwards-Curve Digital Signature Algorithm (EdDSA)
- RFC 8446 - The Transport Layer Security (TLS) Protocol Version 1.3
WebTransport
- draft-vvv-webtransport-overview-01 - The WebTransport Protocol Framework
- draft-vvv-webtransport-quic-02 - WebTransport over QUIC
- draft-vvv-webtransport-http3-02 - WebTransport over HTTP/3
参考資料
- QUIC Working Group
- ngtcp2/ngtcp2: ngtcp2 project is an effort to implement IETF QUIC protocol
- h2o/quicly: Our own QUIC implementation
- h2o/picotls: TLS 1.3 implementation in C (master supports RFC8446 as well as draft-26, -27, -28)
- private-octopus/picoquic: Minimal implementation of the QUIC protocol
- lucas-clemente/quic-go: A QUIC implementation in pure go
- /TLS 1.3 /
現状
draft-32
- 追従中
draft-18
- QUIC Draft 18 (0xFF00012) の実装
- ngtcp2 draft-18 疎通確認
draft-17
- QUIC Draft 17 (0xFF00011) の実装
- Handshake 完了
- Short Header Packet 完了
- ngtcp2 疎通確認
draft-16
- QUIC Draft 16 (0xFF00010) の実装
- Handshake 完了
- Short Header Packet 完了
- ngtcp2 疎通確認
tls 1.3
- TLS 1.3 (1-RTT) over TCP の実装
- 1-RTT 完了
- openssl s_client テスト完了
ログ
日時: | 2018-04-08 時点の draft-19 対応のクライアントのログ |
---|
QUIC クライアント (ngtcp2) ログ
IP アドレスはダミー
$ ./client -i 127.0.0.1 4433 (git)-[master] msg_cb: write_p=1 version=772 content_type=22 len=296 I00000000 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt tx pkn=0 dcid=0x36404fd5e455d90cc27c82d17ef9baa04b37 scid=0x8dda8c2fa2adfaafa351f22570a7a6cba3 type=Initial(0x00) len=0 k=0 I00000000 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Initial(0x00) CRYPTO(0x06) offset=0 len=296 I00000000 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Initial(0x00) PADDING(0x00) len=891 I00000000 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv loss_detection_timer=1554553803020391936 last_hs_tx_pkt_ts=1554553802820391936 timeout=200 Sent packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 1252 bytes Received packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 63 bytes I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con recv packet len=63 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt rx pkn=0 dcid=0x8dda8c2fa2adfaafa351f22570a7a6cba3 scid=0x776388cfa9850cff166210b083d10daa type=Initial(0x00) len=22 k=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 0 Initial(0x00) ACK(0x02) largest_ack=0 ack_delay=0(0) ack_block_count=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 0 Initial(0x00) ACK(0x02) block=[0..0] block_count=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv latest_rtt=35 min_rtt=35 smoothed_rtt=35.115 rttvar=17.558 max_ack_delay=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv pkn=0 acked, slow start cwnd=13252 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv loss_detection_timer=1554553802890621952 last_hs_tx_pkt_ts=1554553802820391936 timeout=70 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt read packet 63 left 0 Received packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 186 bytes I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con recv packet len=186 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt rx pkn=1 dcid=0x8dda8c2fa2adfaafa351f22570a7a6cba3 scid=0x776388cfa9850cff166210b083d10daa type=Initial(0x00) len=144 k=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 1 Initial(0x00) CRYPTO(0x06) offset=0 len=123 Ordered CRYPTO data in Initial crypto level 00000000 02 00 00 77 03 03 9d 32 f9 c1 28 57 f1 43 f6 e6 |...w...2..(W.C..| 00000010 df 7b 92 51 82 09 12 83 17 7e 09 6b df d5 cf 7f |.{.Q.....~.k....| 00000020 a6 1b 82 f8 f3 2b 00 13 02 00 00 4f 00 2b 00 02 |.....+.....O.+..| 00000030 03 04 00 33 00 45 00 17 00 41 04 c2 fe a3 42 37 |...3.E...A....B7| 00000040 cf ee a4 ac 11 31 b3 c1 79 e4 47 55 59 7e 77 e9 |.....1..y.GUY~w.| 00000050 0b 6a 23 07 44 d0 c0 47 66 e0 3b 52 9a 66 2f da |.j#.D..Gf.;R.f/.| 00000060 c5 79 e6 79 20 a6 0c dc 2d a4 b3 1d 1d 81 c3 0a |.y.y ...-.......| 00000070 37 4a e5 34 29 8f 1f 71 26 20 9d |7J.4)..q& .| 0000007b msg_cb: write_p=0 version=772 content_type=22 len=123 server_handshake_traffic + secret=cf2e20c35160249cf7049a821c92d0712c561e0717b2e7e64d65c714f0939e748e4f4d1df558cabd2540b3745f18ca36 + key=bc0ebe0a9d438a125655af14960f40f50a148a3541b774502595e80b9906cd60 + iv=d3d1a721a0f1ca5419921ea7 + hp=edc598b7b88cf3737d626f7727b5ee591f3b699b9524405a544a495d814b2e53 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt read packet 186 left 0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con processing buffered handshake packet Received packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 1212 bytes I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con recv packet len=1212 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt rx pkn=0 dcid=0x8dda8c2fa2adfaafa351f22570a7a6cba3 scid=0x776388cfa9850cff166210b083d10daa type=Handshake(0x02) len=1171 k=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 0 Handshake(0x02) CRYPTO(0x06) offset=0 len=1150 Ordered CRYPTO data in Handshake crypto level 00000000 08 00 00 63 00 61 ff a5 00 5d ff 00 00 12 08 ff |...c.a...]......| 00000010 00 00 12 ff 00 00 13 00 4e 00 02 00 10 11 6c 40 |........N.....l@| 00000020 6d ba 36 f9 95 dd 18 49 58 61 25 71 42 00 05 00 |m.6....IXa%qB...| 00000030 01 00 00 06 00 02 50 00 00 07 00 01 00 00 04 00 |......P.........| 00000040 04 80 01 00 00 00 08 00 02 40 64 00 09 00 01 00 |.........@d.....| 00000050 00 01 00 01 1e 00 03 00 04 80 00 ff f7 00 0a 00 |................| 00000060 01 03 00 0b 00 01 19 0b 00 03 4a 00 00 03 46 00 |..........J...F.| 00000070 03 41 30 82 03 3d 30 82 02 25 a0 03 02 01 02 02 |.A0..=0..%......| 00000080 09 00 e5 d9 bc 75 03 d9 e3 26 30 0d 06 09 2a 86 |.....u...&0...*.| 00000090 48 86 f7 0d 01 01 0b 05 00 30 35 31 0b 30 09 06 |H........051.0..| 000000a0 03 55 04 06 13 02 4a 50 31 12 30 10 06 03 55 04 |.U....JP1.0...U.| 000000b0 0a 0c 09 73 68 69 67 75 72 65 64 6f 31 12 30 10 |...shiguredo1.0.| 000000c0 06 03 55 04 03 0c 09 73 68 69 67 75 72 65 64 6f |..U....shiguredo| 000000d0 30 1e 17 0d 31 38 31 31 32 36 30 33 34 30 32 33 |0...181126034023| 000000e0 5a 17 0d 32 38 31 31 32 33 30 33 34 30 32 33 5a |Z..281123034023Z| 000000f0 30 35 31 0b 30 09 06 03 55 04 06 13 02 4a 50 31 |051.0...U....JP1| 00000100 12 30 10 06 03 55 04 0a 0c 09 73 68 69 67 75 72 |.0...U....shigur| 00000110 65 64 6f 31 12 30 10 06 03 55 04 03 0c 09 73 68 |edo1.0...U....sh| 00000120 69 67 75 72 65 64 6f 30 82 01 22 30 0d 06 09 2a |iguredo0.."0...*| 00000130 86 48 86 f7 0d 01 01 01 05 00 03 82 01 0f 00 30 |.H.............0| 00000140 82 01 0a 02 82 01 01 00 a5 bf 54 62 e1 fa 51 14 |..........Tb..Q.| 00000150 4e 17 83 ee 96 c4 89 05 98 cc c1 da c0 79 9f c3 |N............y..| 00000160 50 2d e0 99 3b 1a 85 92 0f 37 d0 f3 e0 73 fc fc |P-..;....7...s..| 00000170 9b e0 b6 25 2b 10 ea 07 8e ff 8b 21 7d 1e 9b 3b |...%+......!}..;| 00000180 15 86 86 d6 de 89 04 45 e5 8d 3b 9d b8 56 f2 92 |.......E..;..V..| 00000190 c7 d0 61 71 b6 0b 6f 5b 4f d3 49 17 b6 e6 3e 84 |..aq..o[O.I...>.| 000001a0 e6 86 5f 91 8f ce 02 c6 93 88 1a 42 69 4c 2a ae |.._........BiL*.| 000001b0 f9 26 61 b7 0d a0 b6 37 fc 1b 37 1e 3a d4 d0 d5 |.&a....7..7.:...| 000001c0 1c 1b 69 45 8b 46 48 a0 65 30 b6 9e 64 eb e9 5d |..iE.FH.e0..d..]| 000001d0 7c 02 6f 42 b0 2a 57 24 61 6f 39 38 05 50 a0 a6 ||.oB.*W$ao98.P..| 000001e0 eb eb ba ae f2 a6 c4 44 d0 f1 27 33 a0 20 8d b8 |.......D..'3. ..| 000001f0 32 c1 19 3e d5 86 68 b2 95 85 52 69 90 d0 3d 9d |2..>..h...Ri..=.| 00000200 54 08 68 b5 56 0f ce c2 41 b8 b4 3b 8d 5e 71 8c |T.h.V...A..;.^q.| 00000210 c8 00 98 50 7e 1c 24 9a 65 9f 92 75 4f 82 e8 fa |...P~.$.e..uO...| 00000220 9f fd dd ba 26 04 5f 23 5c 32 4f d7 8b b7 69 93 |....&._#\2O...i.| 00000230 7e b3 9e a0 4c 4b 39 75 3a c7 92 ca c0 fa 50 a2 |~...LK9u:.....P.| 00000240 90 16 db 68 f4 c3 54 e9 02 03 01 00 01 a3 50 30 |...h..T.......P0| 00000250 4e 30 1d 06 03 55 1d 0e 04 16 04 14 13 6d 98 2a |N0...U.......m.*| 00000260 86 d5 c1 a9 fc 6c 6c dc 99 9e 51 0e 7a d5 42 7a |.....ll...Q.z.Bz| 00000270 30 1f 06 03 55 1d 23 04 18 30 16 80 14 13 6d 98 |0...U.#..0....m.| 00000280 2a 86 d5 c1 a9 fc 6c 6c dc 99 9e 51 0e 7a d5 42 |*.....ll...Q.z.B| 00000290 7a 30 0c 06 03 55 1d 13 04 05 30 03 01 01 ff 30 |z0...U....0....0| 000002a0 0d 06 09 2a 86 48 86 f7 0d 01 01 0b 05 00 03 82 |...*.H..........| 000002b0 01 01 00 3d 56 3b 0b 13 34 56 49 d6 5d 79 bb c2 |...=V;..4VI.]y..| 000002c0 de 42 6b 3e 43 e3 45 3d 83 7b 22 5c 83 a4 1d 64 |.Bk>C.E=.{"\...d| 000002d0 df 65 03 98 a6 36 40 e1 56 2f a7 a6 73 73 c4 cd |.e...6@.V/..ss..| 000002e0 cb e3 9d d2 2b fd 20 35 00 42 8e 4f 48 f9 4b 8a |....+. 5.B.OH.K.| 000002f0 f9 b1 e9 4a 4d 2e 7e 0a e8 b5 4a af 9a d2 1d 3e |...JM.~...J....>| 00000300 1b 42 72 43 71 e1 92 d4 7d 2b 96 9c f3 d4 f5 e6 |.BrCq...}+......| 00000310 08 ab dc 2a ab 9e 6b 83 b2 32 71 f8 c8 a4 e5 f6 |...*..k..2q.....| 00000320 d3 3e 2c 1a 63 dd 4b a8 e5 09 3b 08 2d 4e 7e 28 |.>,.c.K...;.-N~(| 00000330 ab d4 3a d9 b1 0a 0e 9e 9c f5 6f 06 bf 20 6b 77 |..:.......o.. kw| 00000340 93 93 d3 e1 85 64 eb 42 6c 73 36 0d 85 20 96 00 |.....d.Bls6.. ..| 00000350 ee c6 a6 a0 40 e7 8a 26 16 65 30 23 72 78 b8 6f |....@..&.e0#rx.o| 00000360 a5 9e 4b c4 06 7f 90 7e 22 fa c4 7f a5 de f6 f7 |..K....~".......| 00000370 3f 86 4b bf 84 47 98 e4 93 da 00 1c e9 35 36 0a |?.K..G.......56.| 00000380 cb 39 40 4c 4d 0a 2f 22 49 89 7e 79 6f 70 c4 9f |.9@LM./"I.~yop..| 00000390 68 30 1e 0d 5e 1e 1c 49 51 2d 01 d6 c8 ca 5e eb |h0..^..IQ-....^.| 000003a0 8c a9 89 ec 2c cf 51 74 0d 98 91 78 16 f7 a6 7b |....,.Qt...x...{| 000003b0 5e 82 bf 00 00 0f 00 01 04 08 04 01 00 57 54 61 |^............WTa| 000003c0 e3 d2 84 18 f9 1c 99 ab c6 ac eb ff 5f bb 5a 93 |............_.Z.| 000003d0 c3 79 d6 34 f3 95 51 4d 1a 1e 4d cf 5a 38 89 76 |.y.4..QM..M.Z8.v| 000003e0 f0 0e f4 de fe d6 e7 6d 53 b4 a3 42 0e 79 15 56 |.......mS..B.y.V| 000003f0 ff 02 5d c8 5b 07 9e 8c 10 4a 8d 4f 02 e0 37 43 |..].[....J.O..7C| 00000400 34 0b e2 34 99 4d 04 23 79 45 60 44 8c 58 5a 97 |4..4.M.#yE`D.XZ.| 00000410 ad 5a be f4 eb e0 68 29 d7 97 4c d1 01 3b 67 3f |.Z....h)..L..;g?| 00000420 83 fc db 33 93 eb b0 a9 90 e5 38 b3 70 65 cb e0 |...3......8.pe..| 00000430 6e 03 75 d5 81 8c 25 36 5b ae 82 e4 cb a1 36 49 |n.u...%6[.....6I| 00000440 19 43 78 f7 31 4f 86 ca 5f 4f f9 6a 05 7e 95 d8 |.Cx.1O.._O.j.~..| 00000450 e1 45 4a e3 24 b6 2e 2d c1 40 55 c1 a2 f7 ac 4b |.EJ.$..-.@U....K| 00000460 be 41 7f 0b 7e 0e b1 91 ce d3 62 46 28 19 fb 67 |.A..~.....bF(..g| 00000470 a8 3a 79 53 41 3b 2e b8 f5 aa 97 f4 d3 89 |.:ySA;........| 0000047e msg_cb: write_p=0 version=772 content_type=22 len=103 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters negotiated_version=0xff000012 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters supported_version[0]=0xff000012 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters supported_version[1]=0xff000013 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters stateless_reset_token=0x116c406dba36f995dd18495861257142 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters initial_max_stream_data_bidi_local=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters initial_max_stream_data_bidi_remote=4096 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters initial_max_stream_data_uni=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters initial_max_data=65536 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters initial_max_bidi_streams=100 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters initial_max_uni_streams=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters idle_timeout=30 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters max_packet_size=65527 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters ack_delay_exponent=3 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 cry remote transport_parameters max_ack_delay=25 msg_cb: write_p=0 version=772 content_type=22 len=846 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt read packet 1212 left 0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con processing buffered handshake packet Received packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 178 bytes I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con recv packet len=178 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt rx pkn=1 dcid=0x8dda8c2fa2adfaafa351f22570a7a6cba3 scid=0x776388cfa9850cff166210b083d10daa type=Handshake(0x02) len=137 k=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 1 Handshake(0x02) CRYPTO(0x06) offset=1150 len=115 Ordered CRYPTO data in Handshake crypto level 00000000 30 a7 1f d7 c2 83 88 9c 73 cc 31 e6 13 69 ca 1d |0.......s.1..i..| 00000010 ca 65 00 05 ef 54 68 3d 2a fc 29 8a 20 de e6 76 |.e...Th=*.). ..v| 00000020 83 24 17 c3 f9 fd 10 14 a3 cf f9 33 48 7c 8b f8 |.$.........3H|..| 00000030 4f 22 84 60 39 6d 71 7f f2 aa c1 ea 1a fc 74 14 |O".`9mq.......t.| 00000040 00 00 30 d0 76 f7 13 7e 84 d0 ba c6 34 77 6c 2a |..0.v..~....4wl*| 00000050 34 ea bd 0a 6a 3e 6b b7 41 79 df 75 c1 b8 98 8c |4...j>k.Ay.u....| 00000060 96 6e f4 3a 9a 29 21 e3 4d 2e 23 ae 6b 3c 06 11 |.n.:.)!.M.#.k<..| 00000070 8b d3 09 |...| 00000073 msg_cb: write_p=0 version=772 content_type=22 len=264 msg_cb: write_p=0 version=772 content_type=22 len=52 server_application_traffic + secret=d570fa85ad3732f1513c6b6577a9da3922ea8720d37e18f5cbf69a27c926a2315e616c5b1c1d74947de8ab82e01d1353 + key=2c07099ef71af66c1f79fb3ac13d84ff57cce7d6818f87cb68a65784a5e33134 + iv=38631caa8a57d64bfe89cdbc + hp=de257c2ddb81c677181edf4d0807010e35fe9d4582fcfb60492cafa1c40cd7f6 client_handshake_traffic + secret=ea50b91308b876d93f4a458e90d37484a9a1f9991cfa643e6a03cd2ed7a70cdf1116d251625091db59aa7e72c4f25c02 + key=0a26ad05900c47d663951ded7a2b6d2bc528310e4d5323dccd80b8b8c7ad4552 + iv=933b8712408f4dc76cbb1423 + hp=9fe19e1638b6b4bbd0aa76c7b440c391ed99418668e99a373e854300b96f6877 msg_cb: write_p=1 version=772 content_type=22 len=52 client_application_traffic + secret=6955fc908fff43a97ac6542518cbaa096090fc2e2037c0a7a1ebed4a981c5166f847ad021e80f8b2c5e088e383b7e62c + key=f87b1fe6e3156f1ce0051e5c81ccc1b979272582345605277c9ad099eb59b9f0 + iv=1317d9fc9aa84879309fa6b9 + hp=cf81d8e0e0f26f3baf03182d6868938494028a0f4ee392d47fd53b943d7348df Negotiated cipher suite is TLS_AES_256_GCM_SHA384 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt read packet 178 left 0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con processing buffered handshake packet I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt tx pkn=0 dcid=0x776388cfa9850cff166210b083d10daa scid=0x8dda8c2fa2adfaafa351f22570a7a6cba3 type=Handshake(0x02) len=0 k=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Handshake(0x02) CRYPTO(0x06) offset=0 len=52 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Handshake(0x02) ACK(0x02) largest_ack=1 ack_delay=0(0) ack_block_count=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Handshake(0x02) ACK(0x02) block=[1..0] block_count=1 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv loss_detection_timer=1554553802925736960 last_hs_tx_pkt_ts=1554553802855506944 timeout=70 QUIC handshake has completed Interactive session started. Hit Ctrl-D to end the session. The stream 0 has opened. I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con processing buffered protected packet Sent packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 118 bytes I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt tx pkn=0 dcid=0x776388cfa9850cff166210b083d10daa scid=0x type=Short(0x70) len=0 k=0 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Short(0x70) NEW_CONNECTION_ID(0x18) seq=8 cid=0xe659fe6940f7f84c1b14ee36641d26a851 stateless_reset_token=0x3543067e1319d92a323c227059bdb4da I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Short(0x70) NEW_CONNECTION_ID(0x18) seq=7 cid=0x0720d798743f7262e941a591e7624392bd stateless_reset_token=0x42aaab779ba0817a5d0414865c179f22 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Short(0x70) NEW_CONNECTION_ID(0x18) seq=6 cid=0x9828fec8ff1bd2833edc9b53d916acb17d stateless_reset_token=0xb44689e988d2ffd5fd1c38355a05de6f I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Short(0x70) NEW_CONNECTION_ID(0x18) seq=5 cid=0x823ec4619cfd8de9380ca0be7101cb6a2c stateless_reset_token=0xe309a6a00df52bf22f9adb18add25135 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Short(0x70) NEW_CONNECTION_ID(0x18) seq=4 cid=0x5ca59f9a47ea4613f9d0229d5190c9ad28 stateless_reset_token=0x05de187b0ec4ce1f1c2caaf7f8f43c53 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Short(0x70) NEW_CONNECTION_ID(0x18) seq=3 cid=0xb28544386f9a1cc6a82e5a3d9e70c57f06 stateless_reset_token=0xfe1087ed9f66882c1da24d487d1b49dc I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Short(0x70) NEW_CONNECTION_ID(0x18) seq=2 cid=0xbb75b529e958d9d7c24889caa77b58bc30 stateless_reset_token=0x8bda47415711a45f4973c76f5df44615 I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm tx 0 Short(0x70) NEW_CONNECTION_ID(0x18) seq=1 cid=0xb2bc0901a2064820420696e07df6c7079b stateless_reset_token=0xf49e079d7cafb9cbe461549bf0e0383e I00000035 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv loss_detection_timer=1554553802925736960 last_hs_tx_pkt_ts=1554553802855506944 timeout=70 Sent packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 322 bytes Received packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 62 bytes I00000044 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con recv packet len=62 I00000044 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt rx pkn=2 dcid=0x8dda8c2fa2adfaafa351f22570a7a6cba3 scid=0x776388cfa9850cff166210b083d10daa type=Handshake(0x02) len=22 k=0 I00000044 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 2 Handshake(0x02) ACK(0x02) largest_ack=0 ack_delay=0(0) ack_block_count=0 I00000044 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 2 Handshake(0x02) ACK(0x02) block=[0..0] block_count=0 I00000044 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv latest_rtt=9 min_rtt=9 smoothed_rtt=31.890 rttvar=19.618 max_ack_delay=0 I00000044 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv pkn=0 acked, slow start cwnd=13370 I00000044 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt read packet 62 left 0 Received packet: local=[0.0.0.0]:51356 remote=[127.0.0.1]:4433 40 bytes I00000045 0x8dda8c2fa2adfaafa351f22570a7a6cba3 con recv packet len=40 I00000045 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt rx pkn=0 dcid=0x8dda8c2fa2adfaafa351f22570a7a6cba3 scid=0x type=Short(0x70) len=0 k=0 I00000045 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 0 Short(0x70) ACK(0x02) largest_ack=0 ack_delay=0(0) ack_block_count=0 I00000045 0x8dda8c2fa2adfaafa351f22570a7a6cba3 frm rx 0 Short(0x70) ACK(0x02) block=[0..0] block_count=0 I00000045 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv latest_rtt=10 min_rtt=9 smoothed_rtt=29.155 rttvar=20.184 max_ack_delay=0 I00000045 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv pkn=0 acked, slow start cwnd=13692 I00000045 0x8dda8c2fa2adfaafa351f22570a7a6cba3 rcv loss detection timer canceled I00000045 0x8dda8c2fa2adfaafa351f22570a7a6cba3 pkt read packet 40 left 0