Hoi,

On Thu, Dec 22, 2022 at 4:08 PM Matthew Smith via lists.fd.io <mgsmith=
netgate....@lists.fd.io> wrote:

>
> On Thu, Dec 22, 2022 at 7:09 AM Petr Boltík <petr.bol...@gmail.com> wrote:
>
>>
>> - To make "plugin linux_nl_plugin.so" working, you need to run VPP inside
>> netns dataplane (same as bird). This can be done by editing VPP systemd
>> startup file (add something like "
>> NetworkNamespacePath=/var/run/netns/dataplane" ) and ensuring that netns
>> "dataplane" will be started first.
>>
>
> I run VPP in the default netns and use FRR & iproute2 in the dataplane
> netns and it works fine. I test this regularly on AWS, Azure, KVM, and bare
> metal. I don't set the netns with vppctl CLI commands though, I set it in
> startup.conf with 'linux-cp { default netns dataplane }'. I will look into
> whether something is broken with the CLI command.
>
I run VPP in default netns and Bird2 & iproute2 in the dataplane netns. I
set default netns dataplane in startup.conf also.

I think OP has a different problem, because I do see their netlink messages
arriving otherwise. One test that you can do, is in the network namespace,
change the link attribute (like ip link set <dev> mtu 1500; or ip link set
<dev> up; or down; and then see if 'vppctl show int' reflects that change.
That would demonstrate that end-to-end, netlink messages are arriving from
the dataplane netns, through kernel, through linux_nl plugin and finally
into the dataplane.

One plausible explanation for the behavior is that linux_nl starts the
netlink listener immediately, based on startup.conf, and it does not change
its mind when you specify 'lcp netns default' on the CLI, in other words:
it will only listen to one namespace, namely the one it found when it
started up. I think this is OP's issue, and if so, then 'lcp netns' is
broken in linux-cp, it can never work, and actually should be considered
harmful because there will only be one netns listened to, so changing it
midflight will give erratic results. The same is true for the 'netns'
argument to lcp create -- the only place where linux_nl will ever pick up
netlink messages is in the very first namespace it started in, as specified
in startup.conf.

As a point of comparison - lcpng will start a netlink listener *once the
first LIP is created*; which is why it will start the listener in either
what was setup in startup.conf, or what it changed to with 'lcp default
netns', to any value set before the very first interface pair is created.
'lcp default netns' works there, but as with linux_nl, if any LIP is
created in a netns other than the initial one which has the (one and only)
netlink listener in it), it will give unexpected results.

I think we should:
- remove lcp netns default from CLI
- remove changing the netns from API
- force use of only startup.conf to start the netlink listener in that, and
only that, network namespace.

Thoughts ?

--
Pim van Pelt <p...@ipng.nl>
PBVP1-RIPE - http://www.ipng.nl/
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#22371): https://lists.fd.io/g/vpp-dev/message/22371
Mute This Topic: https://lists.fd.io/mt/95817807/21656
Group Owner: vpp-dev+ow...@lists.fd.io
Unsubscribe: https://lists.fd.io/g/vpp-dev/leave/1480452/21656/631435203/xyzzy 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to