Uploaded image for project: 'Fast Datapath Product'
  1. Fast Datapath Product
  2. FDP-532

i40e/ice driver: ovs dpdk tunnel does not work well with vxlan and geneve tag on ovs3.3

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Undefined Undefined
    • None
    • None
    • openvswitch3.3
    • None
    • False
    • Hide

      None

      Show
      None
    • False

      Description of problem:

      Version-Release number of selected component (if applicable):
      kernel 427.3.1.el9_4
      openvswitch3.3-3.3.0-2.el9fdp

      How reproducible:

      Steps to Reproduce:
      Run ovs dpdk tunnel performance case with vxlan or geneve
      1. Build ovs dpdk tunnel topo
      Bridge ovsbr2
      datapath_type: netdev
      Port ovsbr2
      Interface ovsbr2
      type: internal
      Port geneve0
      Interface geneve0
      type: geneve
      options:

      {key="100", remote_ip="10.0.100.2"}

      Port vhost0
      Interface vhost0
      type: dpdkvhostuserclient
      options:

      {vhost-server-path="/tmp/vhost0"}

      Bridge ovsbr1
      datapath_type: netdev
      Port ovsbr1
      Interface ovsbr1
      type: internal
      Port dpdk0
      Interface dpdk0
      type: dpdk
      options:

      {dpdk-devargs="0000:07:00.0", n_rxq="1", n_rxq_desc="1024", n_txq_desc="1024"}

      2. add following flows
      ovs-ofctl del-flows ovsbr2
      ovs-ofctl add-flow ovsbr2 'ip,in_port=2,nw_ttl=64 actions=dec_ttl,output:1'
      ovs-ofctl add-flow ovsbr2 'ip,in_port=1,nw_ttl=63 actions=dec_ttl,output:2'

      3. use following xml to start guest

      <domain type='kvm'>
        <name>g1</name>
        <memory unit='KiB'>8388608</memory>
        <currentMemory unit='KiB'>8388608</currentMemory>
        <memoryBacking>
          <hugepages>
            <page size='1048576' unit='KiB'/>
          </hugepages>
          <locked/>
          <access mode='shared'/>
        </memoryBacking>
        <vcpu placement='static'>3</vcpu>
        <cputune>
          <vcpupin vcpu='0' cpuset='4'/>
          <vcpupin vcpu='1' cpuset='30'/>
          <vcpupin vcpu='2' cpuset='2'/>
          <emulatorpin cpuset='0,28'/>
        </cputune>
        <numatune>
          <memory mode='strict' nodeset='0'/>
        </numatune>
        <resource>
          <partition>/machine</partition>
        </resource>
        <os>
          <type arch='x86_64' machine='q35'>hvm</type>
          <boot dev='hd'/>
        </os>
        <features>
          <acpi/>
          <apic/>
          <pmu state='off'/>
          <vmport state='off'/>
          <ioapic driver='qemu'/>
        </features>
        <cpu mode='host-passthrough' check='none'>
          <feature policy='require' name='tsc-deadline'/>
          <numa>
            <cell id='0' cpus='0-2' memory='8388608' unit='KiB' memAccess='shared'/>
          </numa>
        </cpu>
        <clock offset='utc'>
          <timer name='rtc' tickpolicy='catchup'/>
          <timer name='pit' tickpolicy='delay'/>
          <timer name='hpet' present='no'/>
        </clock>
        <on_poweroff>destroy</on_poweroff>
        <on_reboot>restart</on_reboot>
        <on_crash>restart</on_crash>
        <pm>
          <suspend-to-mem enabled='no'/>
          <suspend-to-disk enabled='no'/>
        </pm>
        <devices>
          <emulator>/usr/libexec/qemu-kvm</emulator>
          <disk type='file' device='disk'>
            <driver name='qemu' type='qcow2'/>
            <source file='/var/lib/libvirt/images/g1.qcow2'/>
            <backingStore/>
            <target dev='vda' bus='virtio'/>
            <alias name='virtio-disk0'/>
            <address type='pci' domain='0x0000' bus='0x01' slot='0x00' function='0x0'/>
          </disk>
          <controller type='usb' index='0' model='none'>
            <alias name='usb'/>
          </controller>
          <controller type='pci' index='0' model='pcie-root'>
            <alias name='pcie.0'/>
          </controller>
          <controller type='pci' index='1' model='pcie-root-port'>
            <model name='pcie-root-port'/>
            <target chassis='1' port='0x10'/>
            <alias name='pci.1'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
          </controller>
          <controller type='pci' index='2' model='pcie-root-port'>
            <model name='pcie-root-port'/>
            <target chassis='2' port='0x11'/>
            <alias name='pci.2'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
          </controller>
          <controller type='pci' index='3' model='pcie-root-port'>
            <model name='pcie-root-port'/>
            <target chassis='3' port='0x8'/>
            <alias name='pci.3'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
          </controller>
          <controller type='pci' index='4' model='pcie-root-port'>
            <model name='pcie-root-port'/>
            <target chassis='4' port='0x9'/>
            <alias name='pci.4'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0'/>
          </controller>
          <controller type='pci' index='5' model='pcie-root-port'>
            <model name='pcie-root-port'/>
            <target chassis='5' port='0xa'/>
            <alias name='pci.5'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
          </controller>
          <controller type='pci' index='6' model='pcie-root-port'>
            <model name='pcie-root-port'/>
            <target chassis='6' port='0xb'/>
            <alias name='pci.6'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
          </controller>
          <controller type='sata' index='0'>
            <alias name='ide'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/>
          </controller>
          <interface type='bridge'>
            <mac address='52:54:00:01:02:03'/>
            <source bridge='virbr0'/>
            <model type='virtio'/>
          </interface>
          <interface type='vhostuser'>
            <mac address='00:de:ad:00:00:01'/>
            <source type='unix' path='/tmp/vhost0' mode='server'/>
            <model type='virtio'/>
            <driver name='vhost' queues='1' rx_queue_size='1024' tx_queue_size='1024' iommu='on' ats='on'>
        <host mrg_rxbuf='off'/>
        </driver>
            <address type='pci' domain='0x0000' bus='0x03' slot='0x00' function='0x0'/>
          </interface>
          <serial type='pty'>
            <source path='/dev/pts/1'/>
            <target type='isa-serial' port='0'>
              <model name='isa-serial'/>
            </target>
            <alias name='serial0'/>
          </serial>
          <console type='pty' tty='/dev/pts/1'>
            <source path='/dev/pts/1'/>
            <target type='serial' port='0'/>
            <alias name='serial0'/>
          </console>
          <input type='mouse' bus='ps2'>
            <alias name='input0'/>
          </input>
          <input type='keyboard' bus='ps2'>
            <alias name='input1'/>
          </input>
          <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'>
            <listen type='address' address='0.0.0.0'/>
          </graphics>
          <video>
            <model type='cirrus' vram='16384' heads='1' primary='yes'/>
            <alias name='video0'/>
            <address type='pci' domain='0x0000' bus='0x05' slot='0x00' function='0x0'/>
          </video>
          <memballoon model='virtio'>
            <alias name='balloon0'/>
            <address type='pci' domain='0x0000' bus='0x06' slot='0x00' function='0x0'/>
          </memballoon>
          <iommu model='intel'>
            <driver intremap='on' caching_mode='on' iotlb='on'/>
          </iommu>
        </devices>
        <seclabel type='dynamic' model='selinux' relabel='yes'/>
      </domain>
      
      

      4. start testpmd inside guest
      dpdk-testpmd -l 0-2 -n 1 --socket-mem 1024 – -i --port-topology=chained --forward-mode=macswap --burst=64 --rxd=512 --txd=512 --max-pkt-len=9600 --mbuf-size=9728 --nb-cores=2 --rxq=1 --txq=1 --mbcache=512 --auto-start
      5. send trex traffic

      Actual results:
      It cannot got result for ovs dpdk vxlan and geneve tunnel performance case.
      https://beaker.engineering.redhat.com/jobs/9051052
      It also cannot work for ovs dpdk vxlan and geneve function case.
      https://beaker.engineering.redhat.com/jobs/9051353
      It can got result for ovs dpdk gre tunnel performance case.
      The vxlan and geneve tunnel case work well on ovs3.2 and ovs3.1, just not work well on ovs3.3.

      Expected results:
      It can got normal result for ovs dpdk vxlan and geneve tunnel performance case.
      It can work well for ovs dpdk vxlan and geneve function case.

              rh-ee-mpattric Mike Pattrick
              tli@redhat.com Ting Li
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated:
                Resolved: