Frode,

Thanks for the great information .  What are your thoughts regarding having
an ability to view the port_table from an ovn-appctl command ?  I think
this would be helpful to troubleshoot issues when plugging / unplugging
representor devices from the integration bridge ?

Gav

On Thu, 22 Dec 2022 at 19:46, Frode Nordahl <frode.nord...@canonical.com>
wrote:

> On Wed, Dec 21, 2022 at 4:08 PM Gavin McKee <gavmcke...@googlemail.com>
> wrote:
> >
> > Hi Frode,
> >
> > Thanks for your email and for taking the time to look at this.
>
> You're very welcome, thank you for collecting more information.
>
> > Kernel version
> >
> > root@usc01a-032-16a:/home/gmckee# uname -r
> > 5.15.0-53-generic
>
> At that kernel version the `hw_addr` attribute is available, however
> as discussed below this does not help us for the non-DPU use case.
>
> > Output from the devlink port does not show a hw_addr on the physical
> port .
> >
> > root@usc01a-032-16a:/home/gmckee# devlink port
> > pci/0000:07:00.0/65535: type eth netdev enp7s0f0 flavour physical port 0
> splittable false
> > pci/0000:07:00.0/1: type eth netdev enp7s0f0_0 flavour pcivf controller
> 0 pfnum 0 vfnum 0 external false splittable false
> >   function:
> >     hw_addr 10:70:fd:ab:cd:01
> > pci/0000:07:00.0/2: type eth netdev enp7s0f0_1 flavour pcivf controller
> 0 pfnum 0 vfnum 1 external false splittable false
> >   function:
> >     hw_addr 10:70:fd:ab:cd:02
> > pci/0000:07:00.0/3: type eth netdev enp7s0f0_2 flavour pcivf controller
> 0 pfnum 0 vfnum 2 external false splittable false
> >   function:
> >     hw_addr 10:70:fd:ab:cd:03
> > pci/0000:07:00.0/4: type eth netdev enp7s0f0_3 flavour pcivf controller
> 0 pfnum 0 vfnum 3 external false splittable false
> >   function:
> >     hw_addr 10:70:fd:ab:cd:04
> > pci/0000:07:00.0/5: type eth netdev enp7s0f0_4 flavour pcivf controller
> 0 pfnum 0 vfnum 4 external false splittable false
> >   function:
> >     hw_addr 10:70:fd:e2:44:44
> > pci/0000:07:00.0/6: type eth netdev enp7s0f0_5 flavour pcivf controller
> 0 pfnum 0 vfnum 5 external false splittable false
> >   function:
> >     hw_addr 10:70:fd:e2:a3:02
> > pci/0000:07:00.1/131071: type eth netdev enp7s0f1 flavour physical port
> 1 splittable false
> > pci/0000:07:00.3/196608: type eth netdev enp7s0f0v1 flavour virtual
> splittable false
> > pci/0000:07:00.4/262144: type eth netdev enp7s0f0v2 flavour virtual
> splittable false
> >
> > Log messages below
> >
> > root@usc01a-032-16a:/home/gmckee# ovn-controller
> > 2022-12-20T21:42:02Z|00001|vif_plug_representor|WARN|attempt to add
> function before having knowledge about PF
>
> [ snip ]
>
> The representor plugin currently assumes the presence of PCI_PF
> flavoured ports and uses them to correlate to which PF each PCI_VF
> port belongs. When the ovn-controller runs on the SmartNIC DPU side of
> a PCI complex, these ports represent resources presented to the host
> side of the PCI complex.
>
> When using an accelerator card that exposes the physical ports and the
> embedded switch to the host system there will be no PCI_PF ports. The
> devlink-port infrastructure is still useful in this topology because
> it can provide a unified way of managing subfunctions [2].
>
> I guess we could try to find a way to detect this mode of operation,
> or introduce an option, and then use some other method to correlate
> the resources.
>
> At the point in time where the message is logged [3], there is a lot
> of information available, so we just need to find a light weight and
> compatible way of doing it.
>
> 2:
> https://legacy.netdevconf.info/0x14/pub/papers/45/0x14-paper45-talk-paper.pdf
> 3:
> https://github.com/ovn-org/ovn-vif/blob/ce1a36f300a74b4eae55a7fec7d18da8b9218e29/lib/vif-plug-providers/representor/vif-plug-representor.c#L321-L328
>
> --
> Frode Nordahl
>
> > On Wed, 21 Dec 2022 at 02:50, Frode Nordahl <frode.nord...@canonical.com>
> wrote:
> >>
> >> Hello, Gavin,
> >>
> >> Thank you for your interest in the vif plug infrastructure and the
> representor port plugin. See replies inline below.
> >>
> >> tir. 20. des. 2022, 19:29 skrev Gavin McKee via discuss <
> ovs-discuss@openvswitch.org>:
> >>>
> >>> Hi,
> >>>
> >>> We are hoping someone can help with the following error message.
> >>>
> >>> Here we add the required options to the logical switch port in OVN
> North
> >>> ovn-nbctl lsp-set-options c1-sw0-p1 requested-chassis=usc01a-032-16a
> vif-plug-type=representor vif-plug:representor:pf-mac=10:70:fd:df:9c:3a
> vif-plug:representor:vf-num=4
> >>>
> >>> When I check the ovn-controller log on the hypervisor I see the
> following error message:
> >>> 2022-12-20T18:24:42.815Z|00108|vif_plug|INFO|Not plugging lport
> c1-sw0-p1 on direction from VIF plug provider.
> >>> 2022-12-20T18:24:47.816Z|00109|vif_plug_representor|INFO|No
> representor port found for lport: c1-sw0-p1 pf-mac: '10:70:fd:df:9c:3a'
> vf-num: '4'
> >>>
> >>> Here is the information for the Mellanox Connect X6 card we are using
> , you can see the mac on the physical interface is defined in the entry
> vif-plug:representor:pf-mac=10:70:fd:df:9c:3a
> >>> ```
> >>> root@usc01a-032-16a:/home/gmckee# ip link show enp7s0f0
> >>> 14: enp7s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9214 qdisc mq
> master ovs-system state UP mode DEFAULT group default qlen 1000
> >>>     link/ether 10:70:fd:df:9c:3a brd ff:ff:ff:ff:ff:ff
> >>>     vf 0     link/ether 10:70:fd:ab:cd:01 brd ff:ff:ff:ff:ff:ff, spoof
> checking off, link-state disable, trust off, query_rss off
> >>>     vf 1     link/ether 10:70:fd:ab:cd:02 brd ff:ff:ff:ff:ff:ff, spoof
> checking off, link-state disable, trust off, query_rss off
> >>>     vf 2     link/ether 10:70:fd:ab:cd:03 brd ff:ff:ff:ff:ff:ff, spoof
> checking off, link-state disable, trust off, query_rss off
> >>>     vf 3     link/ether 10:70:fd:ab:cd:04 brd ff:ff:ff:ff:ff:ff, spoof
> checking off, link-state disable, trust off, query_rss off
> >>>     vf 4     link/ether 10:70:fd:e2:44:44 brd ff:ff:ff:ff:ff:ff, spoof
> checking off, link-state disable, trust off, query_rss off
> >>>     vf 5     link/ether 10:70:fd:e2:a3:02 brd ff:ff:ff:ff:ff:ff, spoof
> checking off, link-state disable, trust off, query_rss off
> >>>     altname enp7s0f0np0
> >>> ```
> >>>
> >>> The representor information is as follows
> >>>
> >>> root@usc01a-032-16a:/home/gmckee# ip link show enp7s0f0_4
> >>> 32: enp7s0f0_4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq
> state UP mode DEFAULT group default qlen 1000
> >>>     link/ether ae:4e:85:a3:83:22 brd ff:ff:ff:ff:ff:ff
> >>>     altname enp7s0f0npf0vf4
> >>>
> >>>
> >>> the virtual function has already been assigned to a KVM VM.
> >>>
> >>> Any help is greatly appreciated .
> >>
> >>
> >> The representor plugin was developed for and tested with a SmartNIC
> DPU, which behaves slightly different than a system where the embedded
> switch is exposed to the host system.
> >>
> >> Having said that, it was developed using generic interfaces, such as
> devlink-port [0], so we should be able to make it work.
> >>
> >> The representor plugin looks up the representor by combining
> information about PF MAC (`hw_addr`) and VF number from devlink [2], a
> recent kernel version is required to expose the `hw_addr` attribute.
> >>
> >> A few questions:
> >> Do you see any other messages logged from the vif_plug_representor
> module?
> >>
> >> What kernel version is in use?
> >>
> >> Does the `hw_addr` show up for the PCI_PF flavoured port in `devlink
> port show`?
> >>
> >> 0:
> https://www.kernel.org/doc/html/latest/networking/devlink/devlink-port.html
> >> 1:
> https://github.com/ovn-org/ovn-vif/blob/ce1a36f300a74b4eae55a7fec7d18da8b9218e29/lib/vif-plug-providers/representor/vif-plug-representor.c#L407-L469
> >>
> >> --
> >> Frode Nordahl
> >>
> >>>
> >>> Gav
> >>>
> >>> _______________________________________________
> >>> discuss mailing list
> >>> disc...@openvswitch.org
> >>> https://mail.openvswitch.org/mailman/listinfo/ovs-discuss
>
_______________________________________________
discuss mailing list
disc...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss

Reply via email to