<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-huang-dime-pcn-collection-02" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3978, noModification3978, noDerivatives3978
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

	 <front>
		<!-- The abbreviated title is used in the page header - it is only necessary if the full title is longer than 39 characters -->

		<title abbrev="PCN Data Collection">The Diameter Precongestion Notification (PCN) Data Collection Application</title>

		<!-- add 'role="editor"' below for the editors if appropriate -->

		<!-- Another author who claims to be an editor -->

		<author fullname="Fortune Huang" initials="F.H." surname="Huang">
			<organization>Huawei Technologies</organization>
			<address>
				<postal>
					<street>Section F</street>
					<street>Huawei Industrial Base</street>
					<city>Bantian Longgang</city>
					<region>Shenzhen</region>
					<code>518129</code>
					<country>P.R. China</country>
				</postal>
				<email>fqhuang@huawei.com</email>
			</address>
		</author>
		
		<author fullname="Tom Taylor" initials="T.T." surname="Taylor">
		      <organization>Huawei Technologies</organization>
		      <address>
		        <postal>
		          <street>1852 Lorraine Ave</street>
		          <city>Ottawa</city>
		          <region>Ontario</region>
		          <country>Canada</country>
		          <code>K1H 6Z8</code>
		        </postal>
		        <phone>+1 613 680 2675</phone>
		        <email>tom.taylor@rogers.com</email>
		      </address>
		</author>
    
		<author role="editor" fullname="Glen Zorn" initials="G.Z." surname="Zorn">
			<organization>Network Zen</organization>
			<address>
				<postal>
					<street>1310 East Thomas Street</street>
					<street>#306</street>
					<city>Seattle</city>
					<region>Washington</region>
					<code>98102</code>
					<country>USA</country>
				</postal>
				<phone>+1 (206) 377-9035</phone>
				<email>gwz@net-zen.net</email>
			</address>
		</author>
		
		<author fullname="Hannes Tschofenig" initials="H.T." surname="Tschofenig">
		      <organization>Nokia Siemens Networks</organization>
		      <address>
		        <postal>
		          <street>Linnoitustie 6</street>
		          <city>Espoo</city>
		          <code>02600</code>
		          <country>Finland</country>
		        </postal>
		        <phone>+358 (50) 4871445</phone>
		        <email>Hannes.Tschofenig@nsn.com</email>
		        <uri>http://www.tschofenig.priv.at</uri>
		      </address>
		</author>

    <date year="2009" />

    <!-- If the month and year are both specified and are the current ones, xml2rfc will fill 
         in the current day for you. If only the current year is specified, xml2rfc will fill 
	 in the current day and month for you. If the year is not the current one, it is 
	 necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the 
	 purpose of calculating the expiry date).  With drafts it is normally sufficient to 
	 specify just the year. -->

    <!-- Meta-data Declarations -->

    <area>OAM</area>


    <!-- WG name at the upperleft corner of the doc,
         IETF is fine for individual submissions.  
	 If this element is not present, the default is "Network Working Group",
         which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>precongestion</keyword>
	<keyword>Diameter</keyword>
	<keyword>AAA</keyword>
	<keyword>PCN</keyword>
    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

	<abstract>
		<t>
			Pre-Congestion notification (PCN) is a technique for maintaining QoS for inelastic flows in a DIFFServ domain.
			The PCN architecture requires that egress nodes send reports of congestion-related events reliably to a policy decision point. 
			The policy decision point might be located in different places of the network.
			In one architectural variant the policy decision point is a central node rather than co-located with the ingress or the egress nodes of the network.
			In this case it needs to have access to certain information from the edge nodes.
			This memo defines a Diameter application to support the ingress and the egress node to interact with the Diameter server acting as a policy decision point.
		</t>
	</abstract>
</front>

<middle>
	<section title="Introduction">
		<t>
			The objective of Pre-Congestion Notification (PCN) is to protect the
			quality of service (QoS) of inelastic flows within a Diffserv domain <xref target="RFC2475"/> in
			a simple, scalable and robust fashion. 
			Admission control allows to decide whether to admit or reject a new flow request,
			and (in abnormal circumstances, such as router failure) to provide flow termination of already admitted flows.
			These two mechanisms together aim to protect the QoS properties of previously admitted flows.
			To achieve this, the overall rate of the PCN traffic is metered on every link in the PCN domain,
			and PCN packets are appropriately marked when certain configured rates are exceeded.
			These configured rates are below the rate of the link thus providing notification before any congestion occurs ("pre-congestion notification").
			The level of marking allows decisions to be made about whether to admit or terminate.
			A more detailed description of the architecture can be found in <xref target="RFC5559"/>.
		</t>

		<t>
			Marking statistics are gathered by egress nodes on a per-ingress-egress aggregate basis. 
			They are processed to determine whether new flows can be admitted to the aggregate over
			the next measurement interval and whether some flows should be terminated to protect QoS for the remainder (flow termination is expected to be relatively infrequent, typically a result of network failure).
			The admission state is based on a congestion level estimate (CLE), 
			which the egress node reports to a decision point whenever the CLE value passes a set threshold (upward or downward). 
			The decision to terminate flows is made on the basis of a different criterion. 
			When the egress node detects that this criterion has been satisfied, it sends a report to the decision node providing measurement
			values that are used to determine the total volume of traffic that must be terminated. If equal cost multipath (ECMP) routing is in use, it also sends a list of individual flows that were marked at the termination level.
		</t>
	</section> <!-- Intro -->
			
	<section title="Requirements Language">
		<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>
	</section>
	
	<section anchor="procs" title="Procedures">
		<t>
			The following subsections discuss the processing requirements placed upon the various participating Diameter nodes by the PCN Data Collection application. 
		</t>
		<section anchor="overall_proc" title="Overall Procedures">
			<t>
			The egress node measures the traffic from a particular ingress node, and calculates the congestion level estimate(CLE) at the ingress-egress aggregate level. 
			The egress node may compare the CLE calculated at the current interval with the CLE calculated at the last interval, 
			if the difference of the two CLEs exceeds a preset range, the egress node sends the feedback information, including at least the current CLE, to the PDP. 
			After receiving the feedback information, the PDP saves the it for admission control and flow termination.
			After receiving a service flow request, the PDP can determine whether to admit the request or not based on the feedback information. 
			Besides, the PDP also decides whether some of the admitted flows need to be terminated. The PDP needs to signal to the ingress node the decision about admission or termination.
			</t>
		</section><!-- overall_proc -->
		<section anchor="egress_proc" title="Egress Node behavior">
			<t>
				For each ingress-egress aggregate flow it serves, the egress node meters received traffic for PCN markings, 
				recomputes its smoothed congestion level estimate, 
				and determines whether there is excess flow in successive measurement periods in accordance with the PCN edge behavior specification                         
                           (e.g. <xref target="I-D.ietf-pcn-cl-edge-behaviour">ietf-pcn-cl-edge-behaviour</xref>, 
                           <xref target="I-D.ietf-pcn-sm-edge-behaviour">ietf-pcn-sm-edge-behaviour</xref>) deployed in the domain. 
				When a change in the smoothed congestion level estimate causes it to cross a reporting threshold, 
				either upward or downward, the egress node MUST send a Congestion-Report-Request message to the PDP. 
				Similarly, the egress node MUST send a Congestion-Report-Request message to the PDP when excess flow is detected for an ingress-egress aggregate served by that node. 
				<vspace blankLines="1"/>
				The Event-Timestamp AVP MUST be present, 
				and MUST provide the ending time of the measurement period from which the data triggering the generation of the message were derived. 
				At least one instance either of the PCN-Congestion-Info or the PCN-Excess-Flow-Info AVP MUST be present. 
				Both AVPs MAY be present for the same ingress-egress aggregate,
				if both apply according to the edge behavior specification. 
				Multiple instances of either AVP MAY be present, but each instance MUST report on a different ingress-egress aggregate.
			</t>
		</section><!-- egress_proc -->
		<section anchor="PDP_proc" title="PDP behavior">
			<t>
				If the PDP receives an Congestion-Report-Request (CRR) identified as belonging to the PCN Data Collection application,
				it MUST acknowledge the message with an Congestion-Report-Answer (CRA). 
				The PDP usage of the information provided by PCN-Congestion-Info and PCN-Excess-Flow-Info AVPs is described in the applicable edge behavior specification.
                         	<vspace blankLines="1"/>
				When the PDP receives an CRR containing a PCN-Excess-Flow-Info AVP, it MAY send a
                                Measurement-Poll-Request (MPR) to the ingress node for the aggregate concerned.
                                The PDP will make the decision about sending the MPR depending on the content of the
                                received report. In case the report indicates that a critical threshold has been reached                    
                                then it has to obtain information about which and how many flows to terminate. 
				The I-E-Aggregate-Id MUST identify the ingress-egress aggregate flow for which information is being requested.
				The Event-Timestamp MUST be present if it was present in the CRR that contained the PCN-Excess-Flow-Info AVP, and MUST have the same value.
				<vspace blankLines="1"/>
				If the PDP receives a successful Measurement-Poll-Answer message,
				it uses the information contained in the PCN-Sent-Info AVP as described in the applicable edge behavior specification.
			</t>
		</section><!-- PDP_proc -->
		<section anchor="ingress_proc" title="Ingress Node behavior">
			<t>
				When an ingress node receives an MPR, it MUST generate a Measurement-Poll-Answer message containing an instance of the PCN-Sent-Info AVP.
				The I-E-Aggregate-Id within the PCN-Sent-Info AVP MUST be the same as received in the MPR, and the I-E-Aggregate-Sent-Rate MUST be a rate measured for that aggregate.
				If Event-Timestamp is present in the MPR,
				the measurement upon which I-E-Aggregate-Sent-Rate is based SHOULD be that for the latest measurement period ending before or at the time given by Event-Timestamp, 
				if available.
				In any case, Event-Timestamp MUST be present in the MPA, and if it is, MUST give the end-time of the measurement period upon which I-E-Aggregate-Sent-Rate is based. 
			</t>
		</section><!-- ingress_proc -->
	</section><!-- procs -->
	
	
	<section anchor="dime_app" title="Diameter PCN Data Collection Application">
		<section anchor="app_sp" title="Advertising Application Support">
			<t>
				Clients, servers, and proxies supporting the PCN Data Collection application MUST advertise
				support by including the value &lt;AID&gt; in the Auth-Application-Id of Congestion-Report-Request (CRR), Congestion-Report-Answer (CRA), Measurement-Poll-Request (MPR), 
				and Measurement-Poll-Answer (MPA) messages.
			</t>
		</section><!-- app_sp -->
		<section title="Session Management">
			<t>
				Diameter sessions are implicitly terminated. An implicitly terminated session is one for which the server does not maintain session state information. 
				The client does not need to send any re-authorization or session termination requests to the server.
				The Diameter base protocol includes the Auth-Session-State AVP as the mechanism for the implementation of implicitly terminated sessions.
				The client (server) SHALL include in its requests (responses) the Auth-Session-State AVP set to the value NO_STATE_MAINTAINED (1), as described in <xref target="RFC3588">RFC 3588</xref>. 
				As a consequence, the server does not maintain any state information about this session and the client does not need to send any session termination request. 
				Neither the Authorization-Lifetime AVP nor the Session-Timeout AVP SHALL be present in requests or responses.
			</t>
		</section>
		<section anchor="commands" title="Commands">
			<t>
				The PCN Data Collection application defines four new commands, Congestion-Report-Request(CRR), Congestion-Report-Answer(CRA), Measurement-Poll-Request (MPR) and Measurement-Poll-Answer (MPA).
			</t>
			<section anchor="crr_cmd" title="Congestion-Report-Request (CRR) Command">
				<t>
					The egress node sends the Congestion-Report-Request (CRR) command, indicated by the Command-Code
					field set to &lt;CC1&gt; and the Command Flags' 'R' bit set, to report when the congestion level estimate (CLE) moves above or drops below the pre-congestion reporting threshold,
					or when an excess flow condition is detected. Multiple reports MAY be included in the same message, as described in <xref target="egress_proc"/>.
					<vspace blankLines="1"/>
					Message format:
<figure>
<artwork>
  &lt;CRR&gt; ::= &lt; Diameter Header: CC1, REQ, PXY &gt;
            &lt; Session-Id &gt;
            { Auth-Application-Id }
            { Auth-Session-State }
            { Origin-Host }
            { Origin-Realm }
            { Destination-Realm }
            [ Destination-Host ]
            [ Event-Timestamp ]
          * [ PCN-Congestion-Info ]
          * [ PCN-Excess-Flow-Info ]
          * [ Proxy-Info ]
          * [ Route-Record ]
          * [ AVP ]
</artwork>
</figure>
					At least one instance of the PCN-Congestion-Info or the PCN-Excess-Flow-Info AVP MUST be present;
					the value of the Session-Id AVP MUST be unique and SHOULD be set according to the recommendations in Section 8.8 of <xref target="RFC3588">RFC 3588</xref>.
				</t>
			</section><!-- crr_cmd -->
			<section anchor="cra_cmd" title="Congestion-Report-Answer (CRA) Command">
				<t>
					The PDP uses the Congestion-Report-Answer (CRA) command, indicated by the Command-Code
					field set to &lt;CC2&gt; and the Command Flags' 'R' bit cleared, to
					acknowledge an Congestion-Report-Request command sent by an egress node. The Congestion-Report-Answer
					command contains the same Session-Id as the corresponding request. 
					<vspace blankLines="1"/>
					Message format:
<figure>
<artwork>
  &lt;CRA&gt; ::= &lt; Diameter Header: CC2, PXY &gt;
            &lt; Session-Id &gt;
            { Auth-Application-Id }
            { Auth-Session-State }
            { Result-Code }
            { Origin-Host }
            { Origin-Realm }
            [ Error-Message ]
            [ Error-Reporting-Host ]
            [ Failed-AVP ]
            [ Event-Timestamp ]
          * [ Proxy-Info ]
          * [ AVP ]
</artwork>
</figure>
				</t>
			</section><!-- cra_cmd -->
			<section anchor="mpr_cmd" title="Measurement-Poll-Request (MPR) Command">
				<t>
					The PDP sends the Measurement-Poll-Request (MPR) command, indicated by the Command-Code
					field set to &lt;CC3&gt; and the Command Flags' 'R' bit set, to request that an ingress node report the rate at which 
					PCN-marked traffic has been forwarded to a given ingress-egress aggregate, 
					measured over a given measurement period as described in <xref target="ingress_proc"/>. 
					The value of the Session-Id AVP MUST be unique and SHOULD be set according to the recommendations in Section 8.8 of <xref target="RFC3588">RFC 3588</xref>.
					<vspace blankLines="1"/>
					Message format:
<figure>
<artwork>
  &lt;MPR&gt; ::= &lt; Diameter Header: CC3, REQ, PXY &gt;
            &lt; Session-Id &gt;
            { Auth-Application-Id }
            { Auth-Session-State }
            { Origin-Host }
            { Origin-Realm }
            { Destination-Realm }
            { I-E-Aggregate-Id }
            [ Destination-Host ]
            [ Event-Timestamp ]
          * [ Proxy-Info ]
          * [ Route-Record ]
          * [ AVP ]
</artwork>
</figure>
				</t>
			</section><!-- mpr_cmd -->
			<section anchor="mpa_cmd" title="Measurement-Poll-Answer (MPA) Command">
				<t>
					The ingress node sends the Measurement-Poll-Answer (MPA) command, indicated by the Command-Code
					field set to &lt;CC4&gt; and the Command Flags' 'R' bit cleared, in response to an MPR sent by the PDP.
					<vspace blankLines="1"/>
					Message format:
<figure>
<artwork>
  &lt;MPA&gt; ::= &lt; Diameter Header: CC4, PXY &gt;
            &lt; Session-Id &gt;
            { Auth-Application-Id }
            { Auth-Session-State }
            { Result-Code }
            { Origin-Host }
            { Origin-Realm }
            { PCN-Sent-Info }
            [ Error-Message ]
            [ Error-Reporting-Host ]
            [ Failed-AVP ]
            [ Event-Timestamp ]
          * [ Proxy-Info ]
          * [ AVP ]
</artwork>
</figure>
				</t>
			</section><!-- mpa_cmd -->
		</section><!-- commands -->
		<section anchor="avps" title="Attribute Value Pairs (AVPs)">
			<t>
				This section describes the AVPs specific to the PCN Data Collection application. 
				The 'M' bit MUST be set and the 'V' bit MUST NOT be set for all of these AVPs when used in the PCN Data Collection application.
			</t>
			<section anchor="IEAggId_AVP" title="I-E-Aggregate-Id AVP">
				<t>
					The I-E-Aggregate-Id AVP (AVP code &lt;AVP1&gt;) is of type Grouped and identifies a specific aggregate.
					<vspace blankLines="1"/>
					The I-E-Aggregate-Id AVP has the following format:
<figure>
<artwork>
  I-E-Aggregate-Id ::= &lt; AVP Header: AVP1 &gt;
                                [ PCN-Ingress-Node-Address ]
                                [ PCN-Egress-Node-Address ]
                                [ VLAN-ID-Range ]
                                * [ AVP ]
</artwork>
</figure>				
				</t>
			</section><!-- IEAggId_AVP -->
			<section anchor="ingressAddr_AVP" title="PCN-Ingress-Node-Address AVP">
				<t>
					The PCN-Ingress-Node-Address AVP (AVP code &lt;AVP2&gt;) is of type Grouped and
					contains the address of a PCN-Ingress-Node.
					<vspace blankLines="1"/>
					The PCN-Ingress-Node-Address AVP has the following format:
<figure>
<artwork>
  PCN-Ingress-Node-Address ::= &lt; AVP Header: AVP2 &gt;
                                [ Framed-IP-Address ]
                                [ Framed-IPv6-Prefix ]
</artwork>
</figure>				
				</t>
			</section><!-- ingressAddr_AVP -->
			<section anchor="egressAddr_AVP" title="PCN-Egress-Node-Address AVP">
				<t>
					The PCN-Egress-Node-Address AVP (AVP code &lt;AVP3&gt;) is of type Grouped and
					contains the address of a PCN-Egress-Node.
					<vspace blankLines="1"/>
					The PCN-Egress-Node-Address AVP has the following format:
<figure>
<artwork>
  PCN-Egress-Node-Address ::= &lt; AVP Header: AVP3 &gt;
                                [ Framed-IP-Address ]
                                [ Framed-IPv6-Prefix ]
</artwork>
</figure>				
                               	</t>
			</section><!-- egressAddr_AVP -->
			<section anchor="ipAddr_AVP" title="Framed-IP-Address AVP">
				<t>
					The Framed-IP-Address AVP is defined in the NASREQ application
					(<xref target="RFC4005">RFC 4005</xref>).
				</t>
			</section><!-- ipAddr_AVP -->
			<section anchor="ipv6Addr_AVP" title="Framed-IPv6-prefix AVP">
				<t>
					The Framed-IPv6-prefix AVP is defined in the NASREQ application
					(<xref target="RFC4005">RFC 4005</xref>).
				</t>
			</section><!-- ipv6Addr_AVP -->
                     <section anchor="vlanid_AVP" title="VLAN-ID-Range AVP">
				<t>
					The VLAN-ID-Range AVP, defined in <xref target="I-D.ietf-dime-qos-attributes">ietf-dime-qos-attributes</xref>, is of type Grouped and specifies the VLAN range to match.
				</t>
			</section><!-- ipv6Addr_AVP -->
			
			<section anchor="coninfo_AVP" title="PCN-Congestion-Info AVP">
				<t>
					The PCN-Congestion-Info AVP (AVP code &lt;AVP4&gt;) is of type Grouped.
					It identifies an ingress-egress aggregate, reports the current value of the congestion level estimate (CLE), 
					and indicates whether the report is generated because the CLE has risen above the reporting threshold 
					or because it has fallen below the reporting threshold.
					<vspace blankLines="1"/>
					The PCN-Congestion-Info AVP has the following format:
<figure>
<artwork>
  PCN-Congestion-Info ::= &lt; AVP Header: AVP4 &gt;
                                { I-E-Aggregate-Id }
                                { CLE-Value }
                                { CLE-Report-Reason }
                              * [ AVP ]
</artwork>
</figure>
                                </t>
		        </section><!-- coninfo_AVP -->
		        <section anchor="CLEvalue_AVP" title="CLE-Value AVP">
		                <t>
					The CLE-Value AVP (AVP code &lt;AVP5&gt;) is of type Float32. 
					It gives the current (smoothed) congestion level estimate as a fraction between 0.0 and 1.0. 
				</t>
			</section><!-- CLEvalue_AVP -->
			<section anchor="rptreason_AVP" title="CLE-Report-Reason AVP">
				<t>
					The CLE-Report-Reason AVP (AVP code &lt;AVP6&gt;) is of type Enumerated. The following values are defined in this document:
					<list style="hanging">
						<t hangText="PRECONGESTION_ONSET (0)">
							<vspace blankLines="0"/>
							The current CLE (reported in CLE-Value) is above the configured onset reporting threshold. The CLE derived in the previous measurement period was below that threshold.
						</t>		
						<t hangText="PRECONGESTION_END (1)">
							The current CLE (reported in CLE-Value) is below the configured end-of-precongestion reporting threshold, which may have the same value as the onset reporting threshold. 
							The CLE derived in the previous measurement period was above that threshold.
						</t>
					</list>
				</t>
			</section><!-- rptreason_AVP -->
			<section anchor="excess_AVP" title="PCN-Excess-Flow-Info AVP">
				<t>
					The PCN-Excess-Flow-Info AVP (AVP code &lt;AVP7&gt;) is of type Grouped.
					It identifies an ingress-egress aggregate, reports a rate of excess traffic for that aggregate, and MAY identify a number of individual flows 
					within that aggregate that experienced the markings that led to the generation of the PCN-Excess-Flow-Info AVP.
					Precise details of the conditions under which this AVP is generated and how the indivdual flows 
					are selected are given in the specification for the PCN edge behaviour deployed in the domain.
					<vspace blankLines="1"/>
					The PCN-Excess-Flow-Info AVP has the following format:
<figure>
<artwork>
  PCN-Excess-Flow-Info ::= &lt; AVP Header: AVP7 &gt;
                             { I-E-Aggregate-Id }
                             { I-E-Aggregate-Excess-Rate }
                           * [ Classifier ]
                           * [ AVP ]
</artwork>
</figure>
				</t>
                        </section><!-- excess_AVP -->
                        <section anchor="rate_AVP" title="I-E-Aggregate-Excess-Rate AVP">
                        	<t>
					The I-E-Aggregate-Excess-Rate AVP (AVP code &lt;AVP8&gt;) is of type Unsigned32. 
					It gives the rate of flow of excess traffic in octets per second that the egress node derived
					for the identified ingress-egress aggregate for the measurement period ending at the time given by the Event-Timestamp AVP (if present). 
				</t>
			</section><!-- rate_AVP -->
			<section anchor="classifier_AVP" title="Classifier AVP">
				<t>
					The Classifier AVP (AVP Code TBD), defined in <xref target="I-D.ietf-dime-qos-attributes">ietf-dime-qos-attributes</xref>,
					is a grouped AVP that consists of a set of attributes that specify how to match a packet.
				</t>
			</section><!-- classifier_AVP -->
			<section anchor="sent_AVP" title="PCN-Sent-Info AVP">
				<t>
					The PCN-Sent-Info AVP (AVP code &lt;AVP9&gt;) is of type Grouped. 
					It provides the rate of flow of PCN-marked traffic in octets per second that the ingress node derived for the identified ingress-egress aggregate for
					the measurement period ending at the time given by the Event-Timestamp AVP (if present).
					<vspace blankLines="1"/>
					The PCN-Sent-Info AVP has the following format:
<figure>
<artwork>
  PCN-Sent-Info ::= &lt; AVP Header: AVP9 &gt;
                    { I-E-Aggregate-Id }
                    { I-E-Aggregate-Sent-Rate }
                  * [ AVP ]
</artwork>
</figure>
				</t>
			</section><!-- sent_AVP -->
			<section anchor="sentrate_AVP" title="I-E-Aggregate-Sent-Rate AVP">
				<t>
					The I-E-Aggregate-Sent-Rate AVP (AVP code &lt;AVP10&gt;) is of type Unsigned32. 
					It gives the rate of flow of PCN-marked traffic in octets per second that the ingress node forwarded to the identified ingress-egress aggregate, 
					calculated for the measurement period ending at the time given by the Event-Timestamp AVP (if present). 
				</t>
			</section><!-- sentrate_AVP -->		
		</section><!-- avps -->
		
		<section anchor="occurrence_Table" title="AVP Occurrence Tables">
			<t>
				The following tables present the AVPs defined in this document and
				their occurrences in Diameter messages. Note that AVPs that can only
				be present within a Grouped AVP are not represented in this table. 
				<vspace blankLines="1"/>
				The table uses the following symbols:
				<list>
					<t>0: The AVP MUST NOT be present in the message.</t>
					<t>0+: Zero or more instances of the AVP MAY be present in the message.</t>
					<t>0-1: Zero or one instance of the AVP MAY be present in the message.</t>
					<t>1: One instance of the AVP MUST be present in the message.</t>
				</list>
				<vspace blankLines="1"/>
<figure>
<artwork>
                                     +-----------------------+
                                     |     Command-Code      |
                                     |-----+-----+-----+-----+
      AVP Name                       | CRR | CRA | MPR | MPA |
      -------------------------------|-----+-----+-----+-----+
      PCN-Congestion-Info            | 0+  |  0  |  0  |  0  |
      PCN-Excess-Flow-Info           | 0+  |  0  |  0  |  0  |
      PCN-Sent-Info                  |  0  |  0  |  0  |  1  |
      I-E-Aggregate-Id               | (*) |  0  |  1  | (*) |
                                     +-----+-----+-----+-----+ 
</artwork>
</figure>
				<vspace blankLines="1"/>
				(*): Note that the I-E-Aggregate-Id AVP appears alone in the MPR command and
				within the PCN-Sent-Info grouped AVP (MPA command), the PCN-Excess-Flow-Info AVP,
				and the PCN-Congestion-Info AVP. 
			</t>
		
		
		</section><!-- occurrence_Table -->
		
	</section><!-- dime_app -->

<!--
	<section anchor="Acknowledgements" title="Acknowledgements">
		<t>
			TBD
		</t>
    </section>
-->
<!-- 
	<section anchor="Contributors" title="Contributors">
		<t>
			TBD
		</t>
	</section>
-->

	<section anchor="IANA" title="IANA Considerations">
		<t>
			Upon publication of this memo as an RFC, IANA is requested to assign values as described in the following sections.
		</t>
		<section title="Diameter Application Identifier">
			<t>
				An application identifier for Diameter PCN Data Collection (&lt;AID&gt;, <xref target="app_sp"/>)
				must be assigned according to the policy specified in Section 11.3 of <xref target="RFC3588">RFC 3588</xref>.
			</t>
		</section>
		<section title="Diameter Command Codes">
			<t>
				Codes must be assigned for the following commands according to the policy specified in <xref target="RFC3588">RFC 3588</xref>, Section 11.2.1:
				<list style="symbols">
					<t>Congestion-Report-Request (CRR) (&lt;CC1&gt;, <xref target="crr_cmd"/>)</t>
					<t>Congestion-Report-Answer (MPA) (&lt;CC2&gt;, <xref target="cra_cmd"/>)</t>
					<t>Measurement-Poll-Request (MPR) (&lt;CC3&gt;, <xref target="mpr_cmd"/>)</t>
					<t>Measurement-Poll-Answer (MPA) (&lt;CC4&gt;, <xref target="mpa_cmd"/>)</t>				
				</list>
			</t>
		</section>
		<section title="Attribute-Value Pairs">
			<t>
				Codes must be assigned for the following AVPs using the policy specified in <xref target="RFC3588">RFC 3588</xref>, Section 11.1.1:
				<list  style="symbols">
					<t>I-E-Aggregate-Id (&lt;AVP1&gt;, <xref target="IEAggId_AVP"/>) </t>
					<t>PCN-Ingress-Node-Address (&lt;AVP2&gt;, <xref target="ingressAddr_AVP"/>) </t>
					<t>PCN-Egress-Node-Address (&lt;AVP3&gt;, <xref target="egressAddr_AVP"/>) </t>
					<t>PCN-Congestion-Info (&lt;AVP4&gt;, <xref target="coninfo_AVP"/>)</t>
					<t>CLE-Value (&lt;AVP5&gt;, <xref target="CLEvalue_AVP"/>)</t>
					<t>CLE-Report-Reason (&lt;AVP6&gt;, <xref target="rptreason_AVP"/>)</t>
					<t>PCN-Excess-Flow-Info (&lt;AVP7&gt;, <xref target="excess_AVP"/>)</t>
					<t>I-E-Aggregate-Excess-Rate (&lt;AVP8&gt;, <xref target="rate_AVP"/>)</t>
					<t>PCN-Sent-Info (&lt;AVP9&gt;, <xref target="sent_AVP"/>)</t>
					<t>I-E-Aggregate-Sent-Rate (&lt;AVP10&gt;, <xref target="sentrate_AVP"/>)</t>
				</list>
			</t>
		</section>
    </section>

    <section anchor="Security" title="Security Considerations">
		<t>
			The following sections discuss the security threats against the Diameter PCN Data Collection application and describe some countermeasures.
		</t>
		<section title="Traffic Security">
			<t>
				Application traffic MUST be secured as specified in <xref target="RFC3588">RFC 3588</xref> (i.e., through the use of (preferably) TLS or IPsec).
				In the absence of appropriate protection, all manner (including man-in-the-middle) of attacks are possible, potentially resulting in the inappropriate termination and non-admittance of flows. 
			</t>
		</section>
		<section title="Device Security">
			<t>
				Compromise of an ingress node by an attacker could result in the inappropriate refusal of admittance to valid flows,
				while the compromise of an egress node could allow the termination of valid flows.
				<vspace blankLines="1"/>
				Compromise of the PDP could result in both denial of admission to new flows and termination of existing flows, enabling an attacker to essentially control PCN traffic on the affected network.
			</t>
		</section>
	</section>
</middle>

  <!--  *****BACK MATTER ***** -->

<back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>
      <?rfc include="reference.RFC.3588"?>
      <?rfc include="reference.RFC.4005"?>
      <?rfc include="reference.I-D.draft-ietf-dime-qos-attributes-13.xml"?>
	 
    </references>

    <references title="Informative References">
      <!-- Here we use entities that we defined at the beginning. -->
      <?rfc include="reference.RFC.5559"?>
      <?rfc include="reference.RFC.5431"?>
      <?rfc include="reference.RFC.2475"?>
      <?rfc include="reference.I-D.draft-ietf-pcn-cl-edge-behaviour-00.xml"?>
      <?rfc include="reference.I-D.draft-ietf-pcn-sm-edge-behaviour-00.xml"?>

      <!-- A reference written by by an organization not a person. -->
      
      <reference anchor="Q.3303.3"
                 target="http://www.itu.int/rec/T-REC-Q.3303.3">
        <front>
          <title>Resource control protocol No. 3 &mdash; Protocols at the Rw interface between a policy decision physical entity (PD-PE) and a policy enforcement physical entity (PE-PE): Diameter</title>

          <author>
            <organization>ITU-T</organization>
          </author>

          <date year="2008" month="May"/>
        </front>
      </reference>
    </references>
    
<!--
    <section anchor="app-additional" title="Additional Stuff">
      <t>This becomes an Appendix.</t>
    </section>
-->
	<section title="Related Work in ITU-T">
		<t>
			The ITU-T is doing work to exploit the PCN technology in an environment 
			where the decisions are made by a central policy decision point (PDP) <xref target="Q.3303.3"/>,
			which needs the information generated by PCN marking to support per-flow decisions on admission and termination.
			This memo defines a Diameter application to transfer the information from edge nodes to the PDP. 
			Egress node reports are sent by the egress node acting as client to the PDP acting as server. 
			Data generated at the ingress node are needed only when flow termination is required. 
			They are requested by the PDP acting as client and sent in responses by the ingress node acting as server. 
			The PDP thus acts both as client and as server in the same application.
			The Rw application <xref target="RFC5431"/> provides a precedent for such an application.
			<vspace blankLines="1"/>
			The PCN Data Collection application is related to existing ITU-T applications as follows:
			<list style="symbols">
				<t>
					The Rs application allows application-level functions to request flow admission for individual application flows.
				</t>
				<t>
					The Rw application provides the control linkage between a Policy Decision Point and an ingress router, to pass down decisions on flow admission following either the push or the pull model. 
					The Rw application also passes flow termination decisions.
				</t>
			</list>
			As can be seen from this brief description, the PCN Data Collection application defined in this memo is complementary to the Rw application. 
			Within the strict terms of the ITU-T architecture, it is a realization of a different interface, the Rc interface. 
			However, the PCN Data Collection application is intended for use in any of a number of architectures based on a centralized policy decision element.
		</t>
	</section>

  </back>
</rfc>
