shadowsocks / shadowsocks/shadowsocks-rust
[Enhancement] UDP sockets improve with sendmmsg/recvmmsg
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 10.9k
- Forks
- 1.5k
- Avg merge
- 4d 15h
- Merged PRs (30d)
- 5
Description
- Linux: https://man7.org/linux/man-pages/man2/sendmmsg.2.html
- FreeBSD: https://www.freebsd.org/cgi/man.cgi?query=send&sektion=2
- macOS: https://github.com/apple/darwin-xnu/blob/main/bsd/sys/socket.h#L1433
- Windows: https://docs.microsoft.com/en-us/windows/win32/api/mswsock/nc-mswsock-lpfn_transmitpackets
Speedtest: https://github.com/shadowsocks/shadowsocks-org/issues/194#issuecomment-1109529757
Batch send and recv UDP packets will significantly increase the upper limit of speed for UDP channels.
Works have to be done:
- Find a proper way (zero-cost abstraction) for
sendmmsgandrecvmmsgon these 4 platforms - Making UDP association channels to be compatible with batch send / recv
- Proper way to fallback (when
sendmmsg/recvmmsgare not supported)
If anyone interested to make it available, PRs are welcome.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
No source files or tests are named. Start by locating the UDP association channel implementation and reviewing the linked sendmmsg/recvmmsg APIs for Linux, FreeBSD, macOS, and Windows; done means batched UDP send/receive support with a proper fallback on unsupported platforms.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, macos, rust
- Domain
- networking, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100