Simplify UDP packet send queue
When sending UDP packets, the API has an argument to specify when to delivery the packet (delivery_time). And PacketQueue is handling them.
But it looks like no one is using this feature now and this is not accessible from TSAPI.
So we can remove this feature and make UDP layer more simple.
Why do not add TSAPI instead of removing ?
Who need that feature? I'd like remove the overhead and complexity comes from that feature.
@maskit I think this feature can do better as we discussed .
I guess schedule_imm in transmit_frame was added for convenience so we don't need to call schedule_imm after calling transmit_frame.
However, scheduling an event on every frame is too expensive, so I think we should add flush(), or bool transmit_now parameter.
@scw00 Hmm, I'm not sure. Maybe not.
A QUIC packet can contain multiple QUIC frames, but a UDP packet always contains only one QUIC packet. So, I think adjusting delivery time of UDP packets wouldn't help that issue (https://github.com/apache/trafficserver/pull/2342#discussion_r133125525).
Am I missing something?
No, you are right !
We'll revisit if this is performance issue.
#6316
Pushed back to TODO since nobody is actively working on it.
This issue has been automatically marked as stale because it has not had recent activity. Marking it stale to flag it for further consideration by the community.
Maybe we can use SO_TXTIME instead. See https://docs.rs/quiche/latest/quiche/#pacing.
@brbzull0 You might be interested in this issue since you are working on GRO and sendmsg stuff.
a few months later..... I see this now.. :rofl:
@maskit I can look into this, it seems we can have this option with a config toggle?.
ts:
quic: << just for quic? or UDP in general.
pacing: true
ts.quic.pacing looks reasonable. I can't think of a case that a user want to turn it off, but turning it off could skip unnecessary steps (i.e. setting timing info) on platforms that don't support pacing. I wonder what we can do on FreeBSD.
ts.quic.pacinglooks reasonable. I can't think of a case that a user want to turn it off, but turning it off could skip unnecessary steps (i.e. setting timing info) on platforms that don't support pacing. I wonder what we can do on FreeBSD.
https://github.com/apache/trafficserver/pull/11330 No coinfig flag though
https://github.com/apache/trafficserver/pull/11330 should cover this I guess.