quilkin
quilkin copied to clipboard
How do Filters send packets? (or should they?)
There are lots of use cases for being able to send packets from a Filter, or something similar, e.g.
- DTLS/Encryption that requires a handshake
- Sending regular packets to track ping time and/or jitter
Right now, Filters can only intercept and manipulate packets.
This could be:
- An extension or modification to how Filters work
- A whole new different type of manipulation module (are Envoy Listeners a good model?)
- Something else?
I think we already have this, as you could write a filter that binds to a UDP socket and holds a Arc to it on initialisation, so it could send to that socket, or it could use a Arc<Map<String, UdpSocket>>, all of these would safe to share, the important thing that we're missing is that we don't want a filter that's waiting on data from those sockets to block the rest of the pipeline.
So I think this would be solved with #12