[Xorp-hackers] Adding static routes with unresolved next-hop router

Atanu Ghosh atanu@ICSI.Berkeley.EDU
Thu, 12 Aug 2004 16:58:22 -0700


It is the job of the routing protocols to install or remove routes. All
routing protocols are responsible for monitoring the status of the the
next hops. If a next hop transitions between resolvable states the
routing protocol should take the appropriate action (add/delete).

I would say that option d) is the most consistent behaviour. If you
really believe that a common mis-configuration is going to be assigning
an invalid next-hop then b) works too.

   Atanu.

>>>>> "Pavlin" == Pavlin Radoslavov <pavlin@icir.org> writes:

    Pavlin> I have a question about the desired behavior of adding static routes
    Pavlin> to StaticRoute.

    Pavlin> Currently, if a static route is added to StaticRoutes, and if the
    Pavlin> next-hop router toward the destination is unresolvable (e.g., the
    Pavlin> network interface toward the destination is DOWN, or simply there is
    Pavlin> no network interface that connects us to that router), then the
    Pavlin> routing entry is saved internally (inside StaticRoutes), and the
    Pavlin> "add" operation returns OK. However, StaticRoutes does NOT send that
    Pavlin> route to the RIB. If the network interface toward that next-hop
    Pavlin> router comes up, then StaticRoutes will send that route to RIB.

    Pavlin> The reasoning behind the above behavior is that StaticRoutes can be
    Pavlin> configured on startup (or on the fly) with a number of routes, even
    Pavlin> though some of them may not be used because some of the network
    Pavlin> interfaces are intentionally down. Once a network interface becomes
    Pavlin> UP, then the corresponding static routes that use that interface are
    Pavlin> automatically installed.
    Pavlin> In addition, if we look into StaticRoutes as a simple routing
    Pavlin> protocol, then it should be taking into account the network
    Pavlin> interface status and should install routes into RIB only if those
    Pavlin> routes are valid.


    Pavlin> However, if there is an error in the configuration such as a typo in
    Pavlin> the IP address of a next-hop router, then such route will be
    Pavlin> installed in StaticRoutes (only), and no error will be returned to
    Pavlin> the user. Such behavior may be a source of a confusion, hence I'd
    Pavlin> like to ask for opinions what the right solution should be.

    Pavlin> Below are some suggestions:

    Pavlin> a) If the next-hop router toward the destination is not resolvable,
    Pavlin> then always return an error. Note that may not be a practical
    Pavlin> solution, because on startup we may have to wait until StaticRoutes
    Pavlin> receive all network interface information from the FEA before we
    Pavlin> can add any static routes to it.

    Pavlin> b) If the next-hop router toward the destination is not resolvable,
    Pavlin> then StaticRoutes should print a warning, but it should still
    Pavlin> return OK (if we don't return OK, then the rtrmgr will fail to
    Pavlin> start StaticRoutes).

    Pavlin> c) If the next-hop router toward the destination is not resolvable,
    Pavlin> then the StaticRoutes should still add the route to the RIB, and
    Pavlin> then let the RIB deal with resolving the next-hop router
    Pavlin> whenever the status of the related network interface changes.
    Pavlin> Doing something like this may require changes to the RIB.

    Pavlin> d) Don't change the current behavior, but document it.


    Pavlin> Comments?
    Pavlin> Pavlin
    Pavlin> _______________________________________________
    Pavlin> Xorp-hackers mailing list
    Pavlin> Xorp-hackers@icir.org
    Pavlin> http://mailman.ICSI.Berkeley.EDU/mailman/listinfo/xorp-hackers