Ingest XDP v0.16.7 and use TCP CIBIR rules when needed.
Changes to our tests:
1. 0-RTT tests are disabled. QTIP caches only one packet before handshake completes. So, if multiple 0-RTT packets are sent, only one of them will make it.
2. NAT rebind doesn't apply to TCP. So, they are disabled.
3. Due to implementation limitations, sharing bindings isn't supported. Some tests are tweaked to always create a new binding per connection. For simplicity, the implementation assumes client side sockets have a 1:1 mapping to QUIC connection.
## 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.
* generate .perf trace
* change order
* tmp
* check
* ooo
* specify file
* check
* aaa
* install perf
* add
* install perf
* add to log.ps1
* add
* odebug print
* print output
* add loop to wait collection
* small sampling rate
* print info
* gen svg
* fix typo
* fix perf install trigger
* chmod to flamegraph scripts and add debug output
* fix count variable access. use @ instead of $
* try catch perf
* debug print
* print from remote
* more debug
* add -ErrorAction Continue
* error oput
* use original
* wrap
* DebugPreference Continue
* stop server side PerfGraph
* explicitly install flamegraph tools
* set path for flamegraaph tools
* fix file existence check
* gset perf paranoid
* setup flamegraph tools just before using
* add sudo
* sudo for perf
* add sudo for all perf
* check permissions
* pass environment variables
* set explicit library path
* enable server perf tracing
* output details for remote exe
* stop server perf trace
* remove original LD_LIBRARY_PATH
* show out of memory
* remove comment, enable server
* fix directory name
* commenting
* oops
* Fix tar error
* remove Write-Debug as it is critical issue
* fix SmbDir for linux
* stop debug print
* add throw for Perf function
* Use max sampling frequency for perf with workaround
* upload perf txt file for WPA visualization
* add documents
* add images
* fix data extension
* smaller freq
* cleanup before perf run
* add Path check
* delete file for each type
* reduce sampling freq. addpending work
* use safer file name based operation
* parallelize client perf post processing
* reduce freq and parallelize server/client post proccessing
* increase timeout for perf measurement
* add cancel func
* change timeout to 90min
* fix tab
* Fix Loopback server side warning
* adjust for throughput tests