Manual Chapter : Using Forward Error Correction to Mitigate Packet Loss

Applies To:

Show Versions Show Versions

BIG-IP AAM

  • 12.1.5, 12.1.4, 12.1.3, 12.1.2, 12.1.1, 12.1.0, 11.6.5, 11.6.4, 11.6.3, 11.6.2, 11.6.1
Manual Chapter

Using Forward Error Correction to Mitigate Packet Loss

Overview: Using forward error correction (FEC) to mitigate packet loss

The BIG-IP® system performs forward error correction (FEC) by adding redundancy to the transmitted information. FEC provides a loss correction facility for all IP-based protocols optimized by Application Acceleration Manager™. All iSession™ traffic can benefit from FEC loss mitigation, which is preferred over aggressive TCP retransmission in shared network environments.

To implement forward error correction, the BIG-IP system aggregates packets for a specified amount of time, divides the load into the specified number of equal packets (source packets), and adds the specified number of redundant (repair) packets. With adaptive FEC, the system adjusts these numbers as it measures the link error rate.

If you are configuring FEC on a central BIG-IP device for a server that does not initiate traffic, you can configure a FEC tunnel with an undefined remote address. You then configure a separate FEC tunnel from each remote BIG-IP device that handles client-initiated traffic to the central BIG-IP device. You can also configure a FEC tunnel between the local BIG-IP device and any other BIG-IP device that has a FEC tunnel with an undefined remote address.

FEC configuration between BIG-IP devices

FEC configuration between BIG-IP devices

In addition to configuring FEC between two BIG-IP systems, you can configure FEC between an edge client and a BIG-IP system that has Access Policy Manager® licensed. Consult the Access Policy Manager (APM®) documentation for information about configuring the client access deployment.

Note: Before you can configure forward error correction (FEC), you must have licensed and provisioned Application Acceleration Manager (AAM™).

About forward error correction (FEC)

Forward error correction (FEC) is an acceleration technique for all kinds of traffic, including TCP and UDP traffic on lossy networks. FEC controls data transmission errors over unreliable or noisy communication channels. With FEC, the sender encodes messages with an extra error-correcting code (ECC). The redundancy allows the receiver to detect a limited number of errors that might occur anywhere in the message, and often to correct these errors without retransmission.

Packet loss occurs when one or more packets traveling across a network fail to reach their destination. Packet loss can be caused by a number of factors that inevitably result in highly noticeable performance issues, particularly with realtime protocols, streaming technologies, voice-over-IP, online gaming, and video conferencing. Some network transport protocols, such as TCP, provide for reliable delivery of packets. In the event of packet loss, the receiver might ask for retransmission, or the sender automatically resends any segments that have not been acknowledged. Although TCP can recover from packet loss, retransmitting missing packets causes the overall throughput of the connection to decrease. Error correction occurs without the need for a reverse channel to request retransmission of data, but at the cost of a fixed, higher forward channel bandwidth. Therefore, FEC is most useful in situations where retransmissions are costly or impossible.

Task summary

The BIG-IP® system handles forward error correction according to the parameters in the FEC profile you select when you create a FEC tunnel. If the system-supplied FEC profile does not meet your network needs, you can customize the profile. For example, if you know that the bulk of the traffic is not compressible, you might want to disable LZO compression. The system-supplied FEC profile has both adaptive settings enabled, which means that it adjusts the number of source and repair packets according to network traffic conditions. This feature is particularly useful for unstable conditions. If your network conditions are stable, you might want to adjust the FEC profile accordingly.

Note: If you are using iSession™ with FEC, disable compression on either the iSession connection or the FEC profile you select for the FEC tunnel.

Task list

Customizing a FEC profile

You can customize the parameters for FEC packet loss mitigation to adjust to your network conditions.
  1. On the Main tab, click Network > Tunnels > Profiles > FEC > Create .
    The New FEC Profile screen opens.
  2. In the Name field, type a unique name for the profile.
  3. From the Parent Profile list, select a profile.
    A default profile, fec, is available.
  4. Select the Custom check box.
  5. Modify the settings, as required.
  6. Click Finished.
This FEC profile is now available for applying to a FEC tunnel.
To apply this FEC profile to traffic between BIG-IP® systems, you must select it from the Encapsulation Type list on the Acceleration Quick Start screen, the Symmetric Optimization Local Endpoint screen, or the New Tunnel screen.

Creating a FEC tunnel for receiving traffic

You can configure a FEC tunnel on a BIG-IP® device to receive requests for a FEC connection from a remote BIG-IP device.
  1. On the Main tab, click Network > Tunnels > Tunnel List > Create .
    The New Tunnel screen opens.
  2. In the Name field, type a unique name for the tunnel.
  3. From the Encapsulation Type list, select fec.
    This setting tells the system which tunnel profile to use. The system-supplied fec profile is configured for adaptive behavior for the number of source and repair packets. If you create a new FEC profile with custom settings, the profile then appears in this list, where you can select it.
  4. In the Local Address field, type the IP address of the local endpoint.
    If you are using an iSession connection, use the same IP address you used for the iSession local endpoint. Otherwise, use any self IP address on the BIG-IP system.
  5. For the Remote Address list, retain the default selection, Any.
  6. Click Finished.
You now have a tunnel that is configured for receiving FEC traffic from any BIG-IP system that has a FEC tunnel configured with the IP address of the local system specified as the Remote Address.
If you also want to initiate traffic through a FEC tunnel from the local BIG-IP system, you must create a FEC tunnel with the specific IP address of a remote BIG-IP system that is configured for receiving FEC traffic.

Creating a FEC tunnel for initiating traffic

You can configure a FEC tunnel between BIG-IP® devices to use forward error correction to mitigate data loss during transmission.
  1. On the Main tab, click Network > Tunnels > Tunnel List > Create .
    The New Tunnel screen opens.
  2. In the Name field, type a unique name for the tunnel.
  3. From the Encapsulation Type list, select fec.
    This setting tells the system which tunnel profile to use. The system-supplied fec profile is configured for adaptive behavior for the number of source and repair packets. If you create a new FEC profile with custom settings, the profile then appears in this list, where you can select it.
  4. In the Local Address field, type the IP address of the local endpoint.
    If you are using an iSession connection, use the same IP address you used for the iSession local endpoint. Otherwise, use any self IP address on the BIG-IP system.
  5. From the Remote Address list, select Specify, and type the IP address of the BIG-IP device at the other end of the tunnel.
  6. Click Finished.
You now have a tunnel that can transmit FEC traffic to the BIG-IP system specified by the remote IP address, provided the other BIG-IP system has a FEC tunnel that is open to receiving FEC transmissions.
If you also want to receive traffic through a FEC tunnel from the another BIG-IP system, you must create a FEC tunnel with an undefined IP address.

Viewing FEC tunnel statistics

You can view packet-level statistics for FEC tunnels that you have created.
  1. Access the tmsh command-line utility.
  2. At the prompt, type tmsh show /net tunnels fec-stat all-properties.
    The following listing is an example of results for this command.
    --------------------------------------------------------------
    Net::FEC Tunnel
    --------------------------------------------------------------
    Name      Profile   Out pkts  Out bits   Out pkts   Out bits     
                             Raw       Raw       Rdnt       Rdnt        
    10.10.10.2  fec_1      51.5K     30.1M      19.3K      28.2M            
    
              In pkts    In bits   In pkts    In bits    In pkts
                  Raw        Raw      Rdnt       Rdnt  Rdnt Lost   
                97.4K       1.1G    152.4K       1.7G        864  
                 
              In pkts     Rmt In    Rmt In     Rmt In     Rmt In
             Raw Lost  Rdnt Pkts  Raw Pkts  Rdnt Lost   Raw Lost
                  613      18.2K     48.6K         28         63