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