litespeedtech / lsquic

LiteSpeed QUIC and HTTP/3 Library
MIT License
1.56k stars 339 forks source link

Multi-threading and path changing support #509

Open alexpokotilo opened 3 months ago

alexpokotilo commented 3 months ago

Lsquic is great and thanks for sharing this work!

I need to support many(thousands) http3 connections with huge output bandwidth(Gigs per seconds). Requests are small, replies are big. I decided to read UDP socket in single listen thread, copy datagrams and peer/local addrs and forward to worker threads. Each Worker has it's engine. I split clients based on hash or peer addr and port. But what should I need to support changing path when peer addr becomes different ? Thank in advance!

p.s If my design may be simplified - I'm open to change it.

alexpokotilo commented 2 months ago

@dtikhonov Dmitri, I'm sorry bothering you by direct mention, but could you please suggest what to do in this case ?

alexpokotilo commented 2 months ago

@dtikhonov, just comfirm I need to use lsquic_cid_from_packet to route udp packet into right worker in case of changing route. It's all I need to hear. I got Idea from here https://github.com/litespeedtech/openlitespeed/blob/master/src/quic/udplistener.cpp