Use a simple Random Early Drop algorithm in send_tcppacket().
This commit is contained in:
parent
d5b56bbba5
commit
43fa7283ac
3 changed files with 5 additions and 3 deletions
|
@ -366,6 +366,7 @@ int main_loop(void)
|
||||||
last_graph_dump = now;
|
last_graph_dump = now;
|
||||||
|
|
||||||
srand(now);
|
srand(now);
|
||||||
|
srand48(now);
|
||||||
|
|
||||||
running = true;
|
running = true;
|
||||||
|
|
||||||
|
|
|
@ -547,7 +547,7 @@ bool setup_network_connections(void)
|
||||||
pingtimeout = pinginterval;
|
pingtimeout = pinginterval;
|
||||||
|
|
||||||
if(!get_config_int(lookup_config(config_tree, "MaxOutputBufferSize"), &maxoutbufsize))
|
if(!get_config_int(lookup_config(config_tree, "MaxOutputBufferSize"), &maxoutbufsize))
|
||||||
maxoutbufsize = 4 * MTU;
|
maxoutbufsize = 10 * MTU;
|
||||||
|
|
||||||
if(!setup_myself())
|
if(!setup_myself())
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -155,9 +155,10 @@ bool send_tcppacket(connection_t *c, vpn_packet_t *packet)
|
||||||
{
|
{
|
||||||
cp();
|
cp();
|
||||||
|
|
||||||
/* If there already is a lot of data in the outbuf buffer, discard this packet. */
|
/* If there already is a lot of data in the outbuf buffer, discard this packet.
|
||||||
|
We use a very simple Random Early Drop algorithm. */
|
||||||
|
|
||||||
if(c->outbuflen > maxoutbufsize)
|
if(2.0 * c->outbuflen / (double)maxoutbufsize - 1 > drand48())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
if(!send_request(c, "%d %hd", PACKET, packet->len))
|
if(!send_request(c, "%d %hd", PACKET, packet->len))
|
||||||
|
|
Loading…
Reference in a new issue