Network Working Group                                           D. Lewis
Internet-Draft                                       Cisco Systems, Inc.
Intended status: Informational                                P. Agarwal
Expires: January 5, 2015                                        Broadcom
                                                              L. Kreeger
                                                                F. Maino
                                                                P. Quinn
                                                                M. Smith
                                                                N. Yadav
                                                     Cisco Systems, Inc.
                                                            July 4, 2014


                    LISP Generic Protocol Extension
                      draft-lewis-lisp-gpe-02.txt

Abstract

   This draft describes extending the Locator/ID Separation Protocol
   (LISP) [RFC6830], via changes to the LISP header, with three new
   capabilities: support for multi-protocol encapsulation, operations,
   administration and management (OAM) signaling, and explicit
   versioning.

Status of this Memo

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

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   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."

   This Internet-Draft will expire on January 5, 2015.

Copyright Notice

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

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents



Lewis, et al.            Expires January 5, 2015                [Page 1]

Internet-Draft       LISP Generic Protocol Extension           July 2014


   (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.  LISP Header Without Protocol Extensions  . . . . . . . . . . .  4
   3.  Generic Protocol Extension for LISP (LISP-gpe) . . . . . . . .  5
     3.1.  Multi Protocol Support . . . . . . . . . . . . . . . . . .  5
     3.2.  OAM Support  . . . . . . . . . . . . . . . . . . . . . . .  6
     3.3.  Version Bits . . . . . . . . . . . . . . . . . . . . . . .  6
   4.  Backward Compatibility . . . . . . . . . . . . . . . . . . . .  8
     4.1.  LISP-gpe Routers to (legacy) LISP Routers  . . . . . . . .  8
     4.2.  (legacy) LISP Routers to LISP-gpe Routers  . . . . . . . .  8
     4.3.  Type of Service  . . . . . . . . . . . . . . . . . . . . .  8
     4.4.  VLAN Identifier (VID)  . . . . . . . . . . . . . . . . . .  8
   5.  LISP-gpe Examples  . . . . . . . . . . . . . . . . . . . . . .  9
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 11
   7.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . . 12
   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 13
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 14
     9.1.  Normative References . . . . . . . . . . . . . . . . . . . 14
     9.2.  Informative References . . . . . . . . . . . . . . . . . . 14
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 15





















Lewis, et al.            Expires January 5, 2015                [Page 2]

Internet-Draft       LISP Generic Protocol Extension           July 2014


1.  Introduction

   LISP [RFC6830] defines an encapsulation format that carries IPv4 or
   IPv6 (henceforth referred to as IP) packets in a LISP header and
   outer UDP/IP transport.

   The LISP header does not specify the protocol being encapsulated and
   therefore is currently limited to encapsulating only IP packet
   payloads.  Other protocols, most notably VXLAN [VXLAN] (which defines
   a similar header format to LISP), are used to encapsulate L2
   protocols such as Ethernet.  LISP [RFC6830] can be extended to
   indicate the inner protocol, enabling the encapsulation of Ethernet,
   IP or any other desired protocol all the while ensuring compatibility
   with existing LISP [RFC6830] deployments.

   As LISP is deployed, there's also the need to provide increased
   visibility and diagnostic capabilities within the overlay.

   This document describes extending LISP ([RFC6830]) via the following
   changes:

   Next Protocol Bit (P bit):  A reserved flag bit is allocated, and set
      in the LISP-gpe header to indicate that a next protocol field is
      present.

   OAM Flag Bit (O bit):  A reserved flag bit is allocated, and set in
      the LISP-gpe header, to indicate that the packet is an OAM packet.

   Version:  Two reserved bits are allocated, and set in the LISP-gpe
      header, to indicate LISP-gpe protocol version.

   Next protocol:  An 8 bit next protocol field is present in the LISP-
      gpe header.


















Lewis, et al.            Expires January 5, 2015                [Page 3]

Internet-Draft       LISP Generic Protocol Extension           July 2014


2.  LISP Header Without Protocol Extensions

   As described in the introduction, the LISP header has no protocol
   identifier that indicates the type of payload being carried by LISP.
   Because of this, LISP is limited to an IP payload.  Furthermore, the
   LISP header has no mechanism to signal OAM packets.

   The LISP header contains flags (some defined, some reserved), a
   Nonce/Map-version field and an instance ID/Locator-status-bit field.
   The flags provide flexibility to define how the reserved bits can be
   used to change the definition of the LISP header.


   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |N|L|E|V|I|flags|            Nonce/Map-Version                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Instance ID/Locator-Status-Bits               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


                           Figure 1: LISP Header






























Lewis, et al.            Expires January 5, 2015                [Page 4]

Internet-Draft       LISP Generic Protocol Extension           July 2014


3.  Generic Protocol Extension for LISP (LISP-gpe)

3.1.  Multi Protocol Support

   This draft defines the following changes to the LISP header in order
   to support multi-protocol encapsulation.

   P Bit:  Flag bit 5 is defined as the Next Protocol bit.  The P bit
      MUST be set to 1 to indicate the presence of the 8 bit next
      protocol field.

      P = 0 indicates that the payload MUST conform to LISP as defined
      in [RFC6830].

      Flag bit 5 was chosen as the P bit because this flag bit is
      currently unallocated in LISP [RFC6830].

   Next Protocol Field:  The lower 8 bits of the first word are used to
      carry a next protocol.  This next protocol field contains the
      protocol of the encapsulated payload packet.

      LISP [RFC6830] uses the lower 16 bits of the first word for either
      a nonce, an echo-nonce ([RFC6830]) or to support map-versioning
      ([RFC6834]).  These are all optional capabilities that are
      indicated by setting the N, E, and the V bit respectively.

      To maintain the desired data plane compatibility, when the P bit
      is set, the N, E, and V bits MUST be set to zero.

   A new protocol registry will be requested from IANA for the Next
   Protocol field.  This draft defines the following Next Protocol
   values:

      0x1 : IPv4

      0x2 : IPv6

      0x3 : Ethernet

      0x4: Network Service Header











Lewis, et al.            Expires January 5, 2015                [Page 5]

Internet-Draft       LISP Generic Protocol Extension           July 2014


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |N|L|E|V|I|P|R|R|      Reserved                 | Next Protocol |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Instance ID/Locator-Status-Bits               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



                  Figure 2: LISP-gpe Next Protocol (P=1)

3.2.  OAM Support

   Flag bit 7 is defined as the O bit.  When the O bit is set to 1, the
   packet is an OAM packet and OAM processing MUST occur.  The OAM
   protocol details are out of scope for this document.  As with the
   P-bit, bit 7 is currently a reserved flag in [RFC6830].




    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |N|L|E|V|I|P|R|O|      Reserved                 | Next Protocol |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Instance ID/Locator-Status-Bits               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



                     Figure 3: LISP-gpe OAM bit (P=1)

3.3.  Version Bits

   LISP-gpe bits8 and 9 are defined as version bits.  The version field
   is used to ensure backward compatibility going forward with future
   LISP-gpe updates.

   The initial version for LISP-gpe is 0.










Lewis, et al.            Expires January 5, 2015                [Page 6]

Internet-Draft       LISP Generic Protocol Extension           July 2014


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |N|L|E|V|I|P|R|O|Ver|      Reserved             | Next Protocol |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Instance ID/Locator-Status-Bits               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



                   Figure 4: LISP-gpe Version bits (P=1)








































Lewis, et al.            Expires January 5, 2015                [Page 7]

Internet-Draft       LISP Generic Protocol Extension           July 2014


4.  Backward Compatibility

   Undefined (in RFC6830) flag bits 5 and 7, LISP-gpe P and O bits, were
   selected to ensure compatibility with existing LISP [RFC6830]
   deployments.

   Similarly, using P = 0 to indicate that the format of the header and
   payload conforms to [RFC6830] ensures compatibility with existing
   LISP hardware forwarding platforms.

4.1.  LISP-gpe Routers to (legacy) LISP Routers

   A LISP-gpe router MUST not encapsulate non-IP packet nor OAM packets
   to a LISP router.  A method for determining the capabilities of a
   LISP router (gpe or "legacy") is out of the scope of this draft.

   When encapsulating IP packets to a LISP router the P bit SHOULD be
   set to 1 and the UDP port MUST be set to 4341.  OAM bit MUST be set
   to 0.  The Next Protocol field SHOULD be 0x1 (IPv4) or 0x2 (IPv6).
   The (legacy) LISP router will ignore the P bit and the protocol type
   field.  The (legacy) LISP router will treat the packet as a LISP
   packet and inspect the first nibble of the payload to determine the
   IP version.

   When the P bit is set, the N, E, and V bits MUST be set to zero.  The
   receiving (legacy) LISP router will ignore N, E and V bits, when the
   P bit is set.

4.2.  (legacy) LISP Routers to LISP-gpe Routers

   When a LISP-gpe router receives a packet from a (legacy) LISP router,
   the P bit MUST not be set and the UDP port MUST be 4341.  The payload
   MUST be IP, and the LISP-gpe router will inspect the first nibble of
   the payload to determine IP version.

4.3.  Type of Service

   When a LISP-gpe router performs Ethernet encapsulation, the inner
   802.1Q [IEEE8021Q] priority code point (PCP) field MAY be mapped from
   the encapsulated frame to the Type of Service field in the outer IPv4
   header, or in the case of IPv6 the 'Traffic Class' field.

4.4.  VLAN Identifier (VID)

   When a LISP-gpe router performs Ethernet encapsulation, the inner
   header 802.1Q [IEEE8021Q] VLAN Identifier (VID) MAY be mapped to, or
   used to determine the LISP Instance ID field.




Lewis, et al.            Expires January 5, 2015                [Page 8]

Internet-Draft       LISP Generic Protocol Extension           July 2014


5.  LISP-gpe Examples

   This section provides two examples of IP protocols, and one example
   of Ethernet encapsulated LISP-gpe using the generic extension
   described in this document.



    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |N|L|E|V|I|1|0|0|0|   Reserved                  |   NP = IPv4   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Instance ID/Locator-Status-Bits               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               Original IPv4 Packet                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



                        Figure 5: IPv4 and LISP-gpe




    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |N|L|E|V|I|1|0|0|0|   Reserved                  |   NP = IPv6   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Instance ID/Locator-Status-Bits               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               Original IPv6 Packet                            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



                        Figure 6: IPv6 and LISP-gpe













Lewis, et al.            Expires January 5, 2015                [Page 9]

Internet-Draft       LISP Generic Protocol Extension           July 2014


    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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |N|L|E|V|I|1|0|0|0|   Reserved                  | NP = Ethernet |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Instance ID/Locator-Status-Bits               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |               Original Ethernet Frame                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



                      Figure 7: Ethernet and LISP-gpe






































Lewis, et al.            Expires January 5, 2015               [Page 10]

Internet-Draft       LISP Generic Protocol Extension           July 2014


6.  Security Considerations

   LISP-gpe security considerations are similar to the LISP security
   considerations documented at length in LISP [RFC6830].  With LISP-
   gpe, issues such as dataplane spoofing, flooding, and traffic
   redirection are dependent on the particular protocol payload
   encapsulated.












































Lewis, et al.            Expires January 5, 2015               [Page 11]

Internet-Draft       LISP Generic Protocol Extension           July 2014


7.  Acknowledgments

   A special thank you goes to Dino Farinacci for his guidance and
   detailed review.















































Lewis, et al.            Expires January 5, 2015               [Page 12]

Internet-Draft       LISP Generic Protocol Extension           July 2014


8.  IANA Considerations

   IANA is requested to set up a registry of "Next Protocol".  These are
   8-bit values.  Next Protocol values 0, 1, 2, 3 and 4 are defined in
   this draft.  New values are assigned via Standards Action [RFC5226].

              +---------------+-------------+---------------+
              | Next Protocol | Description | Reference     |
              +---------------+-------------+---------------+
              | 0             | Reserved    | This document |
              |               |             |               |
              | 1             | IPv4        | This document |
              |               |             |               |
              | 2             | IPv6        | This document |
              |               |             |               |
              | 3             | Ethernet    | This document |
              |               |             |               |
              | 4             | NSH         | This document |
              |               |             |               |
              | 5..253        | Unassigned  |               |
              +---------------+-------------+---------------+

                                  Table 1

   There are ten bits at the beginning of the LISP-gpe header.  New
   bits are assigned via Standards Action [RFC5226].

   Bits 0-3 - Assigned by LISP [RFC6830] 
   Bit 4 - Instance ID (I bit)
   Bit 5 - Next Protocol (P bit)
   Bit 6 - Reserved
   Bit 7 - OAM (O bit)
   Bits 8-9 - Version


















Lewis, et al.            Expires January 5, 2015               [Page 13]

Internet-Draft       LISP Generic Protocol Extension           July 2014


9.  References

9.1.  Normative References

   [RFC0768]  Postel, J., "User Datagram Protocol", STD 6, RFC 768,
              August 1980.

   [RFC0791]  Postel, J., "Internet Protocol", STD 5, RFC 791,
              September 1981.

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

   [RFC5226]  Narten, T. and H. Alvestrand, "Guidelines for Writing an
              IANA Considerations Section in RFCs", BCP 26, RFC 5226,
              May 2008.

9.2.  Informative References

   [ETYPES]   The IEEE Registration Authority, "IEEE 802 Numbers", 2012,
              <http://www.iana.org/assignments/ieee-802-numbers/
              ieee-802-numbers.xml>.

   [IEEE8021Q]
              The IEEE Computer Society, "Media Access Control (MAC)
              Bridges and Virtual Bridge Local Area Networks", August
              2012, <http://standards.ieee.org/getieee802/download/
              802.1Q-2011.pdf>.

   [RFC1700]  Reynolds, J. and J. Postel, "Assigned Numbers", RFC 1700,
              October 1994.

   [RFC6830]  Farinacci, D., Fuller, V., Meyer, D., and D. Lewis, "The
              Locator/ID Separation Protocol (LISP)", RFC 6830,
              January 2013.

   [RFC6834]  Iannone, L., Saucez, D., and O. Bonaventure, "Locator/ID
              Separation Protocol (LISP) Map-Versioning", RFC 6834,
              January 2013.

   [VXLAN]    Dutt, D., Mahalingam, M., Duda, K., Agarwal, P., Kreeger,
              L., Sridhar, T., Bursell, M., and C. Wright, "VXLAN: A
              Framework for Overlaying Virtualized Layer 2 Networks over
              Layer 3 Networks", 2013.







Lewis, et al.            Expires January 5, 2015               [Page 14]

Internet-Draft       LISP Generic Protocol Extension           July 2014


Authors' Addresses

   Darrel Lewis
   Cisco Systems, Inc.

   Email: darlewis@cisco.com


   Puneet Agarwal
   Broadcom

   Email: pagarwal@broadcom.com


   Larry Kreeger
   Cisco Systems, Inc.

   Email: kreeger@cisco.com


   Fabio Maino
   Cisco Systems, Inc.

   Email: fmaino@cisco.com


   Paul Quinn
   Cisco Systems, Inc.

   Email: paulq@cisco.com


   Michael Smith
   Cisco Systems, Inc.

   Email: michsmit@cisco.com


   Navindra Yadav
   Cisco Systems, Inc.

   Email: nyadav@cisco.com
