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

i40e/ice driver: ping ipv6 failed inside guest when two vfs add to ovs bridge

XMLWordPrintable

    • False
    • Hide

      None

      Show
      None
    • False
    • rhel-sst-network-fastdatapath
    • ssg_networking

      Description of problem:

      Version-Release number of selected component (if applicable):
      5.14.0-427.el9.x86_64
      openvswitch2.17-2.17.0-126.el9fdp.x86_64

      openvswitch3.2-3.2.0-40.el9fdp

      How reproducible:

      Steps to Reproduce:
      #create two vfs for enp4s0f0
      6: enp4s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
          link/ether 3c:fd:fe:ad:bf:c4 brd ff:ff:ff:ff:ff:ff
          vf 0     link/ether 52:54:00:11:8f:e9 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
          vf 1     link/ether 52:54:00:11:8f:e8 brd ff:ff:ff:ff:ff:ff, spoof checking on, link-state auto, trust off
      #create ovs bridge and add the two vfs to the ovsbr0
      ovs-vsctl add-br ovsbr0
      ovs-vsctl add-port ovsbr0 enp4s0f0v0
      ovs-vsctl add-port ovsbr0 enp4s0f0v1
      #start two guests, master4 and master5

      [root@dell-per730-53 ~]# virsh dumpxml master4
      <domain type='kvm' id='1'>
        <name>master4</name>
        <uuid>37425e76-af6a-44a6-aba0-73434afe34c2</uuid>
        <memory unit='KiB'>8388608</memory>
        <currentMemory unit='KiB'>8388608</currentMemory>
        <memoryBacking>
          <hugepages>
            <page size='1048576' unit='KiB' nodeset='0'/>
          </hugepages>
          <access mode='shared'/>
        </memoryBacking>
        <vcpu placement='static'>3</vcpu>
        <cputune>
          <vcpupin vcpu='0' cpuset='0'/>
          <vcpupin vcpu='1' cpuset='1'/>
          <vcpupin vcpu='2' cpuset='2'/>
          <emulatorpin cpuset='1'/>
        </cputune>
        <resource>
          <partition>/machine</partition>
        </resource>
        <os>
          <type arch='x86_64' machine='pc-q35-rhel9.4.0'>hvm</type>
          <boot dev='hd'/>
        </os>
        <features>
          <acpi/>
          <apic/>
        </features>
        <cpu mode='host-passthrough' check='none' migratable='on'>
          <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/master4.qcow2' index='1'/>
            <backingStore/>
            <target dev='vda' bus='virtio'/>
            <alias name='virtio-disk0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
          </disk>
          <controller type='usb' index='0' model='ich9-ehci1'>
            <alias name='usb'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
          </controller>
          <controller type='usb' index='0' model='ich9-uhci1'>
            <alias name='usb'/>
            <master startport='0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
          </controller>
          <controller type='usb' index='0' model='ich9-uhci2'>
            <alias name='usb'/>
            <master startport='2'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
          </controller>
          <controller type='usb' index='0' model='ich9-uhci3'>
            <alias name='usb'/>
            <master startport='4'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
          </controller>
          <controller type='pci' index='0' model='pcie-root'>
            <alias name='pcie.0'/>
          </controller>
          <controller type='virtio-serial' index='0'>
            <alias name='virtio-serial0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x04' 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:11:8f:e9'/>
            <source bridge='ovsbr0'/>
            <virtualport type='openvswitch'>
              <parameters interfaceid='f54fd445-25b0-4231-8ea7-b83f2a1f8df2'/>
            </virtualport>
            <target dev='tap0'/>
            <model type='virtio'/>
            <alias name='net0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
          </interface>
          <interface type='bridge'>
            <mac address='52:54:00:bb:63:7b'/>
            <source bridge='virbr0'/>
            <target dev='vnet0'/>
            <model type='virtio'/>
            <alias name='net1'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
          </interface>
          <serial type='pty'>
            <source path='/dev/pts/0'/>
            <target type='isa-serial' port='0'>
              <model name='isa-serial'/>
            </target>
            <alias name='serial0'/>
          </serial>
          <console type='pty' tty='/dev/pts/0'>
            <source path='/dev/pts/0'/>
            <target type='serial' port='0'/>
            <alias name='serial0'/>
          </console>
          <channel type='unix'>
            <source mode='bind' path='/run/libvirt/qemu/channel/1-master4/org.qemu.guest_agent.0'/>
            <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
            <alias name='channel0'/>
            <address type='virtio-serial' controller='0' bus='0' port='1'/>
          </channel>
          <input type='tablet' bus='usb'>
            <alias name='input0'/>
            <address type='usb' bus='0' port='1'/>
          </input>
          <input type='mouse' bus='ps2'>
            <alias name='input1'/>
          </input>
          <input type='keyboard' bus='ps2'>
            <alias name='input2'/>
          </input>
          <graphics type='vnc' port='5900' autoport='yes' listen='0.0.0.0'>
            <listen type='address' address='0.0.0.0'/>
          </graphics>
          <audio id='1' type='none'/>
          <video>
            <model type='cirrus' vram='16384' heads='1' primary='yes'/>
            <alias name='video0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
          </video>
          <watchdog model='itco' action='reset'>
            <alias name='watchdog0'/>
          </watchdog>
          <memballoon model='virtio'>
            <alias name='balloon0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
          </memballoon>
        </devices>
        <seclabel type='dynamic' model='selinux' relabel='yes'>
          <label>system_u:system_r:svirt_t:s0:c331,c1021</label>
          <imagelabel>system_u:object_r:svirt_image_t:s0:c331,c1021</imagelabel>
        </seclabel>
        <seclabel type='dynamic' model='dac' relabel='yes'>
          <label>+107:+984</label>
          <imagelabel>+107:+984</imagelabel>
        </seclabel>
      </domain> 
      [root@dell-per730-53 ~]# virsh dumpxml master5
      <domain type='kvm' id='2'>
        <name>master5</name>
        <uuid>37425e76-af6a-44a6-aba0-73434afe34c3</uuid>
        <memory unit='KiB'>8388608</memory>
        <currentMemory unit='KiB'>8388608</currentMemory>
        <memoryBacking>
          <hugepages>
            <page size='1048576' unit='KiB' nodeset='0'/>
          </hugepages>
          <access mode='shared'/>
        </memoryBacking>
        <vcpu placement='static'>3</vcpu>
        <cputune>
          <vcpupin vcpu='0' cpuset='3'/>
          <vcpupin vcpu='1' cpuset='4'/>
          <vcpupin vcpu='2' cpuset='5'/>
          <emulatorpin cpuset='6'/>
        </cputune>
        <resource>
          <partition>/machine</partition>
        </resource>
        <os>
          <type arch='x86_64' machine='pc-q35-rhel9.4.0'>hvm</type>
          <boot dev='hd'/>
        </os>
        <features>
          <acpi/>
          <apic/>
        </features>
        <cpu mode='host-passthrough' check='none' migratable='on'>
          <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/master5.qcow2' index='1'/>
            <backingStore/>
            <target dev='vda' bus='virtio'/>
            <alias name='virtio-disk0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
          </disk>
          <controller type='usb' index='0' model='ich9-ehci1'>
            <alias name='usb'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x7'/>
          </controller>
          <controller type='usb' index='0' model='ich9-uhci1'>
            <alias name='usb'/>
            <master startport='0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x0' multifunction='on'/>
          </controller>
          <controller type='usb' index='0' model='ich9-uhci2'>
            <alias name='usb'/>
            <master startport='2'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x1'/>
          </controller>
          <controller type='usb' index='0' model='ich9-uhci3'>
            <alias name='usb'/>
            <master startport='4'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x05' function='0x2'/>
          </controller>
          <controller type='pci' index='0' model='pcie-root'>
            <alias name='pcie.0'/>
          </controller>
          <controller type='virtio-serial' index='0'>
            <alias name='virtio-serial0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x04' 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:11:8f:e8'/>
            <source bridge='ovsbr0'/>
            <virtualport type='openvswitch'>
              <parameters interfaceid='f54fd445-25b0-4231-8ea7-b83f2a1f8df2'/>
            </virtualport>
            <target dev='tap1'/>
            <model type='virtio'/>
            <alias name='net0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/>
          </interface>
          <interface type='bridge'>
            <mac address='52:54:00:bb:63:7a'/>
            <source bridge='virbr0'/>
            <target dev='vnet1'/>
            <model type='virtio'/>
            <alias name='net1'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x03' 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>
          <channel type='unix'>
            <source mode='bind' path='/run/libvirt/qemu/channel/2-master5/org.qemu.guest_agent.0'/>
            <target type='virtio' name='org.qemu.guest_agent.0' state='connected'/>
            <alias name='channel0'/>
            <address type='virtio-serial' controller='0' bus='0' port='1'/>
          </channel>
          <input type='tablet' bus='usb'>
            <alias name='input0'/>
            <address type='usb' bus='0' port='1'/>
          </input>
          <input type='mouse' bus='ps2'>
            <alias name='input1'/>
          </input>
          <input type='keyboard' bus='ps2'>
            <alias name='input2'/>
          </input>
          <graphics type='vnc' port='5901' autoport='yes' listen='0.0.0.0'>
            <listen type='address' address='0.0.0.0'/>
          </graphics>
          <audio id='1' type='none'/>
          <video>
            <model type='cirrus' vram='16384' heads='1' primary='yes'/>
            <alias name='video0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
          </video>
          <watchdog model='itco' action='reset'>
            <alias name='watchdog0'/>
          </watchdog>
          <memballoon model='virtio'>
            <alias name='balloon0'/>
            <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/>
          </memballoon>
        </devices>
        <seclabel type='dynamic' model='selinux' relabel='yes'>
          <label>system_u:system_r:svirt_t:s0:c27,c681</label>
          <imagelabel>system_u:object_r:svirt_image_t:s0:c27,c681</imagelabel>
        </seclabel>
        <seclabel type='dynamic' model='dac' relabel='yes'>
          <label>+107:+984</label>
          <imagelabel>+107:+984</imagelabel>
        </seclabel>
      </domain> 

      #create the open flows.
       ovs-ofctl del-flows ovsbr0
       ovs-ofctl add-flow ovsbr0 in_port=enp4s0f0v0,actions=output:tap0
       ovs-ofctl add-flow ovsbr0 in_port=enp4s0f0v1,actions=output:tap1
       ovs-ofctl add-flow ovsbr0 in_port=tap0,actions=output:enp4s0f0v0
       ovs-ofctl add-flow ovsbr0 in_port=tap1,actions=output:enp4s0f0v1
      [root@dell-per730-53 ~]# ovs-ofctl dump-flows ovsbr0
       cookie=0x0, duration=48188.475s, table=0, n_packets=6117, n_bytes=2032804, in_port=enp4s0f0v0 actions=output:tap0
       cookie=0x0, duration=48188.471s, table=0, n_packets=6047, n_bytes=2013054, in_port=enp4s0f0v1 actions=output:tap1
       cookie=0x0, duration=48188.468s, table=0, n_packets=14358442, n_bytes=21016444996, in_port=tap0 actions=output:enp4s0f0v0
       cookie=0x0, duration=48188.464s, table=0, n_packets=20731160, n_bytes=30344415124, in_port=tap1 actions=output:enp4s0f0v1

       #inside master5, configure the ipv4 and ipv6 address
       [root@dell-per730-53 ~]# virsh console master5
      Connected to domain 'master5'
      Escape character is ^] (Ctrl + ])

      [root@localhost ~]# ip a
      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
          inet 127.0.0.1/8 scope host lo
             valid_lft forever preferred_lft forever
          inet6 ::1/128 scope host 
             valid_lft forever preferred_lft forever
      2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether 52:54:00:bb:63:7a brd ff:ff:ff:ff:ff:ff
          inet 192.168.122.137/24 brd 192.168.122.255 scope global dynamic noprefixroute enp0s3
             valid_lft 2295sec preferred_lft 2295sec
          inet6 fe80::a258:86b1:da2d:91da/64 scope link noprefixroute 
             valid_lft forever preferred_lft forever
      3: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether 52:54:00:11:8f:e8 brd ff:ff:ff:ff:ff:ff
          inet 20.0.0.3/24 scope global enp0s9
             valid_lft forever preferred_lft forever
          inet6 2001:5c0:9168::3/64 scope global 
             valid_lft forever preferred_lft forever

      #inside master4, configure the ipv4 and ipv6 address
      [root@dell-per730-53 ~]# virsh console master4
      Connected to domain 'master4'
      Escape character is ^] (Ctrl + ])

      [root@localhost ~]# ip a
      1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
          link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
          inet 127.0.0.1/8 scope host lo
             valid_lft forever preferred_lft forever
          inet6 ::1/128 scope host 
             valid_lft forever preferred_lft forever
      2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether 52:54:00:bb:63:7b brd ff:ff:ff:ff:ff:ff
          inet 192.168.122.138/24 brd 192.168.122.255 scope global dynamic noprefixroute enp0s3
             valid_lft 2005sec preferred_lft 2005sec
          inet6 fe80::ff7c:5368:4979:55f6/64 scope link noprefixroute 
             valid_lft forever preferred_lft forever
      3: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
          link/ether 52:54:00:11:8f:e9 brd ff:ff:ff:ff:ff:ff
          inet 20.0.0.2/24 scope global enp0s9
             valid_lft forever preferred_lft forever
          inet6 2001:5c0:9168::2/64 scope global 
             valid_lft forever preferred_lft forever

       #inside guest5, ping the ipv4 and ipv6 of guest4
       [root@localhost ~]# ping 20.0.0.2
      PING 20.0.0.2 (20.0.0.2) 56(84) bytes of data.
      64 bytes from 20.0.0.2: icmp_seq=1 ttl=64 time=0.238 ms
      64 bytes from 20.0.0.2: icmp_seq=2 ttl=64 time=0.099 ms

      — 20.0.0.2 ping statistics —
      2 packets transmitted, 2 received, 0% packet loss, time 1001ms
      rtt min/avg/max/mdev = 0.099/0.168/0.238/0.069 ms
      [root@localhost ~]# ping6 2001:5c0:9168::2
      PING 2001:5c0:9168::2(2001:5c0:9168::2) 56 data bytes
      From 2001:5c0:9168::3 icmp_seq=1 Destination unreachable: Address unreachable
      From 2001:5c0:9168::3 icmp_seq=2 Destination unreachable: Address unreachable
      From 2001:5c0:9168::3 icmp_seq=3 Destination unreachable: Address unreachable

      — 2001:5c0:9168::2 ping statistics —
      4 packets transmitted, 0 received, +3 errors, 100% packet loss, time 3060ms

      Actual results:
      It can ping ipv4 address successfully, but ping ipv6 address failed

      It exist on ice, i40e driver.

      Expected results:
      It can ping ipv6 address successfully.

              ktraynor@redhat.com Kevin Traynor (Inactive)
              tli@redhat.com Ting Li
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

                Created:
                Updated: