Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Sep 1995 09:32:16 +0200
From:      Andras Olah <olah@cs.utwente.nl>
To:        joerg_wunsch@uriah.heep.sax.de (Joerg Wunsch)
Cc:        freebsd-current@FreeBSD.org (FreeBSD-current users), kieber@sax.de (Ulf Kieber)
Subject:   Re: SLIP routing problem 
Message-ID:  <29515.810804736@utis156.cs.utwente.nl>
In-Reply-To: Your message of "Fri, 08 Sep 1995 21:16:56 %2B0200." <199509081916.VAA14347@uriah.heep.sax.de> 

next in thread | previous in thread | raw e-mail | index | archive | help
Joerg,

Sorry, I don't know the exact solution to your problem, but at least
I know where you have to look further.  The host specific route in
your routing table is a cloned route.  These are generated to enable
TCP to store host-specific metrics in the routing table.  This
facility is used by T/TCP and is by the congestion control/avoidance
algorithms in standard TCP.

My guess for the solution is that cloned routes should be
automatically discarded if they're in conflict with the new route
being added instead of preventing adding the new route.  Since I'm
not really familiar with the details of the routing code, I may be
wrong.  The route cloning code is Garrett's work, so probably he's
the one who may know the right solution to your problem.  You can
find the code in netinet/in_rmx.c.  

Andras

PS: netstat -ra will show you the cloned routes as well, by default
they are suppressed.

On Fri, 08 Sep 1995 21:16:56 +0200, J Wunsch wrote:
[ ... ]
> Sep  8 20:16:55 sax pppd[2010]: pppd 2.1.2 started by ppufo, uid 68
> Sep  8 20:16:55 sax pppd[2010]: Connect: ppp0 <--> /dev/ttyd1
> Sep  8 20:16:59 sax pppd[2010]: local  IP address 193.175.26.126
> Sep  8 20:16:59 sax pppd[2010]: remote IP address 193.175.26.117
> Sep  8 20:16:59 sax pppd[2010]: ioctl(SIOCAIFADDR): Address already exists
> 
> 44 sax:~> /sbin/route get 193.175.26.117
>    route to: ufo
> destination: ufo
>     gateway: sax-gw1
>   interface: ed0
>       flags: <UP,GATEWAY,HOST,DONE>
>  recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
>        0         0         0         0         0         0         0      3597 
> 
> The interesting fact here is that "sax-gw1" is the _ethernet_ interface.
> So now i've got the following picture:
> 
> o at startup time of any pointopoint interface, all routes to that
>   interface are being cleared, and everything is started from scratch
>   [in_ifscrub() is called]
> 
> o the link breaks, and all routes to the interface are being cleared
>   immediately
> 
> o anyway, since there have been active connections over that link,
>   further packets with the destination to that pointopoint interface
>   will arrive; since the link is down, the only route that does apply
>   to them is the _default_ route, which points back to the world via
>   the ethernet
> 
> o this somehow (?) creates a routing table entry for this host, tagged
>   for the (default route) ethernet interface, with an expiration time
>   of 3600 seconds

The default route is referenced which creates a host specific
cloned route.

> o the pointopoint link comes back after redialing, but somehow (?)
>   the bogus route through the ethernet interface will not be cleared
>   by in_ifscrub() as it ought to be, and the subsequent attempt to
>   create the interface route for this address fails since the routing
>   code claims a route would already exist



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