1. build

  1. # 下载代码
  2. git clone --recursive https://github.com/cloudflare/quiche (安装包已执行完此操作)
  3. # 安装依赖
  4. yum install -y rust cargo go libunwind-devel libev-devel libasan uthash-devel
  5. # 配置go环境
  6. go env -w GO111MODULE=on
  7. go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct
  8. # 配置rust国内源
  9. vi .cargo/config
  10. [source.crates-io]
  11. registry = "https://github.com/rust-lang/crates.io-index"
  12. replace-with = 'ustc'
  13. [source.ustc]
  14. registry = "git://mirrors.ustc.edu.cn/crates.io-index"
  15. # build c example
  16. cd examples
  17. make
  18. # build (可以不编译)
  19. cargo build --examples
  20. cargo test

2. demo

  1. # 设置环境变量
  2. export SSLKEYLOGFILE=./ssl.log
  3. echo $SSLKEYLOGFILE
  4. # 启动server (c example)
  5. ./server 127.0.0.1 4567
  6. # 启动client (c example)
  7. ./client 127.0.0.1 4567

2.1 server输出

  1. version negotiation
  2. sent 55 bytes
  3. recv would block
  4. stateless retry
  5. sent 93 bytes
  6. recv would block
  7. new connection
  8. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Initial version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0 len=289 pn=2
  9. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm CRYPTO off=0 len=268
  10. quiche::tls: checking peer ALPN Ok("hq-interop") against Ok("hq-interop")
  11. quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 write message lvl=Initial len=90
  12. quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 set write secret lvl=Handshake
  13. quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 write message lvl=Handshake len=1183
  14. quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 set write secret lvl=OneRTT
  15. quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 set read secret lvl=Handshake
  16. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 dropped invalid packet
  17. recv 1200 bytes
  18. recv would block
  19. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Initial version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=100 pn=0
  20. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm ACK delay=1241 blocks=[2..2]
  21. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm CRYPTO off=0 len=90
  22. quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=998.757062ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=159 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=302.632µs recent_delivered_packet_sent_time=303.736µs app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 841583849 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  23. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=983 pn=0
  24. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm CRYPTO off=0 len=979
  25. quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=998.52249ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=1200 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=490.449µs recent_delivered_packet_sent_time=491.145µs app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 841945693 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  26. sent 1200 bytes
  27. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=209 pn=1
  28. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm CRYPTO off=979 len=204
  29. quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=998.251055ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=1467 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=783.089µs recent_delivered_packet_sent_time=783.842µs app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 842194507 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  30. sent 267 bytes
  31. done writing
  32. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Initial version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0 len=23 pn=3
  33. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm ACK delay=786 blocks=[0..0]
  34. quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 packet newly acked 0
  35. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Handshake version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 len=63 pn=0
  36. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm ACK delay=346 blocks=[0..1]
  37. quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 packet newly acked 0
  38. quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 packet newly acked 1
  39. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm CRYPTO off=0 len=36
  40. quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 set read secret lvl=OneRTT
  41. quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 write message lvl=OneRTT len=396
  42. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 connection established: proto=Ok("hq-interop") cipher=Some(AES128_GCM) curve=Some("X25519") sigalg=None resumed=false TransportParams { original_destination_connection_id: None, max_idle_timeout: 5000, stateless_reset_token: None, max_udp_payload_size: 1350, initial_max_data: 10000000, initial_max_stream_data_bidi_local: 1000000, initial_max_stream_data_bidi_remote: 0, initial_max_stream_data_uni: 1000000, initial_max_streams_bidi: 100, initial_max_streams_uni: 100, ack_delay_exponent: 3, max_ack_delay: 25, disable_active_migration: true, active_conn_id_limit: 2, initial_source_connection_id: Some(619cfb4161d40bd440ebeadb2fcac2b2), retry_source_connection_id: None, max_datagram_frame_size: None }
  43. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 dropped epoch 0 state
  44. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Short dcid=3bd8856ac3f9f43995ffeefde088b7d5 key_phase=false len=1126 pn=0
  45. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm STREAM id=4 off=0 len=18 fin=true
  46. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm PADDING len=1086
  47. recv 1350 bytes
  48. stream 4 is readable
  49. recv would block
  50. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=6 pn=2
  51. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm ACK delay=234 blocks=[0..0]
  52. quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=none latest_rtt=7.341005ms srtt=Some(7.673759ms) min_rtt=7.341005ms rttvar=2.990558ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=0 app_limited=true congestion_recovery_start_time=None delivered=1467 delivered_time=2.002096ms recent_delivered_packet_sent_time=9.954559ms app_limited_at_pkt=1467 pacing_rate=1759416 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 851396253 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  53. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Short dcid=619cfb4161d40bd440ebeadb2fcac2b2 key_phase=false len=417 pn=0
  54. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm ACK delay=94 blocks=[0..0]
  55. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm HANDSHAKE_DONE
  56. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm CRYPTO off=0 len=396
  57. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm STREAM id=4 off=0 len=5 fin=true
  58. quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=44.445309ms latest_rtt=7.341005ms srtt=Some(7.673759ms) min_rtt=7.341005ms rttvar=2.990558ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=451 app_limited=true congestion_recovery_start_time=None delivered=1467 delivered_time=2.241884ms recent_delivered_packet_sent_time=10.194304ms app_limited_at_pkt=1467 pacing_rate=1759416 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 851565568 }) hystart=window_end=Some(0) last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  59. sent 515 bytes
  60. done writing
  61. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Short dcid=3bd8856ac3f9f43995ffeefde088b7d5 key_phase=false len=21 pn=1
  62. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm APPLICATION_CLOSE err=0 reason=[]
  63. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm PADDING len=1
  64. recv 38 bytes
  65. recv would block
  66. done writing
  67. quiche: 3bd8856ac3f9f43995ffeefde088b7d5 draining timeout expired
  68. timeout
  69. done writing
  70. connection closed, recv=5 sent=5 lost=0 rtt=7673759ns cwnd=13500

2.2 client输出

  1. quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 write message lvl=Initial len=268
  2. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Initial version=babababa dcid=02391c6c156e444a5651027f1d5c92b0 scid=619cfb4161d40bd440ebeadb2fcac2b2 len=272 pn=0
  3. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm CRYPTO off=0 len=268
  4. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=998.72588ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=331 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=312.258µs recent_delivered_packet_sent_time=313.178µs app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 826962349 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  5. sent 1200 bytes
  6. done writing
  7. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt VersionNegotiation version=0 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=02391c6c156e444a5651027f1d5c92b0 versions=[1, ff00001d, ff00001c, ff00001b]
  8. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 dropped epoch 0 state
  9. recv 55 bytes
  10. recv would block
  11. done reading
  12. quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 write message lvl=Initial len=268
  13. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Initial version=1 dcid=02391c6c156e444a5651027f1d5c92b0 scid=619cfb4161d40bd440ebeadb2fcac2b2 len=272 pn=1
  14. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm CRYPTO off=0 len=268
  15. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=998.863496ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=331 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=2.328129ms recent_delivered_packet_sent_time=2.329016ms app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 829138993 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  16. sent 1200 bytes
  17. done writing
  18. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Retry version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0
  19. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 dropped epoch 0 state
  20. recv 93 bytes
  21. recv would block
  22. done reading
  23. quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 write message lvl=Initial len=268
  24. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Initial version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0 len=272 pn=2
  25. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm CRYPTO off=0 len=268
  26. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=998.895136ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=369 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=3.773824ms recent_delivered_packet_sent_time=3.774768ms app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 830616540 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  27. sent 1200 bytes
  28. done writing
  29. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Initial version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 token= len=117 pn=0
  30. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm ACK delay=1241 blocks=[2..2]
  31. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 packet newly acked 2
  32. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm CRYPTO off=0 len=90
  33. quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 set write secret lvl=Handshake
  34. quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 set read secret lvl=Handshake
  35. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=1000 pn=0
  36. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm CRYPTO off=0 len=979
  37. recv 1200 bytes
  38. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=226 pn=1
  39. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm CRYPTO off=979 len=204
  40. quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 write message lvl=Handshake len=36
  41. quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 set write secret lvl=OneRTT
  42. quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 set read secret lvl=OneRTT
  43. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 connection established: proto=Ok("hq-interop") cipher=Some(AES128_GCM) curve=Some("X25519") sigalg=Some("rsa_pss_rsae_sha256") resumed=false TransportParams { original_destination_connection_id: Some(02391c6c156e444a5651027f1d5c92b0), max_idle_timeout: 5000, stateless_reset_token: None, max_udp_payload_size: 1350, initial_max_data: 10000000, initial_max_stream_data_bidi_local: 1000000, initial_max_stream_data_bidi_remote: 1000000, initial_max_stream_data_uni: 0, initial_max_streams_bidi: 100, initial_max_streams_uni: 0, ack_delay_exponent: 3, max_ack_delay: 25, disable_active_migration: false, active_conn_id_limit: 2, initial_source_connection_id: Some(3bd8856ac3f9f43995ffeefde088b7d5), retry_source_connection_id: Some(3bd8856ac3f9f43995ffeefde088b7d5), max_datagram_frame_size: None }
  44. recv 267 bytes
  45. recv would block
  46. done reading
  47. connection established: hq-interop
  48. sent HTTP request
  49. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Initial version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0 len=6 pn=3
  50. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm ACK delay=786 blocks=[0..0]
  51. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=28.279991ms latest_rtt=11.557915ms srtt=Some(11.557915ms) min_rtt=11.557915ms rttvar=5.778957ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=0 app_limited=true congestion_recovery_start_time=None delivered=369 delivered_time=6.417197ms recent_delivered_packet_sent_time=21.630006ms app_limited_at_pkt=369 pacing_rate=1168123 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 848448659 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  52. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Handshake version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 len=46 pn=0
  53. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm ACK delay=346 blocks=[0..1]
  54. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm CRYPTO off=0 len=36
  55. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=34.553486ms latest_rtt=11.557915ms srtt=Some(11.557915ms) min_rtt=11.557915ms rttvar=5.778957ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=104 app_limited=true congestion_recovery_start_time=None delivered=369 delivered_time=6.583204ms recent_delivered_packet_sent_time=21.795987ms app_limited_at_pkt=369 pacing_rate=1168123 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 848625395 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  56. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 dropped epoch 0 state
  57. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Short dcid=3bd8856ac3f9f43995ffeefde088b7d5 key_phase=false len=1109 pn=0
  58. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm STREAM id=4 off=0 len=18 fin=true
  59. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm PADDING len=1086
  60. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=34.137202ms latest_rtt=11.557915ms srtt=Some(11.557915ms) min_rtt=11.557915ms rttvar=5.778957ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=1247 app_limited=true congestion_recovery_start_time=None delivered=369 delivered_time=7.008072ms recent_delivered_packet_sent_time=22.220785ms app_limited_at_pkt=369 pacing_rate=1168123 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 848828310 }) hystart=window_end=Some(0) last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  61. sent 1350 bytes
  62. done writing
  63. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=23 pn=2
  64. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm ACK delay=234 blocks=[0..0]
  65. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 packet newly acked 0
  66. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Short dcid=619cfb4161d40bd440ebeadb2fcac2b2 key_phase=false len=434 pn=0
  67. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm ACK delay=94 blocks=[0..0]
  68. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 packet newly acked 0
  69. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 dropped epoch 1 state
  70. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm HANDSHAKE_DONE
  71. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm CRYPTO off=0 len=396
  72. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm STREAM id=4 off=0 len=5 fin=true
  73. recv 515 bytes
  74. recv would block
  75. done reading
  76. stream 4 is readable
  77. byez
  78. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Short dcid=3bd8856ac3f9f43995ffeefde088b7d5 key_phase=false len=4 pn=1
  79. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm APPLICATION_CLOSE err=0 reason=[]
  80. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm PADDING len=1
  81. quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=60.858617ms latest_rtt=3.3692ms srtt=Some(9.631458ms) min_rtt=3.303141ms rttvar=6.587648ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=38 app_limited=true congestion_recovery_start_time=None delivered=1616 delivered_time=1.08835ms recent_delivered_packet_sent_time=4.661211ms app_limited_at_pkt=0 pacing_rate=1401723 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 853147728 }) hystart=window_end=Some(0) last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
  82. sent 38 bytes
  83. done writing
  84. timeout
  85. done writing
  86. quiche: 619cfb4161d40bd440ebeadb2fcac2b2 draining timeout expired
  87. timeout
  88. done writing
  89. connection closed, recv=5 sent=7 lost=0 rtt=9631458ns

2.3 截图

【server】
image.png
【client】
quiche编译 - 图2