What can I help you with?
NVIDIA DPDK Documentation MLNX_DPDK_22.11_2310.5.1 LTS

Live Upgrade

To support a transition from one DPDK instance to another instance, we introduce the notion of application mode, being either active or standby. This new capability will allow a shorter traffic downtime and straightforward and easy-to-use upgrade process. The old application may need to be aware of the presence of the new application being prepared. This is achieved through a new API that allows changing the [new] application mode to standby and making it active later.

The active mode (default) means that network offloading configurations are programmed to the hardware immediately, and in this mode the application behavior is the same as before the introduction of these modes. The standby mode means that network offloading configurations are queued in the hardware. If there is no application with active mode, any configuration becomes immediately effective.

For further information, see https://doc.dpdk.org/guides/nics/mlx5.html section 41.4.

The following explains the flow of operations in the old and the new applications:

  1. The device is configured by the old application and is running.

  2. The new application starts probing the same device and sets its mode to standby. The user should configure the new application with the flow rules.

  3. The old application clears the desired flow rules.

  4. The new application resets it as active.

Note

This API is only supported in sw-steering(dv_flow_en=1) with isolation mode enabled. Users should only program and clear the group zero rules. If switchdev mode is enabled, the device argument `fdb_def_rule_en` must be set as zero in both old and new applications.

  1. Configure the application as standby.

    Copy
    Copied!
                

    ret = rte_pmd_mlx5_flow_engine_set_mode(MLX5_FLOW_ENGINE_MODE_STANDBY, 0);  if (ret < 0) { printf("Failed to set the flow engine to standby mode: (%s)\n", strerror(-ret)); return; }

  2. Manipulate the desired flow rules on both new and old applications.

  3. Configure the application as active.

    Copy
    Copied!
                

    ret = rte_pmd_mlx5_flow_engine_set_mode(MLX5_FLOW_ENGINE_MODE_ACTIVE, 0);  if (ret != 0) { printf("Failed to set the flow engine to active mode: %s\n", rte_strerror(-ret)); return; }

© Copyright 2024, NVIDIA. Last updated on Jan 9, 2025.