mukesh@cs.cmu.edu wrote:
>From looking over the code, running some experiments, and from the mailing
>list archive, it looks like packets simply get dropped inside the kernel
>when the queues overflow.
Isn't this one of the major points of having a queue? Resource
limiting.
>This seems to interact badly with TCP. If the initial retransmit time out
>is 3 seconds, and one of the first few packets gets dropped (before the
>rtt estimate is updated), then the connection is stalled for 3 seconds.
>(TCP packet gets dropped silently, then kernel waits an RTT for a response
>before retransmitting.)
>
>Two questions:
>
>1. Can this really happen, or have I overlooked something? (Our
>experiments suggest that it can happen.)
Yes. If you (for example) write an application that creates 1000
sockets and then performs a TCP connect() on them all at fast as it
posibily can, that causes the SYN packet to go out through a PPP
interface which is attached to a 9600 baud line. You're going to get a
bit of a bottle neck. These numbers can obviously be scaled up for
faster interfaces, but at some point you will see the same problem.
>2. If this can happen, is it worth changing? In particular, we might not
>want to wait the entire RTT before retransmitting the packet if it was
>dropped inside the kernel.
Since you've not disclosed the nature of the application or the
specifics which create the problem you are seeing I can only based my
comments below on presumtions about your problem.
I believe there are per interface queues in at least 2.4.0. The current
length can be viewed when running 'ifconfig 1.40 (2000-05-21)', I also
believe these queue lengths can be configured to any value you desire.
$ ip link
1: lo: <LOOPBACK,UP> mtu 3792 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:50:da:8a:4c:80 brd ff:ff:ff:ff:ff:ff
3: ppp0: <POINTOPOINT,MULTICAST,NOARP,UP> mtu 1500 qdisc pfifo_fast qlen
3
link/ppp
$ /sbin/ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:10.0.0.123 P-t-P:10.0.0.124 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:22680 errors:0 dropped:0 overruns:0 frame:0
TX packets:25584 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
$ /sbin/ifconfig ppp0 txqueuelen 10
$ /sbin/ifconfig ppp0
ppp0 Link encap:Point-to-Point Protocol
inet addr:194.207.243.209 P-t-P:194.207.243.225
Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:22713 errors:0 dropped:0 overruns:0 frame:0
TX packets:25620 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:10
You may wish to check out /sbin/ip and /sbin/tc over the various types
of queueing options available with Linux, '/sbin/ip' is more to do with
the global interface queue, and '/sbin/tc' over setting up bespoke
traffic management queues.
I believe 'pfifo_fast' is the default queuing policy for most
interfaces, and the queue length is a packet counting limit (as opposed
to byte counting limit).
-- Darryl Miles - To unsubscribe from this list: send the line "unsubscribe linux-net" in the body of a message to majordomo@vger.kernel.org
This archive was generated by hypermail 2b29 : Tue Jan 23 2001 - 21:00:32 EST