# System Forwarding

The `nv unset` commands remove the configuration you set with the equivalent `nv set` commands. This guide only describes an `nv unset` command if it differs from the `nv set` command.

## nv set system forwarding ecmp-hash destination-ip

Enables and disables ECMP hashing on the destination IP field. The default setting is `disabled`.

Custom hashing lets you specify what to include in the hash calculation during load balancing between multiple next hops of a layer 3 route (ECMP hashing).

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash destination-ip enabled

## nv set system forwarding ecmp-hash destination-port

Enables and disables ECMP hashing on the destination port field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash destination-port enabled

## nv set system forwarding ecmp-hash gtp-teid

Enables and disables ECMP hashing on the GTP TEID field. The default setting is `disabled`.

GTP TEID-based ECMP hashing is only applicable if the outer header egressing the port is GTP encapsulated and if the ingress packet is either a GTP-U packet or a VXLAN encapsulated GTP-U packet.

- Cumulus Linux supports GTP Hashing on NVIDIA Spectrum-2 and later.
- GTP-C packets are not part of GTP hashing.
- In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash gtp-teid enabled

## nv set system forwarding ecmp-hash ingress-interface

Enables and disables ECMP hashing on the ingress interface. The default setting is `disabled`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash ingress-interface enabled

## nv set system forwarding ecmp-hash inner-destination-ip

Enables and disables ECMP hashing on the inner destination IP address field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash inner-destination-ip enabled

## nv set system forwarding ecmp-hash inner-destination-port

Enables and disables ECMP hashing on the inner destination port field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash inner-destination-port enabled

## nv set system forwarding ecmp-hash inner-ip-protocol

Enables and disables ECMP hashing on the inner IP protocol field. The default setting is `disabled`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash inner-ip-protocol enabled

## nv set system forwarding ecmp-hash inner-ipv6-label

Enables and disables ECMP hashing on the inner IPv6 label field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash inner-ipv6-label enabled

## nv set system forwarding ecmp-hash inner-source-ip

Enables and disables ECMP hashing on the inner source IP address field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash inner-ip-protocol enabled

## nv set system forwarding ecmp-hash inner-source-port

Enables and disables ECMP hashing on the inner source port field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash inner-source-port enabled

## nv set system forwarding ecmp-hash ipv6-label

Enables and disables ECMP hashing on the IPv6 label field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash ipv6-label enabled

## nv set system forwarding ecmp-hash ip-protocol

Enables and disables ECMP hashing on the IP protocol field. For IP traffic, the switch uses IP header source and destination fields in the hash calculation. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash ip-protocol enabled

## nv set system forwarding ecmp-hash source-ip

Enables and disables ECMP hashing on the source IP field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash source-ip enabled

## nv set system forwarding ecmp-hash source-port

Enables and disables ECMP hashing on the source port field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-hash source-port enabled

## nv set system forwarding ecmp-weight-normalisation max-hw-weight

Configures the maximum number of hardware entries for weighted ECMP. You can specify a value between 8 and 4096. The default value is 32.

The NVIDIA Spectrum switch supports weight programming for ECMP by repeating each individual path, which consumes resources. To reduce hardware utilization of ECMP resources, you can enable weight normalization.

In Cumulus Linux 5.9 and earlier, the minimum number of hardware entries for weighted ECMP that you can specify is 10 and the maximum number is 255.

### Version History

Introduced in Cumulus Linux 5.7.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-weight-normalisation max-hw-weight 100

## nv set system forwarding ecmp-weight-normalisation mode

Enables (`enabled`) and disables (`disabled`) ECMP weight normalization.

The NVIDIA Spectrum switch supports weight programming for ECMP by repeating each individual path, which consumes resources. To reduce hardware utilization of ECMP resources, you can enable weight normalization.

### Version History

Introduced in Cumulus Linux 5.7.0

### Example

    cumulus@switch:~$ nv set system forwarding ecmp-weight-normalisation mode enabled on

## nv set system forwarding hash-seed

Configures a unique hash seed for each switch to prevent hash polarization, a type of network congestion that occurs when multiple data flows try to reach a switch using the same switch ports.

You can set a hash seed value between 0 and 4294967295. If you do not specify a value, `switchd` creates a randomly generated seed.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding hash-seed 50

## nv set system forwarding host-route-preference

Configures the forwarding host route preference: `route`, `neighbour`, or `route-and-neighbour`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding host-route-preference neighbour

## nv set system forwarding lag-hash

Configures custom hashing to load balance between multiple interfaces that are members of the same bond.

The switch distributes egress traffic through a bond to a slave based on a packet hash calculation, providing load balancing over the slaves; the switch distributes conversation flows over all available slaves to load balance the total traffic. Traffic for a single conversation flow always hashes to the same slave. In a failover event, the switch adjusts the hash calculation to steer traffic over available slaves.

## nv set system forwarding lag-hash destination-ip

Enables and disables lag hashing on the destination IP address field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash destination-ip enabled

## nv set system forwarding lag-hash destination-mac

Enables and disables lag hashing on the destination MAC address field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash destination-mac enabled

## nv set system forwarding lag-hash destination-port

Enables and disables lag hashing on the destination port field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash destination-port enabled

## nv set system forwarding lag-hash ether-type

Enables and disables lag hashing on the ether type field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash ether-type enabled

## nv set system forwarding lag-hash gtp-teid

Enables and disables lag hashing on the GTP TEID field. GTP carries mobile data within the core of the mobile operator’s network. Traffic in the 5G Mobility core cluster, from cell sites to compute nodes, have the same source and destination IP address. The only way to identify individual flows is with the GTP TEID. Enabling GTP hashing adds the TEID as a hash parameter and helps the Cumulus Linux switches in the network to distribute mobile data traffic evenly across ECMP routes.

The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash gtp-teid enabled

## nv set system forwarding lag-hash ip-protocol

Enables and disables lag hashing on the IP protocol field. For IP traffic, the switch uses IP header source and destination fields in the hash calculation. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash ip-protocol enabled

## nv set system forwarding lag-hash source-ip

Enables and disables lag hashing on the source IP address field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash source-ip enabled

## nv set system forwarding lag-hash source-mac

Enables and disables lag hashing on the source MAC address field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash source-mac enabled

## nv set system forwarding lag-hash source-port

Enables and disables lag hashing on the source port field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash source-port enabled

## nv set system forwarding lag-hash vlan

Enables and disables lag hashing on the VLAN ID field. The default setting is `disabled`.

In Cumulus Linux 5.14 and earlier, you specify `on` or `off`.

### Version History

Introduced in Cumulus Linux 5.2.0

### Example

    cumulus@switch:~$ nv set system forwarding lag-hash vlan enabled

## nv set system forwarding profile

Configures the forwarding resource profile: `default`, `l2-heavy`, `l2-heavy-1`, `l2-heavy-3`, `v4-lpm-heavy`, `v4-lpm-heavy-1`, `v6-lpm-heavy`, `v6-lpm-heavy-1`, `ipmc-heavy`, `ipmc-max`, or `lpm-balanced`.

### Version History

Introduced in Cumulus Linux 5.4.0

### Example

    cumulus@switch:~$ nv set system forwarding profile l2-heavy

## nv set system forwarding programming

Configures forwarding programming logging.

## nv set system forwarding programming log-level

Configures the forwarding programming log level: `debug`, `info`, `critical`, `warning`, or `error`. The default log level is `info`.

### Version History

Introduced in Cumulus Linux 5.0.0

### Example

    cumulus@switch:~$ nv set system forwarding programming log-level error

## nv set system forwarding resource-mode

Configures the system forwarding resource mode to be full or half. The default value is `full`.

ISSU requires reboot mode. You must configure the switch in half-resource mode to perform a warm reboot. When the switch operates in half-resource mode, performing a warm reboot (using the `nv action reboot system mode warm` command) results in a hitless upgrade for supported protocols and features.

Forwarding resources apply to hardware TCAM or KVD resources used for MAC addresses, layer 3 neighbors, and LPM (IPv4 and IPv6, unicast and multicast) entries. In half-resource mode these are reduced by 50 percent.

### Version History

Introduced in Cumulus Linux 5.15.0

### Example

    cumulus@switch:~$ nv set system forwarding resource-mode half