View Issue Details

IDProjectCategoryView StatusLast Update
0002742GNUnettransport servicepublic2013-02-05 21:42
ReporterMatthias Wachs Assigned ToMatthias Wachs  
PrioritynormalSeverityfeatureReproducibilityhave not tried
Status closedResolutionfixed 
Product VersionGit master 
Target Version0.9.5aFixed in Version0.9.5a 
Summary0002742: Available sockets should be splitted among components
DescriptionWhen running testbed we can run out of sockets due to:

many addresses to validate
latency probes
ats address changes

the number of sockets should be splitted among the plugins and we should have separate validation pool
TagsNo tags attached.

Activities

Matthias Wachs

2013-02-04 14:33

reporter   ~0006834

This is not possible to implement

We can say: 1 session == 1 socket (not for inbound not for HTTP)

Components involved:

transport_validation
transport_neighbours
plugins
ats

Reasons:

The sessions do not "belong" to a transport_validation or transport_neighbours.
They call get_session and the plugin creates a new session or returns an existing session with this address.

So we do not know when to increment or decrement the number of sockets currently used.

If validation needs to send a ping it calls get_session but is never notified when a session ends, so validation could not decrement the socket_used counter.
Neighbours on the other hand can use a session created by validation, so here we would have double counting.

Wrap Up:
The desired behaviour cannot be implemented without a major change in the code.
Ugly and unflexibel, but quick hack:

Distribute FDs over plugins and have plugins count the number of FDs ... but then we have a fix distribution of FDs to plugins

Better:

Have a transport_session component managing the sessions... including counting, timeout and ATS notifications: a lot of work!

Matthias Wachs

2013-02-04 17:44

reporter   ~0006835

Last edited: 2013-02-05 09:14

Implementation:

Validation gets an amount of sockets and calculates a validation frequency
Transport plugins now obey NEIGHBOUR_LIMIT

Plugins checked:
TCP, HTTP(S)-client, HTTP(S)-server

Not required for:
UDP, UNIX, WLAN

Issue History

Date Modified Username Field Change
2013-01-23 16:11 Matthias Wachs New Issue
2013-01-23 16:11 Matthias Wachs Status new => assigned
2013-01-23 16:11 Matthias Wachs Assigned To => Matthias Wachs
2013-02-04 14:33 Matthias Wachs Note Added: 0006834
2013-02-04 17:44 Matthias Wachs Note Added: 0006835
2013-02-05 09:13 Matthias Wachs Note Edited: 0006835
2013-02-05 09:14 Matthias Wachs Note Edited: 0006835
2013-02-05 09:14 Matthias Wachs Status assigned => resolved
2013-02-05 09:14 Matthias Wachs Resolution open => fixed
2013-02-05 12:44 Christian Grothoff Product Version => Git master
2013-02-05 12:44 Christian Grothoff Fixed in Version => 0.10.0
2013-02-05 12:44 Christian Grothoff Target Version => 0.10.0
2013-02-05 21:39 Christian Grothoff Fixed in Version 0.10.0 => 0.9.5a
2013-02-05 21:39 Christian Grothoff Target Version 0.10.0 => 0.9.5a
2013-02-05 21:42 Christian Grothoff Status resolved => closed