Peoples,
I was writing this up last night and would like share it with the group to explains some of the issues I am running into.
John
Network and STP identifier Syntactic Structure
A network resource URN (NURN) identified by the "urn:ogf:network:" prefix is defined in [URN-OGF-NETWORK]. NSI utilizes NURN formatted URNs in the P2P service definition, and within NML topology describing NSI network constructs. The NSI Connection Service Protocol specification [OGF-NSI-CS] puts a specific requirement on the Service Termination Point Identifier (stpId), defining the stpId as a three-part identifier composed of a network identifier part, a local identifier part, and a qualifying label part:
<STP identifier> ::= <networkId> “:” <localId> <label>
<label> ::= “?” <labelType> “=” <labelValue> | “?”<labelType> | “”
<labelType> ::= <string>
<labelValue> ::= <string>
To maintain syntactic correctness with the NURN specification such that an stpId is also a valid NURN formatted URN, we define a specific Augmented B
NF [RFC 5234] to restrict the format of the NSI Network and STP identifiers such that they remain NURN compliant, but provide the needed imbedded structure.
NSAID = ROOTID
NETWORKID = ROOTID
ROOTID = "urn:ogf:network:" ORGID ":" LOCALPART
ORGID = FQDN ":" DATE ; ID of assigning organisation
FQDN = 1*(ALPHA / DIGIT / "-" / ".") ; Domain name
DATE = YEAR *1(MONTH *1DAY) ; Date of creation of ORGID
YEAR = 4DIGIT
MONTH = 2DIGIT
DAY = 2DIGIT
LOCALPART = *(ALPHA / DIGIT / SYMBOL)
ALPHA = %x41-5A / %x61-7A ; A-Z / a-z
DIGIT = %x30-39 ; 0-9
SYMBOL = "+" / "," / "-" / "." / ";" / "=" / "_"
STPID = NETWORKMEMBER
SERVICEDOMAINID = NETWORKMEMBER
SERVICEADAPTATIONID = NETWORKMEMBER
SERVICEDEFINITIONID = NETWORKMEMBER
NETWORKMEMBER = NETWORKID ":" MEMBERLOCALPART *1QUERY *1FRAGMENT ;
MEMBERLOCALPART = *(ALPHA / DIGIT / OTHER)
OTHER = ALLOWED / EXTENSION
ALLOWED = "+" / "," / "-" / "." / ":" / ";" / "=" / "_"
EXTENSION = "!" / "$" / "(" / ")" / "*" / "@" / "~" / "&"
QUERY = "?" *QFCHAR
FRAGMENT = "#" *QFCHAR
QFCHAR = ALPHA / DIGIT / OTHER
The full length of an ID must not exceed 255 characters.
ALLOWED and SYMBOL characters may be used for the assignment of network resource URNs. EXTENSION characters should not be used to assign network resource URNs. To allow for future extensions, parsers should accept network resource URNs with EXTENSION characters.
The QUERY part is used by NSI to specify technology specific labels as part of the abstract stpId.
The FRAGMENT parts must not be present in any assigned URN and is reserved for future standardization.
A STPID must not contain percentage-encoded characters ("%" HEXDIG HEXDIG). It should also be noted that the following characters (which are either allowed by the URI or URN specification) must not be used in the NETWORKLOCALPART or STPLOCALPART of a network resource URN: "%", "/", "?", "#", and "'".
DOMAIN is a fully qualified domain name (FQDN) of the URN assigning organisation in LDR format [RFC 5890]. Valid examples are example.net and example.xn--jxalpdlp. DATE is a date (either year, year+month or year+month+day). The combination of DOMAIN and DATE forms the organisation identifier, ORGID.
Examples
The following STP identifiers are considered legal based on the NURN syntax and a networkId of "urn:ogf:network:es.net:2013":
<ns2:BidirectionalPort id="urn:ogf:network:es.net:2013:manlan:aofa:1">
<ns2:PortGroup id="urn:ogf:network:es.net:2013:manlan:aofa:1:in"/>
<ns2:PortGroup id="urn:ogf:network:es.net:2013:manlan:aofa:1:out"/>
</ns2:BidirectionalPort>
The following STP identifiers are considered legal based on the NURN syntax and a networkId of "urn:ogf:network:grnet.gr:2013:topology":
<ns3:BidirectionalPort id="urn:ogf:network:grnet.gr:2013:topology:CLIENT_port">
<ns3:name>CLIENT_port</ns3:name>
<ns3:PortGroup id="urn:ogf:network:grnet.gr:2013:topology:CLIENT_port-in"/>
<ns3:PortGroup id="urn:ogf:network:grnet.gr:2013:topology:CLIENT_port-out"/>
</ns3:BidirectionalPort>
The following Caltech identifiers are considered illegal based on an networkId of "urn:ogf:network:caltech.edu:2013:":
<ns3:BidirectionalPort id="urn:ogf:network:caltech.edu:2013:stp1">
<ns3:PortGroup id="urn:ogf:network:caltech.edu:2013:stp1:in"/>
<ns3:PortGroup id="urn:ogf:network:caltech.edu:2013:stp1:out"/>
</ns3:BidirectionalPort>
The corrected set of identifiers would be:
<ns3:BidirectionalPort id="urn:ogf:network:caltech.edu::2013:stp1">
<ns3:PortGroup id="urn:ogf:network:caltech.edu:2013::stp1:in"/>
<ns3:PortGroup id="urn:ogf:network:caltech.edu:2013::stp1:out"/>
</ns3:BidirectionalPort>
The following ESnet STP identifiers are illegal based on the NURN syntax, but considered valid URN based on RFC 2141.
<ns2:BidirectionalPort id="urn:ogf:network:es.net:2013:lbl-mr2:xe-8/2/0:*">
<ns2:PortGroup id="urn:ogf:network:es.net:2013:lbl-mr2:xe-8/2/0:*:in"/>
<ns2:PortGroup id="urn:ogf:network:es.net:2013:lbl-mr2:xe-8/2/0:*:out"/>
</ns2:BidirectionalPort>
RFC 2141 Rules
2. Syntax
All URNs have the following syntax (phrases enclosed in quotes are
REQUIRED):
<URN> ::= "urn:" <NID> ":" <NSS>
where <NID> is the Namespace Identifier, and <NSS> is the Namespace
Specific String. The leading "urn:" sequence is case-insensitive.
The Namespace ID determines the _syntactic_ interpretation of the
Namespace Specific String (as discussed in [1]).
RFC 1630 [2] and RFC 1737 [3] each presents additional considerations
for URN encoding, which have implications as far as limiting syntax.
On the other hand, the requirement to support existing legacy naming
systems has the effect of broadening syntax. Thus, we discuss the
acceptable syntax for both the Namespace Identifier and the Namespace
Specific String separately.
2.1 Namespace Identifier Syntax
The following is the syntax for the Namespace Identifier. To (a) be
consistent with all potential resolution schemes and (b) not put any
undue constraints on any potential resolution scheme, the syntax for
the Namespace Identifier is:
<NID> ::= <let-num> [ 1,31<let-num-hyp> ]
<let-num-hyp> ::= <upper> | <lower> | <number> | "-"
<let-num> ::= <upper> | <lower> | <number>
<upper> ::= "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" |
"I" | "J" | "K" | "L" | "M" | "N" | "O" | "P" |
"Q" | "R" | "S" | "T" | "U" | "V" | "W" | "X" |
"Y" | "Z"
<lower> ::= "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" |
"i" | "j" | "k" | "l" | "m" | "n" | "o" | "p" |
"q" | "r" | "s" | "t" | "u" | "v" | "w" | "x" |
"y" | "z"
<number> ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
"8" | "9"
This is slightly more restrictive that what is stated in [4] (which
allows the characters "." and "+"). Further, the Namespace
Identifier is case insensitive, so that "ISBN" and "isbn" refer to
the same namespace.
To avoid confusion with the "urn:" identifier, the NID "urn" is
reserved and MUST NOT be used.
2.2 Namespace Specific String Syntax
As required by RFC 1737, there is a single canonical representation
of the NSS portion of an URN. The format of this single canonical
form follows:
<NSS> ::= 1*<URN chars>
<URN chars> ::= <trans> | "%" <hex> <hex>
<trans> ::= <upper> | <lower> | <number> | <other> | <reserved>
<hex> ::= <number> | "A" | "B" | "C" | "D" | "E" | "F" |
"a" | "b" | "c" | "d" | "e" | "f"
<other> ::= "(" | ")" | "+" | "," | "-" | "." |
":" | "=" | "@" | ";" | "$" |
"_" | "!" | "*" | "'"
Depending on the rules governing a namespace, valid identifiers in a
namespace might contain characters that are not members of the URN
character set above (<URN chars>). Such strings MUST be translated
into canonical NSS format before using them as protocol elements or
otherwise passing them on to other applications. Translation is done
by encoding each character outside the URN character set as a
sequence of one to six octets using UTF-8 encoding [5], and the
encoding of each of those octets as "%" followed by two characters
from the <hex> character set above. The two characters give the
hexadecimal representation of that octet.
2.3 Reserved characters
The remaining character set left to be discussed above is the
reserved character set, which contains various characters reserved
from normal use. The reserved character set follows, with a
discussion on the specifics of why each character is reserved.
The reserved character set is:
<reserved> ::= '%" | "/" | "?" | "#"
... can be viewed here:
https://redmine.ogf.org/dmsf_files/13363
_____________________________________________________________________
Guy Roberts PhD
Senior Transport Network Architect
DANTE
Cambridge, UK
Office +44 1223 371316
Mobile +44 7881336417
DANTE is the project co-ordinator and operator of GÉANT,
the high-speed pan-European research and education network that is
transforming the way researchers collaborate.
Learn more at: www.geant.net<http://www.geant.net/>
Like us on: www.facebook.com/GEANTnetwork<http://www.facebook.com/GEANTnetwork>
Follow us at: www.twitter.com/GEANTnews<http://www.twitter.com/GEANTnews>
DANTE is the trading name of Delivery of Advanced Network Technology to Europe Limited registered in England & Wales. Registration Number 2806796. Registered Office - 9400 Garsington Road, Oxford Business Park, Oxford OX4 2HN.
_____________________________________________________________________
The following is dial-in information for Wednesday's NSI call, time:
7:00 PDT 10:00 EDT, 15:00 BST, 16:00 CEST, 23:00 JST
1. Dial Toll-Free Number: 866-740-1260 (U.S. & Canada) 2. International participants dial: Toll Number: 303-248-0285 Or International Toll-Free Number: http://www.readytalk.com/intl 3. Enter 7-digit access code 8937606, followed by "#"
Agenda:
- Review decision and action items from Uppsala.
_____________________________________________________________________
Guy Roberts PhD
Senior Transport Network Architect
DANTE
Cambridge, UK
Office +44 1223 371316
Mobile +44 7881336417
DANTE is the project co-ordinator and operator of GÉANT,
the high-speed pan-European research and education network that is
transforming the way researchers collaborate.
Learn more at: www.geant.net<http://www.geant.net/>
Like us on: www.facebook.com/GEANTnetwork<http://www.facebook.com/GEANTnetwork>
Follow us at: www.twitter.com/GEANTnews<http://www.twitter.com/GEANTnews>
DANTE is the trading name of Delivery of Advanced Network Technology to Europe Limited registered in England & Wales. Registration Number 2806796. Registered Office - 9400 Garsington Road, Oxford Business Park, Oxford OX4 2HN.
_____________________________________________________________________