routing riddles (was: co-terminal)

"John S. Denker" <[email protected]> Fri, 21 Feb 2003 08:01:13 -0500
Newsgroups gmane.network.freeswan.devel
Message-ID <[email protected]>
Michael Richardson wrote:

 > trying to
 > be the responder of two tunnels from two different systems, that
 > act on behalf of the same node.
 >
 > This situation can easily occur with OE, when an OE capable laptop 
happens to
 > roam (unknowingly even) to a network that has an OE gateway. The 
situation
 > looks like:
 >
 >       japan		west			east
 >       OE-rw		OE-gw			OE-peer
 > #1      -------------------<***********************>
 > #2      <******************************************>
 >

 > The problem is on OE-peer, where the eroute table contains:
 >
 > #1   OE-peer/32		OE-rw/32     tunnel via OE-gw
 > #2   OE-peer/32		OE-rw/32     tunnel via OE-rw
 >
 > There is a conflict between these two eroutes. We would prefer to have:
 >       OE-peer/32	OE-rw/32      tunnel via OE-rw, tunnel via OE-gw


Hmmmm.  It's not obvious to my little brain what "we
would prefer" in situations like this.  I can think of
at least four possibilities:
   -- tunnel OE-rw preferred to OE-gw
      (with failover if/when OE-rw goes down)
   -- vice versa
   -- equal-cost multipath
   -- superencryption of OE-rw within OE-gw

ISTM this is just the tip of an iceberg called "plays
nicely with routers".  This is a routing problem.


> The situation is recognizeable from the situation where an extruded
> IP has moved to another location, or where one is attempting to do
> multihomed OE (which is not supported at this time) because the
> tunnels are distinguished by having different gateways, yet one of
> the gateways is *equal* to the end node.

There are more-general and more-robust ways of
recognizing the problem.  Recognizing the problem
is easy.  The problem is that there's a question
about the routing.  At runtime, once you recognize
that there's a question, the hard parts are
  -- gathering enough information to make it possible,
     even in principle, to intelligently answer the
     question.
  -- supporting each of the reasonable answers.

I suspect that as long as eroutes are different from
routes, it is not possible even in principle to answer
the runtime questions.

You can perhaps say that N-1 of the possible answers
are unsupported, but that's a little like looking
under the lamp-post.

A well-designed MAST device should make it possible
to properly solve such problems.  Or perhaps more
to the point, a non-MAST solution to such problems
is probably not feasible.

We can learn a few things from this excercise.  For
starters, it seems tunnels need proper handles.  Things
like wild-side address (right=...) or even private-side
address (rightsubnet=...) are not sufficiently distinctive
to be proper handles.  Recall the previous discussion of
"lineages".