Skip to content

Conversation

@ctz
Copy link
Member

@ctz ctz commented Sep 11, 2024

This is generally only valuable for TLS1.3, where we're saving encryption overheads several times over. For TLS1.2 there are no encrypted handshake messages, so we're only saving 20 bytes on the wire in the server -> client direction.

fixes #2041

@rustls-benchmarking
Copy link

rustls-benchmarking bot commented Sep 11, 2024

Benchmark results

Instruction counts

Significant differences

⚠️ There are significant instruction count differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server 1919324 1906210 -13114 (-0.68%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server 1916013 1903892 -12121 (-0.63%) 0.20%
handshake_no_resume_ring_1.3_ecdsap256_aes_server 2134636 2126210 -8426 (-0.39%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_client 2233931 2228045 -5886 (-0.26%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_client 2226670 2221709 -4961 (-0.22%) 0.20%

Other differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_tickets_aws_lc_rs_1.2_rsa_aes_server 5141445 5204436 62991 (1.23%) 4.06%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_server 3978474 4025162 46688 (1.17%) 3.41%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client 8905451 8862963 -42488 (-0.48%) 1.31%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client 8899962 8876455 -23507 (-0.26%) 0.98%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_server 13852189 13816701 -35488 (-0.26%) 1.00%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_server 13409331 13376978 -32353 (-0.24%) 0.90%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_client 31166842 31101885 -64957 (-0.21%) 0.53%
handshake_no_resume_ring_1.3_ecdsap256_chacha_server 2136625 2132206 -4419 (-0.21%) 0.79%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server 4385401 4376972 -8429 (-0.19%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_server 13833701 13807498 -26203 (-0.19%) 0.76%
handshake_no_resume_ring_1.3_rsa_aes_client 2951575 2946099 -5476 (-0.19%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_server 32967479 32906439 -61040 (-0.19%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server 4381906 4373812 -8094 (-0.18%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_client 30739854 30683231 -56623 (-0.18%) 0.20%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_server 46393228 46478421 85193 (0.18%) 0.41%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_client 31173508 31116638 -56870 (-0.18%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_client 30721861 30666418 -55443 (-0.18%) 0.20%
handshake_no_resume_ring_1.3_rsa_chacha_client 2957497 2952172 -5325 (-0.18%) 0.20%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_client 31198278 31142958 -55320 (-0.18%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_server 32965652 32907690 -57962 (-0.18%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_server 34789732 34729486 -60246 (-0.17%) 0.20%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_server 34766770 34707927 -58843 (-0.17%) 0.36%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client 3381274 3375651 -5623 (-0.17%) 0.23%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_server 34789541 34734294 -55247 (-0.16%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_client 31126781 31078075 -48706 (-0.16%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_client 30745441 30700178 -45263 (-0.15%) 0.20%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_server 34754020 34703267 -50753 (-0.15%) 0.64%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_client 30764009 30719095 -44914 (-0.15%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_server 33007922 32959865 -48057 (-0.15%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client 3383334 3378417 -4917 (-0.15%) 0.23%
handshake_no_resume_ring_1.3_ecdsap256_chacha_client 3916599 3910956 -5643 (-0.14%) 0.43%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_client 31151075 31106506 -44569 (-0.14%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_server 33007101 32960300 -46801 (-0.14%) 0.20%
handshake_no_resume_ring_1.3_ecdsap256_aes_client 3914871 3909580 -5291 (-0.14%) 0.41%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_server 34768749 34721785 -46964 (-0.14%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_chacha_client 42353719 42297875 -55844 (-0.13%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_chacha_server 43966010 43908075 -57935 (-0.13%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_chacha_client 41881231 41827198 -54033 (-0.13%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_server 34769330 34724602 -44728 (-0.13%) 0.20%
handshake_session_id_ring_1.3_rsa_chacha_client 41898433 41844706 -53727 (-0.13%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_chacha_client 42345624 42291357 -54267 (-0.13%) 0.20%
handshake_tickets_ring_1.3_rsa_chacha_client 42363386 42309174 -54212 (-0.13%) 0.20%
handshake_session_id_ring_1.3_rsa_chacha_server 43368736 43314035 -54701 (-0.13%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_aes_client 41971106 41918257 -52849 (-0.13%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_chacha_server 43371766 43317271 -54495 (-0.13%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_chacha_server 43371257 43317264 -53993 (-0.12%) 0.20%
handshake_tickets_ring_1.3_rsa_chacha_server 43957696 43904108 -53588 (-0.12%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_chacha_server 43959893 43907733 -52160 (-0.12%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_client 30722553 30686526 -36027 (-0.12%) 0.34%
handshake_session_id_ring_1.3_ecdsap256_chacha_client 41884304 41835805 -48499 (-0.12%) 0.20%
handshake_session_id_ring_1.3_rsa_aes_client 41979606 41932641 -46965 (-0.11%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_aes_server 43475347 43427510 -47837 (-0.11%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_aes_client 41961720 41915702 -46018 (-0.11%) 0.20%
handshake_tickets_ring_1.3_rsa_aes_client 42427506 42381819 -45687 (-0.11%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_aes_client 42410144 42364652 -45492 (-0.11%) 0.20%
handshake_session_id_ring_1.3_rsa_aes_server 43468754 43423604 -45150 (-0.10%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_aes_client 42414549 42370718 -43831 (-0.10%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_aes_server 43472000 43427294 -44706 (-0.10%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_aes_server 44044106 43999306 -44800 (-0.10%) 0.20%
handshake_tickets_ring_1.3_rsa_aes_server 44041433 43996788 -44645 (-0.10%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_server 32950836 32919540 -31296 (-0.09%) 0.48%
handshake_tickets_ring_1.3_ecdsap256_aes_server 44043956 44004409 -39547 (-0.09%) 0.20%
handshake_no_resume_ring_1.2_rsa_aes_server 11991984 11981224 -10760 (-0.09%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_client 30724264 30699195 -25069 (-0.08%) 0.43%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_client 31088804 31113967 25163 (0.08%) 0.31%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_server 46399479 46434182 34703 (0.07%) 0.20%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_client 2011613 2010203 -1410 (-0.07%) 0.20%
handshake_no_resume_ring_1.3_rsa_chacha_server 12186359 12178039 -8320 (-0.07%) 0.20%
handshake_no_resume_ring_1.3_rsa_aes_server 12180337 12172024 -8313 (-0.07%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client 58234263 58271260 36997 (0.06%) 0.27%
handshake_no_resume_ring_1.3_ecdsap384_aes_server 13742664 13734376 -8288 (-0.06%) 0.20%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_client 4033545 4035974 2429 (0.06%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_chacha_server 13744668 13736470 -8198 (-0.06%) 0.20%
handshake_tickets_ring_1.2_rsa_aes_client 4560390 4562739 2349 (0.05%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client 92659428 92704443 45015 (0.05%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_server 32934302 32919307 -14995 (-0.05%) 0.59%
handshake_tickets_aws_lc_rs_1.2_rsa_aes_client 4447410 4449218 1808 (0.04%) 0.20%
handshake_no_resume_ring_1.2_rsa_aes_client 2853996 2852927 -1069 (-0.04%) 0.20%
handshake_session_id_ring_1.2_rsa_aes_server 4270958 4269969 -989 (-0.02%) 0.20%
handshake_tickets_ring_1.2_rsa_aes_server 4707822 4708802 980 (0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_server 80587570 80604107 16537 (0.02%) 0.24%
handshake_session_id_ring_1.2_rsa_aes_client 4288237 4288940 703 (0.02%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_chacha_client 35476150 35470588 -5562 (-0.02%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_aes_client 35473788 35468819 -4969 (-0.01%) 0.20%
transfer_no_resume_ring_1.2_rsa_aes_server 46352942 46348195 -4747 (-0.01%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_chacha_server 80508144 80500366 -7778 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server 46426098 46429761 3663 (0.01%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_aes_client 58328797 58331553 2756 (0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_chacha_client 92667946 92663779 -4167 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server 80606285 80609791 3506 (0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_aes_server 46447215 46448525 1310 (0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client 58244863 58243281 -1582 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_aes_server 46438568 46439527 959 (0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_aes_server 46435678 46436382 704 (0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client 92703910 92702857 -1053 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_chacha_server 80515612 80516462 850 (0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_chacha_server 80507421 80508248 827 (0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server 46427375 46427768 393 (0.00%) 0.20%
transfer_no_resume_ring_1.2_rsa_aes_client 58207593 58207242 -351 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_aes_client 58331998 58332247 249 (0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_chacha_client 92660151 92660492 341 (0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server 80607866 80608159 293 (0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_client 92705582 92705907 325 (0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_chacha_client 92665040 92664780 -260 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_aes_client 58328179 58328096 -83 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_client 68658511 68658419 -92 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_client 58247245 58247196 -49 (-0.00%) 0.20%

Wall-time

Significant differences

⚠️ There are significant wall-time differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_tickets_aws_lc_rs_1.2_rsa_aes 2.32 ms 2.28 ms ✅ -0.04 ms (-1.78%) 1.71%

Other differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_session_id_aws_lc_rs_1.2_rsa_aes 2.11 ms 2.07 ms -0.03 ms (-1.60%) 2.57%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha 484.99 µs 477.43 µs -7.56 µs (-1.56%) 3.78%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes 485.72 µs 478.71 µs -7.00 µs (-1.44%) 4.24%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha 1.42 ms 1.40 ms -0.02 ms (-1.37%) 1.55%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes 4.54 ms 4.47 ms -0.06 ms (-1.35%) 7.04%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes 1.43 ms 1.41 ms -0.02 ms (-1.35%) 1.91%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes 5.48 ms 5.41 ms -0.07 ms (-1.26%) 6.55%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes 5.26 ms 5.20 ms -0.07 ms (-1.25%) 6.30%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes 1.37 ms 1.36 ms -0.02 ms (-1.24%) 1.92%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha 6.56 ms 6.48 ms -0.08 ms (-1.24%) 1.63%
handshake_no_resume_ring_1.3_ecdsap256_chacha 507.41 µs 501.24 µs -6.17 µs (-1.22%) 3.27%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes 5.48 ms 5.41 ms -0.07 ms (-1.21%) 5.39%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha 5.60 ms 5.53 ms -0.07 ms (-1.20%) 2.09%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes 5.60 ms 5.53 ms -0.07 ms (-1.19%) 1.76%
handshake_tickets_aws_lc_rs_1.3_rsa_aes 6.56 ms 6.48 ms -0.08 ms (-1.17%) 1.84%
handshake_no_resume_ring_1.3_ecdsap256_aes 509.76 µs 503.84 µs -5.92 µs (-1.16%) 3.29%
transfer_no_resume_ring_1.3_ecdsap256_aes 6.37 ms 6.30 ms -0.07 ms (-1.15%) 4.69%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha 5.46 ms 5.40 ms -0.06 ms (-1.15%) 2.06%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha 6.42 ms 6.35 ms -0.07 ms (-1.12%) 1.62%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes 6.31 ms 6.25 ms -0.07 ms (-1.10%) 1.53%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha 6.31 ms 6.24 ms -0.07 ms (-1.09%) 1.76%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha 6.17 ms 6.11 ms -0.06 ms (-1.05%) 1.67%
transfer_no_resume_ring_1.3_rsa_aes 6.85 ms 6.78 ms -0.07 ms (-1.01%) 4.83%
handshake_session_id_aws_lc_rs_1.3_rsa_aes 6.44 ms 6.38 ms -0.06 ms (-1.00%) 1.83%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes 5.47 ms 5.42 ms -0.05 ms (-0.90%) 2.07%
transfer_no_resume_ring_1.2_rsa_aes 6.76 ms 6.70 ms -0.06 ms (-0.89%) 4.52%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes 6.18 ms 6.14 ms -0.05 ms (-0.76%) 1.95%
transfer_no_resume_ring_1.3_ecdsap384_aes 9.47 ms 9.39 ms -0.07 ms (-0.75%) 3.15%
handshake_tickets_ring_1.3_rsa_aes 7.34 ms 7.28 ms -0.06 ms (-0.75%) 1.09%
handshake_tickets_ring_1.3_rsa_chacha 7.28 ms 7.23 ms -0.05 ms (-0.73%) 1.24%
handshake_tickets_ring_1.3_ecdsap256_aes 6.85 ms 6.80 ms -0.05 ms (-0.70%) 1.19%
handshake_tickets_ring_1.3_ecdsap256_chacha 6.80 ms 6.75 ms -0.05 ms (-0.70%) 1.21%
handshake_session_id_ring_1.3_rsa_chacha 7.23 ms 7.18 ms -0.05 ms (-0.68%) 1.27%
handshake_session_id_ring_1.2_rsa_aes 1.58 ms 1.57 ms -0.01 ms (-0.66%) 1.03%
handshake_tickets_ring_1.2_rsa_aes 1.67 ms 1.66 ms -0.01 ms (-0.63%) 1.00%
handshake_session_id_ring_1.3_rsa_aes 7.28 ms 7.24 ms -0.05 ms (-0.63%) 1.29%
handshake_session_id_ring_1.3_ecdsap256_chacha 6.75 ms 6.70 ms -0.04 ms (-0.62%) 1.42%
handshake_no_resume_ring_1.3_rsa_chacha 992.64 µs 986.68 µs -5.96 µs (-0.60%) 1.58%
handshake_no_resume_ring_1.2_rsa_aes 980.22 µs 974.69 µs -5.53 µs (-0.56%) 1.39%
handshake_no_resume_ring_1.3_rsa_aes 992.19 µs 986.65 µs -5.54 µs (-0.56%) 1.31%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha 13.95 ms 13.87 ms -0.08 ms (-0.54%) 2.46%
handshake_session_id_ring_1.3_ecdsap256_aes 6.79 ms 6.75 ms -0.04 ms (-0.53%) 1.56%
handshake_tickets_ring_1.3_ecdsap384_aes 9.94 ms 9.88 ms -0.05 ms (-0.53%) 1.00%
handshake_tickets_ring_1.3_ecdsap384_chacha 9.88 ms 9.83 ms -0.05 ms (-0.49%) 1.00%
handshake_session_id_ring_1.3_ecdsap384_chacha 9.84 ms 9.79 ms -0.05 ms (-0.47%) 1.04%
transfer_no_resume_ring_1.3_ecdsap256_chacha 13.01 ms 12.95 ms -0.06 ms (-0.45%) 2.23%
transfer_no_resume_ring_1.3_rsa_chacha 13.49 ms 13.44 ms -0.06 ms (-0.42%) 2.49%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha 12.99 ms 12.94 ms -0.05 ms (-0.42%) 2.29%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha 13.72 ms 13.66 ms -0.06 ms (-0.42%) 2.15%
handshake_session_id_ring_1.3_ecdsap384_aes 9.87 ms 9.83 ms -0.04 ms (-0.41%) 1.01%
transfer_no_resume_ring_1.3_ecdsap384_chacha 16.10 ms 16.05 ms -0.06 ms (-0.36%) 1.74%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes 1.20 ms 1.20 ms -0.00 ms (-0.34%) 1.37%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha 1.20 ms 1.20 ms -0.00 ms (-0.24%) 1.54%
handshake_no_resume_ring_1.3_ecdsap384_aes 3.60 ms 3.60 ms -0.00 ms (-0.13%) 1.00%
handshake_no_resume_ring_1.3_ecdsap384_chacha 3.60 ms 3.60 ms -0.00 ms (-0.13%) 1.00%

Additional information

Historical results

Checkout details:

@codecov
Copy link

codecov bot commented Sep 11, 2024

Codecov Report

Attention: Patch coverage is 99.07407% with 2 lines in your changes missing coverage. Please review.

Project coverage is 94.64%. Comparing base (a4dbf73) to head (46204e6).
Report is 3 commits behind head on main.

Files with missing lines Patch % Lines
rustls/src/common_state.rs 96.00% 1 Missing ⚠️
rustls/src/msgs/message/mod.rs 66.66% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2120      +/-   ##
==========================================
- Coverage   94.66%   94.64%   -0.03%     
==========================================
  Files         102      102              
  Lines       23450    23415      -35     
==========================================
- Hits        22198    22160      -38     
- Misses       1252     1255       +3     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@ctz ctz force-pushed the jbp-optimise-hs-flight branch 8 times, most recently from 4fd718d to 43330bd Compare September 13, 2024 10:57
@ctz ctz marked this pull request as ready for review September 13, 2024 11:11
Copy link
Member

@cpu cpu left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is really nice, outside of any perf benefits I think it has an improvement on the overall readability/structure of the code.

Comment on lines -33 to -35
"Ok(BlockedHandshake)",
"Ok(BlockedHandshake)",
"Ok(BlockedHandshake)",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it's interesting to observe the optimization so directly in this API's expected states 👍

}
}

pub(crate) type HandshakeFlightTls12<'a> = HandshakeFlight<'a, false>;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the TLS 1.2 use-case landed alongside the new types to avoid dead code warnings? I think this diff would be easier to digest if it were separated out like the TLS 1.3 case but I wager that might produce warnings and I don't feel very strongly.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general, not sure I'm convinced of the benefit of this type alias.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the type alias is mildly useful in so much as false in the generic bound doesn't clearly map to TLS1.2 without doing a bit of digging around.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes I would like to avoid the true/false thing leaking out of this file, as far as possible.

My second choice would be to stop this type being generic like this, and just have two different constructors (eg, new_tls12(), new_tls13() or similar) and rely on everything being inlined into their uses.

}
}

pub(crate) struct HandshakeFlight<'a, const TLS13: bool> {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I briefly considered the restrictiveness of the const generic bool here vs something more expressive but decided it was premature optimization and this seems quite reasonable after all.

transfer(&mut client, &mut server);
server.process_new_packets().unwrap();
{
let mut pipe = OtherSession::new(&mut client);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice to see the improvements reflected here too 🚀

Copy link
Member

@djc djc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks great!

}
}

pub(crate) type HandshakeFlightTls12<'a> = HandshakeFlight<'a, false>;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In general, not sure I'm convinced of the benefit of this type alias.

@djc
Copy link
Member

djc commented Sep 15, 2024

This is really nice, outside of any perf benefits I think it has an improvement on the overall readability/structure of the code.

Agreed, -11 lines for an efficiency improvement seems like a really good deal.

@ctz ctz force-pushed the jbp-optimise-hs-flight branch from 43330bd to 46204e6 Compare September 16, 2024 15:54
@ctz ctz enabled auto-merge September 16, 2024 16:06
@ctz ctz added this pull request to the merge queue Sep 16, 2024
Merged via the queue into main with commit bfb7665 Sep 16, 2024
@ctz ctz deleted the jbp-optimise-hs-flight branch September 16, 2024 16:23
@cpu cpu mentioned this pull request Sep 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Pack multiple handshake messages into single TLS message

4 participants