[ovs-dev] [groups v3] Implement OpenFlow 1.1+ "groups" protocol.
Simon Horman
horms at verge.net.au
Fri Aug 30 04:48:15 UTC 2013
On Thu, Aug 29, 2013 at 02:00:51PM -0700, Ben Pfaff wrote:
> From: Neil Zhu <zhuj at centecnetworks.com>
>
> This doesn't include a dpif implementation of groups functionality. In its
> current form, it is untested. Before this is committed, it needs some
> more comments and an ovs-ofctl manpage update.
>
> Signed-off-by: Neil Zhu <zhuj at centecnetworks.com>
> Co-authored-by: Ben Pfaff <blp at nicira.com>
> Signed-off-by: Ben Pfaff <blp at nicira.com>
[snip]
> diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c
> index 61e2854..77aa69c 100644
> --- a/lib/ofp-actions.c
> +++ b/lib/ofp-actions.c
[snip]
> @@ -1710,6 +1721,9 @@ ofpact_to_openflow10(const struct ofpact *a, struct ofpbuf *out)
> /* XXX */
> break;
>
> + case OFPACT_GROUP:
> + break;
> +
Is the idea here to silently skip over OFPACT_GROUP
when encoding to OpenFlow10?
[snip]
> diff --git a/tests/ofp-print.at b/tests/ofp-print.at
> index f554aba..a044b14 100644
> --- a/tests/ofp-print.at
> +++ b/tests/ofp-print.at
[snip]
> @@ -1679,6 +1672,120 @@ OFPST_QUEUE reply (OF1.3) (xid=0x1): 6 queues
> ])
> AT_CLEANUP
>
> +AT_SETUP([OFPST_GROUP request])
> +AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
> +AT_CHECK([ovs-ofctl ofp-print "\
> +02 12 00 18 00 00 00 02 00 06 00 00 00 00 00 00 \
> +ff ff ff ff 00 00 00 00 \
> +"], [0], [OFPST_GROUP request (OF1.1) (xid=0x2): group_id=ANY
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([OFPST_GROUP reply - OF1.1])
> +AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
> +AT_CHECK([ovs-ofctl ofp-print "\
> +02 13 00 a0 00 00 00 02 00 06 00 00 00 00 00 00 \
> +00 50 00 00 87 65 43 21 00 00 00 04 00 00 00 00 \
> +00 00 00 00 00 00 88 88 00 00 00 00 00 77 77 77 \
> +00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
> +00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
> +00 00 00 00 00 00 66 66 00 00 00 00 00 33 33 33 \
> +00 40 00 00 00 00 00 05 00 00 00 02 00 00 00 00 \
> +00 00 00 00 00 00 88 88 00 00 00 00 00 77 77 77 \
> +00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
> +00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
> +"], [0], [dnl
> +OFPST_GROUP reply (OF1.1) (xid=0x2):
> + group_id=2271560481,ref_count=4,packet_count=34952,byte_count=7829367,bucket0:packet_count=4369,byte_count=2236962,bucket1:packet_count=4369,byte_count=2236962,bucket2:packet_count=26214,byte_count=3355443
> + group_id=5,ref_count=2,packet_count=34952,byte_count=7829367,bucket0:packet_count=4369,byte_count=2236962,bucket1:packet_count=4369,byte_count=2236962
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([OFPST_GROUP reply - OF1.3])
> +AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
> +AT_CHECK([ovs-ofctl ofp-print "\
> +04 13 00 b0 00 00 00 02 00 06 00 00 00 00 00 00 \
> +00 58 00 00 87 65 43 21 00 00 00 04 00 00 00 00 \
> +00 00 00 00 00 00 88 88 00 00 00 00 00 77 77 77 \
> +00 00 00 12 1d cd 65 00 \
> +00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
> +00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
> +00 00 00 00 00 00 66 66 00 00 00 00 00 33 33 33 \
> +00 48 00 00 00 00 00 05 00 00 00 02 00 00 00 00 \
> +00 00 00 00 00 00 88 88 00 00 00 00 00 77 77 77 \
> +00 00 00 10 1d cd 65 00 \
> +00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
> +00 00 00 00 00 00 11 11 00 00 00 00 00 22 22 22 \
> +"], [0], [dnl
> +OFPST_GROUP reply (OF1.3) (xid=0x2):
> + group_id=2271560481,duration=18.5s,ref_count=4,packet_count=34952,byte_count=7829367,bucket0:packet_count=4369,byte_count=2236962,bucket1:packet_count=4369,byte_count=2236962,bucket2:packet_count=26214,byte_count=3355443
> + group_id=5,duration=16.5s,ref_count=2,packet_count=34952,byte_count=7829367,bucket0:packet_count=4369,byte_count=2236962,bucket1:packet_count=4369,byte_count=2236962
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([OFPST_GROUP_DESC request])
> +AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
> +AT_CHECK([ovs-ofctl ofp-print "\
> +02 12 00 10 00 00 00 02 00 07 00 00 00 00 00 00 \
> +"], [0], [OFPST_GROUP_DESC request (OF1.1) (xid=0x2):
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([OFPST_GROUP_DESC reply])
> +AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
> +AT_CHECK([ovs-ofctl ofp-print "\
> +02 13 00 78 00 00 00 02 00 07 00 00 00 00 00 00 \
> +00 68 01 00 00 00 20 00 \
> +00 20 00 64 00 00 00 01 ff ff ff ff 00 00 00 00 \
> +00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 00 \
> +00 20 00 c8 00 00 00 02 ff ff ff ff 00 00 00 00 \
> +00 00 00 10 00 00 00 02 00 00 00 00 00 00 00 00 \
> +00 20 00 c8 00 00 00 03 ff ff ff ff 00 00 00 00 \
> +00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 00 \
> +"], [0], [dnl
> +OFPST_GROUP_DESC reply (OF1.1) (xid=0x2):
> + group_id=8192,type=select,bucket=weight:100,watch_port:1,actions=output:1,bucket=weight:200,watch_port:2,actions=output:2,bucket=weight:200,watch_port:3,actions=output:3
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([OFPST_GROUP_FEATURES request])
> +AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
> +AT_CHECK([ovs-ofctl ofp-print "\
> +03 12 00 10 00 00 00 02 00 08 00 00 00 00 00 00 \
> +"], [0], [OFPST_GROUP_FEATURES request (OF1.2) (xid=0x2):
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([OFPST_GROUP_FEATURES reply])
> +AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
> +AT_CHECK([ovs-ofctl ofp-print "\
> +03 13 00 38 00 00 00 02 00 08 00 00 00 00 00 00 \
> +00 00 00 0f 00 00 00 0f \
> +00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 \
> +00 00 00 01 00 00 00 03 00 00 00 07 00 00 00 0f \
> +"], [0], [dnl
> +OFPST_GROUP_FEATURES reply (OF1.2) (xid=0x2):
> + Group table:
> + Types: 0xf
> + Capabilities: 0xf
> + All group :
> + max_groups = 0x1 actions=0x00000001
> + Select group :
> + max_groups = 0x2 actions=0x00000003
> + Indirect group :
> + max_groups = 0x3 actions=0x00000007
> + Fast Failover group :
There is a trailing space on the line above.
> + max_groups = 0x4 actions=0x0000000f
> +])
> +AT_CLEANUP
> +
> +AT_SETUP([OFPST_PORT_DESC request - OF1.0])
> +AT_KEYWORDS([ofp-print OFPT_STATS_REQUEST])
> +AT_CHECK([ovs-ofctl ofp-print "0110000c00000001000d0000"], [0], [dnl
> +OFPST_PORT_DESC request (xid=0x1):
> +])
> +AT_CLEANUP
> +
> AT_SETUP([OFPST_PORT_DESC reply - OF1.0])
> AT_KEYWORDS([ofp-print OFPT_STATS_REPLY])
> AT_CHECK([ovs-ofctl ofp-print "\
> @@ -2068,6 +2175,22 @@ NXT_FLOW_MOD (xid=0x2): ADD NXM_NX_TUN_ID(00000000000001c8), NXM_NX_REG0(0000007
> ])
> AT_CLEANUP
>
> +AT_SETUP([OFPT_GROUP_MOD])
> +AT_KEYWORDS([ofp-print])
> +AT_CHECK([ovs-ofctl ofp-print "\
> +02 0f 00 70 11 22 33 44 00 00 01 00 87 65 43 21 \
> +00 20 00 64 00 00 00 01 ff ff ff ff 00 00 00 00 \
> +00 00 00 10 00 00 00 01 00 00 00 00 00 00 00 00 \
> +00 20 00 c8 00 00 00 02 ff ff ff ff 00 00 00 00 \
> +00 00 00 10 00 00 00 02 00 00 00 00 00 00 00 00 \
> +00 20 00 c8 00 00 00 03 ff ff ff ff 00 00 00 00 \
> +00 00 00 10 00 00 00 03 00 00 00 00 00 00 00 00 \
> +"], [0], [dnl
> +OFPT_GROUP_MOD (OF1.1) (xid=0x11223344):
> + ADD group_id=2271560481,type=select,bucket=weight:100,watch_port:1,actions=output:1,bucket=weight:200,watch_port:2,actions=output:2,bucket=weight:200,watch_port:3,actions=output:3
> +])
> +AT_CLEANUP
> +
> AT_SETUP([NXT_FLOW_REMOVED])
> AT_KEYWORDS([ofp-print])
> AT_CHECK([ovs-ofctl ofp-print "\
[snip]
More information about the dev
mailing list