<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" >
<rfc ipr="pre5378Trust200902" number="5696" category="std">
<?xml-stylesheet type='text/xsl' href='http://xml.resource.org/authoring/rfc2629.xslt' ?>

<?rfc topblock="yes" ?>
<?rfc footer="" ?>    
<?rfc header="" ?>    
<?rfc authorship="yes" ?>
<?rfc strict="no" ?>    
<?rfc rfcedstyle="yes" ?>
<?rfc iprnotified="no" ?> 
<?rfc toc="yes" ?>
<?rfc tocappendix="yes" ?>
<?rfc tocdepth="3" ?>    
<?rfc tocindent="yes" ?> 
<?rfc tocnarrow="yes" ?> 
<?rfc tocompact="yes" ?> 
<?rfc symrefs="yes" ?>  
<?rfc sortrefs="yes"?>  
<?rfc comments="no" ?>  
<?rfc editing="no" ?>   
<?rfc compact="yes"?>   
<?rfc subcompact="no"?> 
<?rfc autobreaks="yes" ?>
<?rfc emoticonic="yes" ?>
<?rfc background="" ?>   
<?rfc useobject="no" ?>  
<?rfc linkmailto="yes" ?>


    <front>
        <title abbrev="Baseline PCN Encoding">
            Baseline Encoding and Transport of Pre-Congestion Information
        </title>
        <author initials="T." surname="Moncaster" fullname="Toby Moncaster">
            <organization>BT</organization>
            <address>
                <postal>
                    <street>B54/70, Adastral Park</street>
                    <street>Martlesham Heath</street>
                    <city>Ipswich</city>
                    <code>IP5 3RE</code>
                    <country>UK</country>
                </postal>
                <phone>+44 7918 901170</phone>
                <email>toby.moncaster@bt.com</email>
            </address>
        </author>
        <author initials="B." surname="Briscoe" fullname="Bob Briscoe">
            <organization>BT</organization>
            <address>
                <postal>
                    <street>B54/77, Adastral Park</street>
                    <street>Martlesham Heath</street>
                    <city>Ipswich</city>
                    <code>IP5 3RE</code>
                    <country>UK</country>
                </postal>
                <phone>+44 1473 645196</phone>
                <email>bob.briscoe@bt.com</email>
            </address>
        </author>
        <author initials="M." surname="Menth" fullname="Michael Menth">
            <organization>University of Wuerzburg</organization>
            <address>
                <postal>
                    <street>Institute of Computer Science</street>
                    <street>Am Hubland</street>
                    <city> Wuerzburg</city>
                    <code>D-97074</code>
                    <country>Germany</country>
                </postal>
                <phone>+49 931 318 6644</phone>
                <email>menth@informatik.uni-wuerzburg.de</email>
            </address>
	      </author>
        <date month="October" year="2009"></date>
        <area>Transport</area>
        <workgroup>Congestion and Pre Congestion</workgroup>
        <keyword>Quality of Service</keyword>
        <keyword>QoS</keyword>
        <keyword>Differentiated Services</keyword>
        <keyword>Admission Control</keyword>
        <keyword>Codepoint</keyword>
        <keyword>Protocol</keyword>
        <abstract>
 <t>  
   The objective of the Pre-Congestion Notification (PCN) architecture 
   is to protect the quality of service (QoS) of inelastic flows within a Diffserv domain. It
   achieves this by marking packets belonging to PCN-flows when the rate
   of traffic exceeds certain configured thresholds on links in the 
   domain.  These marks can then be evaluated to determine how close the 
   domain is to being congested.  This document specifies how such marks 
   are encoded into the IP header by redefining the Explicit Congestion 
   Notification (ECN) codepoints within such domains.  The baseline 
   encoding described here provides only two PCN encoding states: 
   Not-marked and PCN-marked. Future extensions to this encoding may be 
   needed in order to provide more than one level of marking severity.

</t>
        </abstract>

<!-- ================================================================ -->
</front>

<middle>
<!-- ================================================================ -->
<section anchor="pcn_enc_intro" title="Introduction">
 <t>
   The objective of the Pre-Congestion Notification (PCN)
   architecture <xref target="RFC5559"></xref> is to protect the
   quality of service (QoS) of inelastic flows within a Diffserv
   domain in a simple, scalable, and robust fashion. The overall rate
   of 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 (hence "Pre-Congestion Notification"). The level of marking
   allows the boundary nodes to    make decisions about whether to
   admit or block a new flow request, and (in abnormal circumstances)
   whether to terminate some of the existing flows, thereby
   protecting the QoS of previously admitted flows.</t>
   
<t>
This document specifies how these PCN-marks are encoded into the IP header by 
reusing the bits of the Explicit Congestion Notification (ECN) field <xref target="RFC3168"></xref>. 
It also describes how packets are identified as belonging to a PCN-flow.  Some 
deployment models require two PCN encoding states, others require more. The baseline 
encoding described here only provides for two PCN encoding states. However, the encoding
can be easily extended to provide more states. Rules for such extensions are given in 
<xref target="pcn_enc_experiments"></xref>.

     </t>
</section>
<!-- ================================================================ -->
<section anchor="pcn_enc_Reqs_notation" title="Requirements Notation">

    <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"></xref>.
    </t>
</section>

<!-- ================================================================ -->
<section anchor="pcn_enc_terminology" title="Terminology and Abbreviations">
<section anchor="term" title="Terminology">
    <t>  The terms PCN-capable, PCN-domain, PCN-node, PCN-interior-node, PCN-ingress-node, 
	PCN-egress-node, PCN-boundary-node, PCN-traffic, PCN-packets and PCN-marking are used as defined in 
	<xref target="RFC5559"></xref>. The following additional terms are defined in this document:
<list style="symbols">

<t>PCN-compatible Diffserv codepoint - a Diffserv codepoint indicating packets for 
which the ECN field is used to carry PCN-markings rather than <xref target="RFC3168"></xref> markings.</t>

<t>PCN-marked codepoint - a codepoint that indicates packets that have been marked at a 
PCN-interior-node using some PCN-marking behaviour <xref target="RFC5670"></xref>. 
Abbreviated to PM.</t>

<t>Not-marked codepoint - a codepoint that indicates packets that are PCN-capable but
  that are not PCN-marked. Abbreviated to NM.</t>
  
<!--<t>PCN-enabled codepoints - collective term for all NM and PM codepoints; 
packets carrying such codepoints are PCN-packets.</t> 

author's comment - since this was only used for defining "not-PCN" it can be removed...
-->

<t>not-PCN codepoint - a codepoint that indicates packets that are not PCN-capable.</t>

<!-- Author's comment: Would it be better to capitalise this term to Not-PCN? I chose
not to originally because in general in RFC3168 the term not-ECN is used, but in fact
that RFC is not consistent as it sometimes also uses Not-ECN...  -->

</list>
<!--
Author's comment - The following is removed as we now say it at the start of this section... 
In addition, the document uses the terminology defined in <xref target="RFC5559"></xref>. -->
</t></section>
<section anchor="pcn_enc_abbreviations" title="List of Abbreviations">

<t>  The following abbreviations are used in this document:
<list style="symbols">
<t>AF = Assured Forwarding <xref target="RFC2597"></xref></t>
<t>CE = Congestion Experienced <xref target="RFC3168"></xref></t>
<t>CS = Class Selector <xref target="RFC2474"></xref></t>
<t>DSCP = Diffserv codepoint</t>
<t>ECN = Explicit Congestion Notification <xref target="RFC3168"></xref> </t>
<t>ECT = ECN Capable Transport <xref target="RFC3168"></xref></t>
<t>EF = Expedited Forwarding <xref target="RFC3246"></xref></t>
<t>EXP = Experimental </t>
<t>NM = Not-marked </t>
<t>PCN = Pre-Congestion Notification</t>
<t>PM = PCN-marked </t>
</list>

</t>
</section>
</section>

<!-- ================================================================ -->
<section anchor="pcn_enc_IP" title="Encoding Two PCN States in IP">

<t> 
   The PCN encoding states are defined using a combination of the DSCP and ECN 
   fields within the IP header. The baseline PCN encoding closely follows the semantics 
   of ECN [RFC3168]. It allows the encoding of two PCN states: Not-marked and PCN-marked. 
   It also allows for traffic that is not PCN-capable to be marked as such (not-PCN). 
   Given the scarcity of codepoints within the IP header, the baseline encoding leaves
   one codepoint free for experimental use. The following table defines 
   how to encode these states in IP:</t> 
<texttable anchor="pcn_enc_Tab_Default_coding" title="Encoding PCN in IP">
    <ttcol align="center">ECN codepoint</ttcol>
    <ttcol align="center">Not-ECT (00)</ttcol>
    <ttcol align="center">ECT(0) (10)</ttcol>
    <ttcol align="center">ECT(1) (01)</ttcol>
    <ttcol align="center">CE (11)</ttcol>
    <c>DSCP n</c><c>not-PCN</c><c>NM</c><c>EXP</c><c>PM</c> </texttable>
     <t>In the table above, DSCP n is a PCN-compatible Diffserv codepoint (see <xref target="pcn_enc_DSCPs"></xref>) 
     and EXP means available for Experimental use. N.B. we deliberately reserve this codepoint for experimental 
     use only (and not local use) to prevent future compatibility issues.</t>

 <t>
The following rules apply to all PCN-traffic:
<list style="symbols">
      <t>PCN-traffic MUST be marked with a PCN-compatible Diffserv
      codepoint. To conserve DSCPs, Diffserv codepoints SHOULD
      be chosen that are already defined for use with
      admission-controlled traffic. <xref target="pcn_enc_app_DSCP_choice"></xref> gives
      guidance to implementors on suitable DSCPs. Guidelines
      for mixing traffic types within a PCN-domain are given
      in <xref target="RFC5670"></xref>.</t>

      <t> Any packet arriving at the PCN-ingress-node that shares a PCN-compatible 
   DSCP and is not a PCN-packet MUST be marked as not-PCN within 
   the PCN-domain. </t>
   
  <t>If a packet arrives at the PCN-ingress-node with its ECN field 
   already set to a value other than not-ECT, then appropriate action
   MUST be taken to meet the requirements of <xref target="RFC3168"></xref>. The simplest
   appropriate action is to just drop such packets. However, this is a
   drastic action that an operator may feel is
   undesirable. <xref target="pcn_enc_coexist"></xref> provides more
   information and summarises other alternative actions that might be
   taken.  </t>

      </list> 
</t>
<section anchor="pcn_enc_marking_action" title="Marking Packets">
<t><xref target="RFC5670"></xref> states that
  any encoding scheme document must specify the required action to
  take if one of the marking algorithms indicates that a packet needs
  to be marked. For the baseline encoding scheme, the required action
  is simply as follows:

<list style="symbols">
<t> If a marking algorithm indicates the need to mark a PCN-packet,
  then that packet MUST have its PCN codepoint set to 11,
  PCN-marked.</t>
</list></t>
</section>

<section anchor="pcn_enc_valid_invalid" title="Valid and Invalid Codepoint Transitions">
<t>
A PCN-ingress-node MUST set the Not-marked (10) codepoint on any
arriving packet that belongs to a PCN-flow. It MUST set the not-PCN
(00) codepoint on all other packets sharing a PCN-compatible Diffserv
codepoint.
</t>
<t>
The only valid codepoint transitions within a PCN-interior-node are
from NM to PM (which should occur if either meter indicates a need to
PCN-mark a
packet <xref target="RFC5670"></xref>) and from
EXP to PM. PCN-nodes that only implement the baseline encoding MUST be
able to PCN-mark packets that arrive with the EXP codepoint. This
should ease the design of experimental schemes that want to allow
partial deployment of experimental nodes alongside nodes that only
implement the baseline encoding. The following table gives the full
set of valid and invalid codepoint transitions.</t>

<artwork>
                 +-------------------------------------------------+
                 |                  Codepoint Out                  |
  +--------------+-------------+-----------+-----------+-----------+
  | Codepoint in | not-PCN(00) |   NM(10)  |  EXP(01)  |   PM(11)  |
  +--------------+-------------+-----------+-----------+-----------+
  |  not-PCN(00) |    Valid    | Not valid | Not valid | Not valid |
  +--------------+-------------+-----------+-----------+-----------+
  |       NM(10) |  Not valid  |   Valid   | Not valid |   Valid   |
  +--------------+-------------+-----------+-----------+-----------+
  |     EXP(01)* |  Not valid  | Not valid |   Valid   |   Valid   |
  +--------------+-------------+-----------+-----------+-----------+
  |       PM(11) |  Not valid  | Not valid | Not valid |   Valid   |
  +--------------+-------------+-----------+-----------+-----------+
     * This MAY cause an alarm to be raised at a management layer.
       See paragraph above for an explanation of this transition.

       Table 2: Valid and Invalid Codepoint Transitions for 
                    PCN-Packets at PCN-Interior-Nodes
       </artwork>    
<t>The codepoint transition constraints given here apply only to the baseline encoding scheme. 
Constraints on codepoint transitions for future experimental schemes are discussed in 
<xref target="pcn_enc_experiments"></xref>.</t>
	   
<t>
  
   A PCN-egress-node SHOULD set the not-PCN (00) codepoint on all
   packets it forwards out of the PCN-domain.  The only exception to
   this is if the PCN-egress-node is certain that revealing other
   codepoints outside the PCN-domain won't contravene the guidance given
   in [RFC4774].  For instance, if the PCN-ingress-node has explicitly
   informed the PCN-egress-node that this flow is ECN-capable, then it
   might be safe to expose other codepoints.
   
</t>
</section>
<!-- ================================================================ -->
<section anchor="pcn_enc_rationale" title="Rationale for Encoding">

<t> 
 The exact choice of encoding was dictated by the constraints imposed by existing 
 IETF RFCs, in particular <xref target="RFC3168"></xref>, <xref target="RFC4301"></xref>, and 
 <xref target="RFC4774"></xref>. 

 One of the tightest constraints was 
 the need for any PCN encoding to survive being tunnelled through either an 
 IP-in-IP tunnel or an IPsec Tunnel. <xref target="ECN-TUN"></xref> 
 explains this in more detail. The main effect of this constraint is that any 
 PCN-marking has to carry the 11 codepoint in the ECN field since this is the only codepoint
 that is guaranteed to be copied down into the forwarded header upon 
 decapsulation. An additional constraint is the need to minimise the use of Diffserv 
 codepoints because there is a limited supply of Standards Track codepoints remaining. 
 <xref target="pcn_enc_DSCPs"></xref> explains how we have minimised this still 
 further by reusing pre-existing Diffserv codepoint(s) such that non-PCN-traffic 
 can still be distinguished from PCN-traffic.</t>

 <t>There are a number of factors that
 were considered before choosing to set 10 as the NM state instead of
 01. These included similarity to ECN, presence of tunnels within the
 domain, leakage into and out of the PCN-domain, and incremental deployment
 (see <xref target="pcn_enc_app_rationale"></xref>).
</t><t>
The encoding scheme above seems to meet all these constraints and ends
up looking very similar to ECN. This is perhaps not surprising given
the similarity in architectural intent between PCN and ECN. 
</t>

</section>
<!-- ================================================================ -->
<section anchor="pcn_enc_DSCPs" title="PCN-Compatible Diffserv Codepoints">

<t> 
 Equipment complying with the baseline PCN encoding MUST allow PCN to be enabled 
 for certain Diffserv codepoints. This document defines the term 
 "PCN-compatible Diffserv codepoint" for such a DSCP. To be clear, any packets with such a DSCP
 will be PCN-enabled only if they are within a PCN-domain and have their ECN field 
 set to indicate a codepoint other than not-PCN.
 </t> <t>
Enabling PCN-marking behaviour for a specific DSCP disables any other
marking behaviour (e.g., enabling PCN replaces the default ECN marking
behaviour introduced in <xref target="RFC3168"></xref>) with the
PCN-metering and -marking behaviours described
in <xref target="RFC5670"></xref>). This
ensures compliance with the Best Current Practice (BCP) guidance set
out in <xref target="RFC4774"></xref>.
</t>

<t> The PCN working group has chosen not to define a single DSCP for
  use with PCN for several reasons. Firstly, the PCN mechanism is
  applicable to a variety of different traffic classes. Secondly,
  Standards Track DSCPs are in increasingly short supply. Thirdly, PCN
  is not a scheduling behaviour -- rather, it should be seen as being
  essentially a marking behaviour similar to ECN but intended for
  inelastic traffic. More details are given in the
  informational <xref target="pcn_enc_app_DSCP_choice"></xref>.</t>


<section anchor="pcn_enc_not-PCN" title="Co-Existence of PCN and Not-PCN Traffic">
	<t>
	The scarcity of pool 1 DSCPs, coupled with the fact that PCN is
	envisaged as a marking behaviour that could be applied
    to a number of different DSCPs, makes it essential that we provide
	a not-PCN state. As stated above (and expanded
	in <xref target="pcn_enc_app_DSCP_choice"></xref>), the aim is
	for PCN to re-use existing DSCPs. Because PCN redefines the
	meaning of the ECN field for such DSCPs, it is important to
	allow an operator to still use the DSCP for non-PCN-traffic. This is achieved by providing a not-PCN state
	within the encoding scheme. Section 3.5	of <xref target="RFC5559"></xref> discusses how
	competing-non-PCN-traffic should be handled.
	</t>
</section>

</section>
 <!-- ================================================================ -->

</section>      
<section anchor="pcn_enc_experiments" title="Rules for Experimental Encoding Schemes">
<t>
Any experimental encoding scheme MUST follow these rules to ensure backward compatibility
with this baseline scheme: 
<list style="symbols">
<t>All PCN-interior-nodes within a PCN-domain MUST interpret the 00 codepoint in the ECN field 
as not-PCN and MUST NOT change it to another value. Therefore, a
  PCN-ingress-node wishing to disable PCN-marking for a packet with a
  PCN-compatible Diffserv codepoint MUST set the ECN field to 00.</t>

<t>The 11 codepoint in the ECN field MUST indicate that the packet has
  been PCN-marked as the result of one or both of the meters
  indicating a need to PCN-mark a
  packet <xref target="RFC5670"></xref>. The
  experimental scheme MUST define which meter(s) trigger this marking.
</t>

<t> The 01 Experimental codepoint in the ECN field MAY mean PCN-marked
  or it MAY carry some other meaning. However, any experimental scheme
  MUST define its meaning in the context of that experiment.</t>

<t>If both the 01 and 11 codepoints are being used to indicate
  PCN-marked, then the 11 codepoint MUST be taken to be the more
  severe marking and the choice of which meter sets which mark MUST be
  defined.</t>

<t>Once set, the 11 codepoint in the ECN field MUST NOT be changed to any other codepoint.
</t>

<t>Any experimental scheme MUST include details of all valid and invalid codepoint 
transitions at any PCN-nodes.</t>

</list>
</t>
</section>

<section anchor="pcn_enc_compat" title="Backward Compatibility">

<t>BCP 124 <xref target="RFC4774"></xref> gives guidelines for specifying 
alternative semantics for the ECN field. It sets out a number of factors to be 
taken into consideration. It also suggests various techniques to allow 
the co-existence of default ECN and alternative ECN semantics. The baseline encoding 
specified in this document defines PCN-compatible Diffserv codepoints as no longer 
supporting the default ECN semantics. As such, this document is compatible with 
BCP 124.</t>

<t>On its own, this baseline encoding cannot support both ECN marking
  end-to-end (e2e) and PCN-marking within a PCN-domain. It is possible
  to do this by carrying e2e ECN across a PCN-domain within the inner
  header of an IP-in-IP tunnel, or by using a richer encoding such as
  the proposed experimental scheme
  in <xref target="PCN-ENC"></xref>.</t>

<t>
In any PCN deployment, traffic can only enter the PCN-domain
through PCN-ingress-nodes and leave through PCN-egress-nodes.
PCN-ingress-nodes ensure that any packets entering the PCN-domain have the ECN field in their outermost IP header set to
the appropriate PCN codepoint. PCN-egress-nodes then guarantee
that the ECN field of any packet leaving the PCN-domain has
the correct ECN semantics. This prevents unintended leakage of ECN marks
into or out of the PCN-domain, and thus reduces backward-compatibility issues.</t>


</section>

<!-- ================================================================ -->
<section anchor="pcn_enc_security" title="Security Considerations">
    <t>PCN-marking only carries a meaning within the confines of a PCN-domain. 
    This encoding document is intended to stand 
    independently of the architecture used to determine how specific packets 
    are authorised to be PCN-marked, which will be described in separate 
    documents on PCN-boundary-node behaviour. 
    </t>
    <t>This document assumes the PCN-domain to be entirely under the control of
    a single operator, or a set of operators who trust each other. However, future 
    extensions to PCN might include inter-domain versions where trust cannot be 
    assumed between domains. If such schemes are proposed, they must ensure
    that they can operate securely despite the lack of trust. However, such considerations
    are beyond the scope of this document.
     </t>
	 <t>One potential security concern is the injection of spurious
	 PCN-marks into the PCN-domain. However, these can only enter
	 the domain if a PCN-ingress-node is misconfigured.  The
	 precise impact of any such misconfiguration will depend on
	 which of the proposed PCN-boundary-node behaviour schemes is
	 used, but in general spurious marks will lead to admitting
	 fewer flows into the domain or potentially terminating too
	 many flows. In either case, good management should be able to
	 quickly spot the problem since the overall utilisation of the
	 domain will rapidly fall.</t>
   </section>

<!-- ================================================================ -->
<section anchor="pcn_enc_Conclusions" title="Conclusions">

    <t>This document defines the baseline PCN encoding, utilising a combination of a 
    PCN-compatible DSCP and the ECN field in the IP header. This baseline encoding 
    allows the existence of two PCN encoding states: Not-marked and PCN-marked. 
    It also allows for the co-existence of competing traffic within 
    the same DSCP, so long as that traffic does not require ECN support within the PCN-domain.
    The encoding scheme is conformant with <xref target="RFC4774"></xref>. The working group
	has chosen not to define a single DSCP for use with PCN. The
    rationale for this decision along with advice relating to the
    choice of suitable DSCPs can be found
    in <xref target="pcn_enc_app_DSCP_choice"></xref>.
    </t>
</section>

<!-- ================================================================ -->
<section anchor="pcn_enc_Acknowledgements" title="Acknowledgements">

    <t>This document builds extensively on work done in the PCN working group by 
    Kwok Ho Chan, Georgios Karagiannis, Philip Eardley, Anna Charny, Joe Babiarz, and others. 
    Thanks to Ruediger Geib and Gorry Fairhurst for providing detailed
    comments on this document.
    </t>

</section>
    </middle>
    <back>
<!-- ================================================================ -->
<references title="Normative References">
  
    <?rfc include="reference.RFC.2119" ?>
    <?rfc include="reference.RFC.4774" ?>
    <?rfc include="reference.RFC.3168" ?>   

<reference anchor="RFC5670">
	<front>
<title>Metering and Marking Behaviour of PCN-Nodes</title>
	<author initials="P" surname="Eardley" fullname="Philip
Eardley" role="editor">
<organization/>
</author>
<date month="October" year="2009"/>
</front>
<seriesInfo name="RFC" value="5670"/>
</reference>

</references>

<references title="Informative References">
    <?rfc include="reference.RFC.5559" ?>
	<?rfc include="reference.RFC.3246" ?>
	<?rfc include="reference.RFC.2597" ?>
	<?rfc include="reference.RFC.2474" ?>
	<?rfc include="reference.RFC.3540" ?>
    <?rfc include="reference.RFC.4301" ?>
	<?rfc include="reference.RFC.4594" ?>
    <?rfc include="reference.RFC.5127" ?>


<reference anchor="ECN-TUN">
	<front>
<title>Tunnelling of Explicit Congestion Notification</title>
	<author initials="B" surname="Briscoe" fullname="Bob Briscoe">
<organization/>
</author>
<date month="July" day="27" year="2009"/>
</front>
<seriesInfo name="Work in" value="Progress"/>
</reference>


<reference anchor="PCN-ENC">
	<front>
	<title>
A PCN encoding using 2 DSCPs to provide 3 or more states
</title>
	<author initials="T" surname="Moncaster" fullname="T Moncaster">
<organization/>
</author>
	<author initials="B" surname="Briscoe" fullname="Bob  Briscoe">
<organization/>
</author>
	<author initials="M" surname="Menth" fullname="Michael Menth">
<organization/>
</author>
<date month="April" day="8" year="2009"/>
</front>
<seriesInfo name="Work in" value="Progress"/>
</reference>

</references>
<section anchor="pcn_enc_app_deployment" title="PCN Deployment Considerations (Informative)">
<section anchor="pcn_enc_app_DSCP_choice" title="Choice of Suitable DSCPs">
<t>The PCN working group chose not to define a single DSCP for use
  with PCN for several reasons. Firstly, the PCN mechanism is
  applicable to a variety of different traffic classes. Secondly,
  Standards Track DSCPs are in increasingly short supply. Thirdly, PCN
  is not a scheduling behaviour -- rather, it should be seen as being  a
  marking behaviour similar to ECN but intended for inelastic
  traffic. The choice of which DSCP is most suitable for a given
  PCN-domain is dependent on the nature of the traffic entering that
  domain and the link rates of all the links making up that domain. In
  PCN-domains with sufficient aggregation, the appropriate DSCPs would
  currently be those for the Real-Time Treatment
  Aggregate <xref target="RFC5127"></xref>. The PCN working group
  suggests using admission control for the following service classes
  (defined in <xref target="RFC4594"></xref>):

<list style="symbols">
<t>Telephony (EF)</t>
<t>Real-time interactive (CS4)</t>
<t>Broadcast Video (CS3)</t>
<t>Multimedia Conferencing (AF4)</t>
</list>
CS5 is excluded from this list since PCN is not expected to be applied to signalling traffic.
  </t>

<t>PCN-marking is intended to provide a scalable admission-control
  mechanism for traffic with a high degree of statistical
  multiplexing. PCN-marking would therefore be appropriate to apply to
  traffic in the above classes, but only within a PCN-domain
  containing sufficiently aggregated traffic. In such cases, the above
  service classes may well all be subject to a single forwarding
  treatment (treatment
  aggregate <xref target="RFC5127"></xref>). However, this does not
  imply all such IP traffic would necessarily be identified by one
  DSCP -- each service class might keep a distinct DSCP within the
  highly aggregated region <xref target="RFC5127"></xref>.</t>


<t>Additional service classes may be defined for which admission
  control is appropriate, whether through some future standards action
  or through local use by certain operators, e.g., the Multimedia
  Streaming service class (AF3). This document does not preclude the
  use of PCN in more cases than those listed above.</t>


<t>Note: The above discussion is informative not normative, as
  operators are ultimately free to decide whether to use admission
  control for certain service classes and whether to use PCN as their
  mechanism of choice.</t>

</section>
<section anchor="pcn_enc_app_rationale" title="Rationale for Using ECT(0) for Not-Marked">
<t> The choice of which ECT codepoint to use for the Not-marked state
  was based on the following considerations: 

<list style="symbols">

<t><xref target="RFC3168"></xref> full-functionality tunnel within the
  PCN-domain: Either ECT is safe.</t>

<t> Leakage of traffic into PCN-domain: Because of the lack of take-up
  of the ECN nonce <xref target="RFC3540"></xref>, leakage of ECT(1)
  is less likely to occur and so might be considered safer.</t>

<t> Leakage of traffic out of PCN-domain: Either ECT is equally unsafe
  (since this would incorrectly indicate the traffic was ECN-capable
  outside the controlled PCN-domain).</t>

<t> Incremental deployment: Either codepoint is suitable, providing
  that the codepoints are used consistently.</t>

<t> Conceptual consistency with other schemes: ECT(0) is conceptually
  consistent with <xref target="RFC3168"></xref>.</t>
</list>

Overall, this seemed to suggest that ECT(0) was most appropriate to use.
</t>
</section>
</section>
<section anchor="pcn_enc_coexist" title="Co-Existence of PCN and ECN (Informative)">
<t>
 This baseline encoding scheme redefines the ECN codepoints within the
 PCN-domain. As packets with a PCN-compatible DSCP leave the
 PCN-domain, their ECN field is reset to not-ECT (00).  This is a
 problem for the operator if packets with a PCN-compatible DSCP arrive
 at the PCN-domain with any ECN codepoint  other than not-ECN. If the
 ECN-codepoint is ECT(0) (10) or ECT(1) (01), resetting the ECN field
 to 00 effectively turns off end-to-end ECN. This is undesirable as it
 removes the benefits of ECN, but <xref target="RFC3168"></xref>
 states that it is no worse than dropping the packet.
 However, if a packet was marked with CE (11), resetting the ECN field to 00 at the PCN egress node violates the rule that CE-marks must never be lost except as a 
 result of packet drop <xref target="RFC3168"></xref>. 
  
</t>

<t>
A number of options exist to overcome this issue. The most
 appropriate option will depend on the circumstances and has to be a
 decision for the operator. The definition of the action is beyond
 the scope of this document, but we briefly explain the four broad
 categories of solution below: tunnelling the packets, using an
 extended encoding scheme, signalling to the end systems to stop using
 ECN, or re-marking packets to a different DSCP. 

 <list style="symbols">
 <t>Tunnelling the packets across the
 PCN-domain (for instance, in an IP-in-IP tunnel from the
 PCN-ingress-node to the PCN-egress-node) preserves the original ECN
 marking on the inner header. </t>

<t> An extended encoding scheme can be designed that preserves the
  original ECN codepoints. For instance, if the PCN-egress-node can
  determine from the PCN codepoint what the original ECN codepoint was,
  then it can reset the packet to that codepoint. 
<xref target="PCN-ENC"></xref> partially
achieves this but is unable to recover ECN markings if the packet is
PCN-marked in the PCN-domain.</t>

<t>Explicit signalling to the end systems can indicate to the source
  that ECN cannot be used on this path (because it does not support
  ECN and PCN at the same time). 
Dropping the packet can be thought of as a form of silent signal to
  the source, as it will see any ECT-marked packets it sends being
  dropped.
</t>
<t>Packets that are not part of a PCN-flow but which share a PCN-compatible DSCP can
  be re-marked to a different local-use DSCP at the PCN-ingress-node
  with the original DSCP restored at the PCN-egress. This preserves
  the ECN codepoint on these packets but relies on there being spare
  local-use DSCPs within the PCN-domain.</t>

 </list></t>
</section>

</back>
</rfc>
