Extremely slow upload (and more) from behind NAT

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi list,

I've been building my own home firewalling/NAT routers from commodity
hardware and Debian stable since the times iptables was called
ipchains and never had a problem, but now I've switched ISPs again and
I just can't seem to get NAT to work properly this time.

The ISP is Chello Austria (UPC), a cable one. For all intents and
purposes it's supposed to be a regular Ethernet connection at my end,
with a nominal bandwidth of 4 Mb/s up, 35 Mb/s down and a de facto
static public IP on my router's external interface. The cable modem
seems to act as a transparent bridge (it doesn't show up on
traceroute).

Everything is fine on the router itself, or any other box I directly
connect to the cable modem, but all NATed clients behind it get
severely degraded service, though only some things seem to be broken:
+ The downstream bandwidth is fine, within a few percent of nominal.
+ The latency (as measured by ping and similar) is excellent.
+ Online games like Team Fortress 2 and World of Warcraft work flawlessly.
- Web browsing only barely works. When trying to access a site,
Firefox will hang for 10+ seconds at the "Waiting for $SERVER" stage,
then the whole site will render instantly. More complex JavaScript or
Flash based sites might hang indefinitely.
I haven't yet stumbled across a site that won't work at all, hitting
refresh will eventually succeed. Also, sites never load partially, no
missing style sheets, "broken" images or the like. It seems to be an
all or nothing deal.
- The upstream bandwidth ... well, there isn't any, really. Test
uploads to an FTP server in the ISP's own network crawl along
erraticly at < 0.1 Mb/s and/or time out. The same test run from the
router gives me 1-2 Mb/s, three connections in parallel net the full 4
Ms/s.
- When testing via speedtest.net, the latency and downstream tests
work but the upload test fails. It just sits there "Connecting ..."
and eventually times out
- When testing via pingtest.net, the packet loss test fails in the
same fashion.
It doesn't matter if a client's running Linux or Windows.

The router is running Debian stable (Squeeze), using kernel
linux-image-2.6.32-5-686 2.6.32-35 and iptables 1.4.8-3 as provided.
DNS is provided by dnsmasq 2.55-2 running on the router with both the
ISP's and Google's servers upstream. IPv6 is turned off via kernel
command line. For testing purposes I've reduced my firewall script to
this one-liner:
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE

The official method for getting one's IP is DHCP, though configuring
it statically reportedly also works. I tried both, no difference.
The DHCP server *does* suggest an MTU of 576 bytes instead of the
ususal 1500 bytes, but that seems to be bogus. Manual PMTU discovery
via don't-fragment pings to various servers is consistent with an MTU
of 1500 and anyway, changing it to 576 doesn't have any appreciable
effect at all, with or without a TCPMSS rule as suggested by the
iptables man page.

Since randomly disabling TCP "offensive" TCP options like syncookies,
ECN and even SACK didn't work either, I'm now officially at my wits
end.

I'd be really grateful if anyone could help me out ...

Thank you,

Christian
--
To unsubscribe from this list: send the line "unsubscribe netfilter" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux