aboutsummaryrefslogtreecommitdiffstats
path: root/doxygen/Makefile
AgeCommit message (Collapse)AuthorFilesLines
2019-11-15build: fix docs/doxygen targetsDave Wallace1-2/+5
- Add missing dependencies - Fix clean/wipe to remove generated files - Fix doxygen src variable Type: fix Signed-off-by: Dave Wallace <dwallacelf@gmail.com> Change-Id: If6b2797e8af3f2e735759fab5841a0b4576ed7cc
2019-11-05docs: fix 'make doxygen' under python3Paul Vinciguerra1-3/+3
The 'make doxygen' component has this cool vpp specific customization called siphon. This updates the siphon component so that 'make doxygen' works with python3. Needed-By: https://gerrit.fd.io/r/23159 Type: docs Change-Id: Ie29f1602bf3460b637058acbb0a2f19b128a8824 Signed-off-by: Paul Vinciguerra <pvinci@vinciconsulting.com>
2019-07-03doxygen: improve .md file discoveryDave Barach1-0/+2
Add directories under .../src which contain .md files to DOXY_SRC_DIRECTORIES. Type: fix Change-Id: If7ce833b6cb9cd5ec30a8df8e263087e276cfe97 Signed-off-by: Dave Barach <dave@barachs.net>
2018-08-03API: Remove legacy vlibsocket code.Ole Troan1-1/+0
The API implementation now supports Unix domain sockets. The vlibsocket code has not been included in builds for a long time and is superfluous. Change-Id: I67a773d0e86e2318eacecf33f82d075553146ee9 Signed-off-by: Ole Troan <ot@cisco.com>
2017-12-15apps: refactor uri and update build infraFlorin Coras1-1/+0
Change-Id: Ifa9966a27586a1a65038d069cf4a1e6e21a72d45 Signed-off-by: Florin Coras <fcoras@cisco.com>
2017-09-28General documentation updatesChris Luke1-2/+2
- We now have several developer-focused docs, so create an index page for them. - Rework several docs to fit into the index structure. - Experiment with code highlighting; tweak the CSS slightly to make it slightly nicer to look at. Change-Id: I4185a18f84fa0764745ca7a3148276064a3155c6 Signed-off-by: Chris Luke <chrisy@flirble.org>
2017-06-09Sample plugin: Add sample plugin documentationRay Kinsella1-2/+1
Added some user documentation to sample plugin. Change-Id: I518910f80499307e8fcac8dcef7baaeab5ea8e35 Signed-off-by: Ray Kinsella <ray.kinsella@intel.com>
2017-05-10doxygen: Fix some pathsChris Luke1-1/+3
- Add missing src dir. - Exclude 'src/examples' from siphon processing so that example cli commands don't end up in user documentation. Change-Id: I46a6ad759fa8220d305b007a9506956365fc79bd Signed-off-by: Chris Luke <chrisy@flirble.org>
2017-03-29Bugfixing and documentation for SRv6Pablo Camarillo1-3/+3
- Fixed three coverity issues - Linked SRv6 docs - Moved sample plugin to examples folder - Fixed bug with hash. Now everything is using mhash. Potentially in the future we want to do bihash. Change-Id: Ie03a13c8fecb1e315e67d0596cbd23220779aaf2 Signed-off-by: Pablo Camarillo <pcamaril@cisco.com>
2017-02-22Add ref to test framework docs in doxygen output.Dave Wallace1-5/+1
Change-Id: If3081c4a9dde00cd522d1fc5a7daa9b1849684bf Signed-off-by: Dave Wallace <dwallacelf@gmail.com>
2017-02-02Added support for openSUSEMarco Varlese1-1/+4
Change-Id: I64a0eeaa066adb70dfaeb33641d0336ddac18cf0 Signed-off-by: Marco Varlese <marco.varlese@suse.com>
2017-01-11Remove vcgn pluginDamjan Marion1-2/+1
Change-Id: I79f18ec386dedd91a8dcea2ca5726208b7b3c67c Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-10Revert "vppctl: bash completion for vppctl commands"Damjan Marion1-8/+17
This patch is causing build failures This reverts commit d995c757f05f78aa759b0a65c0a7e38088e690a9. Change-Id: I0c8d5a4208135d77aaa3a6a470d26140f7b74733 Signed-off-by: Damjan Marion <damarion@cisco.com>
2017-01-09vppctl: bash completion for vppctl commandsPadraig Connolly1-17/+8
Added bash completion that will include all commands from build time *Script takes list of commands generated by doxygen-siphon-list *Configured doxygen-siphon makefile to generate just cli commands *List of cli commands put in /usr/share/vpp *Stopped siphon using doxygen bootstrap, uses main bootstrap instead *Added rpm/deb check for installation of packages, separate from bootstrap *NOTE: Once you have installed the vpp .deb/.rpm package you will have to restart bash Change-Id: Ie503e80d5177481f6e7dbe59378f2e0d76f29152 Signed-off-by: Padraig Connolly <padraig.connolly@intel.com>
2017-01-01Move java,lua api and remaining plugins to src/Damjan Marion1-4/+3
Change-Id: I1c3b87e886603678368428ae56a6bd3327cbc90d Signed-off-by: Damjan Marion <damarion@cisco.com>
2016-12-28Repair Doxygen build infrastructureChris Luke1-11/+27
After Gerrit 4430 much of the documentation failed to build, but silently so it was easily missed; equally missing that several paths have been missing for a while. - Correct paths after directory tree changes. - Doxygen now bails when input paths don't exist. - Fix up some of the less deranged entries in the documentation index. - Exclude the LUA tree, its documentation is a mess. Change-Id: I35e6b433feee5e05bca772d93aa1635c724db734 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-11-28Add support for using documentation siphons in multiple waysChris Luke1-11/+25
Experiental support for generating multiple output formats from the same siphoned data. Adds a contrived example to generate a plain list of all CLI commands (the "itemlist" format). Eventually we can consider moving the tempate procesisng into the Output class as well as a way to override how the data is traversed (ordered). Change-Id: I77629a74a8fa0c7e583993469dc50491f72f13e7 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-23Enable doc building on MacOSChris Luke1-1/+25
Simple tweak to the Makefiles to allow "make doxygen" to work natively on Macs - assuming the appropriate things have been installed first, which it tests for. Change-Id: I1a3e72759d533270a0512de38595c3bc3f71dee0 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-21Refactor pre-Doxy siphon scripts; VPP-396Chris Luke1-12/+36
- Modularize the code to make the Siphon process easier to maintain. - Move much of the output rendering into Jinja2 templates. - Add syscfg siphon type for startup config documentation. - Add sample syscfg documentation. - Add clicfg and syscfg preamble docs, adapted from their wiki pages. - Fix sorting of CLI items across multiple directories. Change-Id: Ib8288fe005adfea68ceed75a38ff8eba25d3cc79 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-20Add structure to some of the documentation; VPP-223Chris Luke1-1/+5
Moves the random .md files, when rendered by Doxygen, into a config examples tree. We may later flesh this out into a more complete user documentation section. Change-Id: If423b82f1047f1c84f90876a786313054b5f7c77 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-09Check for zero-sized Graphvix config file on Ubuntu; VPP-396Chris Luke1-1/+2
- The previous change only accounted for a missing Graphviz config file; apparently it can be zero-sized too. Change-Id: Ic6957d10cdc7cb7b9da72d2b2a0f8913100870c5 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-09On Ubuntu check for graphviz system configChris Luke1-0/+3
- Sometimes it seems Ubuntu doesn't always set up the Graphviz handler config. If it's missing, generate it. Change-Id: I2c1e566817de8415f8b360c6f967cd76307a2a52 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-07VPP-346 Improve Doxygen include path mechanismChris Luke1-22/+54
- If present, include the directories where API header files are generated into. - Improve extraction of include paths from CPP - Generalize the file/directory exclusion This reduces some of the "warning" chatter from Doxygen. Change-Id: I7ac02bff1639fe63f11263176020b0f040255017 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-06VPP-346 More VPP doc fixesChris Luke1-7/+30
- Fix issue in Doxy dependency check when nothing needs to be installed. 'set -e' and plain '[]' logic don't mix well. - Fix Makefile snafu when building Doxy output for a single file. - Include only one of vnet/vnet/buffer.c/dpdk_buffer.c in docs depending on DPDKness. This could do with some improvement in future, eg to properly align the pre-doxy steps with what Doxy does. - Fix rendering of 'inline' tag in Doxygen by having it interpret always_inline as "inline static". - Bunch of duplicate CLI command structure names that confused docs and may one day have caused debugging issues. - Several other Doxygen syntax issues fixed, like documenting non-existant parameters (usually just the wrong parameter name, typos, etc) Change-Id: Ia8cca545e5de9f8750602bffa3c4548acc8971aa Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-02VPP-221 Improve doxygen dependency checkChris Luke1-1/+5
Only try to install packages if they're not installed. Saves a trip through sudo which is useful when you have a non-privileged account generating the docs. Change-Id: I3709aceb15516a45ea2f9510d91c6d2e42c8c349 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-09-01VPP-346 A swathe of doc fixesChris Luke1-0/+4
Fixes various Doxygen warnings and other structural defects. Note: This does not attempt to improve the content of the documentation; only to improve the syntax and structure of it and in some cases the consistency. Change-Id: Ib1915f33edbdbc4558c85565de80dce323193906 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-08-31VPP-221 Loosen Doxygen CLI command struct parserChris Luke1-0/+1
Make the struct parser slighty slightly more accomodating of whitespace in places it has no business being. Also add missing OS_ID thing to Doxygen makefile. Change-Id: Id3d198fd926f7a6c2ed40bc2d08907aad5d5ac33 Signed-off-by: Chris Luke <chrisy@flirble.org>
2016-08-31VPP-221 CLI auto-documentation infrastructureChris Luke1-0/+122
As a step before Doxygen, extract CLI-related struct initializers from the code and parse that into a summary of the CLI commands available with the provided help text, such as it is. At the moment this only renders this into an indexed Markdown file that Doxygen then picks up but later we can use this information to enrich the existing VLIB_CLI_COMMAND macro documentor as well as provide runtime documentation to VPP that is stored on disk outside the binary image. Additionally support a comment block immediately prior to VLIB_CLI_COMMAND CLI command definitions in the form /*? ... ?*/ that can be used to include long-form documentation without having it compiled into VPP. Examples of documenting CLI commands can be found in vlib/vlib/unix/cli.c which, whilst not perfect, should provide a starting point. Screen captures of sample output can be seen at https://chrisy.flirble.org/vpp/doxy-cli-example.png and https://chrisy.flirble.org/vpp/doxy-cli-index.png . Next, shift the Doxygen root makefile targets to their own Makefile. The primary reason for this is that the siphon targets do dependency tracking which means it needs to generate those dependencies whenever make is run; that is pointless if we're not going to generate any documentation. This includes the package dependencies since they since they sometimes unnecessarily interfere with the code build in some cases at the moment; later we will look to building a Python venv to host the Python modules we use. One final remark: In future we may consider deprecating .long_help in the VLIB_CLI_COMMAND structure entirely but add perhaps .usage_help. .short_help would be reserved for a summary of the command function and .usage_help provide the syntax of that command. These changes would provide great semantic value to the automaticly generated CLI documentation. I could also see having .long_help replaced by a mechanism that reads it from disk at runtime with a rudimentary Markdown/Doxygen filter so that we can use the same text that is used in the published documentation. Change-Id: I80d6fe349b47dce649fa77d21ffec0ddb45c7bbf Signed-off-by: Chris Luke <chrisy@flirble.org>
74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
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