]> git.proxmox.com Git - mirror_ovs.git/blame - Documentation/group-selection-method-property.txt
cirrus: Use FreeBSD 12.2.
[mirror_ovs.git] / Documentation / group-selection-method-property.txt
CommitLineData
8c254406
SH
1Proposal for Group Selection Method Property
2Version: 0.0.3
3
4Author: Simon Horman <simon.horman@netronome.com>, et al.
5Initial Public Revision: September 2014
6
7
8Contents
9========
10
111. Introduction
122. How it Works
133. Experimenter Id
144. Experimenter Messages
155. History
16
17
181. Introduction
19===============
20
13c952ca 21This text describes a Netronome Extension to OpenFlow 1.5 that allows a
8c254406
SH
22controller to provide more information on the selection method for select
23groups. This proposal is in the form of an enhanced select group type.
24
25This may subsequently be proposed as an extension or update to
26the OpenFlow specification.
27
28
292. How it works
30===============
31
32A new Netronome group experimenter property is defined which provides
13c952ca 33compatibility with the group mod message defined in Open Flow 1.5
8c254406
SH
34(also known as ONF EXT-350) and allows parameters for the selection
35method of select groups to be passed by the controller. In particular it
36allows controllers to:
37
38* Specify the fields used for bucket selection by the select group.
39
40* Designate the selection method used.
41
42* Provide a non-field parameter to the selection method.
43
44
453. Experimenter ID
46==================
47
48The Experimenter ID of this extension is:
49
c28a1f83 50NTR_VENDOR_ID = 0x0000154d
8c254406
SH
51
52
534. Group Experimenter Property
54==============================
55
56The following group property experimenter type defined by this extension.
57
58enum ntr_group_mod_subtype {
5a0e4aec 59 NTRT_SELECTION_METHOD = 1,
8c254406
SH
60};
61
62
13c952ca
BP
63Modifications to the group table from the controller may be done with
64a OFPT_GROUP_MOD message described Open Flow 1.5. Group Entry
65Message. Of relevance here is that Open Flow 1.5 group messages have
66properties.
8c254406
SH
67
68This proposal is defined in terms of an implementation of struct
13c952ca
BP
69ofp_group_prop_experimenter which is described in Open Flow 1.5. The
70implementation is:
8c254406
SH
71
72struct ntr_group_prop_selection_method {
73 ovs_be16 type; /* OFPGPT_EXPERIMENTER. */
74 ovs_be16 length; /* Length in bytes of this property. */
75 ovs_be32 experimenter; /* NTR_VENDOR_ID. */
76 ovs_be32 exp_type; /* NTRT_SELECTION_METHOD. */
77 ovs_be32 pad;
78 char selection_method[NTR_MAX_SELECTION_METHOD_LEN];
79 /* Null-terminated */
80 ovs_be64 selection_method_param; /* Non-Field parameter for
81 * bucket selection. */
82
83 /* Followed by:
84 * - Exactly (length - 40) (possibly 0) bytes containing OXM TLVs, then
85 * - Exactly ((length + 7)/8*8 - length) (between 0 and 7) bytes of
86 * all-zero bytes
87 * In summary, ntr_group_prop_selection_method is padded as needed,
88 * to make its overall size a multiple of 8, to preserve alignment
89 * in structures using it.
90 */
91 /* uint8_t field_array[0]; */ /* Zero or more fields encoded as
92 * OXM TLVs where the has_mask bit must
93 * be zero and the value it specifies is
94 * a mask to apply to packet fields and
95 * then input them to the selection
96 * method of a select group. */
97 /* uint8_t pad2[0]; */
98};
99OFP_ASSERT(sizeof(struct ntr_group_mod) == 40);
100
101
102This property may only be used with group mod messages whose:
103* command is OFPGC_ADD or OFPGC_MODIFY; and
104* type is OFPGT_SELECT
105
106
107The type field is the OFPGPT_EXPERIMENTER which is
108defined in EXT-350 as 0xffff.
109
110
111The experimenter field is the Experimenter ID (see 3).
112
113
114The exp_type field is NTRT_SELECTION_METHOD.
115
116
117The group selection_method is a null-terminated string which if non-zero
118length specifies a selection method known to an underlying layer of the
119switch. The value of NTR_MAX_SELECTION_METHOD_LEN is 16.
120
121The group selection_method may be zero-length to request compatibility with
122Open Flow 1.4.
123
124
125The selection_method_param provides a non-field parameter for
126the group selection_method. It must be all-zeros unless the
127group selection_method is non-zero length.
128
129The selection_method_param may for example be used as an initial value for
130the hash of a hash group selection method.
131
132
133The fields field is an ofp_match structure which includes the fields which
134should be used as inputs to bucket selection. ofp_match is described in
135Open Flow 1.4 section 7.2.2 Flow Match Structures.
136
137Fields must not be specified unless the group selection_method is non-zero
138length.
139
140The pre-requisites for fields specified must be satisfied in the match for
141any flow that uses the group.
142
143Masking is allowed but not required for fields whose TLVs allow masking.
144
145The fields may for example be used as the fields that are hashed
146by a hash group selection method.
147
148
1495. History
150==========
151
152This proposal has been developed independently of any similar work in this
153area. No such work is known.