One document matched: draft-penno-sfc-appid-04.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="no" ?>
<?rfc compact="no" ?>
<?rfc subcompact="no" ?>
<rfc category="std" docName="draft-penno-sfc-appid-04" ipr="trust200902">
<front>
<title abbrev="SFC Traceroute">Using Application Identification in
Services Function Chaining Metadata</title>
<author fullname="Reinaldo Penno" initials="R." surname="Penno">
<organization abbrev="Cisco">Cisco Systems, Inc.</organization>
<address>
<postal>
<street>170 West Tasman Dr</street>
<code>CA</code>
<city>San Jose</city>
<country>USA</country>
</postal>
<email>repenno@cisco.com</email>
</address>
</author>
<author fullname="Benoit Claise" initials="B." surname="Claise">
<organization abbrev="Cisco">Cisco Systems, Inc.</organization>
<address>
<postal>
<street>De Kleetlaan 6a b1</street>
<city>1831 Diegem</city>
<country>Belgium</country>
</postal>
<email>bclaise@cisco.com</email>
</address>
</author>
<author fullname="Carlos Pignataro" initials="C.M."
surname="Pignataro">
<organization abbrev="Cisco">Cisco Systems, Inc.</organization>
<address>
<postal>
<street>7200-12 Kit Creek Road</street>
<city>Research Triangle Park</city> <region>NC</region> <code>27709-4987</code>
<country>USA</country>
</postal>
<email>cpignata@cisco.com</email>
</address>
</author>
<author fullname="Christophe Fontaine" initials="C." surname="Fontaine">
<organization>Qosmos</organization>
<address>
<postal>
<street>8 rue Bernard Buffer</street>
<city>Paris</city>
<region/>
<code/>
<country>France</country>
</postal>
<phone/>
<facsimile/>
<email>christophe.fontaine@qosmos.com</email>
<uri/>
</address>
</author>
<date />
<area>O&M</area>
<workgroup>SFC Netmod</workgroup>
<keyword>SFC</keyword>
<keyword>Chaining</keyword>
<keyword>Function</keyword>
<abstract>
<t>This document proposes to use the structured application information
in the service function chaining metadata, and specifies a YANG model
for the configuration of the application registry.</t>
</abstract>
</front>
<middle>
<section title="Open Issues">
<t><list style="numbers">
<t>Corrected all the pyang compilation errors, except:
bclaise@bclaise-VirtualBox:/media/sf_ubuntu-share/temp$ pyang --ietf
ipfix-application-information@2015-04-28.yang
ipfix-application-information@2015-04-28.yang:1: warning: IETF rule
(RFC 6087: 4.9): too many top-level data nodes: class-id-dictionary,
application-id-dictionary</t>
<t>Any reasons why those attributes are not modeled as boolean:
P2P-technology, tunnel-technology, encrypted?</t>
<t>The connection between the YANG Model in this document and <xref
target="I-D.penno-sfc-yang"/> must be explained</t>
</list></t>
</section>
<section title="Introduction">
<t>The "Cisco Systems Export of Application Information in IP Flow
Information Export (IPFIX) <xref target="RFC6759"/> specifies an
extension to the IPFIX information model <xref target="RFC7012"/> to
export application information. This IPFIX information element is
registered as the identifier 95 in the IPFIX registry <xref
target="IANA-IPFIX"/>. Applications could be identified at different OSI
layers, from layer 2 to layer 7. For example, the Link Layer
Distribution Protocol <xref target="LLDP"/> can be identified in layer
2, ICMP can be identified in layer 3 [IANA-PROTO], HTTP can be
identified in layer 4 [IANA-PORTS], and Webex can be identified in layer
7. However, the layer 7 application registry values are out of scope of
<xref target="RFC6759"/></t>
<t>This document purposes the use of IPFIX <xref target="RFC7011"/>
application information to be carried in the NSH context metadata of a
MDType-1 packet. The information in the metadata will be the result of
packet processing done by a firewall, Intrusion Protection Service, Deep
Packet Inspection, amongst others. These are defined as providers of
application information.</t>
<t>The consumers of application information are Service Functions that
apply policy provides application statistics based on the metadata
contained in the packet.</t>
<section title="Terminology">
<!--
<t>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 <xref
target="RFC2119">RFC 2119</xref>.</t>
-->
<t>The reader should be familiar with the terms contained in the following documents:
<list style="symbols">
<t>Section 1.4 of the "Service Function Chaining (SFC) Architecture" <xref
target="RFC7665"/></t>
<t>Section 2.1 of the "Network Service Header" <xref
target="I-D.ietf-sfc-nsh"/></t>
<t> The "Generic Protocol Extension for VXLAN" <xref target="I-D.ietf-nvo3-vxlan-gpe"/></t>
<t>Sections 3 and 3.1 of "Cisco Systems Export of Application Information in IP Flow Information Export (IPFIX)" <xref target="RFC6759"/></t>
</list></t>
</section>
<section anchor="sec.tree-symbols" title="Tree Diagrams" toc="default">
<t>A simplified graphical representation of the data model is used in
this document. The meaning of the symbols in these diagrams is as
follows:</t>
<t>The meaning of the symbols in these diagrams is as follows: <list
style="symbols">
<t>Brackets "[" and "]" enclose list keys.</t>
<t>Curly braces "{" and "}" contain names of optional features
that make the corresponding node conditional.</t>
<t>Abbreviations before data node names: "rw" means configuration
(read-write), "ro" state data (read-only), "-x" RPC operations,
and "-n" notifications.</t>
<t>Symbols after data node names: "?" means an optional node, "!"
a container with presence, and "*" denotes a "list" or
"leaf-list".</t>
<t>Parentheses enclose choice and case nodes, and case nodes are
also marked with a colon (":").</t>
<t>Ellipsis ("...") stands for contents of subtrees that are not
shown.</t>
</list></t>
</section>
</section>
<section title="Application Information Structure">
<t>The application information data structure can be seen
in <xref target="fig-app-id" />. It was
extracted and adapted from <xref target="RFC6759"/>.</t>
<t><figure anchor="fig-app-id"
title="Application Identification Data Format">
<artwork align="center"><![CDATA[
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Class. Eng. ID| Zero-valued upper-bits ... Selector ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure></t>
<t>
<xref target="table-class" /> displays the currently allocated
Classification Engine IDs, including their name and value,
as well as their corresponding Selector ID default length.
</t>
<texttable anchor="table-class" title="Existing Classification Engine IDs" style="all">
<ttcol align='center'>Classification Engine ID Value</ttcol>
<ttcol align='center'>Classification Engine ID Name</ttcol>
<ttcol align='center'>Selector ID default length (in octets)</ttcol>
<c>1</c> <c>IANA-L3</c> <c>1</c>
<c>2</c> <c>PANA-L3</c> <c>1</c>
<c>3</c> <c>IANA-L4</c> <c>2</c>
<c>4</c> <c>PANA-L4</c> <c>2</c>
<c>6</c> <c>USER-Defined</c> <c>3</c>
<c>12</c> <c>PANA-L2</c> <c>5</c>
<c>13</c> <c>PANA-L7</c> <c>3</c>
<c>18</c> <c>ETHERTYPE</c> <c>2</c>
<c>19</c> <c>LLC</c> <c>1</c>
<c>20</c> <c>PANA-L7-PEN</c> <c>3 (*)</c>
</texttable>
<t>
Where:
<list style="empty">
<t>"PANA = Proprietary Assigned Number Authority". In other words, an
enterprise specific version of IANA for internal IDs.</t>
<t>PEN = Private Enterprise Number</t>
<t> (*) There are an extra 4 bytes for the PEN. However, the PEN is not
considered part of the Selector ID.</t>
</list>
</t>
</section>
<section title="Application Information Yang Model">
<t/>
<section title="Module Structure">
<t/>
<t><figure>
<artwork align="left" alt="" height="" name="" type="" width=""
xml:space="preserve"><![CDATA[
module: ietf-ipfix-application-information
+--rw class-id-dictionary
| +--rw class-id* [name]
| +--rw id? uint8
| +--rw name string
| +--rw description? string
+--rw application-id-dictionary
+--rw application-id* [application-name]
+--rw class-id -> /class-id-dictionary/class-id/id
+--rw pen uint32
+--rw selector-id uint32
+--rw application-name string
+--rw application-description? string
+--rw application-category-name? string
+--rw application-sub-category-name? string
+--rw application-group-name? string
]]></artwork>
</figure></t>
</section>
<section title="Application Information Configuration Module">
<t/>
<t><figure>
<artwork align="left" alt="" height="" name="" type="" width=""
xml:space="preserve"><![CDATA[
<CODE BEGINS> file "ietf-ipfix-application-information@2015-04-28.yang"
module ietf-ipfix-application-information {
yang-version 1;
namespace "urn:ietf:params:xml:ns:yang:"
+ "ietf-ipfix-application-information";
prefix ipfix-app-info;
organization
"IETF SFC (Service Function Chaining) Working Group";
contact
"Editor: Christophe Fontaine
christophe.fontaine@qosmos.com
Editor: Reinaldo Penno
rapenno@gmail.com";
description
"This module contains a collection of YANG definitions for
the configuration of application ids.
Copyright (c) 2015 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).";
revision 2015-04-28 {
description "Initial revision";
reference
"draft-penno-sfc-appid : Using Application Identification in
Services Function Chaining Metadata";
}
/*
* Typedefs
*/
typedef application-id-ref {
type leafref {
path "/ipfix-app-info:application-id-dictionary/"
+ "ipfix-app-info:application-id/ipfix-app-info"
+ ":application-name";
}
description "This type is used by data models that need
to reference an application-id";
}
typedef classification-engine-id {
type enumeration {
enum "IANA-L3" {
value 1;
description
"IANA-L3";
}
enum "PANA-L3" {
value 2;
description
"PANA-L3";
}
enum "IANA-L4" {
value 3;
description
"IANA-L4";
}
enum "PANA-L4" {
value 4;
description
"PANA-L4";
}
enum "USER-Defined" {
value 6;
description
"USER-Defined";
}
enum "PANA-L2" {
value 12;
description
"PANA-L2";
}
enum "PANA-L7" {
value 13;
description
"PANA-L7";
}
enum "ETHERTYPE" {
value 18;
description
"ETHERTYPE";
}
enum "LLC" {
value 19;
description
"LLC";
}
enum "PANA-L7-PEN" {
value 20;
description
"PANA-L7-PEN";
}
}
description
"The definitions for Classification engine ID names.";
reference
"RFC 6759: Cisco Systems Export of Application Information
in IP Flow Information Export (IPFIX)";
}
/*
* Configuration data nodes
*/
container class-id-dictionary {
description "Dictionary for classification ids";
list class-id {
key "name";
unique "id";
leaf id {
type uint8;
description "Classification identifier";
}
leaf name {
type string;
description "classification Engine name";
}
leaf description {
type string;
description "Description of the class-id";
}
description "A list of all classification ids";
}
}
container application-id-dictionary {
description "Dictionary for application ids";
list application-id {
key "application-name";
unique "class-id pen selector-id";
leaf class-id {
type leafref {
path "/ipfix-app-info:class-id-dictionary/"
+ "ipfix-app-info:class-id/ipfix-app-info:id";
}
mandatory true;
description "Application Name";
}
leaf pen {
type uint32;
mandatory true;
description "Private Entreprise Number, only relevant
when used with appropriate class-id.
Set to 0 when not used.";
}
leaf selector-id {
type uint32 {
range "0..16777216";
}
mandatory true;
description "Selector identifier";
}
leaf application-name {
type string;
mandatory true;
description "The name of the application";
}
leaf application-description {
type string;
description "The description of the application";
}
leaf application-category-name {
type string;
description "An attribute that provides a first-
level categorization for each
Application ID. Examples include
browsing, email, file-sharing,
gaming, instant messaging, voice-
and-video, etc.
The category attribute is encoded by
the application-category-name
Information Element";
}
leaf application-sub-category-name {
type string;
description "An attribute that provides a second-
level categorization for each
Application ID. Examples include
backup-systems, client-server,
database, routing-protocol, etc.
The sub-category attribute is
encoded by the
application-sub-category-name
Information Element";
}
leaf application-group-name {
type string;
description "An attribute that groups multiple
Application IDs that belong to the
same networking application. For
example, the ftp-group contains
ftp-data (port 20), ftp (port 20),
ni-ftp (port 47), sftp (port 115),
bftp (port 152), ftp-agent(port
574), ftps-data (port 989). The
application-group attribute is
encoded by the application-group-name
Information Element";
}
description "A list of all applications";
}
}
}
<CODE ENDS>]]></artwork>
</figure></t>
</section>
</section>
<section title="Service Function Chaining Metadata">
<t>When a Deep Packet Inspection (DPI), Firewall or any other Service
Function (SF) that can identify applications want to convey this
knowledge to other SFs it encoded in the format discussed earlier and
add to the context metadata. The Example in <xref target="ex" /> shows the encoding of the SNMP
application.</t>
<t><figure anchor="ex"
title="Example of Metadata Including the SNMP Application Identification">
<artwork align="center"
><![CDATA[
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3 | 0 | 161 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Network Shared Context |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Service Platform Context |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Service Shared Context |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure></t>
<t>In this example, the Classification Engine IDs of 3 indicates "IANA-L4", and 161 is the
well-known port number for SNMP (with its upper bits zero-valued).</t>
<t>Other Services Functions that need application information associated
with a packet or flow can look at this metadata and easily find out its
value.</t>
</section>
<section title="Relationship to existing YANG Modules">
<t><xref target="RFC6728"/> specifies a data model for the IP Flow
Information Export (IPFIX) and Packet Sampling (PSAMP) protocols. It is
for configuring and monitoring Selection Processes, Caches, Exporting
Processes, and Collecting Processes of IPFIX- and PSAMP-compliant
Monitoring Devices using the Network Configuration Protocol (NETCONF).
The data model is defined using UML (Unified Modeling Language) class
diagrams and formally specified using YANG.</t>
<t>The YANG model is this document allows the configuration of the
application id IPFIX information elements (ieId), which in turn, may be
used in a template definition (TemplateId).</t>
<t><xref target="I-D.penno-sfc-yang"/> To be done</t>
</section>
<section title="Expected Usage">
<t>Devices or controllers will download the <xref target="ETHERTYPE"/>,
<xref target="IANA-PROTO"/> and <xref target="IANA-PORTS"/> from the
appropriate URIs. However, the configuration of the applications is
required for applications not registered in an industry-wide agreed-upon
registry. In this case, the Proprietary Assigned Number Authority (PANA)
registries (PANA-L2, PANA-L3, PANA-L4, PANA-L7), or the User-Defined
registry, must be used to identify new application.</t>
<t>Furthermore, the following attributes are statically assigned per
Application ID, and needs to be configured: category, sub-category,
application-group.</t>
</section>
<section title="IANA Considerations">
<t>TBD</t>
</section>
<section title="Security Considerations">
<t>
TODO: Update with privacy and security considerations, as requested in Prague IETF93.
</t>
</section>
<section title="Acknowledgements">
<t/>
</section>
<section title="Changes">
<t/>
</section>
</middle>
<back>
<references title="Informative References">
<reference anchor="LLDP" target="LLDP">
<front>
<title>Std 802.1AB-2005, "Standard for Local and metropolitan area
networks - Station and Media Access Control Connectivity Discovery",
IEEE Std 802.1AB-2005</title>
<author>
<organization>IEEE</organization>
</author>
<date year="2005"/>
</front>
</reference>
<reference anchor="IANA-IPFIX"
target="http://www.iana.org/assignments/ipfix/">
<front>
<title>"IP Flow Information Export (IPFIX) Entities"</title>
<author>
<organization>IANA</organization>
</author>
<date year="2015"/>
</front>
</reference>
<reference anchor="ETHERTYPE"
target="http://standards.ieee.org/develop/regauth/thertype/eth.txt">
<front>
<title>ETHERTYPE</title>
<author>
<organization/>
</author>
<date year="1984"/>
</front>
</reference>
<reference anchor="IANA-PORTS"
target="http://www.iana.org/assignments/port-numbers">
<front>
<title>IANA-L4</title>
<author>
<organization>IANA</organization>
</author>
<date year="1984"/>
</front>
</reference>
<reference anchor="IANA-PROTO"
target="http://www.iana.org/assignments/protocol-numbers">
<front>
<title>IANA-L3</title>
<author>
<organization>IANA</organization>
</author>
<date year="1984"/>
</front>
</reference>
<?rfc include="reference.RFC.6728"?>
<?rfc include="reference.RFC.6759"?>
<?rfc include="reference.RFC.7011"?>
<?rfc include="reference.RFC.7012"?>
<?rfc include="reference.I-D.penno-sfc-yang"?>
<?rfc include="reference.I-D.ietf-sfc-nsh"?>
<?rfc include="reference.RFC.7665"?>
<?rfc include="reference.I-D.ietf-nvo3-vxlan-gpe"?>
</references>
<section title="Application Information Examples">
<t>Below as some examples from <xref target="RFC6759"/></t>
<t><figure>
<preamble>(preamble)</preamble>
<artwork align="left" alt="" height="" name="" type="" width=""
xml:space="preserve"><![CDATA[
6.4. Example 4: Standardized IANA Layer 4 Port
From the list of Classification Engine IDs in Table 1, the IANA layer
4 Classification Engine ID (IANA-L4) is 3. From Table 2 the Selector
ID length is 2 for the IANA-L4 Engine ID.
From the list of IANA layer 4 ports (see [IANA-PORTS]), SNMP has the
value 161:
Keyword Decimal Description
snmp 161/tcp SNMP
snmp 161/udp SNMP
So, in the case of the standardized IANA layer 4 SNMP port, the
Classification Engine ID is 3, and the Selector ID has the value of
161.
Therefore, the Application ID is encoded as:
0 1
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 3 | 161 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Example 6: Layer 7 Application with Private Enterprise Number
In this example, the layer 7 Webex traffic from Example 5 above have
been classified by enterprise X. The exported records have been
received by enterprise Y's mediation device, which wishes to forward
them to a top-level Collector.
In order for the top-level Collector to know that the records were
classified by enterprise X, the enterprise Y mediation device must
report the records using the PANA-L7-PEN Classification Engine ID
with enterprise X's Private Enterprise Number.
The PANA-L7-PEN Classification Engine ID is 20, and enterprise X's
Selector ID for Webex traffic has the value of 10000. From Table 2
the Selector ID length is 3 for the PANA-L7-PEN Engine ID.
Therefore, the Application ID is encoded as:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| 20 | enterprise ID = X ...|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|...Ent.ID.contd| 10000 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
The format '20..X..10000' is used for simplicity in the examples
below.
]]></artwork>
<postamble>(postamble)</postamble>
</figure></t>
</section>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 04:36:47 |