Conditional to Ben’s approval of the nested actions within the OF ct action, of course :-)
Jarno > On Sep 11, 2015, at 4:37 PM, Jarno Rajahalme <jrajaha...@nicira.com> wrote: > > Here is an provisional ACK, I trust you to address the comments to my > satisfaction :-) > > Acked-by: Jarno Rajahalme <jrajaha...@nicira.com> > > Jarno > >> On Sep 11, 2015, at 4:15 PM, Joe Stringer <joestrin...@nicira.com> wrote: >> >> On 11 September 2015 at 14:42, Jarno Rajahalme <jrajaha...@nicira.com> wrote: >>>> diff --git a/tests/system-traffic.at b/tests/system-traffic.at >>>> index 7dbed68..de6b016 100644 >>>> --- a/tests/system-traffic.at >>>> +++ b/tests/system-traffic.at >>>> @@ -139,3 +139,472 @@ NS_CHECK_EXEC([at_ns0], [ping -s 3200 -q -c 3 -i 0.3 >>>> -w 2 10.1.1.100 | FORMAT_PI >>>> >>>> OVS_TRAFFIC_VSWITCHD_STOP >>>> AT_CLEANUP >>>> + >>>> +AT_SETUP([conntrack - controller]) >>>> +CHECK_CONNTRACK() >>>> +OVS_TRAFFIC_VSWITCHD_START( >>>> + [set-fail-mode br0 standalone -- ]) >>>> + >>>> +ADD_NAMESPACES(at_ns0, at_ns1) >>>> + >>>> +ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24") >>>> +ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24") >>>> + >>>> +dnl Allow any traffic from ns0->ns1. Only allow nd, return traffic from >>>> ns1->ns0. >>>> +AT_DATA([flows.txt], [dnl >>>> +priority=1,action=drop >>>> +priority=10,arp,action=normal >>>> +in_port=1,udp,action=ct(commit),controller >>>> +in_port=2,ct_state=-trk,udp,action=ct(table=0) >>>> +in_port=2,ct_state=+trk+est-new,udp,action=controller >>> >>> ct_state=+est should be sufficient here? >> >> True, +est-new is a little redundant. >> >>>> +dnl Allow any traffic from ns0->ns1. Only allow nd, return traffic from >>>> ns1->ns0. >>>> +AT_DATA([flows.txt], [dnl >>>> +priority=1,action=drop >>>> +priority=10,arp,action=normal >>>> +priority=10,icmp,action=normal >>>> +in_port=1,tcp,action=ct(commit),2 >>>> +in_port=2,ct_state=-trk,tcp,action=ct(table=0) >>>> +in_port=2,ct_state=+trk+est-new,tcp,action=1 >>> >>> Having explicit priorities here as well would be helpful. The comment above >>> about “+est” should apply here as well. >> >> I can update any/all tests that have priorities to either all provide >> specific priorities, or use no priorities. >> >>>> +]) >>>> + >>>> +AT_CHECK([ovs-ofctl add-flows br0 flows.txt]) >>>> + >>>> +dnl Basic connectivity check. >>>> +NS_CHECK_EXEC([at_ns0], [ping -q -c 3 -i 0.3 -w 2 10.1.1.2 >/dev/null]) >>>> + >>>> +dnl HTTP requests from ns0->ns1 should work fine. >>>> +NETNS_DAEMONIZE([at_ns1], [[$PYTHON $srcdir/test-l7.py]], [http0.pid]) >>>> +NS_CHECK_EXEC([at_ns0], [wget 10.1.1.2 -t 3 -T 1 --retry-connrefused -v >>>> -o wget0.log]) >>> >>> >>> wget was trying to resolve the proxy I had configured in the “http_proxy” >>> environment variable. The resolution from the netns failed, making the test >>> case fail. I had to clear “http_proxy" to make the test work. >> >> Hmm, I don't have a good solution for this. Personally I always push >> code to a remote test VM that I use specifically for the purpose of >> running these tests, so any configuration I might have in my local >> desktop environment wouldn't cause issues such as this. (This is >> equivalent to how the Vagrant tests run) > > Maybe a comment in some doc describing how to run check-kernel? > > > >> >>>> + >>>> +AT_CHECK([conntrack -L 2>&1 | FORMAT_CT(10.1.1.2)], [0], [dnl >>>> +TIME_WAIT src=10.1.1.1 dst=10.1.1.2 sport=<cleared> dport=<cleared> >>>> src=10.1.1.2 dst=10.1.1.1 sport=<cleared> dport=<cleared> [[ASSURED]] >>>> mark=0 use=1 >>> >>> Do you know how/if [ASSURED] maps to ct_state flags? >> >> I can look into it. My understanding is that it's equivalent to >> "established", although it may be more aligned with our concept of >> "committed". >> >>>> +AT_SETUP([conntrack - commit, recirc]) >>>> +CHECK_CONNTRACK() >>>> +OVS_TRAFFIC_VSWITCHD_START( >>>> + [set-fail-mode br0 standalone -- ]) >>>> + >>>> +ADD_NAMESPACES(at_ns0, at_ns1, at_ns2, at_ns3) >>>> + >>>> +ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24") >>>> +ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24") >>>> +ADD_VETH(p2, at_ns2, br0, "10.1.1.3/24") >>>> +ADD_VETH(p3, at_ns3, br0, "10.1.1.4/24") >>>> + >>>> +dnl Allow any traffic from ns0->ns1, ns2->ns3. >>>> +AT_DATA([flows.txt], [dnl >>>> +priority=1,action=drop >>>> +priority=10,arp,action=normal >>>> +priority=10,icmp,action=normal >>>> +in_port=1,tcp,ct_state=-trk,action=ct(commit,table=0) >>> >>> Maybe some of the test cases should use non-zero table? >> >> Agreed, there's several directions that we can increase the coverage >> in the testsuite. I'll add this to the list. >> >>>> +ADD_NAMESPACES(at_ns0, at_ns1, at_ns2, at_ns3) >>>> + >>>> +ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24") >>>> +ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24") >>>> +ADD_VETH(p2, at_ns2, br0, "10.1.1.3/24") >>>> +ADD_VETH(p3, at_ns3, br0, "10.1.1.4/24") >>>> + >>>> +dnl Allow any traffic from ns0->ns1. Only allow nd, return traffic from >>>> ns1->ns0. >>> >>> Update comment? >> >> For ns2/ns3 as well? Sure. >> >>>> +AT_DATA([flows.txt], [dnl >>>> +priority=1,action=drop >>>> +priority=10,arp,action=normal >>>> +priority=10,icmp,action=normal >>>> +in_port=1,tcp,action=ct(),2 >>>> +in_port=2,ct_state=-trk,tcp,action=ct(table=0) >>>> +in_port=2,ct_state=+trk+new,tcp,action=1 >>> >>> Here “+new” should be sufficient, in general, “+trk” is not needed if any >>> of the other bits are matched for being set, right? >> >> For several of these I have made the rule more explicit than strictly >> necessary, so that if there is an unexpected combination of bits, then >> those flows will hit the "drop" rule rather than silently matching the >> accept rule. >> >>>> +ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24") >>>> +ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24") >>>> +ADD_VETH(p2, at_ns2, br0, "10.1.1.3/24") >>>> +ADD_VETH(p3, at_ns3, br0, "10.1.1.4/24") >>>> + >>>> +dnl Allow any traffic from ns0->ns1. Only allow nd, return traffic from >>>> ns1->ns0. >>> >>> Does this comment need an update? >> >> Yes, I'll update it. I can see the fallacy of copy-paste test crafting >> here: The comments are initially added to improve readability, but >> when they're copied several times it's easy to miss the fact that >> they're out of date. It wouldn't be a problem if there were no >> comments, but then it would be more difficult to grok what's going on. >> >>>> +dnl Allow any traffic from ns0->ns1, allow established in reverse. >>>> +AT_DATA([flows-br0.txt], [dnl >>>> +priority=1,action=drop >>>> +priority=10,arp,action=normal >>>> +priority=10,icmp,action=normal >>>> +in_port=2,tcp,ct_state=-trk,action=ct(commit,zone=1),1 >>>> +in_port=1,tcp,ct_state=-trk,action=ct(table=0,zone=1) >>>> +in_port=1,tcp,ct_state=+trk+est,ct_zone=1,action=2 >>>> +]) >>>> + >>>> +dnl Allow any traffic from ns0->ns1, allow established in reverse. >>> >>> Should this comment be different from the one above?? >> >> I think it's saying the same thing, it just wasn't copy/pasted from >> the earlier one. I'll review each of these comments. >> >>>> +AT_SETUP([conntrack - ICMP related 2]) >>>> +CHECK_CONNTRACK() >>>> +OVS_TRAFFIC_VSWITCHD_START( >>>> + [set-fail-mode br0 standalone -- ]) >>>> + >>>> +ADD_NAMESPACES(at_ns0, at_ns1) >>>> + >>>> +ADD_VETH(p0, at_ns0, br0, "172.16.0.1/24") >>>> +ADD_VETH(p1, at_ns1, br0, "172.16.0.2/24") >>>> + >>>> +dnl Allow any traffic from ns0->ns1. Only allow nd, return traffic from >>>> ns1->ns0. >>>> +AT_DATA([flows.txt], [dnl >>>> +priority=1,action=drop >>>> +priority=10,arp,action=normal >>>> +in_port=1,ct_state=-trk,udp,action=ct(commit,table=0) >>>> +in_port=1,ct_state=+trk,actions=controller >>>> +in_port=2,ct_state=-trk,action=ct(table=0) >>>> +in_port=2,ct_state=+trk-inv-new,action=controller >>> >>> Could there be a match on +rel here? >> >> Yes, we could expand the flows to be more explicit about the exact >> packets seen (looks like there's a "new" and a "related, reply" >> packets) >> >> Thanks for the thorough review, >> >>>> diff --git a/tests/test-odp.c b/tests/test-odp.c >>>> index 3e7939e..cb245d6 100644 >>>> --- a/tests/test-odp.c >>>> +++ b/tests/test-odp.c >>>> @@ -57,7 +57,10 @@ parse_keys(bool wc_keys) >>>> struct odp_flow_key_parms odp_parms = { >>>> .flow = &flow, >>>> .support = { >>>> + .max_mpls_depth = SIZE_MAX, >>> >>> Why this? >> >> I think this was intended to be in a separate patch. From memory, if >> any of the .support fields are false, then we don't test ODP parsing >> of that feature. >> >> Cheers, >> Joe > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev