Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR attempts to optimize sending encrypting packets out of the tunnel.
It achieves this by leveraging multi-core CPU architecture and breaking sending the encrypted packets into 3 parts, each with its own separate thread.
Thread 1 - iface_reader -> Reads data from the interface, checks the peer, gets the current valid session keys and hands over the keys and the data to encryption worker thread.
Thread 2 - encryption_worker -> Receives the data and the encryptions keys and encrypts the packet with it. Forwards the encrypted packet to the network worker.
Thread 3 - Network_worker -> Receives the encrypted data and the endpoint and sends the data towards the endpoint on the network.
The idea is that because each thread is much smaller, so much less context switching would be expected.