Uploaded image for project: 'OpenShift Bugs'
  1. OpenShift Bugs
  2. OCPBUGS-31679

Every new VLAN on OVN localnet requires host reconfiguration

XMLWordPrintable

    • Important
    • None
    • Rejected
    • False
    • Hide

      None

      Show
      None

      Description of problem:
      For every new VLAN referenced in localnet NetworkAttachmentDefinition, a new bridge mapping with a unique localnet name must be configured on hosts, using NodeNetworkConfigurationPolicy.

      IIUIC this limitation is only imposed by OVN Kubernetes. OVN itself would allow us to reference a single localnet name (set on host) from different localnet ports (set on OVN).

      This impacts UX and scalability:

      Without this limitation, admins could simply configure a single mapping (e.g. to br-ex) on day-1, and then any time a new VLAN would be requested, all they need to do is to create a NetworkAttachmentDefinition. With this limitation, every new VLAN requires them to reconfigure host network using nmstate, which is slower and potentially disruptive process.

      With the requirement to have a single mapping per VM, high number of VLANs may cause problems. Customers who use hundreds or thousands of VLANs (e.g. to uniquely mark a Pod, so its traffic can be identified by a DPU), would need to enter thousands of mappings into every host's bridge-mapping database.

      Version-Release number of selected component (if applicable):
      OCP 4.15
       

      How reproducible:
      Always

      Steps to Reproduce:

      1. Configure bridge mapping

      apiVersion: nmstate.io/v1
      kind: NodeNetworkConfigurationPolicy
      metadata:
        name: mapping 
      spec:
        nodeSelector:
          node-role.kubernetes.io/worker: '' 
        desiredState:
          ovn:
            bridge-mappings:
            - localnet: localnet-br-ex 
              bridge: br-ex 
              state: present 
      

      2. Request it from a network

      {
        "cniVersion": "0.3.1",
        "name": "localnet-br-ex",
        "type": "ovn-k8s-cni-overlay",
        "topology":"localnet",
        "vlanID": 100,
        "netAttachDefName": "ns1/localnet-network"
      }
      

      3. Request it from another network with a different VLAN

      {
        "cniVersion": "0.3.1",
        "name": "localnet-br-ex",
        "type": "ovn-k8s-cni-overlay",
        "topology":"localnet",
        "vlanID": 200,
        "netAttachDefName": "ns2/localnet-network"
      }
      

      Actual results:
      It fails, not allowing the user to have two NADs with the same name but different config.

      Expected results:
      It should work. Localnet should be reference through a different attribute other than "name", allowing me to re-use the same mapping name from different VLANs.

      Additional info:
      Please fill in the following template while reporting a bug and provide as much relevant information as possible. Doing so will give us the best chance to find a prompt resolution.

      I would expect to the API to look something like this:

      apiVersion: nmstate.io/v1
      kind: NodeNetworkConfigurationPolicy
      metadata:
        name: mapping 
      spec:
        nodeSelector:
          node-role.kubernetes.io/worker: '' 
        desiredState:
          ovn:
            bridge-mappings:
            - localnet: localnet-br-ex 
              bridge: br-ex 
              state: present 
      
      {
        "cniVersion": "0.3.1",
        "name": "localnet100",
        "type": "ovn-k8s-cni-overlay",
        "topology":"localnet",
        "vlanID": 100,
        "netAttachDefName": "ns1/localnet-network",
        "localnetName": "localnet-br-ex" # <<<< This is new
      }
      
      {
        "cniVersion": "0.3.1",
        "name": "localnet200",
        "type": "ovn-k8s-cni-overlay",
        "topology":"localnet",
        "vlanID": 200,
        "netAttachDefName": "ns2/localnet-network",
        "localnetName": "localnet-br-ex" # <<<< This is new
      }
      

      Affected Platforms:

      Is it an

      1. internal CI failure 
      2. customer issue / SD
      3. internal RedHat testing failure

       

      If it is an internal RedHat testing failure:

      • Please share a kubeconfig or creds to a live cluster for the assignee to debug/troubleshoot along with reproducer steps (specially if it's a telco use case like ICNI, secondary bridges or BM+kubevirt).

       

      If it is a CI failure:

       

      • Did it happen in different CI lanes? If so please provide links to multiple failures with the same error instance
      • Did it happen in both sdn and ovn jobs? If so please provide links to multiple failures with the same error instance
      • Did it happen in other platforms (e.g. aws, azure, gcp, baremetal etc) ? If so please provide links to multiple failures with the same error instance
      • When did the failure start happening? Please provide the UTC timestamp of the networking outage window from a sample failure run
      • If it's a connectivity issue,
      • What is the srcNode, srcIP and srcNamespace and srcPodName?
      • What is the dstNode, dstIP and dstNamespace and dstPodName?
      • What is the traffic path? (examples: pod2pod? pod2external?, pod2svc? pod2Node? etc)

       

      If it is a customer / SD issue:

       

      • Provide enough information in the bug description that Engineering doesn't need to read the entire case history.
      • Don't presume that Engineering has access to Salesforce.
      • Please provide must-gather and sos-report with an exact link to the comment in the support case with the attachment.  The format should be: https://access.redhat.com/support/cases/#/case/<case number>/discussion?attachmentId=<attachment id>
      • Describe what each attachment is intended to demonstrate (failed pods, log errors, OVS issues, etc).  
      • Referring to the attached must-gather, sosreport or other attachment, please provide the following details:
        • If the issue is in a customer namespace then provide a namespace inspect.
        • If it is a connectivity issue:
          • What is the srcNode, srcNamespace, srcPodName and srcPodIP?
          • What is the dstNode, dstNamespace, dstPodName and  dstPodIP?
          • What is the traffic path? (examples: pod2pod? pod2external?, pod2svc? pod2Node? etc)
          • Please provide the UTC timestamp networking outage window from must-gather
          • Please provide tcpdump pcaps taken during the outage filtered based on the above provided src/dst IPs
        • If it is not a connectivity issue:
          • Describe the steps taken so far to analyze the logs from networking components (cluster-network-operator, OVNK, SDN, openvswitch, ovs-configure etc) and the actual component where the issue was seen based on the attached must-gather. Please attach snippets of relevant logs around the window when problem has happened if any.
      • For OCPBUGS in which the issue has been identified, label with "sbr-triaged"
      • For OCPBUGS in which the issue has not been identified and needs Engineering help for root cause, labels with "sbr-untriaged"
      • Note: bugs that do not meet these minimum standards will be closed with label "SDN-Jira-template"

              mduarted@redhat.com Miguel Duarte de Mora Barroso
              phoracek@redhat.com Petr Horacek
              Anurag Saxena Anurag Saxena
              Jacob Tanenbaum
              Votes:
              1 Vote for this issue
              Watchers:
              18 Start watching this issue

                Created:
                Updated: