WeOS
5.29.0

# Static Routing

## Introduction

IP routing enables forwarding of data packets between otherwise isolated network segments, allowing end devices to communicate across networks of different type and topology.

All IP based devices, including routers, have a routing table which is consulted for each outbound IP packet. The path, or route, to be taken is determined based on the destination IP address of the packet. The only real difference between an end-device (or switch) and a router is that the forwarding mechanism is enabled on a router, i.e., inbound packets are allowed to be forwarded based on the routing table.

Three criteria must be met for an IP packet to be routed:

- A route must exist, a default route is sufficient
- The TTL of the packet must be > 1
- IP forwarding must be enabled in the router

The routing table can populated manually by setting up static routes, or automatically by using a dynamic routing protocol like OSPF or RIP, or a combination of both. Static IP routing is usually sufficient for small IP networks, or networks with no redundant paths. To manage routing in larger networks, it is preferred to use dynamic IP routing. Here is an example of how the routing table can look:

IPv4

    example:/#> show ip route
    S - Static | C - Connected | K - Kernel route  | > - Selected route
    O - OSPF   | R - RIP       | [Distance/Metric] | * - FIB route

    S>* 0.0.0.0/0 [1/0] via 192.168.2.1, vlan1, weight 1, 00:01:44
    C>* 169.254.0.0/16 is directly connected, vlan1, 00:01:44
    C>* 192.168.2.0/24 is directly connected, vlan1, 00:01:44

IPv6

    example:/#> show ipv6 route
    S - Static | C - Connected | K - Kernel route  | > - Selected route
    O - OSPFv6 | R - RIPng     | [Distance/Metric] | * - FIB route

    S>* ::/0 [1/0] via 2001:db8::1, vlan1, weight 1, 00:00:36
    C>* 2001:db8::/64 is directly connected, vlan1, 00:00:36
    C * fe80::/64 is directly connected, vlan1, 00:00:36
    C>* fe80::/64 is directly connected, br0, 00:00:36

Note

A routing table may contain multiple matching routes for a given destination. The route is selected based on best match, which means a `/24`, for example, is a better match than a `/16`. If more than one route matches, the distance acts as a tiebreaker.

Note

If a route is configured with a next-hop address that is not reachable, that route is inactive and may not even be shown in the routing table.

## Distance

All routes in the routing table have a distance, which is used to find the best path for a packet if more than one route matches a destination. A lower value is better and a route with distance 0 (connected route) will always be used.

Different routing methods have different default distances which are used unless otherwise specified:

Distance | Protocol
--- | ---
0 | Connected
1 | Static (manual)
16 | Static (DHCP)
110 | OSPF
120 | RIP

Table 1: Overview of default route distances for different protocols.

Hence, a route from RIP is worth less than an OSPF route and a static route trumps both. This way multiple routes can be installed to provide automatic fail-over to another routing path in case a router goes down.

The table lists static routes learned from a DHCP server as having the distance value 16. This is to be able to locally override in case the routes (usually just the default route) are wrong or otherwise require adjusting.

## IP Forwarding

As mentioned previously, a router must have IP forwarding enabled to be able to route packets. This is the default for products with this capability.

IPv4

    example:/#> configure ip
    example:/config/ip/#> forwarding
    example:/config/ip/#> leave

IPv6

    example:/#> config ipv6
    example:/config/ipv6/#> forwarding
    example:/config/ipv6/#> leave

Default behaviour regarding IPv6

Currently, both IPv6 in general and IPv6 forwarding are disabled by default. Both of these must be enabled to allow IPv6 traffic to pass through the device.

## Static routes

Static routes are configured from the ip/ipv6 context in the CLI:

IPv4

    example:/#> configure ip
    example:/config/ip/#>

IPv6

    example:/#> config ipv6
    example:/config/ipv6/#>

A static route requires a destination network and a next-hop destination. The destination network is the network that the route is for, and the destination is instructions how to reach that network from the router.

### Static Route to a Next-Hop Gateway

To configure static routes from a given network to a specific next-hop gateway address, use the following commands:

IPv4

    example:/#> configure ip
    example:/config/ip/#> route 192.168.10.0/24 192.168.0.1
    example:/config/ip/#> leave

IPv6

    example:/config/ipv6/#> route 2001:db8:10::/64 2001:db8::1
    example:/config/ipv6/#> leave

### Static Route to an Interface

The next-hop can also be specified as an interface instead of an IP address. To configure a static route to an interface, use the following commands:

IPv4

    example:/config/ip/#> route 192.168.10.0/24 ssl1
    example:/config/ip/#> leave

IPv6

    example:/config/ipv6/#> route 2001:db8:10::/64 ssl1
    example:/config/ipv6/#> leave

Usage

Using an interface as a next-hop can be useful for point-to-point links, where there is only one destination on the other end of the link. As an example, the interface type in this case could be a SSL or GRE interface.

Multi-Access Interfaces

It is generally a good idea to avoid using interfaces as next-hops for multi-access interfaces.

### Static Route with a Distance

If a specific distance is required, it can be added as an optional parameter. The following example sets the distance to 2:

IPv4

    example:/config/ip/#> route 192.168.10.0/24 192.168.0.1 2
    example:/config/ip/#> leave

IPv6

    example:/config/ipv6/#> route 2001:db8:10::/64 2001:db8::1 2
    example:/config/ipv6/#> leave

Unreachable Distance

A route with a distance set to 255 is considered unreachable and will not be added to the routing table.

## Default Route

Sometimes referred to as the Default Gateway, the default route is where an IP device sends all packets for which it does not have a more specific route. It acts as a last resort. To configure a default route, use the following commands:

IPv4

    example:/config/ip/#> route default 192.168.0.1
    example:/config/ip/#> leave

IPv6

    example:/config/ipv6/#> route default 2001:db8::1
    example:/config/ipv6/#> leave

## Blackhole Routes

To prevent traffic from being redirected to the default gateway before routes have been established, you can add a blackhole route. This is is a route for a network that points to the `null0` interface, meaning all traffic for that network will be silently discarded.

When creating a blackhole route it is important that it should have an higher distance (use 255 for blackhole routes) than the real route to the network.

In the following example, we configure a route for a network to a specific next-hop gateway. Additionally, we add a blackhole route for the same network. This blackhole route will discard traffic if the interface for the next-hop gateway goes down, preventing it from being sent to the default gateway.

IPv4

    example:/config/ip/#> route 172.16.0.0/16 192.168.3.1
    example:/config/ip/#> route 172.16.0.0/16 null0 255
    example:/config/ip/#> leave
    Applying configuration.
    Configuration activated.  Remember “copy run start” to save to flash (NVRAM).
    example:/#> show ip route
    S - Static | C - Connected | K - Kernel route  | > - Selected route
    O - OSPF   | R - RIP       | [Distance/Metric] | * - FIB route

    s>* 0.0.0.0/0 [16/0] via 192.168.0.1, vlan1
    C>* 169.254.0.0/16 is directly connected, vlan1
    s   172.16.0.0/16 [255/0] is directly connected, Null0, bh
    s   172.16.0.0/16 [1/0] via 192.168.3.1 inactive
    C>* 192.168.0.0/24 is directly connected, vlan1

IPv6

    example:/config/ipv6/#> route 2001:db8:10::/64 2001:db8:2::1
    example:/config/ipv6/#> route 2001:db8:10::/64 null0 255
    example:/config/ipv6/#> leave
    Applying configuration.
    Configuration activated.  Remember “copy run start” to save to flash (NVRAM).
    example:/#> show ipv6 route
    S - Static | C - Connected | K - Kernel route  | > - Selected route
    O - OSPFv6 | R - RIPng     | [Distance/Metric] | * - FIB route

    S> ::/0 [1/0] via 2001:db8::1, vlan1, weight 1, 00:01:45
    C> 2001:db8::/64 is directly connected, vlan1, 00:01:45
    C> 2001:db8:2::/64 is directly connected, vlan2, 00:00:03
    S> 2001:db8:10::/64 [1/0] via 2001:db8:2::1, vlan2, weight 1, 00:00:03
    S   2001:db8:10::/64 [255/0] unreachable (blackhole), weight 1, 00:01:46
    C * fe80::/64 is directly connected, vlan2, 00:00:03
    C * fe80::/64 is directly connected, vlan1, 00:01:45
    C>* fe80::/64 is directly connected, br0, 00:01:45

Tip

Blackhole routes are also referred to as null routes or discard routes.

## Route Monitor

Note

Route monitoring is currently only supported for IPv4 static routes.

In cases when there are a multiple paths to a network, it is possible to switch between the available paths using ping trigger alarm, policy route and route monitor.

If the system detects a monitored route target becomes unreachable then it updates the administrative distance of the route to max (255). Making effectivity unreachable and forcing all route on any remaining route(s).

If route became reachable again and the peer is reachable, this clears the alarm and the route monitor update administrative distance to the configured value.

- Equal Cost Multi-Path Routing
- Multiple Upstream Failover
- Alarm
- Policy-Based Routing (PBR)

The following example demonstrates how to configure two default routes, with route monitor.

    example:/#> configure ip
    example:/config/ip/#> route default 192.168.1.99 1 track 1>
    example:/config/ip/#> route default 192.168.2.99 1 track 2>
    example:/config/ip/#> show route
    Network          Netmask          Gateway          Iface          Dist  TrigId
    ==============================================================================
    0.0.0.0          0.0.0.0           192.168.1.99      *               1    1
    0.0.0.0          0.0.0.0           192.168.2.99      *               1    2
    example:/config/ip/#> leave

This is how the show ip route looks like if both peers are reachable

    example:/#> show ip route-monitor
    Network           Gateway           Trigger-id  Reachable  Installed
    0.0.0.0/0         192.168.1.99      1           YES        YES
    0.0.0.0/0         192.168.1.99      2           YES        YES

« Previous Next »