Subject: (IPng 7452) Re: simple source address selection

From: Richard Draves <[email-masked]>
Date: Thu, 29 Apr 1999 17:14:04 -0700

> I guess I'm advocating a new, "semi-strong" (or "semi-weak"?) 
> host model.
> The historical debates on this topic always polarized into 
> two positions:
> 
> 	strong:	When originating a packet from interface x, the source
> 		address MUST be one that belongs to interface x.
> 
> 	weak:	Any of a host's addresses may be used as the source
> 		address of packets originated by that host, regardless
> 		of the originating interface.
> 
> The reason the Host Requirements working group could never converge
> on one model or the other is that both have serious problems:
> 
> 	- The weak model permits -- and makes quite common -- behavior
> 	  that defeats ICMP Redirect and can cause tripling of the
> 	  traffic load on the first-hop link (each original packet,
> 	  a redirected copy of each original packet, and, if not
> 	  rate-controlled, an ICMP Redirect message in response to
> 	  each original packet).
> 
> 	- The strong model forbids behavior that is necessary in some
> 	  circumstances, such as responding to pings of, or TCP
> 	  connections to, receive-only interfaces.  It also requires
> 	  a more complicated host routing layer implementation, and one
> 	  that is different from that of a router (which irked the Unix
> 	  folks who built systems that were intended to perform either
> 	  role).

I'm trying to guess what this extra complexity is...
Do you mean, because the routing module has to support two kinds of lookups?
- given a dest address, give me outgoing interface & neighbor
- given a dest address & outgoing interface, give me a neighbor

> Rather than forcing a choice between those two problematic positions,
> I'm suggesting an intermediate model:
> 
> 	semi-strong:  When originating a packet from interface x, the
> 	     source address SHOULD be one that belongs to 
> interface x.      
> 
> The IETF definition of "SHOULD" is "do this unless you have a 
> good reason
> to do otherwise".  An example of a good reason is that the upper-layer
> protocol requests transmission of a packet out interface x 
> with a source
> address belonging to interface y.  Another good reason is 
> that the upper-
> layer protocol requests transmission with a source address 
> that belongs
> to a receive-only interface.
> 
> A somewhat less good -- but still grudgingly permitted :) -- reason is
> the unwillingness of the implementor to do the more sophisticated host
> routing implementation that would ensure that a packet went out the
> interface corresponding to its source address in the case where the
> upper-layer specifies the source address but does not care which
> interface it goes out.
> 
> Now in the case covered by your draft, the upper-layer does not care
> what the source address is, so there is no overriding reason 
> to prevent
> the source address from being one that belongs to the 
> outgoing interface.

This is getting at two different cases:
a. The application/upper-layer has specified a source address. Should the
implementation be allowed to choose a different outgoing interface?
b. The application/upper-layer has not specified a source address. Should
the implementation be allowed to choose a source address not assigned to the
outgoing interface?

> --> I'd appreciate comments on this approach from anyone, especially
>      implementors.

I had the impression that since the historical debate was acrimonious &
unresolved, it would be easiest to get an standard approved for IPv6 source
address selection without trying to resolve the historical debate.

But I'd like to hear from others about this issue.

Thanks,
Rich
--------------------------------------------------------------------
IETF IPng Working Group Mailing List
IPng Home Page:                      http://playground.sun.com/ipng
FTP archive:                      ftp://playground.sun.com/pub/ipng
Direct all administrative requests to [email-masked]
--------------------------------------------------------------------

---

From: Steve Deering <[email-masked]>
Date: Thu, 29 Apr 1999 19:00:34 -0700

>- given a dest address & outgoing interface, give me a neighbor

Basically, yes.  Routers (and "weak" hosts) always use the first kind of
lookup.  "Strong" hosts use the first kind of lookup when the upper-layer
does not specify the source address, and the second kind of lookup when
upper-layer does specify the source address (which implies an outgoing
interface, in a strong host).  You could view the second lookup as
taking a "slice" of the host's routing table (route cache, whatever)
that includes only those routes that point out a given interface.

(Now, if the API to your IP layer includes a way for the upper-layer
to explicitly demand egress from a particular interface -- which I
think it should -- then even if your node is acting as a router or
a weak host, it really ought to be capable of doing lookups in a
interface-specific slice of the routing table.  But that's not
something a traditional BSD Unix implementation of IP can do.)

>the implementation be allowed to choose a source address not assigned to the

Yes, those are the two distinct cases that I was referring in the two
distinct paragraphs you quoted above.  I was proposing answers to
each of those two cases (of which only case (b) is the topic of your
new draft).

>address selection without trying to resolve the historical debate.

I wouldn't characterize it as "acrimonious" -- more a recognition that
there are trade-offs, neither of which is perfect, and different folks
choose different poison.  As one who was an avid advocate for one side
of that debate, and who has since moderated his view, I thought maybe
others could be persuaded to a compromise approach (what I called the
semi-strong model).  I think it is desirable to settle on a single
model, if possible, because I think interoperation, management, and
problem diagnosis are greatly facilitated by having nodes behave in a
consistent, predictable manner.  But if it is not possible to reach
consensus on this (and the history of this topic does not give me
great hope), then so be it -- we'll manage to cope just like we have
with IPv4.  The world will just be that much more complicated than it
has to be.

Steve