WeOS
5.29.0

# Fast Reconfiguration of Network Topology (FRNT)

The Fast Reconfiguration of Network Topology (FRNT) protocol handles fast reconfiguration in switched ring and sub-ring topologies. When rapid convergence in case of link or switch failure is required, FRNT becomes the protocol of choice when it comes to layer-2 resilience and robustness.

Two versions of FRNT exist, FRNTv0 and FRNTv2. FRNTv2 natively supports topologies with regular rings and with sub-ring extensions, while FRNTv0 is limited to a single ring.

Table of contents

- Introduction
- Fail-Over Handling
- Link Monitoring and Qualification
- Guidelines on Port selection and configuration
- Multiple FRNT rings and sub-rings (FRNTv2)
- Reserved VLANs
- Configuration
  - Syntax FRNTv2 Configuration
  - Syntax FRNTv0 Configuration
- FRNT Status Commands and Explanations

For examples of use-cases, refer to the following document:

- FRNT HowTo

## Introduction

The overall functionality of FRNTv0 and FRNTv2 is the same when configured in a ring topology. The FRNT protocol handles fast reconfiguration in switched ring topologies. One of the switches has the role of FRNT focal point while the other switches are referred to as FRNT members. When the switches are connected in a ring, it is the responsibility of the focal point to break the loop by putting one of its ports in blocking state, as shown in Figure 1.

     .-----.               .-----.
     |     |M             N|     |
     | SW1 +-||------------+ SW2 |
     |   fp|               |     |
     '--+--'               '--+--'
       N|                     |M
        |        FRNT         |
       M|                     |N
     .--+--.               .--+--.
     |     |               |     |
     | SW4 +---------------+ SW3 |
     |     |N             M|     |
     '-----'               '-----'

Figure 1: Basic FRNT ring configuration, SW1 is focal point (fp).

Note

In an FRNT ring or a sub-ring, only one of the switches can be configured as focal point. The other switches should be configured as member switches. For FRNT to operate properly, all devices in the ring must be running FRNT.

## Fail-Over Handling

Once a link failure is detected somewhere along the ring, the focal point puts its blocking port in forwarding state to establish full connectivity between the switches. FRNT is event based, thus switches that detect a link down event will immediately send a link down FRNT message towards the focal point. Intermediate switches forward all FRNT messages, with highest priority, and the focal point opens its blocking port upon receiving the link down message.

     .-----.               .-----.
     |     |M             N|     |
     | SW1 +---------------+ SW2 |
     |   fp|               |     |
     '--+--'               '--+--'
       N|                     |M
        |        FRNT         |
       M|                     |N
     .--+--.               .--+--.
     |     |               |     |
     | SW4 +------ X ------+ SW3 |
     |     |N             M|     |
     '-----'               '-----'

Figure 2: Upon a link break, the focal point (SW1) puts its blocked port in forwarding state.

Similarly, when a broken link comes back up again and the ring is fully connected, the focal point will react and put its blocking port back to blocking state.

## Link Monitoring and Qualification

An FRNT link must be qualified before it can be used as a active link in an FRNT ring. The link qualification is done with control traffic, i.e, FRNT Hello packets. The qualification with Hello packets verifies that there is two-way connectivity over the link. The primary reason for this is to ensure adequate operation of FRNT in both directions of a link, before taking it into operation. This feature provides robustness against one-way link or transmission failures, and is specifically important over a fibre optic link pairs.

Note

In FRNTv2 it is possible to disable Hello packets. The port will become qualified on link up and no further tests of the link quality is not done. The FRNTv2 switches on each side of the link must use the same qualification procedure.

## Guidelines on Port selection and configuration

When enabling FRNT on a switch, two ports are set as ring ports. Below are some recommendations and rules when selecting and configuring the FRNT ports:

- Avoid using copper SFPs as FRNT ports: When using Ethernet ports as FRNT ports, choose fixed Ethernet ports or fibre SFPs. Copper SFPs may be used as FRNT ports, but will generally imply non-negligible degradation of fail-over performance.

- When activating FRNT on gigabit copper ports the setting ‘fastlink’’ should be enabled to reduce the link down time. Per the IEEE 802.3 Clause 40 standard, a 1000BASE-T PHY is required to wait 750 milliseconds or more to report that link is down after detecting a problem with the link. It is not possible to meet the failover time for FRNT if the PHY follows the 750 wait time. By activating fastlink on a port the IEEE standard is intentionally violated.

For example, if port eth1 is a gigabit copper port used as FRNT ring port, enabling fastlink can be done as follows.

    example:/#> configure
    example:/config/#> port eth1
    example:/config/port-eth1/#> fastlink
    example:/config/port-eth1/#> leave
    example:/#>

## Multiple FRNT rings and sub-rings (FRNTv2)

FRNTv2 supports sub-ring topologies. Sub-rings can be thought of as a partial ring in the shape of a “C” that is not fully closed (a ”horse-shoe”). Sub-rings can be hooked into a regular FRNTv0 or FRNTv2 super-ring and to other FRNTv2 sub-rings as well. This allows for complex ring topologies to be built as shown in Figure 3.

      .----------.      .----------.       .----------.       .------------.
      |   Super- |      |   Super- |       |   Sub-   |       |   Super-   |
      |   Ring   |      |   Ring   |       |   Ring   |       |    Ring    |
      |          |      |          |      .+---.  .---+.      |            |
     .+---.  .---+.    .+---.  .---+.     |    |  |    |     .+---.    .---+.
     |    +--+    |    |    +--+    |     |    +--+    |     |    +----+    |
     |    |  |    |    |    |  |    |     '+---'  '---+'     |    |    |    |
     '+---'  '---+'    '+---'  '---+'      |   Super- |      '+--+'    '+--+'
      |   Sub-   |      |   Sub-   |       |   Ring   |       |  | Sub- |  |
      |   Ring   |      |   Ring   |       |          |       |  | Ring |  |
      '----------'     .+---.  .---+.     .+---.  .---+.      |  '------'  |
                       |    +--+    |     |    +--+    |      |            |
                       |    |  |    |     |    |  |    |      |    Sub-    |
                       '+---'  '---+'     '+---'  '---+'      |    Ring    |
                        |   Sub-   |       |   Sub-   |       '------------'
                        |   Ring   |       |   Ring   |
                        '----------'       '----------'

Figure 3: Examples of sub-ring topologies

The switches in each end of the sub-ring will have only one FRNT ring port configured and one of those switches needs to be the focal point. The member switches between the sub-ring end switches are configured as normal member switches with two ring ports. When the sub-ring is intact the focal point will block its sub-ring port to prevent a loop. If a link break is detected in the sub-ring the focal point will open its blocked ring port to restore connectivity in the network.

Note

All FRNTv2 nodes in a ring (super-ring or sub-ring) must be configured with the same ring ID. The ring ID used in a super-ring and in a sub-ring must differ.

Below is a configuration example for a member FRNTv2 sub-ring end switch, i.e., only a single FRNT port is configured (here port eth4). It assumes there is already an FRNT super-ring configured (here an FRNTv2 ring with ring ID ‘1’ and ring-ports eth1 and eth2).

    example:/#> configure
    example:/#> configure
    example:/config/#> ring
    example:/config/ring/#> frnt 2
    example:/config/ring/frnt-2/#> port eth4
    example:/config/ring/frnt-2/port-eth4/#> end
    example:/config/ring/frnt-2/#> no focal-point
    example:/config/ring/frnt-2/#> leave
    example:/#> show frnt
                          Top
     Rid  Ver  Status     Cnt  Mode    Port 1                 Port 2
       1    2  OK           5  Focal   eth1    Qualified      eth2    Forwarding
       2    2  OK           3  Member  eth4    Forwarding     None
    example:/#>

## Reserved VLANs

Reserved VLANs for FRNT are:

- FRNTv0 uses VLAN IDs 4020-4022 and 4032-4033.
- FRNTv2 uses VLAN IDs 4021-4022.

Thus, when FRNT is enabled on a switch, these VLANs are implicitly reserved and cannot be configured by the user.

## Configuration

FRNT is a top-level configuration context in the CLI:

    example:/#> configure
    example:/config/#> ring
    example:/config/ring/#> frnt 1
    example:/config/ring/frnt-1/#>

`[no] frnt [ID]`

  Enable/Disable FRNT and enter FRNT configuration context of given instance.

  ID

    FRNT instance ID (range 0-255). At most 10 instances can be created. The selection of FRNT ID affects default values for FRNT version and FRNTv2 Ring-ID.

    - ID 0: Implies version ‘0’. Also implies ring ID ‘0’, although FRNTv0 does not consider ring IDs.
    - ID 1-20: Implies version ‘2’. FRNTv2 ring ID defaults to the specified FRNT ID, but can be changed.

    Currently ID defaults ‘0’

  no
    Remove the given FRNT instance (or all if no ID is specified).

The available commands differs depending on FRNT version. Both are listed below, starting with FRNTv2 settings.

### Syntax FRNTv2 Configuration

`version <0,2>`

  Set FRNT version ‘0’ (FRNTv0) or ‘2’ (FRNTv2).

  Default:

  - For FRNT Instance ‘0’, the default version becomes ‘0’.
  - For FRNT Instance ‘1’ or higher, the default version becomes ‘2’.

  Changing version affects ring ID. To change from FRNTv0 to FRNTv2, it is better to remove the FRNT instance and create a new instance with ID 0.

`ring-id <ID>`

  Set FRNTv2 Ring ID.

  ID
    Ring ID in range 1-20. Defaults to be same as FRNT instance ID. All FRNT nodes in a ring needs to have same ring ID configured.
`[no] focal-point`

  Set FRNT mode: focal-point or member. Default: focal-point

  no
    Set switch to act as member
`[no] port <PORT>`

  Set PORT as FRNT ring port, and enter configuration context for the given port. Typically the ‘port PORT’ command is run twice, one for each ring port. The exception are nodes which constitute the end of a sub-ring, when only a single port is specified.

  The first configured port will by default be blocking port if the node is focal-point. See the ‘blocked-port’ setting below.

  PORT
    Name of ring port, typically an Ethernet port such as eth1. Logical layer-2 ports (e.g., ssl1 or lag1) can be FRNT ports as long as they are associated to the same bridge.
`[no] blocked-port <PORT>`

  (Setting only available in ‘focal-point’ mode.) Blocked port on focal point when the ring is OK. When no blocking port is specified the first configured port becomes the blocking port.

  PORT
    The ring port to be blocked by focal point when ring is intact. PORT must be defined as ring port, see ‘port’ setting above.
  no
    Auto (let first configured port act as blocking port)
`[no] ring-interval <INTERVAL>`

  Expert setting. Default: 500 ms (Setting only available in ‘focal-point’ mode.)

  Set interval of FRNT ring packets in milliseconds. The default is fine for all regular use cases.

  INTERVAL
    Interval in milliseconds. Range 50-10000 (ms).
  no
    Reset to default (500)
`[no] guarded-recovery`

  Expert setting. Default: Enabled (Setting only available in ‘focal-point’ mode.)

  This expert setting should be enabled in all regular use cases. When enabled, FRNT will use all ring control events to prevent a logical loop in the ring. When guarded-recovery is disabled, only ring packets are used when deciding if a ring port on focal point should be in blocked or forwarding state.

`[no] response-delay <INTERVAL>`

  Expert setting. Default: 1500 ms (Setting only available in ‘focal-point’ mode.)

  A delay from ring closed until the focal point change state to ring ok. During the response delay the focal point waits for other link up events in the ring to prevent unnessasary changes in ring state.

  INTERVAL
    Interval in milliseconds. Range 500-10000 (ms)
  no
    Reset to default (1500)
`[no] hello-time <INTERVAL>`

  Setting within FRNT port configuration context. FRNT Hello/Health packet interval, default: 500 msec

  This expert level setting is primarily intended for improving recovery times on Gigabit links with slow link-down detection, i.e., where PHYs do not support fastlink. Hello time can be disabled and then then FRNT port is qualified on link up.

  Warning

  Although the lowest possible setting provides the quickest recovery time (if slow link-down) it also severely affects the CPU load of the system. It is therefore strongly recommended to experiment to figure out the best setting for the particular system at hand. E.g., routing or remote monitoring with SNMP share the same CPU resources. Use ‘repeat show processes’ to see system load at run-time.

  INTERVAL
    Interval in milliseconds. Range 20-10000 (ms). Default: 500 (ms)
  no
    Disable use of Hello packets.
`[no] fwd-delay <DELAY>`

  Setting within FRNT port configuration context, and only available in member mode. Let port shift to forwarding state after specified forward delay (seconds). Default: Disabled

  This expert setting sets the forward delay in seconds for the port. If forward delay is set, the port will change state to forwarding when the delay time has passed without receiving FRNT Hello packets. For normal ring operation this setting should be disabled.

  DELAY
    Forward delay in seconds, range 3-60 (s).
  no
    Disable forward delay, i.e., await link qualification before consider shifting to forwarding state.

### Syntax FRNTv0 Configuration

`version <0,2>`

  Set FRNT version ‘0’ (FRNTv0) or ‘2’ (FRNTv2).

  Default:

  - For FRNT Instance ‘0’, the default version becomes ‘0’.
  - For FRNT Instance ‘1’ or higher, the default version becomes ‘2’.

  Changing version affects ring ID. To change from FRNTv0 to FRNTv2, it is better to remove the FRNT instance and create a new instance with ID 0.

`[no] focal-point`

  Set FRNT mode: focal-point or member. Default: focal-point

  no
    Set switch to act as member
`[no] ports [portM,portN]`

  Set ring ports, a.k.a. port M, port N.

  In normal operation, the focal point selects port M to be blocked. If you have a preference, place that port first in the pair.

  no
    Remove all or one port
`[no] hello-time [20-1000,20-1000]`

  Health packet interval (M,N), default: 100 msec.

  This expert level setting is primarily intended for improving recovery times on Gigabit links with slow link-down detection.

### FRNT Status Commands and Explanations

In order to see the current status of FRNT for an individual device the following command can be used:

`[show] frnt [clear-stats] [ID|all]`

  Show FRNT status and statistics, or clear FRNT statistics.

  Use `show frnt [ID|all]` to show FRNT status and statistics for one or all FRNT instances. If specifying a specific ID, a detailed view of that instance is shown.

  Use `frnt clear-stats [ID|all]` to reset topology change count for one or all FRNT instances.

Showing FRNT status overview

    example:/#> show frnt
                          Top
     Rid  Ver  Status     Cnt  Mode    Port 1                 Port 2
       0    0  OK           5  Focal   eth1    Blocking       eth2    Forwarding
       1    2  OK           3  Member  eth4    Forwarding     None
    example:/#>

For a detailed explanation of various FRNT states, see further below.

Detailed FRNTv0 status

    example:/#> show frnt 0
    Ring ID                   : 0
    Version                   : FRNTv0
    Enabled                   : Yes, running as PID 2668
    Ring Status               : OK
    Topology Change Count     : 5
    Time Since Last Change    : 0 Days 0 Hours 0 Mins 41 Secs
    Mode                      : Focal Point
    Port M                    : eth1     UP  Blocking
    Port N                    : eth2     UP  Forwarding
    example:/#>

Detailed FRNTv2 status (here with only a single ring port)

    example:/#> show frnt 1
    Ring id                   : 1
    Version                   : FRNTv2
    Enabled                   : Yes, running as PID 1826
    Ring Status               : OK
    Topology Change Count     : 3
    Time Since Last Change    : 0 Days 0 Hours 0 Mins 28 Secs
    Mode                      : Member
    Port                      : eth4     UP  Forwarding
      Hello time              : 500
      Forward Delay           : Disabled

    example:/#>

Port Status in FRNTv0 and FRNTv2 are summarised in table below.

Link state | Port State | FRNTv0 Port Status | FRNTv2 Port Status
--- | --- | --- | ---
Down | Down | Down | Down
Up | Blocking | Down | Not Qualified
Up | Blocking | Up | Qualified
Up | Forwarding | Forwarding | Forwarding

- FRNTv0 Port status
  - Down: FRNT does not receive hello packets from its attached FRNT node.
  - Up: FRNT receives hello packets from its attached FRNT node. If the port is in forwarding state it is active in the ring and it is forwarding traffic.
- FRNTv2 Port status:
  - Down: Link down on port.
  - Not Qualified: The port has link up but do not get response on transmitted hello packets from the attached FRNT node.
  - Qualified: The port receives hello packets from its attached FRNT node. It is ready to be used in the ring if needed but is still blocked. Focal point will have one of its port in qualified state when the ring is intact.
  - Forwarding: An active port in the ring and it is forwarding traffic.

« Previous Next »