Internet DRAFT - draft-newton-weirds-route-policy

draft-newton-weirds-route-policy







Network Working Group                                          A. Newton
Internet-Draft                                                      ARIN
Intended status: Standards Track                               J. Aehlen
Expires: January 4, 2015                                        RIPE NCC
                                                             C. Martinez
                                                                  LACNIC
                                                             J. Snijders
                                                             Independent
                                                            July 3, 2014


                    Route Policy Extensions for RDAP
                  draft-newton-weirds-route-policy-00

Abstract

   This document describes extensions to the RDAP JSON data model to
   express route policy.

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 4, 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
   (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



Newton, et al.           Expires January 4, 2015                [Page 1]

Internet-Draft                ROUTE POLICY                     July 2014


   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

1.  Introduction

   The base JSON data model for RDAP contains objects for domain name
   registries (DNRs) and Regional Internet Registries (RIRs).  It does
   not contain objects for Internet Routing Registries (IRRs).

   This document describes extensions to the RDAP data model to express
   route policy.

2.  RDAP Compliance

   Servers expressing route policy extensions SHOULD add the following
   string to rdapConformance array: "route_policy_level_0".  The
   following is an example:

   An example rdapConformance data structure:

   "rdapConformance" :
   [
     "rdap_level_0",
     "route_policy_level_0"
   ]

                                 Figure 1

   JSON names for extensions in RDAP should be prefixed with an
   extension identifier.  The extension identifier used by this
   extension is "rp0".

   This document defines one extenion to the RDAP autnum object class
   ("rp0_policies") and three new RDAP object classes which map to RPSL
   classes: route, route set, and autnum set.  The RDAP equivalent of an
   RPSL maintainer object is the entity object class.  Each of object
   classes defined by this document may have the links, entities, and
   other common data structures defined by RDAP.

3.  Autnum Route Policies

   The rp0_policies is an array containing objects.  Each object in the
   array contains one member, the value of which is a string containing
   routing policy.  Use of the rp0_policies array is as an optional
   member to the RDAP autnum object class.

   The name of the object member MUST be one of the following names:




Newton, et al.           Expires January 4, 2015                [Page 2]

Internet-Draft                ROUTE POLICY                     July 2014


      import

      mp-import

      import-via

      export

      mp-export

      export-via

   An example rp0_policies data structure:

  "rp0_policies":
  [
    { "import-via":
       "AS6777 from AS-ANY EXCEPT (AS1103 AND AS1103) accept ANY" },
    { "export-via":
       "AS6777 to AS-ANY EXCEPT (AS1 AND AS1103) announce AS-SNIJDERS" }
  ]

                                 Figure 2

   As rp0_policies is an array, the order of the objects in the array is
   to be observed during processing.

   The following is an example of a JSON object representing an autnum
   with route policy extensions.  For illustrative purposes, it does not
   include rdapConformance or notices data structures.


{
  "handle" : "XXXX-RIR",
  "startAutnum" : 10,
  "endAutnum" : 15,
  "name": "AS-RTR-1",
  "type" : "DIRECT ALLOCATION",
  "status" : [ "allocated" ],
  "country": "AU",
  "remarks" :
  [
    {
      "description" :
      [
        "She sells sea shells down by the sea shore.",
        "Originally written by Terry Sullivan."
      ]



Newton, et al.           Expires January 4, 2015                [Page 3]

Internet-Draft                ROUTE POLICY                     July 2014


    }
  ],
  "links" :
  [
    {
      "value" : "http://example.net/autnum/xxxx",
      "rel" : "self",
      "href" : "http://example.net/autnum/xxxx",
      "type" : "application/rdap+json"
    }
  ],
  "events" :
  [
    {
      "eventAction" : "registration",
      "eventDate" : "1990-12-31T23:59:60Z"
    },
    {
      "eventAction" : "last changed",
      "eventDate" : "1991-12-31T23:59:60Z"
    }
  ],
  "entities" :
  [
    {
      "handle" : "XXXX",
      "vcardArray":[
        "vcard",
        [
          ["version", {}, "text", "4.0"],
          ["fn", {}, "text", "Joe User"],
          ["kind", {}, "text", "individual"],
          ["lang", {
            "pref":"1"
          }, "language-tag", "fr"],
          ["lang", {
            "pref":"2"
          }, "language-tag", "en"],
          ["org", {
            "type":"work"
          }, "text", "Example"],
          ["title", {}, "text", "Research Scientist"],
          ["role", {}, "text", "Project Lead"],
          ["adr",
            { "type":"work" },
            "text",
            [
              "",



Newton, et al.           Expires January 4, 2015                [Page 4]

Internet-Draft                ROUTE POLICY                     July 2014


              "Suite 1234",
              "4321 Rue Somewhere",
              "Quebec",
              "QC",
              "G1V 2M2",
              "Canada"
            ]
          ],
          ["tel",
            { "type":["work", "voice"], "pref":"1" },
            "uri", "tel:+1-555-555-1234;ext=102"
          ],
          ["email",
            { "type":"work" },
            "text", "joe.user@example.com"
          ],
        ]
      ],
      "roles" : [ "registrant" ],
      "remarks" :
      [
        {
          "description" :
          [
            "She sells sea shells down by the sea shore.",
            "Originally written by Terry Sullivan."
          ]
        }
      ],
      "links" :
      [
        {
          "value" : "http://example.net/entity/XXXX",
          "rel" : "self",
          "href" : "http://example.net/entity/XXXX",
          "type" : "application/rdap+json"
        }
      ],
      "events" :
      [
        {
          "eventAction" : "registration",
          "eventDate" : "1990-12-31T23:59:60Z"
        },
        {
          "eventAction" : "last changed",
          "eventDate" : "1991-12-31T23:59:60Z"
        }



Newton, et al.           Expires January 4, 2015                [Page 5]

Internet-Draft                ROUTE POLICY                     July 2014


      ]
    }
  ],
  "rp0_policies":
  [
    { "import-via":
       "AS6777 from AS-ANY EXCEPT (AS1103 AND AS1103) accept ANY" },
    { "export-via":
       "AS6777 to AS-ANY EXCEPT (AS1 AND AS1103) announce AS-SNIJDERS" }
  ]
}


4.  Route Object Class

   The RDAP route object class is an RDAP representation of the RPSL
   route class.

   The following is an elided example of a route object showing the high
   level structure:


   {
     "handle" : "XXX",
     "route" : "XXX",
     "origin" : 123,
     ...
     "entities" :
     [
       ...
     ],
     "links" :
     [
       ...
     ],
     ...
   }


   The "handle" member is the registry unique identifier of the route
   object, just as with other RDAP object classes.  The "route" member
   is the IP address prefix as specified in RPSL.  The "handle" and
   "route" values may be the same (and usually will be).

   The "origin" member is an integer specifying an autonomous system
   number.

   The other members of the object are:



Newton, et al.           Expires January 4, 2015                [Page 6]

Internet-Draft                ROUTE POLICY                     July 2014


      memberOf - an array of strings, each containing the handle of a
      route set object.

      inject - an array of strings, each containing a value as specified
      by RPSL.

      components - a string containing a value as specified by RPSL.

      aggregateBoundary - a string containing a value as specified by
      RPSL.

      aggregateMtd - a string containing a value as specified by RPSL.

      exportComps - a string containing a value as specified by RPSL.

      holes - an array of strings, each containing a value as specified
      by RPSL.

      entities - an array of entity objects, as specified by RDAP.

   While the "memberOf" array contains route set object handles, the
   links array (as specified by RDAP) SHOULD contain links to each route
   set object using the "collection" link relationship.

   Route objects are obtained from an RDAP server by appending the
   "/route" path to an RDAP base URL followed by either the handle of
   the route object or value of the "route" member.

5.  Route Set Object Class

   The route set object class is an RDAP representation of the route-set
   object in RPSL.



















Newton, et al.           Expires January 4, 2015                [Page 7]

Internet-Draft                ROUTE POLICY                     July 2014


   The following is an elided example of a route set object showing the
   high level structure:


   {
     "handle" : "XXX",
     "members" :
     [
        ...
     ],
     ...
     "entities" :
     [
       ...
     ],
     "links" :
     [
       ...
     ],
     ...
   }


   The "handle" member is the registry unique identifier of the route
   set object, just as with other RDAP object classes.  The "members"
   object member is an array of strings, each containing the handle of a
   route or route set object.

   While the "members" array contains route or route set object handles,
   the links array (as specified by RDAP) SHOULD contain links to each
   route or route set object using the "item" link relationship.

   Route set objects are obtained from an RDAP server by appending the
   "/routeSet" path to an RDAP base URL followed by the handle of the
   route set object.

6.  Autnum Set Object Class

   The autnum set object class is an RDAP representation of the as-set
   object in RPSL.











Newton, et al.           Expires January 4, 2015                [Page 8]

Internet-Draft                ROUTE POLICY                     July 2014


   The following is an elided example of an autnum set object showing
   the high level structure:


   {
     "handle" : "XXX",
     "members" :
     [
        ...
     ],
     ...
     "entities" :
     [
       ...
     ],
     "links" :
     [
       ...
     ],
     ...
   }


   The "handle" member is the registry unique identifier of the autnum
   set object, just as with other RDAP object classes.  The "members"
   object member is an array of strings, each containing the handle of
   an autnum object (as defined by RDAP) or autnum set object.

   While the "members" array contains autnum or autnum set object
   handles, the links array (as specified by RDAP) SHOULD contain links
   to each autnum or autnum set object using the "item" link
   relationship.

   Autnum set objects are obtained from an RDAP server by appending the
   "/autnumSet" path to an RDAP base URL followed by the handle of the
   autnum set object.

7.  Discussion

7.1.  Other IRR Objects

   RDAP contains many objects that are found in IRRs, but not all of
   them.  The common object types are autnum objects and entity objects
   (for the mnter class of objects).  RDAP does not have equivalences
   for route or set objects, and RPSL does not have equivalences for
   nameserver, domain, or network objects (though such objects do appear
   in registries that are both RIRs and IRRs).




Newton, et al.           Expires January 4, 2015                [Page 9]

Internet-Draft                ROUTE POLICY                     July 2014


   There has been debate in the community over the usefulness of the
   entire RPSL data model.  Therefore, this document starts with
   replicating only the parts of RPSL needed to express import/export
   policy for an autonomous system.

7.2.  Decomposition of RPSL to JSON

   Since RPSL is specified via language grammar, it requires an RPSL
   specific parser.  This has been among one of its chief criticisms.
   RDAP uses JSON, so it requires no RDAP specific parser.

   As the route policy community is not very large and is mostly
   composed of individuals who are not computer programmers as their
   primary tasking, the issue of a problem domain parser for route
   policy is important.  But using a common data format such as JSON,
   network operators do not need to create a route policy specific
   parser to use the data.  While seemingly trivial to some, it is an
   important consideration for such a small community.

   This document does not attempt to map RPSL into JSON, instead leaving
   the policies as RPSL strings.  This only solves the "lookup" problem,
   where RDAP can be consulted to get the policies.  It does not solve
   the "parser" problem, where a special purpose RPSL parser is still
   needed.

   Future versions of this document may decompose RPSL into JSON once a
   reasonable JSON serialization technique can be determined.

Authors' Addresses

   Andrew Lee Newton
   American Registry for Internet Numbers
   3635 Concorde Parkway
   Chantilly, VA  20151
   US

   Email: andy@arin.net
   URI:   http://www.arin.net


   Johan Aehlen
   RIPE Network Coordination Centre
   Singel 258
   Amsterdam  1016AB
   NL

   Email: jahlen@ripe.net
   URI:   http://www.ripe.net



Newton, et al.           Expires January 4, 2015               [Page 10]

Internet-Draft                ROUTE POLICY                     July 2014


   Carlos M. Martinez
   Latin American and Caribbean Internet Address Registry
   Rambla Republica de Mexico 6125
   Montevideo  11300
   UY

   Email: carlos@lacnic.net
   URI:   http://www.lacnic.net


   Job Snijders
   Independent
   Theodorus Majofskistraat 100
   Amsterdam  1065 SZ
   NL

   Email: job@instituut.net


































Newton, et al.           Expires January 4, 2015               [Page 11]