Граф коммитов

51 Коммитов

Автор SHA1 Сообщение Дата
Nick Banks 67ce5afa7f
Submodule XDP (#3967) 2023-11-27 12:16:40 -05:00
Daiki AMINAKA ae3db5cd99
Unify datapath (#3819)
* Remove QUIC_USE_RAW_DATAPATH (logic only)

* move logic to core side

* remove QUIC_USE_RAW_DATAPATH from test

* fix googletest version and add last line

* replace from flag to function call

* fix build error

* fix build/test issues

* implement CxPlatResolveRoute for normal socket

* add Getter of Datapath feature

* fix build issues

* adopt comments

* adopt comment and fix kernel build error

* fix kernel build error

* more fix for kernel build

* Unify datapath

* DatapathTest partially work

* just unify build of both normal socket and xdp

* SOCKET: RAW{...Socket{BASE{addr}}}, DATAPATH: XDP{RAW{DATAPATH*}} <-> DATAPATH{RAW*, BASE{callbacks}}

* tmp

* add preview_feature flag back

* refactoring CxPlatIsRouteReady

* fix linux code check

* adjust func names

* fix comments

* fix IsRouteReady and clean ifdef for _KERNEL_MODE

* kernel build error

* Set RouteResolved for Rx

* fix more tests

* move global definition in header file

* kernel to avoid calling helper function

* move QuitTestIsFeatureSupported after RegistrationOpen

* supress warning

* remove QuitTestIsFeatureSupported from quic_gtest as it doesn't work as expected by dependency of MsQuicLib.Datapath

* remove raw feature check as much as possible

* ifdef for UseQTIP visibility

* tmp

* tmp

* fix merge side effects

* all tests passed

* fix tests in msquicplatformtest

* fix tcp with duonic

* update clog

* use xdp v1

* WIP cleanup

* refactoring CXPLAT_SEND_DATA

* remove mangling and function pointer

* remove unnecessary change in test

* fix comments

* cleanup

* move logic to _winuser

* use dummy raw datapath for uwp build

* dummy raw

* remove double free

* fix comments

* update dummy func

* fix perf run for TCP

* partially fix comments

* fix build error for uwp and remove duplicate variable in raw socket

* set socket before start receiving

* add dummy to clog

* add clog files for dummy

* fix dependency for cargo on windows

* remove dummy clog files

* remove AuxSocket

* add pwsh for cargo setup

* clog fix

* add include dir for cargo

* [WIP] fix cargo and qtip

* fix clog, qtip, rename private raw functions and cleanup

* experiment to avoid write overflow

* use Config->Route->DatapathType for data allocation

* more strict if conditions

* fix comments

* fix uwp build

* fix clog and artifact name

* fix back xdp dependency

* Simply build automation

* missed one

* apply unification to linux and remove QUIC_USE_XDP flag

* move types to any platform

* add abstruction layer for linux

* add clog

* add clog dependencies

* fix CodeCheck issues

* remove xdp specific artifact dir name and always install xdp deps

* add docs

* More Fixes for XDP in automation (mostly OneBranch)

---------

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2023-09-23 12:45:17 -07:00
Nick Banks 41f0aa12c6
Update XDP Usage to v1.0 (#3796) 2023-08-09 11:30:26 -07:00
Yi Huang b08b0ecb40
Remove extra double-quotes for extraOutputFile in performance-helper.psm1 (#3704) 2023-06-15 08:44:37 -04:00
Yi Huang b749fdab0a
QTIP (QUIC over TCP) (#3446)
## Description
QTIP (QUIC over TCP): A variant of QUIC with TCP headers instead of UDP headers. This is different from a TCP tunnel in that it does not use TCP’s retransmission and congestion control logic: it simply uses TCP headers (and a few pure TCP SYN and RST packets with no QUIC payload) to masquerade as TCP traffic.

Client Side:

1. When the initial packet is passed down to raw datapath, we cache the send and send a SYN instead.
2. When SYN+ACK is received, we send an ACK and then resume the initial packet and construct a RST to be sent later (because at this moment we know what sequence and ACK numbers to use).
3. When the first data packet is received, we will know what sequence number and ACK number to use. The ACK number after handshake is always acking the peer's SYN+ACK. The sequence number is always ISN+2, where ISN+1 is reserved for RST. By doing so, all data packets are retransmissions but still in window.
4. When the QUIC connection is shut down, the cached RST is sent.

Server side:
1. Statelessly respond to all SYN/FIN received.
2. When the first data packet is received, it's identical to 3.
2023-02-22 17:13:36 -08:00
Nick Banks f042ec7f3c
Fix Manual Flag for OpenSSL3 Perf Pipeline (#3418) 2023-02-16 11:35:44 -05:00
Nick Banks 2e2b9c18ad
Onboard Tests for OpenSSL 3 (#3388) 2023-02-02 13:43:49 -05:00
Nick Banks 2d76cf2633
Use Ubuntu 20.04 for All Linux Builds (#3268) 2022-12-06 16:00:19 -05:00
Nick Banks c099aa12ba
Improved Logging for NIC Drop Scenario (#3170) 2022-10-19 09:16:06 -04:00
Nick Banks 52bec021c4
Save All Histograms from Perf (#3152) 2022-10-14 15:27:47 -04:00
Nick Banks 5b921c9e18
App Controlled Execution Config (#3034) 2022-09-30 17:00:02 -04:00
Nick Banks 3d6c56d452
Disable Failing Loopback Tests on Shared EC Linux (#2940) 2022-08-03 15:26:05 -04:00
Nick Banks ad25429c4c
Update to v0.16.3 prerelease of XDP (#2901) 2022-07-21 12:17:20 -04:00
Nick Banks 025187e7d3
More RPS Analysis and Updates (#2824) 2022-06-15 15:16:17 -07:00
Nick Banks 5de511cca9
XDP PGO (#2808) 2022-06-09 08:46:23 -04:00
Yi Huang 033e621493
try to fix it (#2792) 2022-06-04 18:59:42 -04:00
Nick Banks 027341077c
Update to Latest XDP SDK (#2699) 2022-05-10 12:46:58 -04:00
Nick Banks bb704b49f9
Add SharedEC to Perf and SpinQuic (#2693) 2022-05-09 13:13:11 -04:00
Thad House 976b586cfb
Update to openssl 1.1.1o (#2679)
* Update to openssl 1.1.1o

* Fix modules, and use proper branch

* Add gitmodules to perf files

* Fix ordering
2022-05-06 11:09:41 -07:00
Yi Huang f3f431975e
Onboard XDP perf test (#2670)
Co-authored-by: Nick Banks <nibanks@microsoft.com>
2022-04-30 09:11:21 -05:00
Thad House c81ee026a4
Fix some issues with performance testing and logging (#2669)
* Test perf log grabbing

* Fix

* Try more logging

* Try to see if stopping logs is failing

* Remove copies

* 1 more fix

* Move log stop to its own task

* Add way to force iterations

* Add way to cancel logs

* Remove some unnecessary changes
2022-04-29 14:38:34 -07:00
Thad House f555e2da87
Run perf from temp folder (#2659)
* Run perf from temp folder

* Add perf helpers

* Testing

* Force path

* Delete folder after cancelling services, remove prints
2022-04-27 14:02:41 -07:00
Nick Banks 49d1a8df7b
Onboard 1 Connection, 1000 Streams Perf Test (#2611) 2022-04-07 09:03:02 -04:00
Nick Banks dc1ccee0db
Prepare for Onboarding XDP Perf (#2599) 2022-04-01 12:59:42 -04:00
Nick Banks 1b198cd947
One Connection/Stream Perf Test for Latency Data (#2595) 2022-03-31 11:51:48 -04:00
Nick Banks e59a8818cb
Multi-Core XDP Polling Support (#2578) 2022-03-29 13:19:39 -07:00
Nick Banks 622b41641e
Run Perf Pipeline on bin Changes 2022-03-26 09:26:55 -04:00
Nick Banks 4b05cc78cc
Update OpenSSL to the 1.1.1.1n Branch (#2525)
* Try out the 1.1.1.1n PR Branch

* Update to Official n branch
2022-03-15 18:52:26 -04:00
Nick Banks b9c2880ea8
Don't Fail on Regression for PGO Runs (#2521) 2022-03-14 16:44:20 -04:00
Nick Banks f7f4115943
Refactor prepare-machine.ps1 (#2506) 2022-03-11 16:08:56 -05:00
Nick Banks 30a97a196a
Refactor Performance Pipeline (#2502) 2022-03-10 13:35:36 -05:00
Nick Banks 3821394622
RPS Events (#2045) 2021-12-20 13:19:44 -05:00
Nick Banks 525a81032a
Worker Optimizations for Latency (#2107) 2021-11-03 11:17:10 -04:00
Thad House 1d5fd3346b
Add Windows Server 2022 Tests for User Mode Schannel (#1958)
Co-authored-by: Nick Banks <nibanks@microsoft.com>
2021-09-23 14:48:17 -04:00
Thad House bf01a24c0a
Enhance performance logging capabilities (#1504)
* Enhance performance logging capabilities

Use the existing log scripts to perform logging, allow perf pipeline to log any supported log profile

* Fixup log profile

* Fix script root

* Fix cleanup

* A bit more logging, mainly to figure out why robocopy failed. And fix local

* Fix remote

* Another client and server fix

* Fix runs

* Disable prints

* Extra new line..

* 1 more log fix
2021-04-21 16:30:51 -07:00
Thad House b1940ba5ec
Remove stub TLS (#1411)
* Remove stub TLS

We were only using stub TLS to be compatible with ASAN. Now that OpenSSL and Asan work together, we can remove stub TLS and reduce our TLS scope.
2021-03-30 14:22:39 -07:00
Nick Banks dd4f4ede0f
Remove miTLS (#1398) 2021-03-29 17:21:54 -07:00
Nick Banks 0ef8feb637
TCP/TLS Performance Interface (#1160) 2021-01-22 11:56:31 -08:00
Thad House 2caea326bb
Fail build if throughput up test has a 5% or more performance drop (#990)
* Fail build if throughput up test has a 5% or more performance drop

* Allow tests to finish, write failures at end

* Move thesholds to json files

* Fail loopback on regressions to, but use larger threshold

* Fix arguments

* Actual print failures at end

* Fix all negative regressions not counting

* Print more

* Slightly different output

* Fix not triggering

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2020-11-10 11:05:05 -08:00
Nick Banks 1cca197c1d
More Perf Pipeline Options (#914) 2020-10-14 17:52:43 -07:00
Nick Banks 482d9e2e02
Perf Pipeline Improvements (#905) 2020-10-12 21:20:57 -07:00
Nick Banks f314bda608
Increase Perf Timeout (#781) 2020-08-27 10:42:14 -07:00
Thad House 0985f496a7
Combine loopback and remote performance runs into a single script. (#767)
* Combine loopback and remote into a single script.

By doing this, we make things much easier for PGO

* Fix perf pipeline

* Fix tools lookup

* Update PGO
2020-08-25 16:04:57 -07:00
Thad House c62d90db53
Implement Kernel Mode Performance Testing (#722)
Changed required include using a private kernel library for CI testing, as msquic.sys can't be properly unloaded.
2020-08-21 13:46:39 -07:00
Thad House 091633d726
Create new Performance Execution Driver (#626)
New performance driver is custom built specifically for performance, rather then using quicping.

Also will be compatible with server mode, and baseline support is part of this commit.
2020-07-29 16:31:27 -07:00
Thad House 9edde37643
Fix perf pipeline (#654) 2020-07-28 18:49:35 -07:00
Thad House d985d44364
Increase Receive Buffer Drain Ratio (#651)
* Add Multi-Machine Tests to Perf Pipeline

Co-authored-by: Nick Banks <nibanks@microsoft.com>
2020-07-28 14:05:50 -07:00
Nick Banks ea4e033357
Support Disable 1-RTT Encryption Extension (#560) 2020-07-24 20:24:13 -07:00
Thad House 6e1c47a47a
Add multi system test platform infrastructure (#573)
Perf Tests can now run either locally or cross systems. A setup has been created to make this work automatically on AZP.

Additionally, machine name is now published, along with other smaller code changes.
2020-07-09 10:30:02 -07:00
Nick Banks 2d68ae61d7
Azure Pipeline YAML Refactor & Improvements (#572) 2020-07-02 11:50:34 -07:00