Tucked amongst the OneFS 9.8 feature payload were a couple of significant enhancements to source-based routing (SBR). Specifically, the introduction of:
- IPv6 network support.
- SBR enabled by default for fresh OneFS 9.8 installs.
Source-based routing was first introduced into OneFS back in 9.2. At its core, OneFS source base routing is essentially ‘per-subnet default routes’. OneFS parses the Flexnet configuration for each subnet, and then creates routing rules corresponding to the IP address from the cluster side, forcing the next-hop to be the router IP defined for the subnet which contains that IP address.
Until OneFS 9.8, SBR was disabled by default, and so required manual configuration in order to run it. Additionally, in OneFS 9.7 and earlier, SBR only supported IPv4 networks. With the release of OneFS 9.8, both IPv4 and IPv6 networks are now fully supported. Plus, for new clusters and fresh installs, SBR is now enabled by default. However, existing clusters that are upgraded to OneFS 9.8 will retain their existing configuration. So SBR will remain disabled unless it had already been configured to run.
When SBR is disabled and a request comes in from a client and is routed to a node in the cluster, when the return traffic is sent it will typically traverse the cluster’s default route.
With a large number of clients connected, there is a possibility of overloading the default route with a deluge of traffic. However, when SBR is enabled, each subnet has a defined priority gateway and return traffic is sent over the path that the request came from rather than the default route.
If traffic arrives from a subnet that isn’t reachable through the default gateway, routing rules are added for it. These rules are stateless and depend entirely on the source IP that sends traffic to the cluster.
So, with a well-balanced client network topology, client connects will follow their source routes and load will be automatically distributed more evenly and bi-directionally over the source paths, rather than returning across the cluster’s default route. This has the potential benefit of network performance improvements in addition to a more even distribution.
From the OneFS CLI, the ‘isi network external view’ command can be used to check the state of the external network configuration, as well as configure SBR.
For example:
# isi network external view Client TCP Ports: 2049, 445, 20, 21, 80 Default Groupnet: groupnet0 SC Rebalance Delay: 0 Source Based Routing: False SC Server TTL: 900 IPv6 Settings: IPv6 Enabled: True IPv6 Auto Configuration Enabled: False IPv6 Generate Link Local: False IPv6 Accept Redirects: False IPv6 DAD: Disabled IPv6 SSIP Perform DAD: False
In the example above, SBR is disabled, but can be easily enabled as follows:
# isi network external modify --sbr=true # isi network external view | grep -i source Source Based Routing: True
Similarly the following syntax will disable SBR:
# isi network external modify --sbr=false # isi network external view | grep -i source Source Based Routing: False
SBR can also be configured from the OneFS WebUI by navigating to Cluster management > Network configuration > Settings:
Under the hood, SBR uses ipfw, to create and manage its routing rules. For example, the following CLI output shows the two corresponding ipfw rules (62000 and 62001) that are created for IPv4 and IPv6 respectively when SBR is enabled: