The purpose of this document is to describe the creation of a router to access a network that uses multiple Internet connections in order to balance the outgoing LAN demand and to obtain network access redundancy, managing fault situations for one or multiple lines.
To reach our goal, we shall use the Net Balancer module by Zeroshell. Lastly, we shall examine the possibility of aggregation (Bonding) of VPN aimed at increasing the bandwidth for point-to-point connection between remote locations via the Internet.
The description is broken into the following sections:
- Is it really possible to increase the Internet connection bandwidth?
- Configuring multiple Internet access gateways
- Fault tolerance for Internet connections through the Failover Monitor
- Balancing traffic manually
- Aggregating VPN and increasing bandwidth in layer 2
Is it really possible to increase the Internet connection bandwidth?
The answer to this question is not, “yes, absolutely.” It depends on what you mean by increasing the Internet connection bandwidth. In essence, the Net Balancer distributes requests originating from the LAN by round-robin (weighed) policy over multiple Internet gateways. In other words, if at a given point in time there is only one LAN user making only one TCP connection (e.g. he executes only one download from the web), his traffic will flow from a single gateway, thus it would not benefit from balanced connections. Instead, if the LAN is crowded with users, each executing multiple requests at the same time, as a whole, their connections will have access to a higher bandwidth, equal to the sum of the single-access bandwidths.
We then conclude that a single connection may never have more bandwidth than what offered by a single link, while multiple simultaneous connections will, on average, altogether have access to a greater bandwidth, which will stretch to the sum of the bandwidths of all the Internet links being balanced.
On the other hand, VPN aggregation is a different story. In this case, balancing of traffic takes place in Layer 2, thus a bandwidth increase is also available for a single TCP/IP connection.
Internet access gateways may include:
- A router, e.g. an ADSL router. In this case, the gateway is identified by the Net Balancer through its IP address;
- A modem that creates a Point-to-Point connection (ppp), such as an ADSL PPPoE modem or a UMTS/HSDPA modem. In this case, the gateway that does which naturally does not have an IP is identified by its assigned Point-to-Point interface.
Before proceeding to register the gateways in the Net Balancer, we must ensure that they are physically and logically connected to the Zeroshell box. This means that, a router for instance should be connected to the Ethernet interface which has been assigned an IP address belonging to the router’s IP address subnet. For instance, we connect the router with IP 192.168.1.254 to ETH01 to which we assign IP 192.168.1.253.
On the other hand, if the gateway is a modem, we must physically connect it to the Zeroshell box via Ethernet in case of PPPoE, or via USB in case of 3G mobile connection, and create the Point-to-Point interface respectively from [Setup][Network][New PPPoE] or [Setup][Network][New 3G Modem]. In practice, the modem will be automatically assigned a Point-to-Point interface of type ppp0, ppp1, … This interface will identify the modem within the Net Balancer.
By clicking the [Add] button to add a new gateway or the [Change] button to modify one, you will open the Gateway Configuration window shown above. Here’s what the parameters mean:
- Description: It contains a textual description of the gateway. It may contain the name of the Internet Service Provider.
- Status: If set on Enabled, the Net Balancer will consider the gateway active and will manage it; otherwise, it will simply ignore it. For instance, if you notice that an Internet connection fails too often, you may decide to disable it by acting on this entry.
- Weight Value: a whole number that represents the weight (importance) of the link. Its function depends on the way the Net Balancer is set up:
- If the Net Balancer is set to Load Balancing and Failover, the outgoing requests to the Internet are sorted proportionally, based on their weight value. Higher gateway value has higher probability to be assigned a request. We thus gather that weight value must be set up proportionally to the bandwidth that a link may sustain. If all links have the same capacity, the weight value may be set to 1 for all gateways. In this way, Internet requests are sorted uniformly over the links.
- On the other hand, if the Net Balancer is set to Failover, only one of the available gateways will be used to satisfy Internet requests. All other gateways are kept as Spare, ready to operate in case of fault of active gateway. The order the Net Balancer follows to activate a gateway depends on weight value. The active gateway is the one with the highest weight value among those who are not at Fault.
- IP Address: the IP address of the gateway in case gateway is a router.
- Network Interface: It is the assigned Point-to-Point interface in case the gateway is a PPPoE modem (for DSL or cable) or a 3G modem (UMTS o HSDPA).
- Timeout Coefficient: it activates to manage the Failover of a link. It must be set as a low value for fast and non-congested links. Its value may be increase if the link ends up too many times at Fault due to congestion. For instance, for a GPRS-type link, which has high response times, this value should be set to at least 4.
Once finished configuring the gateways for the different WAN connections, the Net Balancer may be activated. It will perform load balancing for all Internet connections starting immediately.
The Net Balancer may be set to operate in one of the following two modes to regulate which connection must be selected to satisfy a specific Internet request:
- Load Balancing and Failover: The Internet access requests are automatically balanced based on the weight (Weight Value) of each gateway. In case a gateway is damaged, it is excluded from automatic balancing to avoid loss of IP packets. The assignment of a certain type of traffic may be manually overridden, based on proper criteria (source IP, destination IP, TCP/UDP ports, …);
- Failover: only one shows an active link (the one with the highest weight value among those that are not at Fault). The other are kept as Spare, ready to operate in case the active connection is interrupted. Although no automatic balancing takes place with this setting, traffic may still be balanced as explained below.
We thus gather that fault tolerance is guaranteed regardless of the setting selected for the Net Balancer. To isolate a malfunctioning link by setting it to Fault, two mechanisms come into play: the first monitors the physical connection with the gateway (modem or router). The second mechanism, known as Failover Monitor, performs a more accurate analysis of the line to verify the absence of routing problems.
Since the first mechanism which controls the physical links is implicit within the Net Balancer and automatically activated with no need to be configured, we shall discuss it no further. Instead, let’s turn our attention to the Failover Monitor, which, on the other hand, must be explicitly activated and configured. The reliability of the failover management performed by this component is highly influenced by the level of congestion of the data lines and, consequently, by their respective response times. If the Failover Monitor is not accurately configured, it may erroneously place a line at fault when it is only congested. Worse yet, it may quickly switch its status from Active to Fault and vice-versa, causing the shutdown of connections to the Internet. If you notice anomalies of this nature, even after having properly calibrated the parameters described below, you should disable the Failover Monitor. It is certainly preferable to have an inactive Failover Monitor than to have an active Failover Monitor causing unstable operation. Now, let’s go over the configuration parameters:
- ICMP failover checking: if set to Enabled, it activates the Failover Monitor. In order for the Failover Monitor to begin operating, you must specify and enable at least one Failover IP Address. These IP addresses must be external to your LAN and each one must be accessible via all gateways.
- Number of probes before marking DOWN: it represents the number of failed pings before a link is switched to Fault;
- Number of probes before marking UP: indicates the number of consecutive successful pings needed to return a disabled link to active operation;
- Reply timeout (seconds): it represents the maximum wait time for an ICMP response. In case links are congested, increasing this value may help. Please keep in mind that the actual wait time may be calculated by multiplying this value by the Timeout Coefficient shown in the previous paragraph;
- Pause before starting a new cycle (seconds): monitoring cycles are separated by a pause, whose duration is represented by this value;
- Immediately restart PPPoE and 3G Mobile: if this entry is enabled, the Point-to-Point connection at fault will be reset. This may quickly resolve the problem, although it requires the renegotiation of the IP address, if the latter is dynamically assigned.
Multiple attempts may be necessary in order for the failover system to reach optimal configuration. In general, it is a matter of striking the right balance between quickly intervening to isolate a malfunctioning Internet connection and avoiding faulting connections that are simply congested.
For several reasons, it may be necessary to avoid automatic balancing of certain types of traffic. In other words, specific connections must be constrained to a certain gateway. In order to do so, the Net Balancer offers a web interface [Net Balancer][Balancing Rules] that quite resembles both the Firewall and the QoS Classifier interfaces. In fact, the rules through which one chooses which connections to route manually on a specific gateway are set just as in the firewall, using IP addresses, TCP/UDP ports and so on.
The example in the figure illustrates how the SMTP traffic (port 25 TCP), generated by the e-mail server with IP address 192.168.0.20, is forced to exit router 192.168.1.250, which links to a fiber optic line.
VPN LAN-to-LAN that may be configured in Zeroshell may be obtained using OpenVPN and TAP virtual interfaces. The latter entirely resemble real Ethernet interfaces and, as such, they may be aggregated through Bonding. This feature has been available since the first release of Zeroshell. However, for VPN bonding to be justified, each VPN tunnel belonging to the bond must flow to a separate Internet link. Before Net Balancer was introduced, this was done through static routes which required at least one peer to have two public IP’s. Now, thanks to Net Balancer, the VPN site-to-site configuration form allows you to choose a gateway to set up the ciphered connection. This greatly simplifies configuration by no longer requiring static routes and two public IP addresses.
Once the VPN are created and assigned to their respective gateways, the bond interface may be created as shown in the figure below:
The BOND00 interface created is equivalent to an Ethernet interface: it may contain IP addresses, add VLAN 802.1q, or be assigned to a bridge. As mentioned at the beginning, since load balancing in bonding takes places in Ethernet frames, even a single TCP/IP connection will enjoy an increased band thanks to the presence of multiple links.