[Top] [All Lists]

Re: packet reordering

To: ahu@xxxxxxx (bert hubert)
Subject: Re: packet reordering
From: kuznet@xxxxxxxxxxxxx
Date: Sun, 15 Oct 2000 23:19:16 +0400 (MSK DST)
Cc: netdev@xxxxxxxxxxx
In-reply-to: <> from "bert hubert" at Oct 14, 0 08:15:00 pm
Sender: owner-netdev@xxxxxxxxxxx

>  this: 2, 1, 4, 3, 6, 5. The problem is that this confuses TCP/IP.

It does not really, provided this tcp/ip is linux-2.4 tcp/ip. 8)8)

Yes, of course, it is problem. That's why I did not recommend
to use per-packet balancing and to use multipath routes instead,
when it is possible.

> Secondly, I was wondering if it would be possible to easily
> make an ingress 'policer' that creates some latency, but does order TCP
> packets on sequence number within that latency.

It is possible, of course. And no doubts, it will be useful.
Only not ingres qdisc, I think, but netfilter plugin. ingres
qdisc is netfilter plugin itself.

But it will not work very well. You will not able to answer
to the question what is this "some latency". If you balance modem links
you will have to select "some latency" bw*dev_queue_len+<some good delta>.
It is big number.

If you balance fast links sort of ethernets, adding latency you will
lose even more. But the worst thing here is reordering in internet.
If the order restorer relies on seq numbers, it will lose due to large scale
reordering on internet.

Actually, link specific encapsulation (sort of gre) could be used
to preserve order on link. Seems, MPPP even does this.

> Would such a beast be possible? If you think it would be worthwile, I'll try
> to code it.

I think the idea of splitting load per-flow at sender side of balanced link
is more productive.

> Thirdly, I tried the normal ingress policer with the script as provided by
> Alexey, but it gave me an error:
> # tc qdisc add dev eth0 handle ffff: ingress
> RTNETLINK answers: No such file or directory
> I think I included everything needed in the kernel.

I do not know, honestly. Ask Jamal.
"Jamal Hadi-Salim" <hadi@xxxxxxxxxxxxxxxxxx>


<Prev in Thread] Current Thread [Next in Thread>