Skip to main content

Geneve applicability for service function chaining
draft-boutros-nvo3-geneve-applicability-for-sfc-00

The information below is for an old version of the document.
Document Type
This is an older version of an Internet-Draft whose latest revision state is "Expired".
Authors Sami Boutros , Dharma Rajan , Philip Kippen
Last updated 2017-10-27
RFC stream (None)
Formats
Additional resources
Stream Stream state (No stream defined)
Consensus boilerplate Unknown
RFC Editor Note (None)
IESG IESG state I-D Exists
Telechat date (None)
Responsible AD (None)
Send notices to (None)
draft-boutros-nvo3-geneve-applicability-for-sfc-00
INTERNET-DRAFT                                              Sami Boutros
Intended Status: Standard Track                             Dharma Rajan
                                                           Philip Kippen
                                                                  VMware

Expires: April 30, 2018                                 October 27, 2017

          Geneve applicability for service function chaining  
           draft-boutros-nvo3-geneve-applicability-for-sfc-00

Abstract

   This document describes the applicability of using Generic Network
   Virtualization Encapsulation (Geneve), to carry the service function
   path (SFP) information, and the network service header (NSH) metadata
   (MD) type 1 and type 2. The SFP information and MD types will be
   carried in Geneve option TLV(s). 

Status of this Memo

   This Internet-Draft is submitted to IETF in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as
   Internet-Drafts.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/1id-abstracts.html

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html

Copyright and License Notice

   Copyright (c) 2017 IETF Trust and the persons identified as the
   document authors. All rights reserved.
 

Boutros                  Expires April 30, 2018                 [Page 1]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document. Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction  . . . . . . . . . . . . . . . . . . . . . . . . .  3
   2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . .  3
   3. Abbreviations . . . . . . . . . . . . . . . . . . . . . . . . .  3
   4. Geneve Option TLV(s)  . . . . . . . . . . . . . . . . . . . . .  4
     4.1 Geneve Service Function List (SFL) Option TLV  . . . . . . .  4
     4.2 Geneve NSH metadata Option TLV . . . . . . . . . . . . . . .  6
   5. Operation . . . . . . . . . . . . . . . . . . . . . . . . . . .  7
     5.1 Operation at Ingress . . . . . . . . . . . . . . . . . . . .  7
     5.2 Operation at each NVE along the service function path  . . .  8
     5.3 Operation at Egress  . . . . . . . . . . . . . . . . . . . .  9
   6. Security Considerations . . . . . . . . . . . . . . . . . . . .  9
   7. Acknowledgements  . . . . . . . . . . . . . . . . . . . . . . . 10
   8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 10
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 11
     9.1  Normative References  . . . . . . . . . . . . . . . . . . . 11
     9.2  Informative References  . . . . . . . . . . . . . . . . . . 11
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 12

 

Boutros                  Expires April 30, 2018                 [Page 2]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

1. Introduction

   The Service Function Chaining (SFC) Architecture [rfc7665] defines a
   service function chain (SFC) as (1) the instantiation of an ordered
   set of service functions and (2) the subsequent "steering" of traffic
   through them.

   SFC defines a Service Function Path (SFP) as the exact set of service
   function forwarders (SFF)/service functions (SF)s the packet will
   visit when it actually traverses the network.

   An optimized SFP helps to build an efficient Service function chain
   (SFC) that can be used to steer traffic based on classification
   rules, and metadata information to provide services for Network
   Function Virtualization (NFV).  Metadata are typically passed between
   service functions and Service function forwarders SFF(s) along a
   service function path.

   The metadata can be encoded in packets using encapsulation protocols
   as per network service header (NSH) [draft-ietf-sfc-nsh] definition
   or simply using VLAN or Q-in-Q based encoding.

   This document specifies the applicability of using Generic Network
   Virtualization Encapsulation (Geneve), to carry the service function
   path (SFP) information, and the network service header (NSH) metadata
   (MD) types in Geneve option TLV(s).

   The SFP will be implemented using a new Geneve Service Function List
   option for use strictly between Network Virtualization Edges (NVEs)
   performing the service forwarding function (SFF) in the same Network
   Virtualization Overlay over Layer 3 NVO3 domain. The NSH Metadata
   will be encoded in a new Geneve NSH metadata option TLV.

2. Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

3. Abbreviations

   NVO3 Network Virtualization Overlays over Layer 3

   OAM Operations, Administration, and Maintenance

   TLV Type, Length, and Value

   VNI Virtual Network Identifier
 

Boutros                  Expires April 30, 2018                 [Page 3]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

   NVE Network Virtualization Edge

   NVA Network Virtualization Authority 

   NIC Network interface card

   VTEP Virtual Tunnel End Point

   Transit device Underlay network devices between NVE(s).

   Service Function (SF):  Defined in [RFC7665].

   Service Function Chain (SFC):  Defined in [RFC7665].

   Service Function Forwarder (SFF):  Defined in [RFC7665].

   Service Function Path (SFP):  Defined in [RFC7665].

   Metadata: Defined in [[draft-ietf-sfc-nsh]

   NFV: Network function virtualization.

   VNF: Virtual network function

4. Geneve Option TLV(s)

4.1 Geneve Service Function List (SFL) Option TLV

   Geneve Header:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |Ver|  Opt Len  |O|C|    Rsvd.  |          Protocol Type        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |        Virtual Network Identifier (VNI)       |    Reserved   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

   Geneve Option Header:

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |          Option Class         |      Type     |R|R|R| Length  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Variable Option Data                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

      Option Class = To be assigned by IANA
 

Boutros                  Expires April 30, 2018                 [Page 4]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

      Type = To be assigned by IANA

      'C' bit set, indicating endpoints must drop if they do not
   recognize   this option)

      Length = variable.

      Variable option data:

     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |Version|Flags          |Reserved               |   SF Index    |    
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~            SF List[0] (32 or 128 bits IPv4/6 address)         ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                                                               |
     |                                                               |
                                   ...
     |                                                               |
     |                                                               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     ~            SF List [n] (32 or 128 bits IPv4/6 address)        ~
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     //                                                             //
     //         Optional sub-Type Length Value objects (variable)   //
     //                                                             //
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

     Figure 1: Service Function List (SFL) Option TLV.

   Reserved: 12 bits. SHOULD be unset on transmission and MUST be
   ignored on receipt.

   Flags: 
             0 1 2 3 4 5 6 7 
            +-+-+-+-+-+-+-+-+
            |H| Unused      |
            +-+-+-+-+-+-+-+-+
            Figure 2: SFL flags

   H-flag: HMAC flag.  If set, the HMAC sub-TLV is present and is
   encoded as the last sub-TLV.

   SF Index: It contains the service function (SF) index, in SF List, it
   is decremented after the packet is inspected by the service function.

 

Boutros                  Expires April 30, 2018                 [Page 5]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

   SF List[n]: 32 or 128 bits IPv4/6 addresses representing the nth
   service function ip address in the List.  

   The SF List is encoded starting from the last hop of the path.  I.e.,
   the first element of the list (SF List [0]) contains the last service
   function of the path while the last element of the SF List (SF
   List[n]) contains the first service function in the path.

   HMAC sub-TLV is optional and contains the HMAC information.  The HMAC
   sub-TLV has the following format:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |      Type     |     Length    |          Reserved             |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                      HMAC Key ID (4 octets)                   |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |                                                              //
      |                      HMAC (32 octets)                        //
      |                                                              //
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      Figure 3: SFL HMAC sub-TLV.

   Type: to be assigned by IANA (suggested value 1). Length: 38.
   Reserved: 2 octets.  SHOULD be unset on transmission and MUST be
   ignored on receipt. HMAC Key ID: 4 octets. HMAC: 32 octets. HMAC and
   HMAC Key ID usage is described in Operation section.

   The Following applies to the HMAC TLV:

   When present, the HMAC sub-TLV MUST be encoded as the last sub-TLV.

   If the HMAC sub-TLV is present, the H-Flag (Figure 2) MUST be set.

   When the H-flag is set, the NVE inspecting the Geneve Service
   Function List Option TLV MUST find the HMAC sub-TLV in the last 38
   octets of the option TLV.

4.2 Geneve NSH metadata Option TLV

   Geneve Option Header:

       0                   1                   2                   3
       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |          Option Class         |      Type     |R|R|R| Length  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 

Boutros                  Expires April 30, 2018                 [Page 6]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

      |                      Variable Option Data                     |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      Figure 4: NSH Metadata Option TLV

      Option Class = NSH metadata, to be assigned by IANA.

      Type = 1 for MD type 1   Type = 2 for MD type 2 

      'C' bit set, indicating endpoints must drop if they do not
   recognize   this option)

      Length = 4 (16 bytes) for fixed or variable length.

      Option data for MD-Type 1 will be a fixed 16 bytes value.
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |                                                               |
        |                 Fixed Length Context Header                   |
        |                                                               |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      Option data for MD-Type 2 will be of variable size.

        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
        |                                                               |
        ~              Variable Length Context Headers  (opt.)          ~
        |                                                               |
        +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

5. Operation

5.1 Operation at Ingress

   A Source NVE acting as a service function classifier and a service
   function forwarder can be any node in an NVO3 domain, originating
   based on a classification policy for some customer inner payload an
   IP Geneve tunnel packet with the service function list (SFL) option
   TLV. The service functions in the SFL represent the IP addresses of
   the service functions that the inner customer packets needs to be
   inspected by. A controller can program the ingress NVE node to
   classify traffic and identify a service function paths i.e the set of
   service functions in the path. The mechanism through which an SFL is
   derived by a controller or any other mechanisms is outside of the
   scope of this document. 

   The ingress NVE node fills in the list of service functions in the
   path, to the Geneve Service Function List option TLV, putting the
   first service function ip address as the last element in the list and
   the last service function ip address as the first element, setting of
   the service function index to the first element. The ingress NVE
 

Boutros                  Expires April 30, 2018                 [Page 7]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

   node, then, resolves the service first function ip address, to the
   NVE virtual tunnel endpoint node hosting or directly connected to the
   service function.

   The Geneve tunnel destination is then set to the NVE tunnel endpoint
   hosting the first service function, and the service function index is
   decremented to n-1 (where n is the number of elements in the SFL),
   and set on the SFL option TLV. A metadata option TLV can also be set
   on the packet by the NVE ingress node.

   The Geneve packet is sent out towards the first NVE.

   HMAC optional sub-TLV may be set too.

5.2 Operation at each NVE along the service function path

   The NVE node along the service function path corresponding to the
   Geneve tunnel destination of the packet, receives the packet, perform
   the service function forwarder function and identifies the SFL
   option, and locates the service function in the list based on the
   service function index.

   The Geneve tunnel header and option TLV(s) will be stripped and the
   packet will be delivered to the service function or virtual network
   function (VNF), possibly along with some metadata that can identify
   the SFL option TLV. The NVE maintains state related to the inner
   packet, or some metadata association with the SFL option TLV. The
   packet passed to the service function can possibly be encaped with
   the NSH header, encoding in it a metadata TLV if the metadata
   approach is used, and if the SF is NSH aware, other encapsulations
   like vlan or q-in-q encap may be used to pass the metadata to the SF
   too. The metadata passed to the SF can be associated with the SFL
   option TLV.

   When the packet comes back from the service function along with the
   metadata context, based on the metadata on the packet or based on the
   inner packet flow information the NVE acting as the SFF will be able
   to locate the SFL option TLV. 

   If the metadata context indicate (1) that some service functions need
   to be bypassed the NVE should bypass in the SFL the service functions
   to be skipped and update the service function index accordingly. (2)
   A new classification need to be performed on the packet, in that case
   the NVE can re-classify the packet or sent it to an NVE node capable
   of classification.

   The NVE node, then, resolves the next service function ip address, to
   the NVE virtual tunnel endpoint node hosting or directly connected to
 

Boutros                  Expires April 30, 2018                 [Page 8]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

   the service function.

   The NVE then sets the Geneve tunnel destination to the next NVE
   tunnel endpoint, and the service function index is decremented by 1
   and set on the SFL option TLV, along with other NSH metadata option
   TLV.

   The Geneve packet is sent out towards the next NVE.

5.3 Operation at Egress

   At the last NVE node along the service function path, the NVE locates
   the service function in the SFL option TLV based on the service
   function index. The service function index received at the last NVE
   node will be set to 1.

   The Geneve tunnel header and option TLV(s) will be stripped and the
   packet will be delivered to the service function, possibly along with
   some metadata that can identify the SFL option TLV, the NVE can
   maintain state related to the inner packet, or some metadata
   association with the SFL option TLV.

   When the packet comes back from the service function, based on some
   metadata on the packet or based on the inner packet flow information
   the NVE will be able to locate the SFL option TLV. 

   Given that the service function index will be set to 1, the last NVE
   will now deliver the packet to the NVE hosting or directly connected
   to the inner packet destination.

   A packet received with a service function index of 0 MUST be dropped.

6. Security Considerations

   Only NVE(s) that are the destinations of the Geneve tunnel packet
   will be inspecting the  List of Service Function next hops Option. A
   Source routing option has some well-known security issues as
   described in [RFC4942] and [RFC5095].

   The main use case for the use of the Geneve List of Service Function
   next hops Option will be within a single NVO3 administrative domain
   where only trusted NVE nodes are enabled and configured participate,
   this is the same model as in [RFC6554].  

   NVE nodes MUST ignore the Geneve List of Service Function next hops
   Option created by outsiders based on NVA or trusted control plane
   information.

 

Boutros                  Expires April 30, 2018                 [Page 9]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

   There is a need to prevent non-participating NVE node from using the
   Geneve Service Function List option TLV, as described in [draft-ietf-
   6man-segment-routing-header], we will use a security sub-TLV in the
   Service Function List option TLV, the security sub-TLV will be based
   on a key-hashed message authentication code (HMAC).

   HMAC sub-TLV will contain:

   HMAC Key-id, 32 bits wide;

   HMAC, 256 bits wide (optional, exists only if HMAC Key-id is not 0).

   The HMAC field is the output of the HMAC computation (per RFC 2104
   [RFC2104]) using a pre-shared key identified by HMAC Key-id and of
   the text which consists of the concatenation of:

   The source IPv4/IPv6 Geneve tunnel address

   Version and Flags

   HMAC Key-id.

   All addresses in the List.

   The purpose of the HMAC optional sub-TLV is to verify the validity,
   the integrity and the authorization of the Geneve Service Function
   List option TLV itself.  

   The HMAC optional sub-TLV is located at the end of the Geneve Service
   Function List option TLV. 

   The HMAC Key-id field serves as an index to the right combination of
   pre-shared key and hash algorithm and except that a value of 0 means
   that there is no HMAC field. 

   The HMAC Selection of a hash algorithm and Pre-shared key management
   will follow the procedures described in [draft-ietf-6man-segment-
   routing-header] section 6.2.

7. Acknowledgements

8. IANA Considerations

   This document makes the following registrations in the "Geneve Option
   Class" registry maintained by IANA:

   Suggested            Description                Reference
   Value
 

Boutros                  Expires April 30, 2018                [Page 10]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

   ----------------------------------------------------------
   XX   Geneve List of Service Function next hops  This document
   XX   Geneve NSH Metadata                        This document

   In addition, this document request IANA to create and maintain a new
   Registry: "Geneve List of Service Function next hops Type-Value
   Objects".  

   The following code-point are requested from the registry:

   Registry: Geneve List of Service Function next hops Type-Value
   Objects

   Suggested         Description            Reference
   Value
   -----------------------------------------------------
        1         HMAC TLV                  This document
9.  References

9.1  Normative References

   [KEYWORDS] Bradner, S., "Key words for use in RFCs to Indicate
   Requirement Levels", BCP 14, RFC 2119, March 1997.

9.2  Informative References

   [Geneve] "Generic Network Virtualization Encapsulation", [I-D.ietf-
   nvo3-geneve]

   [I-D.ietf-sfc-nsh] Quinn, P., Elzur, U., and C. Pignataro, "Network
   Service Header (NSH)", draft-ietf-sfc-nsh-16 (work in progress), July
   2017.

   [RFC4942]  Davies, E., Krishnan, S., and P. Savola, "IPv6
   Transition/Co-existence Security Considerations", RFC 4942, DOI
   10.17487/RFC4942, September 2007, <http://www.rfc-
   editor.org/info/rfc4942>.

   [RFC6554]  Hui, J., Vasseur, JP., Culler, D., and V. Manral, "An IPv6
   Routing Header for Source Routes with the Routing Protocol for Low-
   Power and Lossy Networks (RPL)", RFC 6554, DOI 10.17487/RFC6554,
   March 2012, <http://www.rfc-editor.org/info/rfc6554>.

   [draft-ietf-6man-segment-routing-header] Previdi, S., et all, "IPv6
   Segment Routing Header (SRH)",  July 20, 2017, draft-ietf-6man-
   segment-routing-header-07

   [RFC5095]  Abley, J., Savola, P., and G. Neville-Neil, "Deprecation
 

Boutros                  Expires April 30, 2018                [Page 11]
INTERNET DRAFT     NVO3 Geneve applicability for SFC    October 27, 2017

   of Type 0 Routing Headers in IPv6", RFC 5095, DOI 10.17487/RFC5095,
   December 2007, <http://www.rfc-editor.org/info/rfc5095>.

   [RFC7665]  Halpern, J., Ed. and C. Pignataro, Ed., "Service Function
   Chaining (SFC) Architecture", RFC 7665, DOI 10.17487/RFC7665, October
   2015, <https://www.rfc-editor.org/info/rfc7665>.

Authors' Addresses 

   Sami Boutros 
   VMware 
   Email: sboutros@vmware.com

   Dharma Rajan
   VMware
   Email: drajan@vmware.com 

   Philip Kippen
   VMware
   Email: pkippen@vmware.com 

Boutros                  Expires April 30, 2018                [Page 12]