@@ -80,10 +80,20 @@ message PacketClassifier {
80
80
}
81
81
optional EthernetHeader ethernet_header = 3 ;
82
82
83
+ // [RFC 3032](https://rfc-editor.org/rfc/rfc3032)
83
84
message MplsLabelStackEntry {
84
- optional uint32 label = 1 ;
85
- // When matching on additional fields in the MPLS label stack entry is
86
- // needed we can add them here.
85
+ optional uint32 label = 1 ; // restricted to unsigned 20-bit values
86
+
87
+ // TODO: Consider https://rfc-editor.org/rfc/rfc5462 field.
88
+ // optional uint32 traffic_class = 2; unsigned 3-bit values only
89
+
90
+ // If this MplsLabelStackEntry is last in an ordered list of entries,
91
+ // then it may be inferred that it is the bottom of the stack. Whether
92
+ // the Bottom-of-Stack bit is to be set or not may require additional
93
+ // context.
94
+ //
95
+ // TODO: Consider explicit Bottom of Stack indicator.
96
+ // optional bool s = 3;
87
97
}
88
98
optional MplsLabelStackEntry mpls_label_stack_entry = 4 ;
89
99
@@ -116,12 +126,65 @@ message IpFlowClassifier {
116
126
reserved 4 to max; // Next IDs.
117
127
}
118
128
129
+ // MEF EVC E-Line Flow Classifier
130
+ //
131
+ // Suitable for describing a MEF 10.4 section 8.3.1 Point-to-Point EVC,
132
+ // specifically:
133
+ //
134
+ // * "Ethernet Private Line Service (EPL)
135
+ // Point-to-Point EVC, all to one bundling"
136
+ //
137
+ // See also: MEF 6.3 Section 9.1, MEF 7.4 Section 11.1
138
+ //
139
+ // * "Ethernet Virtual Private Line (EVPL)
140
+ // Point-to-Point EVC, bundling and/or multiplexing"
141
+ //
142
+ // See also: MEF 6.3 Section 9.2, MEF 7.4 Section 11.2
143
+ message EvcElineFlowClassifier {
144
+ // A locally meaningful name for traffic described by this classifier.
145
+ //
146
+ // Possible examples include:
147
+ // * the MEF 10.4 section 10.1 EVC EP ID service attribute that
148
+ // corresponds to the UNI and Map service attributes below, or
149
+ // * an identifier for the pseudowire that will carry this traffic.
150
+ //
151
+ // This does not appear anywhere in the data plane and the value is
152
+ // opaque to rest of the system.
153
+ optional string id = 1 ;
154
+
155
+ // E.g., MEF 10.4 section 10.2 EVC EP UNI service attribute.
156
+ optional NetworkInterfaceId uni = 2 ;
157
+
158
+ // MEF 10.4 section 10.4 EVC EP Map service attribute.
159
+ //
160
+ // For section 10.4.1 "EVC EP Map Service Attribute = List", add
161
+ // all applicable non-zero, non-4095 Customer Edge VLAN IDs.
162
+ //
163
+ // For section 10.4.2 "EVC EP Map service attribute = All", leave
164
+ // this list empty.
165
+ //
166
+ // For section 10.4.3 "EVC EP Map service attribute = UT/PT", use
167
+ // only a single VLAN ID, either 0 (zero) or the value of the UNI's
168
+ // Default CE-VLAN ID attribute (MEF 10.3 and earlier), whichever
169
+ // has local meaning.
170
+ repeated uint32 vlan_ids = 3 ;
171
+
172
+ // For use if Ethernet service frames are classified by another
173
+ // network element and encapsulated inside an MPLS label stack
174
+ // that uniquely identifies the flow.
175
+ //
176
+ repeated PacketClassifier.MplsLabelStackEntry mpls_stack = 4 ;
177
+ }
178
+
119
179
// Rules for matching a network flow.
120
180
message FlowClassifier {
121
181
optional IpFlowClassifier ip_classifier = 1 ;
122
182
123
183
optional PacketClassifier.GenericLayer4Header l4_classifier = 2 ;
124
184
125
185
optional PacketClassifier.EthernetHeader ethernet_classifier = 3 ;
126
- reserved 4 to max; // Next IDs.
186
+
187
+ optional EvcElineFlowClassifier evc_eline_classifier = 4 ;
188
+
189
+ reserved 5 to max; // Next IDs.
127
190
}
0 commit comments