[ovs-dev] [PATCH v3 00/16] port Jiri Benc's L3 patchset to ovs

Joe Stringer joe at ovn.org
Thu Feb 9 01:31:35 UTC 2017


On 7 February 2017 at 20:55, Yang, Yi <yi.y.yang at intel.com> wrote:
> On Tue, Feb 07, 2017 at 02:30:46PM -0800, Joe Stringer wrote:
>> On 7 February 2017 at 09:44, Joe Stringer <joe at ovn.org> wrote:
>> > On 6 February 2017 at 16:46, Yang, Yi Y <yi.y.yang at intel.com> wrote:
>> >> Joe, I checked current ovs and net-next kernel, obviously some patches from net-next are selectively backported to ovs, but others are not, I'm not sure what the policy is for a new patch. It will be better that the person who did the patch backports it to ovs at the same time, but nobody did so.
>> >
>> > That's supposed to be the policy; However, depending on the patch
>> > sometimes openvswitch isn't even the main target of the change, so the
>> > contributor may not be aware they should do so. There may be added
>> > difficulty if the previous contributor didn't do their backport. I
>> > think that lately there hasn't been particularly close co-ordination
>> > between the trees, but ideally I think that as we approach an OVS
>> > release, we would try to sync them up.
>> >
>> >> My 802.1ad backport has included all the things l3 patch set depends on, so I think you can give it a go :-)
>> >
>> > Kicking off a build on my local tester, I can at least report back on
>> > that. I see you've tested on a few platforms as well, that's great.
>>
>> Reporting back, I suspect that some of the older kernels don't treat
>> the double-tagged vlans right with this series?
>>
>> I was using an Ubuntu trusty VM with kernel 3.13.0-92-generic plus
>> this backport and it seems to be consistently failing this test:
>>
>> 4: datapath - ping between two ports on cvlan FAILED (system-traffic.at:88)
>>
>> The test output just shows that a ping tries about 10 times and fails
>> all of the times. I didn't investigate further.
>
> But unfortunately I can't run "make check-kmod" on Ubuntu 14.04, all the
> cases are failed, how do you know I can run "datapath - ping between two
> ports on cvlan" manually by one-by-one shell commands?

I'm not sure what's preventing you (I do this frequently), but this is
a good question:

You can find the test in tests/system-traffic:

$ git grep "ping between two ports on cv"
tests/system-traffic.at:AT_SETUP([datapath - ping between two ports on cvlan])

If we open that up in an editor, we can see the progression of the test:
https://github.com/openvswitch/ovs/blob/40c7b2fc0d181155ea87a962a522d48f4166370b/tests/system-traffic.at#L72

First, there's OVS_TRAFFIC_VSWITCHD_START(). This pretty much just
starts up OVS. You can trace this definition through
tests/system-kmod-macros.at and tests/ofproto-macros.at.

We can see lines like AT_CHECK(...) which run a command and check the
return code.

A bunch of the ADD_foo(...) commands will set up the environment in a
particular way; create namespaces, ports, vlans, etc. These are
typically defined in tests/system-kmod-macros.at or
tests/system-common-macros.at.

OVS_WAIT_UNTIL(...) will try running the command a few times, but if
it doesn't return successfully within about 10 seconds the test will
fail with something like "hard failure" (in the test logs).

NS_CHECK_EXEC(...) will run a command within a particular network
namespace and check the return condition, similar to AT_CHECK().

Finally, the test finishes by shutting down OVS -
OVS_TRAFFIC_VSWITCHD_STOP and doing autotest cleanup - AT_CLEANUP.

For this specific test, you can see that it pretty much sets up a
couple of namespaces, connects them to OVS with veth pairs, then adds
additional VLAN devices within those namespaces, which should go over
the OVS. There's three different IP ranges used for bare traffic,
single-tagged, and double-tagged. The failure I see is happening at
the OVS_WAIT_UNTIL() line, so the double-tagged VLANs never show any
connectivity. Later commands will test different packet sizes, but it
doesn't even get that far.


More information about the dev mailing list