* increase nofile for sudo. default was 1024
* enable linux XDP HPS test
* use bash instead of pwsh
* use internally pwsh
* try full path for bash
* print stderr to see pipeline specific issue
* use file
* print output
* rollback and ccommentout throw
* print
* set LD_LIBRARY_PATH
* print more
* accelerate
* export
* rollback
* 'Args' should not be used. it become empty
* print parameters
* test
* cleanup
* use limits.conf for ulimit setting
* enable secnetperf with xdp on azure VM
* remove redundant settings
* move sudo inside script
* cleanup
* add 'sudo' in Invoke-Secnetperf
* cleanup
* Few minor fixes
* Change back
* touch ethtool only when ubuntu-22.04
* cleanup xdpgeneric and remote
* cleanup if xdp is there
* add XDP flag for execution config
* fix for DataPathTest
* remove MSQUIC_ENABLE_XDP flag
* remove Status
* remove local variable
* make FLAG_XDP visible from DataPathTest.cpp
* define preview feature
* fix RebindAddrPadded bug
* make RebindDatapathAddr to duonic dependent
* Use appropriate default values
* rollback
* fix memory leak
---------
Co-authored-by: Ubuntu <daiki@f4-ubuntu22-02.lcaeom4kylsuvmegib5mitghvd.bx.internal.cloudapp.net>
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* built on Linux
* ne files
* renaming
* split socket funcs
* refactor from win
* build from linux
* more on linux
* rename and generate
* use libbpf
* oops
* rebase and add new member
* unify CxPlatTryAddSocket
* pass datapath tests
* integrate Ubuntu 22.04 default libbpf v0.5.0
* temporally
* multithread. all test passed
* secnetperf works
* update build scripts
* nit update
* add duonic installer script for linux
* add xdp-tools directory
* cleanup
* fix Windows build
* fix windows xdp build
* add Github action
* nit fix
* fix dependencies for Install-DuoNic
* add udpate
* add linux xdp dependencies to docker file
* fix installation script
* initialize submodules/xdp-tools recursively
* temporal fix
* make XDP optional
* use ShutdownSqe
* fix yaml files
* remove gcc-multilib and include explicitly
* fix tcp socket to allocate raw
* install xdp deps for linux
* libxdp bug workaround
* oops
* fix idempotency and add one more dep
* TODO: remove this
* enable x86_64 and Ubuntu22.04
* fix type mismatch of uint16_t and UINT16
* add aarch64
* fix
* use flag
* change arch check and file copy
* fix static build and android
* update clog
* clog fix
* fix Clang link issue
* fix CodeCheck and prepare-machine for build
* disable ANDROID for xdp
* fix clog
* Support XDP from 'test.ps1 -UseXdp'
* link libxdp from artifact
* fix dependency
* fix dep
* update xdp-tools to v1.4.2
* fix runtime deps
* fix deps
* Fix Umem addressing and make Rx path async to efficiently fill FQ
* fix CodeQL analyze deps
* fix Analyze
* fix analyze
* linux xdp to use sudo
* change 'if' order
* path fix?
* sudo pwsh
* add retry for xsk_socket__create when returns -EBUSY
* cleanup xdp program before running
* Fix cargo build --all
* fix cargo test dynamic linking
* remove Sanitize for initial commit
* generate artifact
* fix yml syntax issue
* fix CodeQl Analysys
* forget to add Partition declaration
* Use Rundown to wait for deleting socket before binding next
* fix Rundown for all xdp socket
* Fix EBUSY issue when binding xdp socket
* explictly disable port sharing test
* refactoring and cleanup
* fix pipeline. else for normal linux socket
* Fix cargo linking issue?
* disable xdp for cargo build
* fix codeql
* rollback build.rs
* fix package runtime link and codeql
* wrap packet dump function to DEBUG macro
* check dependency
* another check
* leave only LD_LIBRARY_PATH
* iterate attach mode
* fix codeql
* add IP address check in XDP prog
* break is enough & avoid compiler bug
* fix CodeCheck
* Fix use of RxHeadroom
* fix umem leak when failed to initialize
* use pool alloc for Interface
* fix ipv4 check
* remove workaround
* cleanup. from snake case to pascal case
* fix clog
* try ubuntu20.04 and enable stress test
* few fix of stress test yml
* integrate package libxdp linking
* fix RX parse error case
* disable ubuntu20.04
* remove 2 env variable to run
* add document
* fix ForBuild && clog
* stop installing deps on Ubuntu 20.04
* fix build
* fix libc6-dev-i386 side effect
* Add one more dependency (libzstd) for static build
* new line fix
* always install libc6-dev-i386
* fix install order
* fix CMakeLists.txt to cover qns.Dockerfile case
* remove env var dep, update doc
* fix stress.yml
* add env var for xdp knob and fix stress
* fix stress
* update clog
* update doc
* Fix doc appearance and words
* add UseXdp
* Update docs/BUILD.md
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* Update docs/BUILD.md
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* use SKB mode for now
* move Linux XDP logging to TSG.md
* stop warning print from libxdp/libbpf
* move CxPlat definitions to each plat
* initial commit
* common xdp utilities
* move sudo inside scripts
* fix comments
* fix clog
* fix ifdef syntax
* fix annotations
* all arch to build dataptah_xplat.c
* fix mac build
* fix lisence of ebpf prog
* fix spin.ps1 to propagate parameter
* Ether and IPv6 was not set appropriately
* Update docs/TSG.md
* remove warning supression
* remove BuildLibXdpFromSource
---------
Co-authored-by: ami-GS <azureuser@node1.s4l0gsbs5l2efgb53yvjusshdg.xx.internal.cloudapp.net>
Co-authored-by: Nick Banks <nibanks@microsoft.com>
Spinquic revealed a synchronization bug: during cleanup, the datapath may be cleaned up before a half-opened connection, which results in a crash when trying to free pending RX packets in the connection's ReceiveQueue. This is fiexed by adding a CXPLAT_DATAPATH::SocketsRundown similar to the one in winuser for the raw datapath.
* Add helper script for grabbing build config and artifact directory for local machine
* Make script only a single purpose
* Allow empty parameter
* Don't pass a default for platform
* Fix OpenSSL failure.
* Fix CID allocation issue. Allow MsQuicOpen to fail.
* Fix UDP clean up on failure on Windows.
* Kill client connection when no DestCid is available.
Co-authored-by: Nick Banks <nibanks@microsoft.com>
* 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.
* Attempt to run Asan on OpenSSL builds instead of Stub builds
* Fix build
* Fix openssl asan, fix resumption leak
* Properly fix resumption ticket buffer
* Free Key in CryptTest
* Missed a few other frees
* Async read streams
There is a deadlock that exists in the existing code, which can happen if there is a large stderror write
* Fix leak of openssl session
* Replace stub spinquic with asan openssl spinquic
* Fixup spinquic
Co-authored-by: Nick Banks <nibanks@microsoft.com>
Adds macos support to msquic.
Currently, it builds, and core tests will pass, but many datapath tests will not. This is because the datapath depends on ipv4 and ipv6 dual mode sockets, which have issues on macos. However, we want this merged so it doesn't get 4 months stale again.
The datapath is basically a clone of the epoll datapath, except using kqueue.
Co-authored-by: Max <mxms@me.com>
Co-authored-by: Nick Banks <nibanks@microsoft.com>
Co-authored-by: Lars Eggert <200328+larseggert@users.noreply.github.com>
This will ensure we don't race manually cleaning up the unregistered connections and work being done on them by the datapath.
Also updates quicspin to loop, allowing the shutdown path to be hit more often.
Should fix#482