idnits 2.17.00 (12 Aug 2021)
/tmp/idnits33889/draft-penno-sfc-yang-13.txt:
Checking boilerplate required by RFC 5378 and the IETF Trust (see
https://trustee.ietf.org/license-info):
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt:
----------------------------------------------------------------------------
No issues found here.
Checking nits according to https://www.ietf.org/id-info/checklist :
----------------------------------------------------------------------------
** There are 24 instances of too long lines in the document, the longest
one being 78 characters in excess of 72.
Miscellaneous warnings:
----------------------------------------------------------------------------
== The copyright year in the IETF Trust and authors Copyright Line does not
match the current year
== Line 216 has weird spacing: '...ro name str...'
== Line 246 has weird spacing: '...ro name str...'
== Line 273 has weird spacing: '...ro name str...'
== Line 506 has weird spacing: '...rw name str...'
== Line 658 has weird spacing: '...ro name str...'
== (3 more instances...)
-- The document date (March 02, 2015) is 2637 days in the past. Is this
intentional?
Checking references for intended status: Proposed Standard
----------------------------------------------------------------------------
(See RFCs 3967 and 4897 for information about using normative references
to lower-maturity documents in RFCs)
== Missing Reference: 'RFC6020' is mentioned on line 105, but not defined
== Missing Reference: 'RFC6241' is mentioned on line 107, but not defined
== Unused Reference: 'RFC2616' is defined on line 2549, but no explicit
reference was found in the text
== Unused Reference: 'I-D.quinn-sfc-nsh' is defined on line 2565, but no
explicit reference was found in the text
** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231,
RFC 7232, RFC 7233, RFC 7234, RFC 7235)
== Outdated reference: draft-ietf-sfc-architecture has been published as
RFC 7665
== Outdated reference: draft-ietf-sfc-problem-statement has been published
as RFC 7498
Summary: 2 errors (**), 0 flaws (~~), 13 warnings (==), 1 comment (--).
Run idnits with the --verbose option for more detailed information about
the items above.
--------------------------------------------------------------------------------
2 SFC Netmod R. Penno
3 Internet-Draft P. Quinn
4 Intended status: Standards Track Cisco Systems
5 Expires: September 3, 2015 D. Zhou
6 J. Li
7 Intel Corporation
8 March 02, 2015
10 Yang Data Model for Service Function Chaining
11 draft-penno-sfc-yang-13
13 Abstract
15 This document defines a YANG data model that can be used to configure
16 and manage Service Function Chains.
18 Requirements Language
20 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
21 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
22 document are to be interpreted as described in RFC 2119 [RFC2119].
24 Status of This Memo
26 This Internet-Draft is submitted in full conformance with the
27 provisions of BCP 78 and BCP 79.
29 Internet-Drafts are working documents of the Internet Engineering
30 Task Force (IETF). Note that other groups may also distribute
31 working documents as Internet-Drafts. The list of current Internet-
32 Drafts is at http://datatracker.ietf.org/drafts/current/.
34 Internet-Drafts are draft documents valid for a maximum of six months
35 and may be updated, replaced, or obsoleted by other documents at any
36 time. It is inappropriate to use Internet-Drafts as reference
37 material or to cite them other than as "work in progress."
39 This Internet-Draft will expire on September 3, 2015.
41 Copyright Notice
43 Copyright (c) 2015 IETF Trust and the persons identified as the
44 document authors. All rights reserved.
46 This document is subject to BCP 78 and the IETF Trust's Legal
47 Provisions Relating to IETF Documents
48 (http://trustee.ietf.org/license-info) in effect on the date of
49 publication of this document. Please review these documents
50 carefully, as they describe your rights and restrictions with respect
51 to this document. Code Components extracted from this document must
52 include Simplified BSD License text as described in Section 4.e of
53 the Trust Legal Provisions and are provided without warranty as
54 described in the Simplified BSD License.
56 Table of Contents
58 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
59 2. Definitions and Acronyms . . . . . . . . . . . . . . . . . . 3
60 3. Understanding SFC Yang Models . . . . . . . . . . . . . . . . 3
61 4. Service Function (SF) . . . . . . . . . . . . . . . . . . . . 4
62 4.1. Module Structure . . . . . . . . . . . . . . . . . . . . 4
63 4.2. Service Function Configuration Module . . . . . . . . . . 6
64 5. Service Function Type (SFT) . . . . . . . . . . . . . . . . . 11
65 5.1. Module Structure . . . . . . . . . . . . . . . . . . . . 11
66 5.2. Service Function Type Configuration Model . . . . . . . . 11
67 6. Service Function Chain (SFC) . . . . . . . . . . . . . . . . 14
68 6.1. Module Structure . . . . . . . . . . . . . . . . . . . . 14
69 6.2. Service Function Chain Configuration Model . . . . . . . 15
70 7. Service Function Path (SFP) . . . . . . . . . . . . . . . . . 19
71 7.1. Module Structure . . . . . . . . . . . . . . . . . . . . 19
72 7.2. Service Function Path Configuration Model . . . . . . . . 20
73 8. Service Function Forwarder (SFF) . . . . . . . . . . . . . . 24
74 8.1. Module Struture . . . . . . . . . . . . . . . . . . . . . 24
75 8.2. Service Function Forwarder Model . . . . . . . . . . . . 25
76 9. Service Function Forwarder Open vSwitch (SFF-OVS) . . . . . . 30
77 9.1. Module Structure . . . . . . . . . . . . . . . . . . . . 30
78 9.2. Service Function Forwarder OVS Model . . . . . . . . . . 30
79 10. Service Locator (SL) . . . . . . . . . . . . . . . . . . . . 32
80 10.1. Module Structure . . . . . . . . . . . . . . . . . . . . 32
81 10.2. Service Locator Module . . . . . . . . . . . . . . . . . 32
82 11. Rendered Service Path (RSP) . . . . . . . . . . . . . . . . . 36
83 11.1. Module Structure . . . . . . . . . . . . . . . . . . . . 36
84 11.2. Rendered Service Path Module . . . . . . . . . . . . . . 37
85 12. Service Function Classifier (SCF) . . . . . . . . . . . . . . 43
86 12.1. Module Structure . . . . . . . . . . . . . . . . . . . . 43
87 12.2. Service Function Classifier Module . . . . . . . . . . . 44
88 13. Service Function Description Monitor Report (SF-DESC-MON-RPT) 47
89 13.1. Module Structure . . . . . . . . . . . . . . . . . . . . 47
90 13.2. Service Function Description Monitor Report Module . . . 48
91 14. Service Function Description Monitor (SF-DESC-MON) . . . . . 52
92 14.1. Module Structure . . . . . . . . . . . . . . . . . . . . 52
93 14.2. Service Function Description Monitor Report Module . . . 52
94 15. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 53
95 16. Security Considerations . . . . . . . . . . . . . . . . . . . 53
96 17. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 53
97 18. Changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
98 19. References . . . . . . . . . . . . . . . . . . . . . . . . . 56
99 19.1. Normative References . . . . . . . . . . . . . . . . . . 56
100 19.2. Informative References . . . . . . . . . . . . . . . . . 57
101 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 57
103 1. Introduction
105 YANG [RFC6020] is a data definition language that was introduced to
106 define the contents of a conceptual data store that allows networked
107 devices to be managed using NETCONF [RFC6241]. YANG is proving
108 relevant beyond its initial confines, as bindings to other interfaces
109 (e.g. ReST) and encodings other than XML (e.g. JSON) are being
110 defined. Furthermore, YANG data models can be used as the basis of
111 implementation for other interfaces, such as CLI and programmatic
112 APIs.
114 This document defines a YANG data model that can be used to configure
115 and manage Service Function Chains
117 2. Definitions and Acronyms
119 The reader should be familiar with the terms contained in
120 [I-D.ietf-sfc-architecture], [I-D.ietf-sfc-problem-statement]
121 ,[I-D.ietf-sfc-architecture] and [I-D.quinn-vxlan-gpe]
123 3. Understanding SFC Yang Models
125 There are two main models in SFC: service-function (SF) and service-
126 function-forwarder (SFF). Most other models are used or derived from
127 those models. SF describes a service function like firewall, napt44,
128 dpi, http-proxy, etc. SFF describes a forwarding element that moves
129 packets along a service path. A SFF to function only needs to be
130 able to associate a Service Path ID and SI to a next hop data plane
131 locator.
133 The service-locator model provides a centralized place to register
134 transport and endpoints used with SFFs and SFs. This allows reuse
135 across a large number of other models since in networking usually
136 data plane locators are widely used. Some examples of transport
137 types are GRE, VXLAN-GPE and the data plane locator are IP:port,
138 VLAN-ID and MPLS Label. This model is imported by SFF, SF and
139 Rendered Service Path (RSP) models.
141 Service Function Type model serves as a registry for SF types. The
142 model can be easily extended by anyone looking to define their own
143 service type. This model is imported by SF and Service Function
144 Chain (SFC). Since a SFC is an abstract order of service function
145 types, having a registry of types is important. Furthermore, when we
146 instantiate a SFP and RSP from a SFC we need to choose the actual SFs
147 that will be traversed by the packets and this requires us to know
148 the type associated with a Service Function.
150 A service function path (SFP) is an intermediate step between SFC and
151 RSP. It allows the user to provide input or constraints into the
152 construction of a RSP. This input ranges from nothing to specifying
153 the entire path. During RSP construction, the controller examines
154 the SFP and 'fill in the blanks'.
156 One of the most important configuration aspects of a SF is the data
157 plane locators. A SF's data plane locators indicates how the SF can
158 be reached. A SF can have multiple data plane locators of different
159 transport and types as specified in the service locator model.
161 A SFF has also can have multiple data plane locators that indicate
162 how it can be reached. It is very important when constructing a RSP
163 to pick SFFs that have data plane locators of the same transport and
164 type so that the path works. A SFF has an additional very important
165 configuration container, the service function dictionary. The
166 service function dictionary stores the SFF's view of the Service
167 Functions. It contains all SFs and their data plane locators.
169 Therefore the Service Function data plane locators and the SFF
170 service function dictionary constitute two pieces of a puzzle. If
171 they fit, it means they can be used in a path, otherwise they can
172 not.
174 The RSP model is the result of creating a Service Function Chain,
175 applying policies through the Service Function Path and finally
176 choosing a collection of (SFF, SF) tuples that meet these criteria.
177 The RSP is an operational model, meaning it can read but not changed.
179 4. Service Function (SF)
181 This module describe a Service Function, which is an essential
182 building block of other modules.
184 4.1. Module Structure
186 module: service-function
187 +--rw service-functions
188 | +--rw service-function* [name]
189 | +--rw name string
190 | +--rw type sfc-sft:service-function-type
191 | +--rw rest-uri? inet:uri
192 | +--rw ip-mgmt-address? inet:ip-address
193 | +--rw request_reclassification? boolean
194 | +--rw nsh-aware? boolean
195 | +--rw sf-data-plane-locator* [name]
196 | +--rw name string
197 | +--rw (locator-type)
198 | | +--:(ip)
199 | | | +--rw ip? inet:ip-address
200 | | | +--rw port? inet:port-number
201 | | +--:(lisp)
202 | | | +--rw eid? inet:ip-address
203 | | +--:(mac)
204 | | | +--rw mac? yang:mac-address
205 | | | +--rw vlan-id? uint16
206 | | +--:(function)
207 | | | +--rw function-name? string
208 | | +--:(mpls)
209 | | +--rw mpls-label? uint32
210 | +--rw transport? identityref
211 | +--rw service-function-forwarder? string
212 +--ro service-functions-state
213 +--ro service-function-state* [name]
214 +--ro name string
215 +--ro sf-service-path* [name]
216 +--ro name string
217 rpcs:
218 +---x delete-all-service-function
219 +---x put-service-function
220 | +--ro input
221 | +--ro name? string
222 | +--ro type sfc-sft:service-function-type
223 | +--ro rest-uri? inet:uri
224 | +--ro ip-mgmt-address? inet:ip-address
225 | +--ro request_reclassification? boolean
226 | +--ro nsh-aware? boolean
227 | +--ro sf-data-plane-locator* [name]
228 | +--ro name string
229 | +--ro (locator-type)
230 | | +--:(ip)
231 | | | +--ro ip? inet:ip-address
232 | | | +--ro port? inet:port-number
233 | | +--:(lisp)
234 | | | +--ro eid? inet:ip-address
235 | | +--:(mac)
236 | | | +--ro mac? yang:mac-address
237 | | | +--ro vlan-id? uint16
238 | | +--:(function)
239 | | | +--ro function-name? string
240 | | +--:(mpls)
241 | | +--ro mpls-label? uint32
242 | +--ro transport? identityref
243 | +--ro service-function-forwarder? string
244 +---x read-service-function
245 | +--ro input
246 | | +--ro name string
247 | +--ro output
248 | +--ro name? string
249 | +--ro type sfc-sft:service-function-type
250 | +--ro rest-uri? inet:uri
251 | +--ro ip-mgmt-address? inet:ip-address
252 | +--ro request_reclassification? boolean
253 | +--ro nsh-aware? boolean
254 | +--ro sf-data-plane-locator* [name]
255 | +--ro name string
256 | +--ro (locator-type)
257 | | +--:(ip)
258 | | | +--ro ip? inet:ip-address
259 | | | +--ro port? inet:port-number
260 | | +--:(lisp)
261 | | | +--ro eid? inet:ip-address
262 | | +--:(mac)
263 | | | +--ro mac? yang:mac-address
264 | | | +--ro vlan-id? uint16
265 | | +--:(function)
266 | | | +--ro function-name? string
267 | | +--:(mpls)
268 | | +--ro mpls-label? uint32
269 | +--ro transport? identityref
270 | +--ro service-function-forwarder? string
271 +---x delete-service-function
272 +--ro input
273 +--ro name string
275 4.2. Service Function Configuration Module
277 file "service-function@2014-07-01.yang"
279 module service-function {
281 namespace "urn:cisco:params:xml:ns:yang:sfc-sf";
283 prefix sfc-sf;
285 import ietf-inet-types { prefix inet; }
286 import ietf-yang-types { prefix yang; }
287 import service-function-type {prefix sfc-sft;}
288 import service-locator {prefix sfc-sl;}
289 organization "Cisco Systems, Inc.";
290 contact "Reinaldo Penno ";
292 description
293 "This module contains a collection of YANG definitions for
294 managing service function.
296 It follows closely the constructs of
297 http://tools.ietf.org/html/draft-ietf-netmod-interfaces-cfg-12
299 Copyright (c) 2013 IETF Trust and the persons identified as
300 authors of the code. All rights reserved.
302 Redistribution and use in source and binary forms, with or
303 without modification, is permitted pursuant to, and subject
304 to the license terms contained in, the Simplified BSD License
305 set forth in Section 4.c of the IETF Trust's Legal Provisions
306 Relating to IETF Documents
307 (http://trustee.ietf.org/license-info).
309 This version of this YANG module is part of RFC XXXX; see
310 the RFC itself for full legal notices.";
312 // RFC Ed.: replace XXXX with actual RFC number and remove this
313 // note.
315 // RFC Ed.: update the date below with the date of RFC publication
316 // and remove this note.
318 revision 2014-07-01 {
319 description
320 "Changes based on Opendaylight Testing.";
321 }
323 typedef service-function-ref {
324 type leafref {
325 path "/sfc-sf:service-functions/sfc-sf:service-function/"
326 + "sfc-sf:name";
327 }
328 description
329 "This type is used by data models that need to reference
330 configured service functions.";
331 }
333 grouping service-function-entry {
334 description
335 "This group bundles together all information related to a
336 single service function";
337 leaf name {
338 type string;
339 description
340 "The name of the service function.";
341 }
342 leaf type {
343 type sfc-sft:service-function-type;
344 mandatory true;
345 description
346 "Service Function Type from service-function-type yang
347 model";
348 }
349 leaf rest-uri {
350 description "URI of REST based management";
351 type inet:uri;
352 }
353 leaf ip-mgmt-address {
354 type inet:ip-address;
355 description
356 "The IP and port used to configure this service-function";
357 }
358 leaf request_reclassification {
359 description "This leaf determines whether SF can request
360 reclassification by the SFF";
361 type boolean;
362 }
363 leaf nsh-aware {
364 type boolean;
365 description "Whether this SF can process NSH headers";
366 }
368 list sf-data-plane-locator {
369 description
370 "A network data-plane locator";
371 key "name";
372 leaf name {
373 type string;
374 description
375 "A unique string that represents this
376 data-plane-locator";
377 }
378 uses sfc-sl:data-plane-locator;
379 leaf service-function-forwarder {
380 type string;
381 description
382 "The service function forwarder associated with this
383 locator";
384 }
385 }
386 }
388 container service-functions {
389 description
390 "A function that is responsible for specific
391 treatment of received packets. A Service Function can act at
392 various layers of a protocol stack (e.g., at the network layer
393 or other OSI layers). A Service Function can be a virtual
394 element or be embedded in a physical network element. One of
395 multiple Service Functions can be embedded in the same network
396 element. Multiple occurrences of the Service Function can be
397 enabled in the same administrative domain.
399 One or more Service Functions can be involved in the delivery
400 of added-value services. A non-exhaustive list of Service
401 Functions includes: firewalls, WAN and application
402 acceleration, Deep Packet Inspection (DPI),a LI (Lawful
403 Intercept) module, server load balancers, NAT44 [RFC3022],
404 NAT64 [RFC6146], NPTv6 [RFC6296], HOST_ID injection, HTTP
405 Header Enrichment functions, TCP optimizer, etc.
407 An SF may be SFC encapsulation aware, that is it receives, and
408 acts on information in the SFC encapsulation, or unaware in
409 which case data forwarded to the service does not contain the
410 SFC encapsulation.";
412 list service-function {
413 description
414 "This list holds configuration data for all service functions
415 in the domain";
416 key "name";
417 uses service-function-entry;
418 }
419 }
421 container service-functions-state {
422 description
423 "This container hold operational state for all service
424 functions";
425 config false;
426 list service-function-state {
427 description
428 "This list holds operational data for all service functions
429 in the domain";
430 key "name";
431 leaf name {
432 type string;
433 description
434 "the name of the service function";
435 }
436 list sf-service-path {
437 key "name";
438 leaf name {
439 type string;
440 description
441 "The name of the Service Path";
442 }
443 description
444 "A list of all service function paths that contain this
445 service function";
446 }
447 }
448 }
450 rpc delete-all-service-function {
451 description
452 "Deletes all service functions";
453 }
455 rpc put-service-function {
456 description
457 "Creates a service function";
458 input {
459 uses service-function-entry;
460 }
461 }
462 rpc read-service-function {
463 description
464 "Reads a service function";
465 input {
466 leaf name {
467 type string;
468 mandatory true;
469 description "The name of the service function.";
470 }
471 }
472 output {
473 uses service-function-entry;
474 }
475 }
476 rpc delete-service-function {
477 description
478 "Deletes a service function";
480 input {
481 leaf name {
482 type string;
483 mandatory true;
484 description "The name of the service function.";
485 }
486 }
487 }
488 }
490
492 5. Service Function Type (SFT)
494 This module holds one list for each service function type found in
495 the system. Each one of these lists has the name of all service
496 functions configured on the system of that particular type. This
497 allows finding a service function of a given type simple.
499 5.1. Module Structure
501 module: service-function-type
502 +--rw service-function-types
503 +--rw service-function-type* [type]
504 +--rw type service-function-type
505 +--rw sft-service-function-name* [name]
506 +--rw name string
508 5.2. Service Function Type Configuration Model
510 file "service-function-type@2014-07-01.yang"
512 module service-function-type {
514 namespace "urn:cisco:params:xml:ns:yang:sfc-sft";
516 prefix sfc-sft;
518 import ietf-inet-types { prefix inet; }
519 import ietf-yang-types { prefix yang; }
521 organization "Cisco Systems, Inc.";
522 contact "Reinaldo Penno ";
524 description
525 "This module contains a collection of YANG definitions for
526 managing service function types.
528 It follows closely the constructs of
529 http://tools.ietf.org/html/draft-ietf-netmod-interfaces-cfg-12
531 Copyright (c) 2013 IETF Trust and the persons identified as
532 authors of the code. All rights reserved.
534 Redistribution and use in source and binary forms, with or
535 without modification, is permitted pursuant to, and subject
536 to the license terms contained in, the Simplified BSD License
537 set forth in Section 4.c of the IETF Trust's Legal Provisions
538 Relating to IETF Documents
539 (http://trustee.ietf.org/license-info).
541 This version of this YANG module is part of RFC XXXX; see
542 the RFC itself for full legal notices.";
544 // RFC Ed.: replace XXXX with actual RFC number and remove this
545 // note.
547 // RFC Ed.: update the date below with the date of RFC publication
548 // and remove this note.
550 revision 2014-07-01 {
551 description
552 "Changes based on Opendaylight Testing.";
553 }
555 // Service Function
557 // Service Function Type definitions
559 identity service-function-type-identity {
560 description
561 "Base identity from which specific service function
562 types are derived.";
563 }
565 identity firewall {
566 base "service-function-type-identity";
567 description "Firewall";
568 }
570 identity dpi {
571 base "service-function-type-identity";
572 description "Deep Packet Inspection";
573 }
575 identity napt44 {
576 base "service-function-type-identity";
577 description "Network Address and Port Translation 44";
578 }
580 identity qos {
581 base "service-function-type-identity";
582 description "Quality of Service";
583 }
585 identity ids {
586 base "service-function-type-identity";
587 description "Intrusion Detection System";
588 }
590 identity http-header-enrichment {
591 base "service-function-type-identity";
592 description "HTTP services that add HTTP headers for charging and adding subscriber metadata";
593 }
595 typedef service-function-type {
596 type identityref {
597 base "service-function-type-identity";
598 }
599 description "This type is used to reference all
600 registered service function types";
601 }
603 container service-function-types {
604 description
605 "A list of Service function Types. For each type we keep
606 a list of Service Functions";
608 list service-function-type {
609 key "type";
610 leaf type {
611 type service-function-type;
612 description
613 "The service function type";
614 }
615 list sft-service-function-name {
616 key "name";
617 leaf name {
618 type string;
619 description
620 "The name of the service function.";
621 }
622 description
623 "The list of all service functions of a specific type";
624 }
625 description
626 "A list of all service types. Each service-type entry holds
627 a list of all service functions of the type";
628 }
629 }
630 }
632
634 6. Service Function Chain (SFC)
636 This model describes a service function chain which is basically an
637 ordered list of services. But a service function chain does not
638 specify exactly which service (firewal1 vs. firewall2) will be used
639 to actually process packets.
641 6.1. Module Structure
642 module: service-function-chain
643 +--rw service-function-chains
644 | +--rw service-function-chain* [name]
645 | +--rw name string
646 | +--rw symmetric? boolean
647 | +--rw sfc-service-function* [name]
648 | +--rw name string
649 | +--rw type sfc-sft:service-function-type
650 | +--rw order? uint8
651 +--ro service-function-chains-state
652 +--ro service-function-chain-state* [name]
653 +--ro name string
654 +--ro sfc-service-function-path* string
655 rpcs:
656 +---x instantiate-service-function-chain
657 | +--ro input
658 | | +--ro name string
659 | +--ro output
660 | +--ro name? string
661 +---x put-service-function-chains
662 +--ro input
663 +--ro service-function-chain* [name]
664 +--ro name string
665 +--ro symmetric? boolean
666 +--ro sfc-service-function* [name]
667 +--ro name string
668 +--ro type sfc-sft:service-function-type
669 +--ro order? uint8
671 6.2. Service Function Chain Configuration Model
673 file "service-function-chain@2014-07-01.yang"
675 module service-function-chain {
677 namespace "urn:cisco:params:xml:ns:yang:sfc-sfc";
679 prefix sfc-sfc;
681 import ietf-inet-types { prefix inet; }
682 import ietf-yang-types { prefix yang; }
683 import service-function {prefix sfc-sf; }
684 import service-function-type {prefix sfc-sft;}
686 organization "Cisco Systems, Inc.";
687 contact "Reinaldo Penno ";
688 description
689 "This module contains a collection of YANG definitions for
690 managing service function chains.
692 Copyright (c) 2013 IETF Trust and the persons identified as
693 authors of the code. All rights reserved.
695 Redistribution and use in source and binary forms, with or
696 without modification, is permitted pursuant to, and subject
697 to the license terms contained in, the Simplified BSD License
698 set forth in Section 4.c of the IETF Trust's Legal Provisions
699 Relating to IETF Documents
700 (http://trustee.ietf.org/license-info).
702 This version of this YANG module is part of RFC XXXX; see
703 the RFC itself for full legal notices.";
705 // RFC Ed.: replace XXXX with actual RFC number and remove this
706 // note.
708 // RFC Ed.: update the date below with the date of RFC publication
709 // and remove this note.
711 revision 2014-07-01 {
712 description
713 "Revised based on Opendaylight Project feedback";
714 }
716 grouping service-function-chain-grouping {
717 list service-function-chain {
718 description
719 "A list that holds all service function chains in the
720 domain";
721 key "name";
722 leaf name {
723 type string;
724 description
725 "the name of the service function chain";
726 }
727 leaf symmetric {
728 type boolean;
729 default false;
730 description
731 "If the chain is symmetric we will create two service
732 paths, one ingress and another egress. Packets traverse
733 the egress service path in the reverse order of the
734 ingress path";
735 }
736 list sfc-service-function {
737 key "name";
738 leaf name {
739 type string;
740 description
741 "A unique handle that describes the service function
742 that will be chosen for this type, such as
743 ingress-dpi. This is not the service function name";
744 }
745 leaf type {
746 type sfc-sft:service-function-type;
747 mandatory true;
748 description
749 "Service Function Type from service-function-type.yang";
750 }
751 leaf order {
752 type uint8;
753 }
754 ordered-by user;
755 description
756 "A list of service functions that compose the service
757 chain";
758 }
759 }
760 description
761 "This group bundles together all service function chains in the
762 domain";
763 }
765 // Service Function Chains
767 container service-function-chains {
768 uses service-function-chain-grouping;
769 description
770 "A service Function chain defines an
771 abstract set of service functions and their ordering
772 constraints that must be applied to packets and/or frames
773 selected as a result of classification. The implied order
774 may not be a linear progression as the architecture allows
775 for nodes that copy to more than one branch, and also allows
776 for cases where there is flexibility in the order in which
777 services need to be applied. The term service chain is often
778 used as shorthand for service function chain.";
779 }
781 container service-function-chains-state {
782 config false;
783 list service-function-chain-state {
784 description
785 "A list that contains operational service function
786 chain state";
787 key "name";
788 leaf name {
789 type string;
790 description
791 "the name of the service function chain";
792 }
793 leaf-list sfc-service-function-path {
794 type string;
795 description
796 "A list of all service function paths instantiated from
797 this chain";
798 }
799 }
800 description
801 "This containers holds operational service function
802 chain state and their associated service path";
803 }
805 // Remote procedure calls
807 // (main feature: instantiation of a SFC)
809 rpc instantiate-service-function-chain {
810 description
811 "Instantiates a single service function";
812 input {
813 leaf name {
814 type string;
815 mandatory true;
816 description
817 "The name of the service function chain to be
818 instantiated.";
819 }
820 }
821 output {
822 leaf name {
823 type string;
824 description
825 "The name of the created service function path.";
826 }
827 }
828 }
830 // (RPC for testing)
831 rpc put-service-function-chains {
832 description
833 "Creates Service-Functions";
834 input {
835 uses service-function-chain-grouping;
836 }
837 }
838 }
840
842 7. Service Function Path (SFP)
844 A Service Function Path is an instantiation of a service function
845 chain. It allows be user to provide constrains for the rendering of
846 the service path such as specific service-hops that need to be
847 visited, the transport encapsulation used in the overlay, whether
848 paths should be symmetric, amongst others.
850 7.1. Module Structure
852 module: service-function-path
853 +--rw service-function-paths
854 | +--rw service-function-path* [name]
855 | +--rw name string
856 | +--rw symmetric? boolean
857 | +--rw classifier? string
858 | +--rw symmetric-classifier? string
859 | +--rw context-metadata? sfc-md:context-metadata-ref
860 | +--rw variable-metadata? sfc-md:variable-metadata-ref
861 | +--rw service-path-hop* [hop-number]
862 | | +--rw hop-number uint8
863 | | +--rw service-function-name? string
864 | | +--rw service-function-forwarder? string
865 | | +--rw service-index? uint8
866 | +--rw service-chain-name string
867 | +--rw starting-index? uint8
868 | +--rw path-id? uint32
869 +--ro service-function-paths-state
870 +--ro service-function-path-state* [name]
871 +--ro name string
872 +--ro sfp-rendered-service-path* [name]
873 +--ro name string
875 7.2. Service Function Path Configuration Model
877 file "service-function-path@2014-07-01.yang"
879 module service-function-path {
881 namespace "urn:cisco:params:xml:ns:yang:sfc-sfp";
883 prefix sfc-sfp;
885 import ietf-inet-types { prefix inet; }
886 import ietf-yang-types { prefix yang; }
887 import service-function {prefix sfc-sf; }
888 import service-function-metadata {prefix sfc-md; }
890 organization "Cisco Systems, Inc.";
891 contact "Reinaldo Penno ";
893 description
894 "This module contains a collection of YANG definitions for
895 managing service function chains.
897 Copyright (c) 2013 IETF Trust and the persons identified as
898 authors of the code. All rights reserved.
900 Redistribution and use in source and binary forms, with or
901 without modification, is permitted pursuant to, and subject
902 to the license terms contained in, the Simplified BSD License
903 set forth in Section 4.c of the IETF Trust's Legal Provisions
904 Relating to IETF Documents
905 (http://trustee.ietf.org/license-info).
907 This version of this YANG module is part of RFC XXXX; see
908 the RFC itself for full legal notices.";
910 // RFC Ed.: replace XXXX with actual RFC number and remove this
911 // note.
913 // RFC Ed.: update the date below with the date of RFC publication
914 // and remove this note.
916 revision 2014-07-01 {
917 description
918 "Changes based on Opendaylight Testing and IETF SFC ml.";
919 }
920 typedef service-function-path-ref {
921 type leafref {
922 path "/sfc-sfp:service-function-paths/" +
923 "sfc-sfp:service-function-path/sfc-sfp:name";
924 }
925 description
926 "This type is used by data models that need to reference
927 configured service functions.";
928 }
930 // Service Function Path
932 container service-function-paths {
933 description
934 "The SFP provides a level of indirection
935 between the fully abstract notion of service chain as an
936 abstract sequence of functions to be delivered, and the
937 fully specified notion of exactly what SFF/SFs the packet
938 will visit when it actually traverses the network. By
939 allowing the control components to specify the use of this
940 level of indirection, the deployment may choose the degree
941 of SFF/SF selection authority that is delegated to the
942 network";
943 list service-function-path {
944 description
945 "A list that holds configuration data for all SFPs in the
946 domain";
947 key "name";
948 leaf name {
949 type string;
950 description
951 "The name of this service function path";
952 }
953 leaf symmetric {
954 type boolean;
955 default false;
956 description
957 "If the chain is symmetric we will create two service
958 paths, one ingress and another egress. Packets traverse
959 the egress service path in the reverse order of the
960 ingress path";
961 }
962 leaf classifier {
963 type string;
964 description "The classifier responsible for directing"
965 + "packets to this service path";
966 }
967 leaf symmetric-classifier {
968 type string;
969 description "The classifier responsible for directing"
970 + "packets to this service path";
971 }
972 leaf context-metadata {
973 type sfc-md:context-metadata-ref;
974 description
975 "The name of the associated context metadata";
976 }
977 leaf variable-metadata {
978 type sfc-md:variable-metadata-ref;
979 description
980 "The name of the associated variable metadata";
981 }
982 list service-path-hop {
983 key "hop-number";
984 leaf hop-number {
985 type uint8;
986 description
987 "A Monotonically increasing number";
988 }
989 leaf service-function-name {
990 type string;
991 description
992 "Service Function name";
993 }
994 leaf service-function-forwarder {
995 type string;
996 description
997 "Service Function Forwarder name";
998 }
999 leaf service-index {
1000 type uint8;
1001 description
1002 "Provides location within the service path.
1003 Service index MUST be decremented by service functions
1004 or proxy nodes after performing required services. MAY
1005 be used in conjunction with service path for path
1006 selection. Service Index is also valuable when
1007 troubleshooting/reporting service paths. In addition to
1008 location within a path, SI can be used for loop
1009 detection.";
1010 }
1011 ordered-by user;
1012 description
1013 "A list of service functions that compose the
1014 service path";
1015 }
1016 leaf service-chain-name {
1017 type string;
1018 mandatory true;
1019 description
1020 "The Service Function Chain used as blueprint for this
1021 path";
1022 }
1023 leaf starting-index {
1024 type uint8;
1025 description
1026 "Starting service index";
1027 }
1028 leaf path-id {
1029 type uint32 {
1030 range "0..16777216";
1031 }
1032 description
1033 "Identifies a service path.
1034 Participating nodes MUST use this identifier for path
1035 selection. An administrator can use the service path
1036 value for reporting and troubleshooting packets along
1037 a specific path.";
1038 }
1039 }
1040 }
1042 container service-function-paths-state {
1043 description
1044 "This container hold operational state for all service
1045 function paths";
1046 config false;
1047 list service-function-path-state {
1048 description
1049 "This list holds operational data for all service function
1050 paths in the domain";
1051 key "name";
1052 leaf name {
1053 type string;
1054 description
1055 "The name of the service function path";
1056 }
1057 list sfp-rendered-service-path {
1058 key "name";
1059 leaf name {
1060 type string;
1061 description
1062 "The name of the Rendered Service Path";
1063 }
1064 description
1065 "A list of all rendered service paths instantiated
1066 from this service path";
1067 }
1068 }
1069 }
1071 }
1073
1075 8. Service Function Forwarder (SFF)
1077 This module describes the configuration a SFF needs to have in order
1078 to route packets to the service functions it serves. the SFF needs to
1079 have a table with service function name and associated locator. The
1080 locator could be an IP address and port, an internal function call or
1081 some other unique identifier.
1083 8.1. Module Struture
1085 module: service-function-forwarder
1086 +--rw service-function-forwarders
1087 | +--rw service-function-forwarder* [name]
1088 | +--rw name string
1089 | +--rw service-node? string
1090 | +--rw ip-mgmt-address? inet:ip-address
1091 | +--rw rest-uri? inet:uri
1092 | +--rw sff-data-plane-locator* [name]
1093 | | +--rw name string
1094 | | +--rw data-plane-locator
1095 | | +--rw (locator-type)
1096 | | | +--:(ip)
1097 | | | | +--rw ip? inet:ip-address
1098 | | | | +--rw port? inet:port-number
1099 | | | +--:(lisp)
1100 | | | | +--rw eid? inet:ip-address
1101 | | | +--:(mac)
1102 | | | | +--rw mac? yang:mac-address
1103 | | | | +--rw vlan-id? uint16
1104 | | | +--:(function)
1105 | | | | +--rw function-name? string
1106 | | | +--:(mpls)
1107 | | | +--rw mpls-label? uint32
1108 | | +--rw transport? identityref
1109 | +--rw service-function-dictionary* [name]
1110 | +--rw name string
1111 | +--rw type? sfc-sft:service-function-type
1112 | +--rw sff-sf-data-plane-locator
1113 | | +--rw (locator-type)
1114 | | | +--:(ip)
1115 | | | | +--rw ip? inet:ip-address
1116 | | | | +--rw port? inet:port-number
1117 | | | +--:(lisp)
1118 | | | | +--rw eid? inet:ip-address
1119 | | | +--:(mac)
1120 | | | | +--rw mac? yang:mac-address
1121 | | | | +--rw vlan-id? uint16
1122 | | | +--:(function)
1123 | | | | +--rw function-name? string
1124 | | | +--:(mpls)
1125 | | | +--rw mpls-label? uint32
1126 | | +--rw transport? identityref
1127 | +--rw sff-interfaces* [sff-interface]
1128 | | +--rw sff-interface string
1129 | +--rw failmode? failmode-type
1130 +--ro service-function-forwarders-state
1131 +--ro service-function-forwarder-state* [name]
1132 +--ro name string
1133 +--ro sff-service-path* [name]
1134 +--ro name string
1136 8.2. Service Function Forwarder Model
1138 file "service-function-forwarder@2014-07-01.yang"
1140 module service-function-forwarder {
1142 namespace "urn:cisco:params:xml:ns:yang:sfc-sff";
1144 prefix sfc-sff;
1146 import ietf-inet-types { prefix inet;}
1147 import ietf-yang-types {
1148 prefix "yang";
1149 revision-date 2013-07-15;
1150 }
1151 import service-locator { prefix sfc-sl; }
1152 import service-function-type {prefix sfc-sft;}
1154 organization "Cisco Systems, Inc.";
1155 contact "Reinaldo Penno ";
1157 description
1158 "This module contains a collection of YANG definitions for
1159 managing service function forwarders.
1161 Copyright (c) 2013 IETF Trust and the persons identified as
1162 authors of the code. All rights reserved.
1164 Redistribution and use in source and binary forms, with or
1165 without modification, is permitted pursuant to, and subject
1166 to the license terms contained in, the Simplified BSD License
1167 set forth in Section 4.c of the IETF Trust's Legal Provisions
1168 Relating to IETF Documents
1169 (http://trustee.ietf.org/license-info).
1171 This version of this YANG module is part of RFC XXXX; see
1172 the RFC itself for full legal notices.";
1174 // RFC Ed.: replace XXXX with actual RFC number and remove this
1175 // note.
1177 // RFC Ed.: update the date below with the date of RFC publication
1178 // and remove this note.
1180 revision 2014-07-01 {
1181 description
1182 "Revision based on Opendaylight project feedback";
1183 }
1185 // Failmode type definitions
1187 identity failmode-type-identity {
1188 description
1189 "Base identity from which specific failmode
1190 types are derived. Fail mode specifies the behavior
1191 when the interface does not have connectivity to the
1192 service node.";
1193 }
1195 typedef failmode-type {
1196 type identityref {
1197 base "failmode-type-identity";
1198 }
1199 description "This type is used to reference all
1200 registered failmode types";
1201 }
1202 identity close {
1203 base "failmode-type-identity";
1204 description "When service-function can not reach service
1205 function, packets will be dropped";
1206 }
1208 identity open {
1209 base "failmode-type-identity";
1210 description "When service-function can not reach service
1211 function, packets will be forwarded";
1212 }
1214 container service-function-forwarders {
1215 description
1216 "A service function forwarder is
1217 responsible for delivering traffic received from the SFC
1218 network forwarder to one or more connected service
1219 functions via information carried in the SFC encapsulation.
1220 ";
1221 list service-function-forwarder {
1222 description
1223 "A list that holds configuration of all SFFs in the domain";
1224 key "name";
1225 leaf name {
1226 type string;
1227 description
1228 "The unique name of this service function forwarder, such
1229 as SFF1";
1230 }
1232 leaf service-node {
1233 type string;
1234 description "The service node that hosts this SFF";
1235 }
1237 leaf ip-mgmt-address {
1238 type inet:ip-address;
1239 description
1240 "The IP and port used to configure this service-function-forwarder";
1241 }
1243 leaf rest-uri {
1244 description "URI of REST based management";
1245 type inet:uri;
1246 }
1248 list sff-data-plane-locator {
1249 description
1250 "A list of all data-plane-locators of this SFF.";
1251 key "name";
1252 leaf name {
1253 type string;
1254 description
1255 "A unique string that represents this data-plane-locator";
1256 }
1258 container data-plane-locator {
1259 description
1260 "This container holds configuration for the overlay data plane"
1261 + "locator used by this SFF. This could be VXLAN, GRE, etc";
1262 uses sfc-sl:data-plane-locator;
1263 }
1264 }
1266 list service-function-dictionary {
1267 key "name";
1268 leaf name {
1269 type string;
1270 description
1271 "The name of the service function.";
1272 }
1273 leaf type {
1274 type sfc-sft:service-function-type;
1275 description
1276 "Service Function Type from service-function-type yang
1277 model";
1278 }
1279 container sff-sf-data-plane-locator {
1280 description
1281 "The SFF uses this data plane locator when sending packets to the"
1282 + "associated service function";
1283 uses sfc-sl:data-plane-locator;
1284 }
1285 list sff-interfaces {
1286 key "sff-interface";
1287 leaf sff-interface {
1288 type string;
1289 description
1290 "An individual interface on the SFF connected to the
1291 SF";
1292 }
1293 description
1294 "A list of interfaces on the SFF which are connected to this SF,"
1295 + "usually one 1 or 2 elements";
1296 }
1297 leaf failmode {
1298 type failmode-type;
1299 description
1300 "This leaf defines what should the SFF do if it can not
1301 send packets to the SF";
1303 }
1304 description
1305 "A list of all Service Functions attached to this SFF.";
1306 }
1307 }
1308 }
1310 container service-function-forwarders-state {
1311 description
1312 "This container hold operational state for all service
1313 function forwarders";
1314 config false;
1315 list service-function-forwarder-state {
1316 description
1317 "This list holds operational data for all service functions
1318 forwarders in the domain";
1319 key "name";
1320 leaf name {
1321 type string;
1322 description
1323 "the name of the service function forwarder";
1324 }
1325 list sff-service-path {
1326 key "name";
1327 leaf name {
1328 type string;
1329 description
1330 "The name of the Service Path";
1331 }
1332 description
1333 "A list of all service function paths that contain this
1334 service function forwarder";
1335 }
1336 }
1337 }
1338 }
1339
1341 9. Service Function Forwarder Open vSwitch (SFF-OVS)
1343 This module augments the SFF model for Open vSwitch, meaning when
1344 Open vSwitche (OVS) bridges are used as SFF.
1346 9.1. Module Structure
1348 module: service-function-forwarder-ovs
1349 augment /sfc-sff:service-function-forwarders/sfc-sff:service-function-forwarder/sfc-sff:sff-data-plane-locator:
1350 +--rw ovs-bridge
1351 +--rw bridge-name? string
1352 +--rw uuid? yang:uuid
1353 +--rw external-ids* [name]
1354 | +--rw name string
1355 | +--rw value? string
1356 +--rw rest-uri? inet:uri
1357 augment /sfc-sff:service-function-forwarders/sfc-sff:service-function-forwarder/sfc-sff:service-function-dictionary/sfc-sff:sff-sf-data-plane-locator:
1358 +--rw ovs-bridge
1359 +--rw bridge-name? string
1360 +--rw uuid? yang:uuid
1361 +--rw external-ids* [name]
1362 | +--rw name string
1363 | +--rw value? string
1364 +--rw rest-uri? inet:uri
1366 9.2. Service Function Forwarder OVS Model
1368 file "service-function-forwarder-ovs@2014-07-01.yang"
1370 module service-function-forwarder-ovs {
1371 yang-version 1;
1373 namespace "urn:cisco:params:xml:ns:yang:sfc-sff-ovs";
1375 prefix sfc-sff-ovs;
1377 import service-function-forwarder {
1378 prefix "sfc-sff";
1379 }
1381 import ietf-inet-types {
1382 prefix "inet";
1383 }
1384 import ietf-yang-types {
1385 prefix "yang";
1386 revision-date 2013-07-15;
1387 }
1389 organization "Cisco Systems, Inc.";
1390 contact "Reinaldo Penno ";
1392 revision 2014-07-01 {
1393 description "Augmentation of SFF for OVS";
1394 }
1396 grouping bridge {
1397 container ovs-bridge {
1398 leaf bridge-name {
1399 description "Open vSwitch bridge name. In Openstack it is usually"
1400 + "br-tun or br-int depending if it is used in the overlay or"
1401 + "facing virtual machines respectively";
1402 type string;
1403 }
1404 leaf uuid {
1405 description "Open vSwitch bridge UUID";
1406 type yang:uuid;
1407 }
1408 list external-ids {
1409 description
1410 "The list of external ids associated with this
1411 bridge";
1412 key "name";
1413 leaf name {
1414 type string;
1415 description
1416 "A unique string that represents this external-id such
1417 as attached-mac";
1418 }
1419 leaf value {
1420 type string;
1421 description
1422 "A unique string that represents the value of the
1423 external-id such as fa:16:3e:56:47:10";
1424 }
1425 }
1426 }
1427 }
1429 augment "/sfc-sff:service-function-forwarders/"
1430 + "sfc-sff:service-function-forwarder/"
1431 + "sfc-sff:sff-data-plane-locator" {
1433 uses bridge;
1434 }
1436 augment "/sfc-sff:service-function-forwarders/"
1437 + "sfc-sff:service-function-forwarder/"
1438 + "sfc-sff:service-function-dictionary/"
1439 + "sfc-sff:sff-sf-data-plane-locator" {
1441 uses bridge;
1442 }
1443 }
1445
1447 10. Service Locator (SL)
1449 This module provides a single point of registration for all network
1450 locators types used in Services Function Chaining. the model can be
1451 augmented at will with locators appropriate for each use-case.
1453 10.1. Module Structure
1455 10.2. Service Locator Module
1457 file "service-locator@2014-07-01.yang"
1459 module service-locator {
1461 namespace "urn:cisco:params:xml:ns:yang:sfc-sl";
1463 prefix sfc-sl;
1465 import ietf-inet-types { prefix inet; }
1466 import ietf-yang-types { prefix yang; }
1468 organization "Cisco Systems, Inc.";
1469 contact "Reinaldo Penno ";
1471 description
1472 "This module contains a collection of YANG definitions for
1473 managing service locators. Service locators are used as
1474 data plane network destinations for Service Functions and
1475 Service Function Forwarders
1476 It follows closely the constructs of
1477 http://tools.ietf.org/html/draft-ietf-netmod-interfaces-cfg-12
1479 Copyright (c) 2013 IETF Trust and the persons identified as
1480 authors of the code. All rights reserved.
1482 Redistribution and use in source and binary forms, with or
1483 without modification, is permitted pursuant to, and subject
1484 to the license terms contained in, the Simplified BSD License
1485 set forth in Section 4.c of the IETF Trust's Legal Provisions
1486 Relating to IETF Documents
1487 (http://trustee.ietf.org/license-info).
1489 This version of this YANG module is part of RFC XXXX; see
1490 the RFC itself for full legal notices.";
1492 // RFC Ed.: replace XXXX with actual RFC number and remove this
1493 // note.
1495 // RFC Ed.: update the date below with the date of RFC publication
1496 // and remove this note.
1498 revision 2014-07-01 {
1499 description
1500 "Changes based on Opendaylight Testing.";
1501 }
1503 // Locator definitions
1505 // Transport type definitions
1506 identity transport-type {
1507 description
1508 "Base identity from which specific transport types are
1509 derived.";
1510 }
1512 identity vxlan-gpe {
1513 base "sl-transport-type";
1514 description "Programmable vxlan transport type";
1515 }
1517 identity gre {
1518 base "sl-transport-type";
1519 description "GRE transport type";
1520 }
1522 identity mpls {
1523 base "sl-transport-type";
1524 description "Multi Protocol Label Switching transport type";
1525 }
1527 identity other {
1528 base "sl-transport-type";
1529 description "unspecified transport type";
1530 }
1532 identity sl-transport-type {
1533 base "transport-type";
1534 description
1535 "This identity is used as a base for all transport
1536 types";
1538 }
1540 grouping lisp-locator {
1541 description
1542 "Data plane-locator: Lisp Eid(IP)";
1543 leaf eid {
1544 type inet:ip-address;
1545 description "Data-plane IP address";
1546 }
1547 }
1549 grouping ip-port-locator {
1550 description
1551 "Data plane-locator: IP address and L4 port";
1552 leaf ip {
1553 type inet:ip-address;
1554 description "Data-plane IP address";
1555 }
1556 leaf port {
1557 type inet:port-number;
1558 description "Data-plane port number";
1559 }
1560 }
1562 grouping mac-address-locator {
1563 description
1564 "Data plane-locator: mac address and optional vlan-id";
1565 leaf mac {
1566 type yang:mac-address;
1567 description "Data-plane MAC address";
1568 }
1569 leaf vlan-id {
1570 type uint16 {
1571 range "1..4094";
1573 }
1574 description "Data-plane VLAN ID address";
1575 }
1576 }
1578 grouping mpls-locator {
1579 description
1580 "Data plane-locator: MPLS";
1581 leaf mpls-label {
1582 type uint32 {
1583 range "1..1048575";
1584 }
1585 description "MPLS Label, 20 bits";
1586 }
1587 }
1589 grouping function-locator {
1590 description
1591 "When SF is co-located with SFF, this could be the name of a
1592 function or method.";
1593 leaf function-name {
1594 type string;
1595 description "Function or method name";
1596 }
1597 }
1599 grouping data-plane-locator {
1600 description
1601 "This group presents data-plane locator
1602 information for service function elements in the domain";
1603 choice locator-type {
1604 mandatory true;
1605 case ip {
1606 uses ip-port-locator;
1607 }
1608 case lisp {
1609 uses lisp-locator;
1610 }
1611 case mac {
1612 uses mac-address-locator;
1613 }
1614 case function {
1615 uses function-locator;
1616 }
1617 case mpls {
1618 uses mpls-locator;
1619 }
1620 description "The collection of all possible data-plane
1621 locators. Only one can be chosen";
1622 }
1623 leaf transport {
1624 type identityref {
1625 base sfc-sl:sl-transport-type;
1626 }
1627 }
1628 }
1629 }
1631
1633 11. Rendered Service Path (RSP)
1635 This module holds the actual service-hops a packet will traverse when
1636 forwarded through a specific service path.
1638 11.1. Module Structure
1639 module: rendered-service-path
1640 +--ro rendered-service-paths
1641 +--ro rendered-service-path* [name]
1642 +--ro name string
1643 +--ro parent-service-function-path? string
1644 +--ro context-metadata? sfc-md:context-metadata-ref
1645 +--ro variable-metadata? sfc-md:variable-metadata-ref
1646 +--ro rendered-service-path-hop* [hop-number]
1647 | +--ro hop-number uint8
1648 | +--ro service-function-name? string
1649 | +--ro service-function-forwarder? string
1650 | +--ro service-index? uint8
1651 +--ro service-chain-name string
1652 +--ro starting-index? uint8
1653 +--ro path-id? uint32
1654 rpcs:
1655 +---x delete-rendered-path
1656 | +--ro input
1657 | | +--ro name? string
1658 | +--ro output
1659 | +--ro result? boolean
1660 +---x create-rendered-path
1661 +--ro input
1662 | +--ro name? string
1663 | +--ro parent-service-function-path? string
1664 | +--ro symmetric? boolean
1665 | +--ro classifier? string
1666 | +--ro symmetric-classifier? string
1667 +--ro output
1668 +--ro result? boolean
1670 11.2. Rendered Service Path Module
1672 file "rendered-service-path.yang"
1674 module rendered-service-path {
1676 namespace "urn:cisco:params:xml:ns:yang:sfc-rsp";
1678 prefix sfc-rsp;
1680 import ietf-inet-types { prefix inet; }
1681 import ietf-yang-types { prefix yang; }
1682 import service-function {prefix sfc-sf; }
1683 import service-function-metadata {prefix sfc-md; }
1684 import service-function-forwarder {prefix sfc-sff; }
1685 import service-locator {prefix sfc-sl;}
1686 organization "Cisco Systems, Inc.";
1687 contact "Reinaldo Penno ";
1689 description
1690 "This module contains a collection of YANG definitions to
1691 manage Rendered Service Paths.
1693 Copyright (c) 2013 IETF Trust and the persons identified as
1694 authors of the code. All rights reserved.
1696 Redistribution and use in source and binary forms, with or
1697 without modification, is permitted pursuant to, and subject
1698 to the license terms contained in, the Simplified BSD License
1699 set forth in Section 4.c of the IETF Trust's Legal Provisions
1700 Relating to IETF Documents
1701 (http://trustee.ietf.org/license-info).
1703 This version of this YANG module is part of RFC XXXX; see
1704 the RFC itself for full legal notices.";
1706 // RFC Ed.: replace XXXX with actual RFC number and remove this
1707 // note.
1709 // RFC Ed.: update the date below with the date of RFC publication
1710 // and remove this note.
1712 revision 2014-07-01 {
1713 description
1714 "Changes based on Opendaylight Testing and IETF SFC ml.";
1715 }
1717 typedef rendered-service-path-ref {
1718 type leafref {
1719 path "/sfc-rsp:service-function-paths/" +
1720 "sfc-rsp:rendered-service-path/sfc-rsp:name";
1721 }
1722 description
1723 "This type is used by data models that need to reference
1724 rendered service paths.";
1725 }
1727 // Rendered Service Path
1729 container rendered-service-paths {
1730 config false;
1731 description
1732 "The SFP provides a level of indirection
1733 between the fully abstract notion of service chain as an
1734 abstract sequence of functions to be delivered, and the
1735 fully specified notion of exactly what SFF/SFs the packet
1736 will visit when it actually traverses the network. By
1737 allowing the control components to specify the use of this
1738 level of indirection, the deployment may choose the degree
1739 of SFF/SF selection authority that is delegated to the
1740 network";
1741 list rendered-service-path {
1742 description
1743 "A list that holds operational data for all RSPs in the
1744 domain";
1745 key "name";
1746 leaf name {
1747 type string;
1748 description
1749 "The name of this rendered function path. This is the same
1750 name as the associated SFP";
1751 }
1752 leaf parent-service-function-path {
1753 type string;
1754 description
1755 "Service Function Path from which this RSP was instantiated";
1757 }
1758 leaf context-metadata {
1759 type sfc-md:context-metadata-ref;
1760 description
1761 "The name of the associated context metadata";
1762 }
1763 leaf variable-metadata {
1764 type sfc-md:variable-metadata-ref;
1765 description
1766 "The name of the associated variable metadata";
1767 }
1768 list rendered-service-path-hop {
1769 key "hop-number";
1770 leaf hop-number {
1771 type uint8;
1772 description
1773 "A Monotonically increasing number";
1774 }
1775 leaf service-function-name {
1776 type string;
1777 description
1778 "Service Function name";
1779 }
1780 leaf service-function-forwarder {
1781 type string;
1782 description
1783 "Service Function Forwarder name";
1784 }
1785 leaf service-function-forwarder-locator {
1786 type sfc-sff:service-function-forwarder-locator-ref;
1787 description
1788 "The name of the SFF data plane locator";
1789 }
1790 leaf service-index {
1791 type uint8;
1792 description
1793 "Provides location within the service path.
1794 Service index MUST be decremented by service functions
1795 or proxy nodes after performing required services. MAY
1796 be used in conjunction with service path for path
1797 selection. Service Index is also valuable when
1798 troubleshooting/reporting service paths. In addition to
1799 location within a path, SI can be used for loop
1800 detection.";
1801 }
1802 ordered-by user;
1803 description
1804 "A list of service functions that compose the
1805 service path";
1806 }
1807 leaf service-chain-name {
1808 type string;
1809 mandatory true;
1810 description
1811 "The Service Function Chain used as blueprint for this
1812 path";
1813 }
1814 leaf starting-index {
1815 type uint8;
1816 description
1817 "Starting service index";
1818 }
1819 leaf path-id {
1820 type uint32 {
1821 range "0..16777216";
1822 }
1823 description
1824 "Identifies a service path.
1825 Participating nodes MUST use this identifier for path
1826 selection. An administrator can use the service path
1827 value for reporting and troubleshooting packets along
1828 a specific path.";
1830 }
1831 }
1832 }
1834 rpc delete-rendered-path {
1835 description
1836 "Delete a Rendered Service Path";
1837 input {
1838 leaf name {
1839 type string;
1840 description
1841 "The name of this rendered function path. This is the same
1842 name as the associated SFP";
1843 }
1844 }
1845 output {
1846 leaf result {
1847 type boolean;
1848 }
1849 }
1850 }
1852 rpc create-rendered-path {
1853 description
1854 "Created a Rendered Service Path";
1855 input {
1856 leaf name {
1857 type string;
1858 description
1859 "The name of this rendered function path. This is the same
1860 name as the associated SFP";
1861 }
1862 leaf parent-service-function-path {
1863 type string;
1864 description
1865 "Service Function Path from which this RSP was instantiated";
1866 }
1867 leaf symmetric {
1868 type boolean;
1869 default false;
1870 description
1871 "If the chain is symmetric we will create two service
1872 paths, one ingress and another egress. Packets traverse
1873 the egress service path in the reverse order of the
1874 ingress path";
1875 }
1876 leaf classifier {
1877 type string;
1878 description "The classifier responsible for directing"
1879 + "packets to this service path";
1880 }
1881 leaf symmetric-classifier {
1882 type string;
1883 description "The classifier responsible for directing"
1884 + "packets to this service path";
1885 }
1886 }
1887 output {
1888 leaf result {
1889 type boolean;
1890 }
1891 }
1892 }
1894 container rendered-service-path-first-hop {
1895 description
1896 "Provides all necessary information for a system to construct
1897 a NSH header and associated overlay packet to target the first
1898 service hop of a Rendered Service Path";
1899 leaf starting-index {
1900 type uint8;
1901 description
1902 "Starting service index";
1903 }
1904 leaf symmetric-path-id {
1905 type uint32 {
1906 range "0..16777216";
1907 }
1908 description
1909 "Identifies the associated symmetric path, if any.";
1910 }
1911 leaf path-id {
1912 type uint32 {
1913 range "0..16777216";
1914 }
1915 description
1916 "Identifies a service path.
1917 Participating nodes MUST use this identifier for path
1918 selection. An administrator can use the service path
1919 value for reporting and troubleshooting packets along
1920 a specific path.";
1921 }
1923 leaf transport-type {
1924 type sfc-sl:sl-transport-type-def;
1925 }
1926 uses sfc-sl:ip-port-locator;
1927 uses sfc-sl:mpls-locator;
1928 }
1930 }
1932
1934 12. Service Function Classifier (SCF)
1936 This module contains a collection of YANG definitions for managing
1937 service classification functions.
1939 12.1. Module Structure
1940 module: rendered-service-path
1941 +--ro rendered-service-paths
1942 +--ro rendered-service-path* [name]
1943 +--ro name string
1944 +--ro parent-service-function-path? string
1945 +--ro context-metadata? sfc-md:context-metadata-ref
1946 +--ro variable-metadata? sfc-md:variable-metadata-ref
1947 +--ro rendered-service-path-hop* [hop-number]
1948 | +--ro hop-number uint8
1949 | +--ro service-function-name? string
1950 | +--ro service-function-forwarder? string
1951 | +--ro service-index? uint8
1952 +--ro service-chain-name string
1953 +--ro starting-index? uint8
1954 +--ro path-id? uint32
1955 rpcs:
1956 +---x delete-rendered-path
1957 | +--ro input
1958 | | +--ro name? string
1959 | +--ro output
1960 | +--ro result? boolean
1961 +---x create-rendered-path
1962 +--ro input
1963 | +--ro name? string
1964 | +--ro parent-service-function-path? string
1965 | +--ro symmetric? boolean
1966 | +--ro classifier? string
1967 | +--ro symmetric-classifier? string
1968 +--ro output
1969 +--ro result? boolean
1971 12.2. Service Function Classifier Module
1973 file "service-function-classifier@2014-07-01.yang"
1975 module service-function-classifier {
1976 yang-version 1;
1978 namespace "urn:cisco:params:xml:ns:yang:sfc-scf";
1980 prefix sfc-scf;
1982 import ietf-acl {prefix "ietf-acl";}
1984 organization "Cisco Systems, Inc.";
1985 contact "Reinaldo Penno ";
1987 description
1988 "This module contains a collection of YANG definitions for
1989 managing service classification functions.";
1991 revision 2014-07-01 {
1992 description
1993 "Revised based on Opendaylight Project feedback";
1994 }
1996 grouping attachment-point {
1997 description
1998 "Reusable group of all possible attachment point types";
1999 choice attachment-point-type {
2000 description
2001 "Provides a choice between access list
2002 attachment point types";
2003 case bridge {
2004 leaf bridge {
2005 type string;
2006 description
2007 "OVS bridge as an attachment point";
2008 }
2009 }
2010 case interface {
2011 leaf interface {
2012 type string;
2013 description
2014 "interface name as attachment point";
2015 }
2016 }
2017 }
2018 }
2020 container service-function-classifiers {
2021 description
2022 "Classifier container which represents the ACL being applied,
2023 attachment point and the chain associated with that ACL.";
2024 list service-function-classifier {
2025 description
2026 "A list that holds all service function classifiers";
2027 key "name";
2028 leaf name {
2029 type string;
2030 description
2031 "Classification function name";
2032 }
2033 leaf access-list {
2034 description
2035 "The ACL name associated with this classifier";
2037 type string;
2038 }
2040 leaf rendered-service-path {
2041 description
2042 "The classifier will direct packets to the SFP
2043 specified here";
2044 type string;
2045 }
2046 list scl-service-function-forwarder {
2047 description
2048 "The classifier will be attached to these SFFs";
2049 key "name";
2050 leaf name {
2051 description
2052 "The classifier will be attached to this SFF";
2053 type string;
2054 }
2055 uses attachment-point {
2056 description "Classifier attachment point";
2057 }
2058 }
2059 }
2060 }
2062 container service-function-classifiers-state {
2063 description
2064 "This container hold operational state for all service
2065 function classifiers";
2066 config false;
2067 list service-function-classifier-state {
2068 description
2069 "This list holds operational data for all service function
2070 classifiers in the domain";
2071 key "name";
2072 leaf name {
2073 type string;
2074 description
2075 "The name of the service function classifier";
2076 }
2077 list scl-rendered-service-path {
2078 key "name";
2079 leaf name {
2080 type string;
2081 description
2082 "The name of the Rendered Service Path";
2083 }
2084 description
2085 "A list of all rendered service paths that use this classifier";
2086 }
2087 }
2088 }
2089 }
2091
2093 13. Service Function Description Monitor Report (SF-DESC-MON-RPT)
2095 This module for entities implementing the network service functions
2096 for Service Function Chaining
2098 13.1. Module Structure
2100 module: service-function-description-monitor-report
2101 +--rw service-function
2102 +--rw description-info
2103 | +--rw number-of-dataports? uint32
2104 | +--rw capabilities
2105 | +--rw supported-packet-rate? uint32
2106 | +--rw supported-bandwidth? uint32
2107 | +--rw supported-ACL-number? uint32
2108 | +--rw RIB-size? uint32
2109 | +--rw FIB-size? uint32
2110 | +--rw ports-bandwidth
2111 | +--rw port-bandwidth* [port-id]
2112 | +--rw port-id uint32
2113 | +--rw ipaddress? inet:ipv4-address
2114 | +--rw macaddress? yang:mac-address
2115 | +--rw supported-bandwidth? uint32
2116 +--rw monitoring-info
2117 +--rw liveness? boolean
2118 +--rw resource-utilization
2119 +--rw packet-rate-utilization? uint32
2120 +--rw bandwidth-utilization? uint32
2121 +--rw CPU-utilization? uint32
2122 +--rw memory-utilization? uint32
2123 +--rw available-memory? uint32
2124 +--rw RIB-utilization? uint32
2125 +--rw FIB-utilization? uint32
2126 +--rw power-utilization? uint32
2127 +--rw SF-ports-bandwidth-utilization
2128 +--rw port-bandwidth-utilization* [port-id]
2129 +--rw port-id uint32
2130 +--rw bandwidth-utilization? uint32
2131 rpcs:
2132 +---x get-SF-description
2133 | +--ro output
2134 | +--ro description-info
2135 | +--ro number-of-dataports? uint32
2136 | +--ro capabilities
2137 | +--ro supported-packet-rate? uint32
2138 | +--ro supported-bandwidth? uint32
2139 | +--ro supported-ACL-number? uint32
2140 | +--ro RIB-size? uint32
2141 | +--ro FIB-size? uint32
2142 | +--ro ports-bandwidth
2143 | +--ro port-bandwidth* [port-id]
2144 | +--ro port-id uint32
2145 | +--ro ipaddress? inet:ipv4-address
2146 | +--ro macaddress? yang:mac-address
2147 | +--ro supported-bandwidth? uint32
2148 +---x get-SF-monitoring-info
2149 +--ro output
2150 +--ro monitoring-info
2151 +--ro liveness? boolean
2152 +--ro resource-utilization
2153 +--ro packet-rate-utilization? uint32
2154 +--ro bandwidth-utilization? uint32
2155 +--ro CPU-utilization? uint32
2156 +--ro memory-utilization? uint32
2157 +--ro available-memory? uint32
2158 +--ro RIB-utilization? uint32
2159 +--ro FIB-utilization? uint32
2160 +--ro power-utilization? uint32
2161 +--ro SF-ports-bandwidth-utilization
2162 +--ro port-bandwidth-utilization* [port-id]
2163 +--ro port-id uint32
2164 +--ro bandwidth-utilization? uint32
2166 13.2. Service Function Description Monitor Report Module
2168 file "service-function-description-monitor-report.yang"
2170 module service-function-description-monitor-report {
2171 namespace "urn.intel.params:xml:ns:sf-desc-mon-rpt";
2172 prefix sf-desc-mon-rpt;
2174 import ietf-inet-types { prefix inet;}
2175 import ietf-yang-types { prefix yang;}
2177 organization "Intel Inc.";
2178 contact "honglix.chen@intel.com";
2179 description
2180 "The module for entities implementing the network service
2181 functions for Service Function Chaining";
2183 revision 2014-11-05 {
2184 description "Initial revision.";
2185 }
2187 grouping SF-description {
2188 leaf number-of-dataports {
2189 type uint32;
2190 description "Number of dataports";
2191 }
2192 container capabilities {
2193 leaf supported-packet-rate {
2194 type uint32;
2195 description "Maximum Mpps supported";
2196 }
2197 leaf supported-bandwidth {
2198 type uint32;
2199 description "Maximum Mbps supported ";
2200 }
2201 leaf supported-ACL-number {
2202 type uint32;
2203 description "ACL number of the service function";
2204 }
2205 leaf RIB-size {
2206 type uint32;
2207 description "Number of Routing Information Table's entries.";
2208 }
2209 leaf FIB-size {
2210 type uint32;
2211 description "Number of Forwarding Information Table's entries.";
2212 }
2213 container ports-bandwidth {
2214 list port-bandwidth {
2215 key port-id;
2216 leaf port-id {
2217 type uint32;
2218 description "The id of the port ";
2219 }
2220 leaf ipaddress {
2221 type inet:ipv4-address;
2222 description "IP address of the port";
2223 }
2224 leaf macaddress {
2225 type yang:mac-address;
2226 description "MAC address of the the port";
2227 }
2228 leaf supported-bandwidth {
2229 type uint32;
2230 description "Maximum Mbps supported by the port";
2231 }
2232 }
2233 }
2234 }
2235 }
2237 grouping SF-monitoring-info {
2238 leaf liveness {
2239 type boolean;
2240 description "Liveness flag of the service function";
2241 }
2242 container resource-utilization {
2243 leaf packet-rate-utilization {
2244 type uint32;
2245 description "Percentage of current package rate utilization.";
2246 }
2247 leaf bandwidth-utilization {
2248 type uint32;
2249 description "Percentage of bandwidth utilization.";
2250 }
2251 leaf CPU-utilization {
2252 type uint32;
2253 description "Percentage of CPU utilization.";
2254 }
2255 leaf memory-utilization {
2256 type uint32;
2257 description "Percentage of memory utilization.";
2258 }
2259 leaf available-memory {
2260 type uint32;
2261 description "Available memory size of the service function in MB.";
2262 }
2263 leaf RIB-utilization {
2264 type uint32;
2265 description "Percentage of Routing Information Table utilization.";
2266 }
2267 leaf FIB-utilization {
2268 type uint32;
2269 description "Percentage of Forwarding Information Table utilization.";
2270 }
2271 leaf power-utilization {
2272 type uint32;
2273 description "power utilization in W.";
2275 }
2276 container SF-ports-bandwidth-utilization {
2277 list port-bandwidth-utilization {
2278 key port-id;
2279 leaf port-id {
2280 type uint32;
2281 description "The id of the port ";
2282 }
2283 leaf bandwidth-utilization {
2284 type uint32;
2285 description "Percentage of the port's supported bandwidth utilization.";
2286 }
2287 }
2288 }
2289 }
2290 }
2292 container service-function {
2293 container description-info {
2294 uses SF-description;
2295 }
2296 container monitoring-info {
2297 uses SF-monitoring-info;
2298 }
2299 }
2301 rpc get-SF-description {
2302 description
2303 "Get service function description information.";
2304 output {
2305 container description-info {
2306 uses SF-description;
2307 }
2308 }
2309 }
2311 rpc get-SF-monitoring-info {
2312 description
2313 "Get current service function monitoring information.";
2314 output {
2315 container monitoring-info {
2316 uses SF-monitoring-info;
2317 }
2318 }
2319 }
2320 }
2321
2323 14. Service Function Description Monitor (SF-DESC-MON)
2325 This module is used to create description and monitoring information
2326 of Service Function extensions to service-function model
2328 14.1. Module Structure
2330 module service-function-description-monitor {
2331 namespace "urn.intel.params:xml:ns:sf-desc-mon";
2332 prefix sf-desc-mon;
2334 import service-function { prefix sfc-sf;}
2335 import service-function-description-monitor-report { prefix sf-desc-mon-rpt;}
2337 organization "Intel Inc.";
2338 contact "honglix.chen@intel.com";
2339 description
2340 "Create description and monitoring information of Service
2341 Function extensions to service-function model";
2343 revision 2014-12-01 {
2344 description "Initial revision.";
2345 }
2347 augment "/sfc-sf:service-functions-state/sfc-sf:service-function-state" {
2348 description "Service function description and monitoring information";
2349 container sfc-sf-desc-mon {
2350 container description-info {
2351 uses sf-desc-mon-rpt:SF-description;
2352 }
2353 container monitoring-info {
2354 uses sf-desc-mon-rpt:SF-monitoring-info;
2355 }
2356 }
2357 }
2358 }
2360 14.2. Service Function Description Monitor Report Module
2361 file "service-function-description-monitor.yang"
2363 module service-function-description-monitor {
2364 namespace "urn.intel.params:xml:ns:sf-desc-mon";
2365 prefix sf-desc-mon;
2367 import service-function { prefix sfc-sf;}
2368 import service-function-description-monitor-report { prefix sf-desc-mon-rpt;}
2370 organization "Intel Inc.";
2371 contact "honglix.chen@intel.com";
2372 description
2373 "Create description and monitoring information of Service
2374 Function extensions to service-function model";
2376 revision 2014-12-01 {
2377 description "Initial revision.";
2378 }
2380 augment "/sfc-sf:service-functions-state/sfc-sf:service-function-state" {
2381 description "Service function description and monitoring information";
2382 container sfc-sf-desc-mon {
2383 container description-info {
2384 uses sf-desc-mon-rpt:SF-description;
2385 }
2386 container monitoring-info {
2387 uses sf-desc-mon-rpt:SF-monitoring-info;
2388 }
2389 }
2390 }
2391 }
2393
2395 15. IANA Considerations
2397 TBD
2399 16. Security Considerations
2401 17. Acknowledgements
2403 Thanks to Jan Medved, Ron Parker, Jan Lindblad, David Goldberg, Vina
2404 Ermagan, Sam Hague and Vinayak Joshi and for reviews and suggestions.
2406 18. Changes
2408 -11
2410 o Added new co-authors
2412 o changed RSP and SFP models to allow multiple encap paths.
2414 o Added the "need reclassififcation" leaf to allow a Service
2415 Function to tell a SFF that packet reclassification is needed
2417 o Added RSP first hop container to allow SFC applications to request
2418 the ingress hop to a RSP. These applciations (such as dynamic
2419 classifier) treat RSP as a black box and only need ingress
2420 locator.
2422 -10
2424 This new revision comes after considerable control and dataplane
2425 interop testing. The new changes reflect what we found necessary for
2426 building a well-rounded solution.
2428 o Added Rendered Service Path Model
2430 o Added Service Function Description Monitor and Report Models
2432 o Updated Service Function Path (It allow users to control certain
2433 aspects of RSPs, new symmetric and metadata leaves)
2435 o Updated Service Function Forwarder model
2437 o Updated Service Function Model
2439 o Updated Service Function Type Model (HTTP Header Enrichment
2440 service)
2442 o Update Service Locator Model (MPLS encap)
2444 o Removed Service Node
2446 o Others
2448 -09
2450 o Modifed Service Function Forwarder OVS model based on OVS/
2451 Openstack deployment experience
2453 -08
2454 o Removed VXLAN-GPE model
2456 o Added Service Function Forwarder OVS model
2458 o Added metadata reference to Service Function Path
2460 -07
2462 o All models that need data plane locators reference service locator
2463 model
2465 o Service Locator module has locators for IP:port, VLAN:MAC, LISP
2467 o A SF can have multiple data place locators
2469 o SF and SFF are decoupled and have their own views of the network
2471 o Service Function Chains and derived path can be symmtric (bi-dir)
2472 or not
2474 o Service Function Types separated into a model
2476 o Service Function Path is a collection of service hops. This
2477 allows hops such as SFF + classifier.
2479 -06
2481 o Introduced operational tree in some models based on testing and
2482 user feedback.
2484 o Introduced RPCs in some models
2486 o Service Function Path needs SFC from which it will be instantiated
2488 o Updated all module structures
2490 o Introduced Service Locator module
2492 -05
2494 Changes based on Opendaylight Implementation Testing and Sfc-dev
2495 mailing list feedback
2497 o Service Node becomes a container for Service Functions. Moved
2498 data plane items to SFF.
2500 o Fixed Service Function Forwarders into a list so we cna have
2501 multiple in a system
2503 o Fixed Service Function Chain so it becomes a list of lists.
2505 o Created RPCs for Service Functions and Service Chain
2507 -04
2509 o Fixed list inside Service Function Chain to read service-function-
2510 type
2512 o Small comment fixes
2514 -03
2516 o Revision dates consistent
2518 o Service function chain to container + list in order to allow
2519 multiple
2521 o Service Function Path to cotainer + list
2523 o VXLAN-gpe vni to multiple 8-bit fields
2525 o Consistent typeref use
2527 o Other consistency fixes
2529 -02
2531 o After Opendaylight Testing converted multiple leafs to lists
2532 throughout all models
2534 o Removed transport dependency. Transport could be layer-2, layer-
2535 3, etc
2537 o Used pathrefs similar to ietf-interfaces to reference
2538 configuration names
2540 o Other consistency fixes
2542 19. References
2544 19.1. Normative References
2546 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
2547 Requirement Levels", BCP 14, RFC 2119, March 1997.
2549 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H.,
2550 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext
2551 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999.
2553 19.2. Informative References
2555 [I-D.ietf-sfc-architecture]
2556 Halpern, J. and C. Pignataro, "Service Function Chaining
2557 (SFC) Architecture", draft-ietf-sfc-architecture-05 (work
2558 in progress), February 2015.
2560 [I-D.ietf-sfc-problem-statement]
2561 Quinn, P. and T. Nadeau, "Service Function Chaining
2562 Problem Statement", draft-ietf-sfc-problem-statement-13
2563 (work in progress), February 2015.
2565 [I-D.quinn-sfc-nsh]
2566 Quinn, P., Guichard, J., Surendra, S., Smith, M.,
2567 Henderickx, W., Nadeau, T., Agarwal, P., Manur, R.,
2568 Chauhan, A., Halpern, J., Majee, S., Elzur, U., Melman,
2569 D., Garg, P., McConnell, B., Wright, C., and K. Kevin,
2570 "Network Service Header", draft-quinn-sfc-nsh-07 (work in
2571 progress), February 2015.
2573 [I-D.quinn-vxlan-gpe]
2574 Quinn, P., Manur, R., Kreeger, L., Lewis, D., Maino, F.,
2575 Smith, M., Agarwal, P., Yong, L., Xu, X., Elzur, U., Garg,
2576 P., and D. Melman, "Generic Protocol Extension for VXLAN",
2577 draft-quinn-vxlan-gpe-04 (work in progress), February
2578 2015.
2580 Authors' Addresses
2582 Reinaldo Penno
2583 Cisco Systems
2584 170 West Tasman Dr
2585 San Jose CA
2586 USA
2588 Email: repenno@cisco.com
2589 Paul Quinn
2590 Cisco Systems
2591 170 West Tasman Dr
2592 San Jose CA
2593 USA
2595 Email: paulq@cisco.com
2597 Danny Zhou
2598 Intel Corporation
2599 2200 Mission College Blvd.
2600 Santa Clara CA
2601 USA
2603 Email: danny.zhou@intel.com
2605 Johnson Li
2606 Intel Corporation
2607 2200 Mission College Blvd.
2608 Santa Clara CA
2609 USA
2611 Email: johnson.li@intel.com