Date: Fri, 26 Feb 1999 14:47:06 +0100 From: Jakob Schripsema <sch@hdxf02.unix.telecom.ptt.nl> To: freebsd-net@freebsd.org Cc: sch@kpn.com Subject: TCP/IP stack question Message-ID: <199902261347.OAA11430@sat-relay2.pc.telecom.ptt.nl>
next in thread | raw e-mail | index | archive | help
Hi,
Recently we ran into 2 TCP/IP-stack related problems with our
2.2.2-RELEASE based Firewall:
1. An ARP related problem described in detail below
2. A (minor) problem with IPFW and IP-fragmentation: we forgot to include
rules for IP-fragments.
These problems resulted in a number of arguments between FreeBSD lovers (me)
and Linux lovers. (Comparable with the Z80 vs 6800 arguments from the old
days ..). We have found 2 differences between the Linux stack and
the 2.2.2 stack:
1. Linux expects a per-interface arp cache, while 2.2.2. has a global
arp cache.
2. Linux has the ability to do ip-reassembly before the firewall
code is used.
Are there changes between 2.2.2 and the more recent versions of FBSD
regarding these items ?? The problem with the IP-fragmentation is
minor, but the arp-problem is a real pain in the ass.
Regards,
Jakob Schripsema
ARP problem:
Network topology:
Production backbone
--------+----------------------------+-------------
| ---> 1 |
| <-- 2 |
mac1 | ---> 3 mac2 |
ip1 | ip2 |
.------------. .-------------.
| | | |
| FW | | MHH |
| | `-------------'
| | mac4 | ip3
| | ip4 | mac3
| |----------------------+--------
| | <--- 4 Maintenance backbone
`------------' ---> 5
| <--- 6
|
|
| FW: FreeBSD 2.2.2-RELEASE
.------------. MHH: Linux RedHAT 5.x
| |
| PC |
| |
`------------'
The firewall FW routes 'forward' traffic from PC to the ip2 via the
production backbone. The Multi-Homed-Host MHH routes the return traffic
via the maintenance backbone.
The FW reports changes in MAC address for the production interface of the
MHH, ip2. Running tcpdump on FW reveals the following scenario:
1. PC tries to connect to ip2 (HTTP request
2. FW issues an arp-request (asking for mac2) on the production
backbone: packet 1
3. MHH replies with an arp-reply: packet 2
4. FW sends first IP packet to MHH: packet 3
5. MHH issues an arp-request (asking for mac4) on the maintenance
backbone: packet 4
6. FW replies with an arp-reply: packet 5
7. MHH sends first IP return packet to FW: packet 6.
This should work but the arp-request from MHH, packet 4, contains unexpected
information:
source hardware addres = mac3
source protocol address = ip2 (I expected ip3)
destination hardawre addres = NULL
destination protocal addres = ip4
This packet forces the FW to change its arp-cache: the mac addres for ip2
is set to mac3. This effectively blocks all traffic between PC end MHH
Jakob
-----
Jakob Schripsema Phone:+31 50 5855537 E-mail:j.schripsema@kpn.com
DISCLAIMER: This statement is not an official statement from, nor does
it represent an official position of, KPN Telecom BV.
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-net" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199902261347.OAA11430>
