~ubuntu-branches/ubuntu/raring/openvswitch/raring-proposed

« back to all changes in this revision

Viewing changes to tests/learn.at

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2013-01-16 11:22:40 UTC
  • mfrom: (1.1.13)
  • Revision ID: package-import@ubuntu.com-20130116112240-2qbokf0tzcev5eu7
Tags: 1.9.0~git20130115.ca71f5b-0ubuntu1
* New upstream snapshot based on branch-1.9:
  - d/patches: Dropped all previous patches as all found upstream.
  - d/*: Synced packaging with upstream packaging changes.
  - d/control: Add libtool to BD's to support use of snapshot.
* Fix compatibility with Linux 3.8 (LP: #1098650):
  - d/p/support-linux-3.8.patch:
    Accept Linux 3.8 as a compatible kernel version.
  - d/p/linux-Makefile.main.in-acinclude-preparation-for-lin.patch:
    Adjust autoconf checks to correctly detect new kernel header file names.
* Fix python test issues caused by long UNIX socket paths:
  - d/p/handle-unix-socket-long-paths.patch:
    Workaround long UNIX socket paths by using /proc/self/fd on Linux.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
AT_DATA([flows.txt], [[
5
5
actions=learn()
6
6
actions=learn(NXM_OF_VLAN_TCI[0..11], NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[], output:NXM_OF_IN_PORT[], load:10->NXM_NX_REG0[5..10])
7
 
actions=learn(table=1,idle_timeout=1, hard_timeout=2, priority=10, cookie=0xfedcba9876543210, in_port=99,NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG1[16..31])
 
7
actions=learn(table=1,idle_timeout=10, hard_timeout=20, fin_idle_timeout=5, fin_hard_timeout=10, priority=10, cookie=0xfedcba9876543210, in_port=99,NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG1[16..31])
8
8
]])
9
9
AT_CHECK([ovs-ofctl parse-flows flows.txt], [0],
10
 
[[OFPT_FLOW_MOD (xid=0x1): ADD actions=learn(table=1)
11
 
OFPT_FLOW_MOD (xid=0x2): ADD actions=learn(table=1,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],output:NXM_OF_IN_PORT[],load:0x000a->NXM_NX_REG0[5..10])
12
 
OFPT_FLOW_MOD (xid=0x3): ADD actions=learn(table=1,idle_timeout=1,hard_timeout=2,priority=10,cookie=0xfedcba9876543210,in_port=99,NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG1[16..31])
 
10
[[usable protocols: any
 
11
chosen protocol: OpenFlow10-table_id
 
12
OFPT_FLOW_MOD (xid=0x1): ADD actions=learn(table=1)
 
13
OFPT_FLOW_MOD (xid=0x2): ADD actions=learn(table=1,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],output:NXM_OF_IN_PORT[],load:0xa->NXM_NX_REG0[5..10])
 
14
OFPT_FLOW_MOD (xid=0x3): ADD actions=learn(table=1,idle_timeout=10,hard_timeout=20,fin_idle_timeout=5,fin_hard_timeout=10,priority=10,cookie=0xfedcba9876543210,in_port=99,NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG1[16..31])
13
15
]])
14
16
AT_CLEANUP
15
17
 
22
24
table=1 priority=0 actions=flood
23
25
]])
24
26
AT_CHECK([ovs-ofctl parse-flows flows.txt], [0],
25
 
[[OFPT_FLOW_MOD (xid=0x1): ADD actions=learn(table=1,in_port=99,NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG1[16..31])
26
 
OFPT_FLOW_MOD (xid=0x2): ADD actions=learn(table=1,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],output:NXM_OF_IN_PORT[])
27
 
NXT_FLOW_MOD_TABLE_ID (xid=0x3): enable
28
 
OFPT_FLOW_MOD (xid=0x4): ADD actions=learn(table=1,hard_timeout=10,NXM_OF_VLAN_TCI[0..11],output:NXM_OF_IN_PORT[]),resubmit(,1)
29
 
OFPT_FLOW_MOD (xid=0x5): ADD table:1 priority=0 actions=FLOOD
 
27
[[usable protocols: OpenFlow10+table_id,NXM+table_id
 
28
chosen protocol: OpenFlow10+table_id
 
29
OFPT_FLOW_MOD (xid=0x1): ADD table:255 actions=learn(table=1,in_port=99,NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:NXM_OF_IN_PORT[]->NXM_NX_REG1[16..31])
 
30
OFPT_FLOW_MOD (xid=0x2): ADD table:255 actions=learn(table=1,NXM_OF_VLAN_TCI[0..11],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],output:NXM_OF_IN_PORT[])
 
31
OFPT_FLOW_MOD (xid=0x3): ADD actions=learn(table=1,hard_timeout=10,NXM_OF_VLAN_TCI[0..11],output:NXM_OF_IN_PORT[]),resubmit(,1)
 
32
OFPT_FLOW_MOD (xid=0x4): ADD table:1 priority=0 actions=FLOOD
30
33
]])
31
34
AT_CLEANUP
32
35
 
34
37
AT_DATA([flows.txt],
35
38
[[actions=learn(eth_type=0x800,load:5->NXM_OF_IP_DST[])
36
39
ip,actions=learn(load:NXM_OF_IP_DST[]->NXM_NX_REG1[])
37
 
ip,actions=learn(eth_type=0x800,NXM_OF_IP_DST[])
 
40
ip,actions=learn(eth_type=0x800,OXM_OF_IPV4_DST[])
38
41
]])
39
42
AT_CHECK([ovs-ofctl parse-flows flows.txt], [0],
40
 
[[OFPT_FLOW_MOD (xid=0x1): ADD actions=learn(table=1,eth_type=0x800,load:0x00000005->NXM_OF_IP_DST[])
 
43
[[usable protocols: any
 
44
chosen protocol: OpenFlow10-table_id
 
45
OFPT_FLOW_MOD (xid=0x1): ADD actions=learn(table=1,eth_type=0x800,load:0x5->NXM_OF_IP_DST[])
41
46
OFPT_FLOW_MOD (xid=0x2): ADD ip actions=learn(table=1,load:NXM_OF_IP_DST[]->NXM_NX_REG1[])
42
47
OFPT_FLOW_MOD (xid=0x3): ADD ip actions=learn(table=1,eth_type=0x800,NXM_OF_IP_DST[])
43
48
]])
72
77
])
73
78
 
74
79
# Check for the MAC learning entry.
75
 
AT_CHECK([ovs-ofctl dump-flows br0 table=1 | STRIP_XIDS | STRIP_DURATION | sort], [0], [dnl
76
 
 cookie=0x0, duration=?s, table=1, n_packets=0, n_bytes=0, hard_timeout=60,vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:05 actions=output:3
77
 
 cookie=0x0, duration=?s, table=1, n_packets=0, n_bytes=0, priority=0 actions=FLOOD
 
80
AT_CHECK([ovs-ofctl dump-flows br0 table=1 | ofctl_strip | sort], [0], [dnl
 
81
 table=1, hard_timeout=60, vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:05 actions=output:3
 
82
 table=1, priority=0 actions=FLOOD
78
83
NXST_FLOW reply:
79
84
])
80
85
 
85
90
])
86
91
 
87
92
# Check for both MAC learning entries.
88
 
AT_CHECK([ovs-ofctl dump-flows br0 table=1 | STRIP_XIDS | STRIP_DURATION | sort], [0], [dnl
89
 
 cookie=0x0, duration=?s, table=1, n_packets=0, n_bytes=0, hard_timeout=60,vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:05 actions=output:3
90
 
 cookie=0x0, duration=?s, table=1, n_packets=0, n_bytes=0, hard_timeout=60,vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:06 actions=output:1
91
 
 cookie=0x0, duration=?s, table=1, n_packets=0, n_bytes=0, priority=0 actions=FLOOD
 
93
AT_CHECK([ovs-ofctl dump-flows br0 table=1 | ofctl_strip |sort], [0], [dnl
 
94
 table=1, hard_timeout=60, vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:05 actions=output:3
 
95
 table=1, hard_timeout=60, vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:06 actions=output:1
 
96
 table=1, priority=0 actions=FLOOD
92
97
NXST_FLOW reply:
93
98
])
94
99
 
98
103
])
99
104
 
100
105
# Check that the MAC learning entry was updated.
101
 
AT_CHECK([ovs-ofctl dump-flows br0 table=1 | STRIP_XIDS | STRIP_DURATION | sort], [0], [dnl
102
 
 cookie=0x0, duration=?s, table=1, n_packets=0, n_bytes=0, hard_timeout=60,vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:05 actions=output:2
103
 
 cookie=0x0, duration=?s, table=1, n_packets=0, n_bytes=0, hard_timeout=60,vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:06 actions=output:1
104
 
 cookie=0x0, duration=?s, table=1, n_packets=0, n_bytes=0, priority=0 actions=FLOOD
105
 
NXST_FLOW reply:
 
106
AT_CHECK([ovs-ofctl dump-flows br0 table=1 | ofctl_strip | sort], [0], [dnl
 
107
 table=1, hard_timeout=60, vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:05 actions=output:2
 
108
 table=1, hard_timeout=60, vlan_tci=0x0000/0x0fff,dl_dst=50:54:00:00:00:06 actions=output:1
 
109
 table=1, priority=0 actions=FLOOD
 
110
NXST_FLOW reply:
 
111
])
 
112
OVS_VSWITCHD_STOP
 
113
AT_CLEANUP
 
114
 
 
115
AT_SETUP([learning action - TCPv4 port learning])
 
116
OVS_VSWITCHD_START(
 
117
  [add-port br0 eth0 -- set Interface eth0 type=dummy -- \
 
118
   add-port br0 eth1 -- set Interface eth1 type=dummy -- \
 
119
   add-port br0 eth2 -- set Interface eth2 type=dummy])
 
120
# Set up flow table for TCPv4 port learning.
 
121
AT_CHECK([[ovs-ofctl add-flow br0 'table=0 tcp actions=learn(table=1, hard_timeout=60, eth_type=0x800, nw_proto=6, NXM_OF_IP_SRC[]=NXM_OF_IP_DST[], NXM_OF_IP_DST[]=NXM_OF_IP_SRC[], NXM_OF_TCP_SRC[]=NXM_OF_TCP_DST[], NXM_OF_TCP_DST[]=NXM_OF_TCP_SRC[]), flood']])
 
122
 
 
123
# Trace a TCPv4 packet arriving on port 3.
 
124
AT_CHECK([ovs-appctl ofproto/trace br0 'in_port(3),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:06),eth_type(0x0800),ipv4(src=192.168.0.2,dst=192.168.0.1,proto=6,tos=0,ttl=64,frag=no),tcp(src=40000,dst=80)' -generate], [0], [stdout])
 
125
AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2,0,1
 
126
])
 
127
 
 
128
# Check for the learning entry.
 
129
AT_CHECK([ovs-ofctl dump-flows br0 table=1 | ofctl_strip | sort], [0], [dnl
 
130
 table=1, hard_timeout=60, tcp,nw_src=192.168.0.1,nw_dst=192.168.0.2,tp_src=80,tp_dst=40000 actions=drop
 
131
NXST_FLOW reply:
 
132
])
 
133
OVS_VSWITCHD_STOP
 
134
AT_CLEANUP
 
135
 
 
136
AT_SETUP([learning action - TCPv6 port learning])
 
137
OVS_VSWITCHD_START(
 
138
  [add-port br0 eth0 -- set Interface eth0 type=dummy -- \
 
139
   add-port br0 eth1 -- set Interface eth1 type=dummy -- \
 
140
   add-port br0 eth2 -- set Interface eth2 type=dummy])
 
141
# Set up flow table for TCPv6 port learning.
 
142
# Also add a 128-bit-wide "load" action and a 128-bit literal match to check
 
143
# that they work.
 
144
AT_CHECK([[ovs-ofctl add-flow br0 'table=0 tcp6 actions=learn(table=1, hard_timeout=60, eth_type=0x86dd, nw_proto=6, NXM_NX_IPV6_SRC[]=NXM_NX_IPV6_DST[], ipv6_dst=2001:0db8:85a3:0000:0000:8a2e:0370:7334, NXM_OF_TCP_SRC[]=NXM_OF_TCP_DST[], NXM_OF_TCP_DST[]=NXM_OF_TCP_SRC[], load(0x20010db885a308d313198a2e03707348->NXM_NX_IPV6_DST[])), flood']])
 
145
 
 
146
# Trace a TCPv6 packet arriving on port 3.
 
147
AT_CHECK([ovs-appctl ofproto/trace br0 'in_port(3),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:06),eth_type(0x86dd),ipv6(src=fec0::2,dst=fec0::1,label=0,proto=6,tclass=0,hlimit=255,frag=no),tcp(src=40000,dst=80)' -generate], [0], [stdout])
 
148
AT_CHECK([tail -1 stdout], [0], [Datapath actions: 2,0,1
 
149
])
 
150
 
 
151
# Check for the learning entry.
 
152
AT_CHECK([ovs-ofctl dump-flows br0 | ofctl_strip | sort], [0], [dnl
 
153
 table=1, hard_timeout=60, tcp6,ipv6_src=fec0::1,ipv6_dst=2001:db8:85a3::8a2e:370:7334,tp_src=80,tp_dst=40000 actions=load:0x13198a2e03707348->NXM_NX_IPV6_DST[[0..63]],load:0x20010db885a308d3->NXM_NX_IPV6_DST[[64..127]]
 
154
 tcp6 actions=learn(table=1,hard_timeout=60,eth_type=0x86dd,nw_proto=6,NXM_NX_IPV6_SRC[[]]=NXM_NX_IPV6_DST[[]],ipv6_dst=2001:db8:85a3::8a2e:370:7334,NXM_OF_TCP_SRC[[]]=NXM_OF_TCP_DST[[]],NXM_OF_TCP_DST[[]]=NXM_OF_TCP_SRC[[]],load:0x20010db885a308d313198a2e03707348->NXM_NX_IPV6_DST[[]]),FLOOD
 
155
NXST_FLOW reply:
 
156
])
 
157
OVS_VSWITCHD_STOP
 
158
AT_CLEANUP
 
159
 
 
160
AT_SETUP([learning action - fin_timeout feature])
 
161
# This is a totally artificial use of the "learn" action.  The only purpose
 
162
# is to check that specifying fin_idle_timeout or fin_hard_timeout causes
 
163
# a corresponding fin_timeout action to end up in the learned flows.
 
164
OVS_VSWITCHD_START
 
165
AT_CHECK([[ovs-ofctl add-flow br0 'actions=learn(fin_hard_timeout=10, fin_idle_timeout=5, NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[], output:NXM_OF_IN_PORT[])']])
 
166
AT_CHECK([ovs-appctl ofproto/trace br0 'in_port(1),eth(src=50:54:00:00:00:05,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:05,tha=00:00:00:00:00:00)' -generate], [0], [ignore])
 
167
AT_CHECK([ovs-ofctl dump-flows br0 table=1 | ofctl_strip], [0],
 
168
[NXST_FLOW reply:
 
169
 table=1, dl_dst=50:54:00:00:00:05 actions=fin_timeout(idle_timeout=5,hard_timeout=10),output:1
106
170
])
107
171
OVS_VSWITCHD_STOP
108
172
AT_CLEANUP