Cni

From NFVwiki

1 Registration information

Name cni
Category Network
Permitted values Per schema
Version 1.0
Schema See below
Type Generic
Description This capability represents the realization of a secondary container cluster network interface. The expression of the related requirements allows the selection of a suitable CNITM and configuration of the Network Attachment Definition (NAD) or NADs accordingly.

2 JSON schema

cni
{

  "$schema": "http://json-schema.org/draft-07/schema#",

  "title": "cni",

  "description": "Realization of a secondary container cluster network interface",

  "additionalProperties": false,

  "required": [

     "interfaceType"

  ],

  "type": "object",

  "properties": {

    "interfaceType": {

      "type": "string",

      "enum": [

        "kernel.netdev",

        "direct.userspace",

        "direct.kernel",

        "bond",

        "userspace"

      ],           

      "description": "Type of network interface"

    },

    "nicOptions": {

      "type": "array",

      "items": {

        "type": "object",

        "properties": {

          "nicType": {

            "type": "string",

            "enum": [ "i710", "e810", "mlx-cx5", "mlx-cx6"],

            "description": "Nic types the driver is verified to work with in a direct.userspace interface."

          },

          "speeds": {

            "type": "array",

            "items": {

              "type": "integer"

            },

            "description": "List of speeds in bps the driver is verified to work with in a direct.userspace, direct.kernel or bond interface. If nicType is present, the speeds are applicable to that nicType."

          },

        },  

        "minProperties": 1

      },  

      "description": "For direct.userdriver interface nic types and/or speeds the driver is verified to work with. For direct.kernel and bond speeds the driver is verified to work with"

    },

    "interfaceOptions": {

     "type": "array",

      "items": {

        "type": "string",

        "enum": [ "memif", "virtio"]

      },      

      "description": "For userspace vnic configurations the network interface is verified to work with "

    },

    "interfaceRedundancy": {

      "type": "string",

      "enum": [ "infraProvided", "left", "right", "activeActiveBond", "activePassiveBond", "activeActiveL3" ],

      "description": " Switchplane redundancy management method "

    }

  },

  "allOf": [

    {

     "if": {

       "properties": {

           "interfaceType": {

             "enum": [ "direct.userspace", "direct.kernel" ]

            }

         }

       },

       "then": {

         "required": ["interfaceRedundancy" ],

         "properties": {

           "interfaceRedundancy": {

             "enum": [ "activePassiveBond", "activeActiveBond", "activePassiveL3", "Left", "Right", "infraProvided" ]

          }

         }

      }

    },

    {

       "if": {

         "properties": {

           "interfaceType": {

             "enum": ["kernel.netdev", "userspace" ]

            }

         }

     },

      "then": {

        "properties": {

          "interfaceRedundancy": {

            "enum": ["infraProvided" ],

            "default": "infraProvided"

          }       

        }

      }

     },

    {  

       "if": {

         "properties": {

           "interfaceType": {

             "enum": ["bond"]

            }

         }

     },  

     "then": {

         "required": ["interfaceRedundancy" ],

         "properties": {

           "interfaceRedundancy": {

           "enum": ["activePassiveBond", "activeActiveBond" ]

         }

       }

      }

    }

  ]   } 

3 Detailed description

The interfaceType can take one of the following values:

kernel.netdev Linux kernel or vSwitch based. It is supported by CNIsTM like: OVS, MACVLAN, IPVLAN, BRIDGE, PTP, etc.
direct.userspace Provides direct access to network PCIe, typically an SR-IOV VF, but could also be a PF. Uses application specific driver contained in the image. The device is bound to a driver by the cloud provider which supports user space control by the application (e.g. vfio_pci, igb_uio). It is supported by the following CNIsTM: SRIOV, HOST-DEVICE.
direct.kernel Similar to direct.userspace but device is bound to a kernel driver by the cloud provider and can be consumed in the same way as a kernel netdev. It is supported by the following CNIsTM: SRIOV, HOST-DEVICE.
bond Based on the BOND CNITM. Requires the existence of a mated pair of direct kernel network attachments prior to the creation of the bond. Thus, when this interface type is indicated, three attachments definitions to the secondary container cluster network are expected: two providing the direct kerneldriver  functionality and one with the BOND CNITM
userspace Based on the userspace CNITM. requires infrastructure to support a DPDK-OVS or VPP based vSwitch.

The nicOptions can take one of the following values:

e710 Intel® Corporation Ethernet Controller 710 product family.
e810 Intel® Corporation Ethernet Controller E810 product family.
mlx-cx5 NVIDIA® Mellanox® ConnectX®-5 adapters product family.
mlx-cx6 NVIDIA® Mellanox® ConnectX®-6 adapters product family.