wiki:gsoc/ideas/router/qos

Improving the Message Priority System and looking into QoS

I2NP (I2P Network Protocol) messages can be used for one-hop, router-to-router, point-to-point messages. By encrypting and wrapping messages in other messages, they can be sent in a secure way through multiple hops to the ultimate destination. Priority is only used locally at the origin, i.e. when queueing for outbound delivery.

Both the NTCP and UDP transports implement priority transmission, but in quite different manners.

UDP has complex code with queues for each priority, however it treats messages with priorities 400-499, for example, the same. (The priority queues are 100, 200, 300, 400, 500, and 1000) These are global queues for all peers. And all this code was disabled several years ago, for reasons that aren't clear.

NTCP has a trivial linear search for the highest priority within each buffer for a particular peer. This is much less effective, perhaps, than what UDP was doing, but more effective than disabled code (presumably).

It isn't clear whether the current priority scheme is generally effective, and whether the priorities for various messages should be adjusted further. This is a topic for further research, analysis and testing.

Required skills

  • Java

Notes

Possible mentors

Last modified 10 years ago Last modified on Mar 13, 2010 9:34:02 PM