Hoi,

I fixed a few issues with the plugin, notably its (in)ability to handle
BondEthernet and other non-physical interfaces, and a few issues on
operating virtio/netlink devices in alternate namespaces:
- [patchset 10](https://gerrit.fd.io/r/c/vpp/+/33481/9..10) makes netlink
operations correctly work for interfaces in namespaces
- [patchset 13](https://gerrit.fd.io/r/c/vpp/+/33481/12..13) fixes a bug in
find_outer_vlan() which was traversing hw interfaces, while it should be
traversing sw interfaces

This gerrit change is now ready for review, and in case you're interested
to see where I'm headed:
task 2) mirroring VPP interface changes to Linux: Done,
https://ipng.ch/s/articles/2021/08/13/vpp-2.html
task 3) auto-creating sub-interfaces in Linux based on a config flag: Done,
https://ipng.ch/s/articles/2021/08/15/vpp-3.html

task 4) by far the most complex, is left todo, but I'd like to start work
on it once we've reached consensus and merge the first three sets of
changes..

groet,
Pim

On Thu, Aug 12, 2021 at 10:42 PM Pim van Pelt <p...@ipng.nl> wrote:

> Hoi,
>
> I've been playing around with the Linux CP plugin, and realized that it
> can only create untagged, and dot1q tagged interfaces, but not other types
> of interfaces (dot1ad, q-in-ad, and q-in-q). There were also some API
> gotchas that provoked crashes. I spent a few days extending it to support
> all types of interfaces, and just submitted
> https://gerrit.fd.io/r/c/vpp/+/33481/ which, pending unit and functional
> testing from jenkins, could use some review.
>
> I documented my journey in
> https://ipng.ch/s/articles/2021/08/12/vpp-1.html which explains my test
> setup, my results with the plugin that ships with 21.06, and the patches I
> propose:
> *   [[patchset 3](https://gerrit.fd.io/r/c/vpp/+/33481/2..3)] Initialize
> the link state of the VPP interface, not unconditionally set it to 'down'.
> Initialize the MTU of the VPP interface into the TAP, do not assume it is
> the VPP default of 9000; if the MTU is not known, assume the TAP has 9216,
> the largest possible on ethernet.
> *   [[patchset 4](https://gerrit.fd.io/r/c/vpp/+/33481/3..4)] changed the
> behavior to explicitly reject sub-interfaces that are not exact-match, they
> are not routable (fixes a crash)
> *   [[patchset 5](https://gerrit.fd.io/r/c/vpp/+/33481/4..5)] makes the
> plugin aware of dot1ad. Without this change, the plugin would create the
> interface, but it would invariably create it as .1q on the linux side.
> *   [[patchset 6](https://gerrit.fd.io/r/c/vpp/+/33481/5..6)] allows the
> plugin to create QinQ and QinAD interfaces, by looking up the linux
> intermediary interface and creating the netlink child on that one, not the
> phy.
> *   [[patchset 7](https://gerrit.fd.io/r/c/vpp/+/33481/6..7)] fixes a
> crash where an LCP for a sub-int is asked to be created, but the parent
> doesn't have an LCP yet.
>
> I fixed a few other small formatting/presentation things along the way.
> The blog post above shows a functional test before and after. Please take a
> look.
>
> There are a few additional tasks on my TODO list for Linux CP:
> 1) Interface plumbing (done)
> 2) mirroring VPP changes into Linux, things like interface state and mtu
> change, and addresses)
> 3) auto-creating sub-interfaces when they are created in VPP; what
> originally the 'auto-intf' keyword was meant to do, but doesn't quite do
> yet :)
> 4) mirroring Linux changes into VPP (aka complete the netlink listener)
>
> groet,
> Pim
> --
> Pim van Pelt <p...@ipng.nl>
> PBVP1-RIPE - http://www.ipng.nl/
>


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

Reply via email to