Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Jan 2005 12:07:31 +0100
From:      Jeremie Le Hen <jeremie@le-hen.org>
To:        freebsd-net@freebsd.org
Subject:   dummynet and vr(4)/egress broken in 4.11 ?
Message-ID:  <20050128110731.GU59685@obiwan.tataz.chchile.org>

next in thread | raw e-mail | index | archive | help
Hi,

I've been using DUMMYNET for two years on RELENG_4.  It worked quite
well until I upgrade to 4.11 yesterday.  I first thought it was due to
some error in my rule file since it is quite complex : each outgoing
packets goes indeed through one queue for traffic scheduling and
multiple pipes for bandwidth resevation (this configuration is so
powerful that I didn't have to switch to ALTQ yet).

FYI, my packet filter is ipf(8), and I use ipfw(8) for traffic shaping
only.

Weirdly, when I try to go to establish a TCP connection to some host
on Internet, I am able to resolve its name, the SYN packet successully
reach its destination, I get the SYN/ACK but the final ACK packet of the
3WHS is blocked (dropped ? sent is orbit ?) by my FreeBSD 4.11 routern.
As far as I tested, this happens to all TCP connections concerning hosts
inside my network (which are NATed), but it works perfectly from the
FreeBSD router itself.

At first glance, this problem looked like a MTU issue, but flushing all
ipfw rules makes things work correctly.  I tried disabling rules step by
step to narrow the problem, but it persists until I remove the last
DUMMYNET pipe, whichever it is.  Thus I flushed all rules and just used
(217.12.3.11 is yahoo.fr) :

%%%
    # ipfw pipe 1 config bw 10 Kbytes/s
    # ipfw add pipe 1 tcp from any to 217.12.3.11 out xmit vr0
%%%

and the same problem happened !

I didn't changed my kernel configuration file so much since my last
kernel upgrade, I juste added gif(4), IPSEC_FILTERGIF and vr(4).
I tested using this rule on ingress and egress of both my internal (sis0)
and external interface (vr0) - inverting IPs where needed :-) - here are
the results :

           | ingress | egress  |
-----------+---------+---------+
vr0 (ext)  |   OK    |    -    |
-----------+---------+---------+
sis0 (int) |   OK    |   OK    |
-----------+---------+---------+

I think that it is now very important to tell you that while upgrading
my box to FreeBSD 4.11, I also changed my external interface from a 10
MBits ep(4) to a 100 MBits vr(4).

I cannot switch back to ep(4) for the moment since it is not an option
to have downtime, but according to the privous results, I'm pretty
convinced there is a problem with the vr(4) driver (although I don't
know how it can impact DUMMYNET).  Maybe the last commit on this
driver in RELENG_4 (sys/pci/if_vr.c, rev 1.26.2.14) is the culprit.

Best regards,
-- 
Jeremie Le Hen
jeremie@le-hen.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050128110731.GU59685>