i386/57479: FreeBSD Not in compliance with RFC 1122, Cannot have
multiple 0.0.0.0 gateways. This breaks programs like Zebra.
Shon Elliott
shon at misproductions.com
Wed Oct 1 14:30:14 PDT 2003
>Number: 57479
>Category: i386
>Synopsis: FreeBSD Not in compliance with RFC 1122, Cannot have multiple 0.0.0.0 gateways. This breaks programs like Zebra.
>Confidential: no
>Severity: serious
>Priority: high
>Responsible: freebsd-i386
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Wed Oct 01 14:30:11 PDT 2003
>Closed-Date:
>Last-Modified:
>Originator: Shon Elliott
>Release: FreeBSD 4.8-RELEASE-p4 i386
>Organization:
MiS Productions
>Environment:
System: FreeBSD tsunami.misproductions.com 4.8-RELEASE-p4 FreeBSD 4.8-RELEASE-p4 #23: Thu Sep 11 10:26:11 PDT 2003 root at tsunami.misproductions.com:/usr/obj/usr/src/sys/TSUNAMI i386
>Description:
FreeBSD will not let you support multiple 0.0.0.0/0 gateways in the kernel routing table. This breaks programs
like Zebra, when using BGP to automatically adjust default gateway in case a link goes down on a multi-connected
system. This also effects things such as how FreeBSD responds to incoming IP packets. For example, you have two
different network addresses for the machine 10.1.1.2/29 and 10.23.1.2/29. Whichever default gateway is set to, the
other block will not answer.
>How-To-Repeat:
Get a multi-homed machine on a network, say one ethernet card to a ADSL line, and one ethernet card to a cable
line. Set the default gateway to the DSL Gateway. Try to come in on the cable IP from outside the network. You will
not be able to, as it is trying to send the information back out the DSL gateway when it can't. trying to add more
than one Default route to the kernel routing table makes "add net 0.0.0.0: gateway 10.23.1.1: File exists" type
messages. according to RFC 1122 an OS >MUST< be able to support multiple 0.0.0.0/0 paths. FreeBSD fails on this.
See section 3.3.1.2 from RFC 1122. Excerpt from RFC states:
When there is no route cache entry for the destination host
address (and the destination is not on the connected
network), the IP layer MUST pick a gateway from its list of
"default" gateways. The IP layer >MUST< support multiple
default gateways.
and excerpt from 1.3.2 Requirements:
In this document, the words that are used to define the
significance of each particular requirement are capitalized.
* "MUST"
This word or the adjective "REQUIRED" means that the item
is an absolute requirement of the specification.
>Fix:
There is no known workaround that I know of for FreeBSD.
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-i386
mailing list