Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 26 Apr 2021 07:01:07 -0700 (PDT)
From:      "Rodney W. Grimes" <freebsd-rwg@gndrsh.dnsmgr.net>
To:        Zhenlei Huang <zlei.huang@gmail.com>
Cc:        "Rodney W. Grimes" <freebsd-rwg@gndrsh.dnsmgr.net>, freebsd-hackers@freebsd.org
Subject:   Re: Are there any RFCs for address selection for IPv4
Message-ID:  <202104261401.13QE17Jb097948@gndrsh.dnsmgr.net>
In-Reply-To: <BF63DA36-A778-4207-B95C-353B0DE4D98C@gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> Hi Rod Grimes,
> 
> 
> > On Apr 25, 2021, at 9:40 PM, Rodney W. Grimes <freebsd-rwg@gndrsh.dnsmgr.net> wrote:
> > 
> >> Hello hackers,
> >> 
> >> For IPv6 there's RFC 6724 to clarify the default address selection procedure, 
> >> both for source address selection and destination address selection. Are there
> >> any RFCs like RFC 6724 that are for IPv4? 
> > 
> > The important difference I think here is that in IPv6 it is very normal to
> > have both a link local and a routable IP address on an interface.  RFC 3927
> > speaks to this for IPv4 with:
> >   IPv4 Link-Local addresses are not suitable for communication with
> >   devices not directly connected to the same physical (or logical)
> >   link, and are only used where stable, routable addresses are not
> >   available (such as on ad hoc or isolated networks).  This document
> >   does not recommend that IPv4 Link-Local addresses and routable
> >   addresses be configured simultaneously on the same interface.
> > 
> > Though technically you have not put a global uniq unicast address on the
> > outbound interface the fact your trying to route one via that interface
> > to a loopback interface puts you  into the situation your attempting
> > to route global IP over a link local address.  
> >> 
> >> I'm exploring RFC 3927, consider this situation, a host configured with link-local
> >> address on NIC and global unicast alias address on loopback interface, and default route to 
> >> the link-local address of router (some ISPs do this). The current implementation kernel
> >> will use the link-local address as the source address when initializing a connection to 
> >> remote host via the default route. It seems wrong, as link-local address are not 
> >> routable as per RFC 3927.
> > 
> > So your wanting the kernel to pick a source address on another interface
> > for a packet going out a different interface, that is what seems wrong.
> 
> I'm not sure if this is proper for IPv4, but in the IPv6 network stack, FreeBSD's
> current implementation select global unicast address over link-local address, in case
> the outgoing interface does not have any global unicast addresses.
> I'm wondering whether it makes sense also for IPv4.

This is due to the fact that IPv6 is specified to have this type of
behavior.  In v6 we have the idea of scope, that does not exist in
the v4 world, or at least at this time it does not.  RFC3927 3.2 does
discuss the idea of scope and v4.

> > 
> > Though I think this could be solved by applying a technique used in
> > routers, and that is the concept of a host specific globally routeable
> > IP address that should be used for all non-local packets.  This is useful
> > in complex multipath networks as the router is always accessable via
> > that IP address no mater which interfaces are routing packets correctly
> > as long as the routing protocols are maintaining a path to it.
> > 
> > But before going down that road, why are you putting your desired globally
> > routeable IP address on lo0 and not on the upstream interface which would
> > eliminate this problem?  Is it because you have a complex multipath network,
> > or is it from an attempt to save some global IP's that would be needed
> > to run these on the link?  Or?
> > 
> 
> Reading RFC 3927 2.7, it states link-local addresses are not routable. The router shall
> discard those packets from or to link-local addresses. Then it make no sense for a host
> to select link-local address as source address when it initialize a connection, except for 
> an edge case that the destination is also link-local address.

In my reply to Poul Henning I wrote that allowing a ipv4 LL address
as a next hop may be a violation of RFC, and is the root cause of
this address selection process.

It wont fix your issue, as once you remove that route your host
wont be able to send anything but link local packets.  I am still
unclear why your putting your IP address on lo0 and attempting/expecting
that address to route over a link that is only configured with LL
addresses.

> 
> >> 
> >> So it is important if there's corresponding RFC clarify the source address selection 
> >> for IPv4.
> > 
> > I do not believe you well find anything that speaks to this issue for IPv4, as
> > your not really in the situation of RFC6724 which has to do with multiple IP
> > addresses on the same interface.
> > 
> >> Thanks :)
> >> _______________________________________________
> >> freebsd-hackers@freebsd.org mailing list
> >> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> >> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
> > 
> > -- 
> > Rod Grimes                                                 rgrimes@freebsd.org
> 
> Thanks,
> Zhenlei Huang
-- 
Rod Grimes                                                 rgrimes@freebsd.org



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