X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=tests%2Fofproto-dpif.at;h=06ebf23ae83485d60e7de9e21ea78016abc98851;hb=7fa0f73fb284b4406bcd085ee62552891b3fa6cd;hp=354fdc91fc68fa5e8012219506ff854ecaf89087;hpb=cff78c8844bcce7c6b20fe30d56b5509232039d2;p=sliver-openvswitch.git diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index 354fdc91f..06ebf23ae 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -608,6 +608,7 @@ NXT_PACKET_IN (xid=0x0): table_id=7 cookie=0x9 total_len=64 in_port=1 tun_id=0x6 udp,metadata=0,in_port=0,dl_vlan=80,dl_vlan_pcp=0,dl_src=80:81:81:81:81:81,dl_dst=82:82:82:82:82:82,nw_src=83.83.83.83,nw_dst=84.84.84.84,nw_tos=0,nw_ecn=0,nw_ttl=0,tp_src=85,tp_dst=86 udp_csum:43a1 ]) +AT_CHECK([ovs-appctl time/warp 5000], [0], [ignore]) AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl cookie=0x1, n_packets=2, n_bytes=120, dl_src=20:22:22:22:22:22 actions=CONTROLLER:65535,resubmit(80,1) cookie=0x2, n_packets=3, n_bytes=180, dl_src=30:33:33:33:33:33 actions=mod_vlan_vid:15,CONTROLLER:65535 @@ -1205,6 +1206,297 @@ AT_CHECK_UNQUOTED([ovs-appctl fdb/show br0 | sed 's/[[0-9]]\{1,\}$/?/' | sort], OVS_VSWITCHD_STOP AT_CLEANUP +dnl Test that sFlow samples packets correctly. +AT_SETUP([ofproto-dpif - sFlow packet sampling]) +AT_CHECK([perl $srcdir/choose-port.pl], [0], [stdout]) +SFLOW_PORT=`cat stdout` +OVS_VSWITCHD_START([set Bridge br0 fail-mode=standalone]) + +ovs-appctl time/stop + +ADD_OF_PORTS([br0], 1, 2) +ovs-vsctl \ + set Interface br0 options:ifindex=1002 -- \ + set Interface p1 options:ifindex=1004 -- \ + set Interface p2 options:ifindex=1003 -- \ + set Bridge br0 sflow=@sf -- \ + --id=@sf create sflow targets=\"127.0.0.1:$SFLOW_PORT\" \ + header=128 sampling=1 polling=1 +ON_EXIT([kill `cat test-sflow.pid`]) +AT_CHECK([test-sflow --detach --no-chdir --pidfile $SFLOW_PORT:127.0.0.1 > sflow.log]) +AT_CAPTURE_FILE([sflow.log]) + +dnl open with ARP packets to seed the bridge-learning. The output +dnl ifIndex numbers should be reported predictably after that. +dnl Since we set sampling=1 we should see all of these packets +dnl reported. Sorting the output by data-source and seqNo makes +dnl it deterministic. Ensuring that we send at least two packets +dnl into each port means we get to check the seq nos are +dnl incrementing correctly. + +ovs-appctl netdev-dummy/receive p1 'in_port(2),eth(src=50:54:00:00:00:05,dst=FF:FF:FF:FF:FF:FF),eth_type(0x0806),arp(sip=192.168.0.2,tip=192.168.0.1,op=1,sha=50:54:00:00:00:05,tha=00:00:00:00:00:00)' +ovs-appctl netdev-dummy/receive p2 'in_port(1),eth(src=50:54:00:00:00:07,dst=FF:FF:FF:FF:FF:FF),eth_type(0x0806),arp(sip=192.168.0.1,tip=192.168.0.2,op=1,sha=50:54:00:00:00:07,tha=00:00:00:00:00:00)' +ovs-appctl netdev-dummy/receive p1 'in_port(2),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)' +ovs-appctl netdev-dummy/receive p2 'in_port(1),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=1,tos=0,ttl=64,frag=no),icmp(type=0,code=0)' +ovs-appctl netdev-dummy/receive p2 'in_port(1),eth(src=50:54:00:00:00:07,dst=50:54:00:00:00:05),eth_type(0x86dd),ipv6(src=fe80::1,dst=fe80::2,label=0,proto=10,tclass=0x70,hlimit=128,frag=no)' + +dnl sleep long enough to get more than one counter sample +dnl from each datasource so we can check sequence numbers +for i in `seq 1 30`; do + ovs-appctl time/warp 100 +done +OVS_VSWITCHD_STOP +ovs-appctl -t test-sflow exit + +AT_CHECK([[sort sflow.log | $EGREP 'HEADER|ERROR' | sed 's/ /\ + /g']], [0], [dnl +HEADER + dgramSeqNo=1 + ds=127.0.0.1>0:1003 + fsSeqNo=1 + in_vlan=0 + in_priority=0 + out_vlan=0 + out_priority=0 + meanSkip=1 + samplePool=1 + dropEvents=0 + in_ifindex=1003 + in_format=0 + out_ifindex=2 + out_format=2 + hdr_prot=1 + pkt_len=64 + stripped=4 + hdr_len=60 + hdr=FF-FF-FF-FF-FF-FF-50-54-00-00-00-07-08-06-00-01-08-00-06-04-00-01-50-54-00-00-00-07-C0-A8-00-01-00-00-00-00-00-00-C0-A8-00-02-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 +HEADER + dgramSeqNo=1 + ds=127.0.0.1>0:1003 + fsSeqNo=2 + in_vlan=0 + in_priority=0 + out_vlan=0 + out_priority=0 + meanSkip=1 + samplePool=2 + dropEvents=0 + in_ifindex=1003 + in_format=0 + out_ifindex=1004 + out_format=0 + hdr_prot=1 + pkt_len=64 + stripped=4 + hdr_len=60 + hdr=50-54-00-00-00-05-50-54-00-00-00-07-08-00-45-00-00-1C-00-00-00-00-40-01-F9-8D-C0-A8-00-02-C0-A8-00-01-00-00-FF-FF-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 +HEADER + dgramSeqNo=1 + ds=127.0.0.1>0:1003 + fsSeqNo=3 + in_vlan=0 + in_priority=0 + out_vlan=0 + out_priority=0 + meanSkip=1 + samplePool=3 + dropEvents=0 + in_ifindex=1003 + in_format=0 + out_ifindex=1004 + out_format=0 + hdr_prot=1 + pkt_len=64 + stripped=4 + hdr_len=60 + hdr=50-54-00-00-00-05-50-54-00-00-00-07-86-DD-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 +HEADER + dgramSeqNo=1 + ds=127.0.0.1>0:1004 + fsSeqNo=1 + in_vlan=0 + in_priority=0 + out_vlan=0 + out_priority=0 + meanSkip=1 + samplePool=1 + dropEvents=0 + in_ifindex=1004 + in_format=0 + out_ifindex=2 + out_format=2 + hdr_prot=1 + pkt_len=64 + stripped=4 + hdr_len=60 + hdr=FF-FF-FF-FF-FF-FF-50-54-00-00-00-05-08-06-00-01-08-00-06-04-00-01-50-54-00-00-00-05-C0-A8-00-02-00-00-00-00-00-00-C0-A8-00-01-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 +HEADER + dgramSeqNo=1 + ds=127.0.0.1>0:1004 + fsSeqNo=2 + in_vlan=0 + in_priority=0 + out_vlan=0 + out_priority=0 + meanSkip=1 + samplePool=2 + dropEvents=0 + in_ifindex=1004 + in_format=0 + out_ifindex=1003 + out_format=0 + hdr_prot=1 + pkt_len=64 + stripped=4 + hdr_len=60 + hdr=50-54-00-00-00-07-50-54-00-00-00-05-08-00-45-00-00-1C-00-00-00-00-40-01-F9-8D-C0-A8-00-01-C0-A8-00-02-08-00-F7-FF-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 +]) + +AT_CHECK([[sort sflow.log | $EGREP 'IFCOUNTERS|ERROR' | head -6 | sed 's/ /\ + /g']], [0], [dnl +IFCOUNTERS + dgramSeqNo=2 + ds=127.0.0.1>0:1002 + csSeqNo=1 + ifindex=1002 + type=6 + ifspeed=100000000 + direction=0 + status=3 + in_octets=0 + in_unicasts=0 + in_multicasts=0 + in_broadcasts=4294967295 + in_discards=0 + in_errors=0 + in_unknownprotos=4294967295 + out_octets=120 + out_unicasts=2 + out_multicasts=4294967295 + out_broadcasts=4294967295 + out_discards=0 + out_errors=0 + promiscuous=0 +IFCOUNTERS + dgramSeqNo=2 + ds=127.0.0.1>0:1003 + csSeqNo=1 + ifindex=1003 + type=6 + ifspeed=100000000 + direction=0 + status=0 + in_octets=98 + in_unicasts=3 + in_multicasts=0 + in_broadcasts=4294967295 + in_discards=0 + in_errors=0 + in_unknownprotos=4294967295 + out_octets=120 + out_unicasts=2 + out_multicasts=4294967295 + out_broadcasts=4294967295 + out_discards=0 + out_errors=0 + promiscuous=0 +IFCOUNTERS + dgramSeqNo=2 + ds=127.0.0.1>0:1004 + csSeqNo=1 + ifindex=1004 + type=6 + ifspeed=100000000 + direction=0 + status=0 + in_octets=84 + in_unicasts=2 + in_multicasts=0 + in_broadcasts=4294967295 + in_discards=0 + in_errors=0 + in_unknownprotos=4294967295 + out_octets=180 + out_unicasts=3 + out_multicasts=4294967295 + out_broadcasts=4294967295 + out_discards=0 + out_errors=0 + promiscuous=0 +IFCOUNTERS + dgramSeqNo=3 + ds=127.0.0.1>0:1002 + csSeqNo=2 + ifindex=1002 + type=6 + ifspeed=100000000 + direction=0 + status=3 + in_octets=0 + in_unicasts=0 + in_multicasts=0 + in_broadcasts=4294967295 + in_discards=0 + in_errors=0 + in_unknownprotos=4294967295 + out_octets=120 + out_unicasts=2 + out_multicasts=4294967295 + out_broadcasts=4294967295 + out_discards=0 + out_errors=0 + promiscuous=0 +IFCOUNTERS + dgramSeqNo=3 + ds=127.0.0.1>0:1003 + csSeqNo=2 + ifindex=1003 + type=6 + ifspeed=100000000 + direction=0 + status=0 + in_octets=98 + in_unicasts=3 + in_multicasts=0 + in_broadcasts=4294967295 + in_discards=0 + in_errors=0 + in_unknownprotos=4294967295 + out_octets=120 + out_unicasts=2 + out_multicasts=4294967295 + out_broadcasts=4294967295 + out_discards=0 + out_errors=0 + promiscuous=0 +IFCOUNTERS + dgramSeqNo=3 + ds=127.0.0.1>0:1004 + csSeqNo=2 + ifindex=1004 + type=6 + ifspeed=100000000 + direction=0 + status=0 + in_octets=84 + in_unicasts=2 + in_multicasts=0 + in_broadcasts=4294967295 + in_discards=0 + in_errors=0 + in_unknownprotos=4294967295 + out_octets=180 + out_unicasts=3 + out_multicasts=4294967295 + out_broadcasts=4294967295 + out_discards=0 + out_errors=0 + promiscuous=0 +]) +AT_CLEANUP + + + dnl Test that basic NetFlow reports flow statistics correctly: dnl - The initial packet of a flow are correctly accounted. dnl - Later packets within a flow are correctly accounted. @@ -1480,13 +1772,15 @@ ADD_OF_PORTS([br1], [3]) AT_CHECK([ovs-appctl dpif/show], [0], [dnl br0 (dummy@ovs-dummy): lookups: hit:0 missed:0 - flows: 0 + flows: cur: 0, avg: 0.000, max: 0, life span: 0(ms) + overall avg: add rate: 0.000/min, del rate: 0.000/min br0 65534/100: (dummy) p1 1/1: (dummy) p2 2/2: (dummy) br1 (dummy@ovs-dummy): lookups: hit:0 missed:0 - flows: 0 + flows: cur: 0, avg: 0.000, max: 0, life span: 0(ms) + overall avg: add rate: 0.000/min, del rate: 0.000/min br1 65534/101: (dummy) p3 3/3: (dummy) ]) @@ -1494,7 +1788,8 @@ br1 (dummy@ovs-dummy): AT_CHECK([ovs-appctl dpif/show br0], [0], [dnl br0 (dummy@ovs-dummy): lookups: hit:0 missed:0 - flows: 0 + flows: cur: 0, avg: 0.000, max: 0, life span: 0(ms) + overall avg: add rate: 0.000/min, del rate: 0.000/min br0 65534/100: (dummy) p1 1/1: (dummy) p2 2/2: (dummy) @@ -1587,13 +1882,15 @@ warped AT_CHECK([ovs-appctl dpif/show], [0], [dnl br0 (dummy@ovs-dummy): lookups: hit:9 missed:1 - flows: 1 + flows: cur: 1, avg: 1.000, max: 1, life span: 0(ms) + overall avg: add rate: 0.000/min, del rate: 0.000/min br0 65534/100: (dummy) p2 2/2: (dummy) pbr0 1/none: (patch: peer=pbr1) br1 (dummy@ovs-dummy): lookups: hit:4 missed:1 - flows: 1 + flows: cur: 1, avg: 1.000, max: 1, life span: 0(ms) + overall avg: add rate: 0.000/min, del rate: 0.000/min br1 65534/101: (dummy) p3 3/3: (dummy) pbr1 1/none: (patch: peer=pbr0) @@ -1620,3 +1917,32 @@ OFPST_PORT reply (xid=0x4): 1 ports OVS_VSWITCHD_STOP AT_CLEANUP + +AT_SETUP([ofproto-dpif - ovs-appctl dpif/show rates]) +OVS_VSWITCHD_START([set Bridge br0 fail-mode=secure]) +ADD_OF_PORTS([br0], 1, 2) + +AT_CHECK([ovs-ofctl add-flow br0 actions=LOCAL,output:1,output:2]) + +for i in $(seq 1 61); do + ovs-appctl netdev-dummy/receive br0 'in_port(1),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)' + ovs-appctl time/warp 10000 + ovs-appctl time/warp 50000 +done + +AT_CHECK([ovs-appctl time/warp 10000], [0], [warped +]) + +AT_CHECK([ovs-appctl dpif/show | sed 's/ 10[[0-9]]\{3\}(ms)$/ 10000(ms)/'], [0], [dnl +br0 (dummy@ovs-dummy): + lookups: hit:0 missed:61 + flows: cur: 0, avg: 1.000, max: 1, life span: 10000(ms) + hourly avg: add rate: 0.641/min, del rate: 0.635/min + overall avg: add rate: 1.000/min, del rate: 0.984/min + br0 65534/100: (dummy) + p1 1/1: (dummy) + p2 2/2: (dummy) +]) + +OVS_VSWITCHD_STOP +AT_CLEANUP