[ovs-dev] MPLS performance question

Carl Baldwin carl at ecbaldwin.net
Tue Jul 31 19:01:06 UTC 2018


My apologies. I failed to include the ovs version number that I'm using. It
is 2.7.3. Is there anything else I could check that maybe I'm not thinking
of?

Carl

On Tue, Jul 31, 2018 at 11:01 AM Ben Pfaff <blp at ovn.org> wrote:

> On Mon, Jul 30, 2018 at 02:02:16PM -0600, Carl Baldwin wrote:
> > I recently tried pushing MPLS labels using OVS in a lab.
> >
> > Before adding MPLS push to the mix, I had four hosts: two pairs, each
> > connected to a different set of TOR switches running VRRP. OVS (using
> > kernel datapath) had a flow to write the VRRP mac address and output to a
> > bond port. The bond is a Linux LACP bond, not an OVS bond. In this
> > scenario, the TORs would route the packets through a default route our
> > gateway routers to egress from the DC. This did fine and I was able to
> push
> > something around 42 Gbps using16 iperf2 TCP streams.
> >
> >     ovs-ofctl add-flow -OOpenFlow13 br0 "table=25, ip,
> > actions=output=${bond_port}"
> >
> > My next step was to push an MPLS label onto the packet. The above flow
> > became this:
> >
> >     ovs-ofctl add-flow -OOpenFlow13 br0 "table=25, ip,
> >
> actions=push_mpls:0x8847,set_field:1048001->mpls_label,output=${bond_port}"
> >
> > 1048001 is a static label that I configure on the TORs which sends the
> > packet up to the same gateway using MPLS instead of IP routing. So, the
> > packets would take the same path out of the network but using an MPLS
> path.
> > With this change, things worked well from a functional perspective but
> the
> > performance fell drastically to around 30-40 Mbps.
> >
> > I'm pretty confident in the network fabric because I tried the same
> > scenario using LInux MPLS and it performed well. From the network
> fabric's
> > point of view, it was exactly the same (static label through LACP bond to
> > VRRP mac).
> >
> > I found in the faq [1] under "Does Open vSwitch support MPLS?" that "Open
> > vSwitch version 2.4 can match, push, or pop up to 3 MPLS labels and look
> > past the MPLS label into the encapsulated packet. It will have kernel
> > support for MPLS, yielding improved performance." I looked through the
> git
> > history and I don't see much evidence of this actually getting done for
> the
> > 2.4 release. Is this faq accurate?
>
> It looks like MPLS datapath support was fairly solid by OVS 2.6, at any
> rate.  If your kernel module is older than that, I'd recommend
> upgrading.
>


More information about the dev mailing list