-
Notifications
You must be signed in to change notification settings - Fork 534
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Linux Connection ID based RSS #4551
base: main
Are you sure you want to change the base?
Conversation
XskInfo = Packet->Queue->XskInfo; | ||
|
||
CxPlatLockAcquire(&XskInfo->UmemLock); | ||
while (PacketChain) { | ||
Packet = | ||
CXPLAT_CONTAINING_RECORD(PacketChain, XDP_RX_PACKET, RecvData); | ||
PacketChain = PacketChain->Next; | ||
CXPLAT_DBG_ASSERT(Packet != NULL); | ||
CXPLAT_DBG_ASSERT(Packet->Queue != NULL); | ||
CXPLAT_DBG_ASSERT(Packet->Queue->XskInfo != NULL); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
XskInfo is sometimes broken when running with multi connection, like -conns:100. This is common issue on main branch
SourceCid->CID.Length, | ||
SourceCid->CID.Data | ||
); | ||
// CXPLAT_FREE(SourceCid, QUIC_POOL_CIDHASH); |
Check notice
Code scanning / CodeQL
Commented-out code Note
} else { | ||
} |
Check notice
Code scanning / CodeQL
Empty branch of conditional Note
Description
Conventional NIC RSS does not work well with QUIC as it can continue its connection with the Connection ID after changing IP/port.
This PR makes XDP to route packets to appropriate core using Connection ID.
Testing
There is no functional test yet, but secnetperf based test (sometimes) works.
Documentation
Not yet
Server side option
MSQUIC_XDP_RSS_TYPE: 0x01 -> using ConnectionID to cpu/queue map which is confirmed after finishing handshake. Not flexible enough for NEW_CONNECTION_ID.
MSQUIC_XDP_RSS_TYPE: 0x08 -> using Hash(ConnectionID). (not implemented yet)
MSQUIC_XDP_NORMAL_DATAPATH:1 -> this uses normal socket with xdp program (not AF_XDP socket).
Client side option
MSQUIC_FAKE_NAT_REBINDING:0/1 -> client changes (changes back) port to 55555 as if NAT rebinding happens
MSQUIC_XDP_DROP_PATH_CHALLENGE:0/1 -> whether to ignore PATH_CHALLENGE frame after NAT rebinding