One document matched: draft-moncaster-pcn-baseline-encoding-02.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" >
<rfc ipr="full3978" docName="draft-moncaster-pcn-baseline-encoding-02" category="std">
<?xml-stylesheet type='text/xsl' href='http://xml.resource.org/authoring/rfc2629.xslt' ?>

<!-- Alterations to I-D/RFC boilerplate -->
<?rfc private="" ?>    <!-- Default private="" Produce an internal memo 2.5pp shorter than an I-D or RFC -->
<?rfc topblock="yes" ?>    <!-- Default topblock="yes" put the famous header block on the first page -->
<?rfc footer="" ?>    <!-- Default footer="Expires <date>" override the center footer string -->
<?rfc header="" ?>    <!-- Default header="Internet-Draft" override the leftmost header string -->
<?rfc authorship="yes" ?>    <!-- Default authorship="yes" Render authors' addresses section -->
<?rfc rfcprocack="yes" ?>    <!-- Default rfcprocack="no" add a short sentence acknowledging xml2rfc -->
<?rfc strict="no" ?>    <!-- Default strict="no" Don't check I-D nits -->
<?rfc rfcedstyle="no" ?>    <!-- Default rfcedstyle="yes" attempt to closely follow finer details from the latest observable RFC-Editor style -->

<!-- IETF process -->
<?rfc iprnotified="no" ?> <!-- Default iprnotified="no" I haven't disclosed existence of IPR to IETF -->

<!-- ToC format -->
<?rfc toc="yes" ?>      <!-- Default toc="no" No Table of Contents -->
<?rfc tocappendix="yes" ?>    <!-- Default tocappendix="yes" control whether the word `Appendix' appears in the table-of-content -->
<?rfc tocdepth="3" ?>    <!-- Default tocdepth="3" if toc is "yes", then this determines the depth of the table-of-contents -->
<?rfc tocindent="yes" ?>    <!-- Default tocindent="yes" if toc is "yes", indent subsections in the table-of-contents -->
<?rfc tocnarrow="yes" ?>    <!-- Default tocnarrow="yes" affects horizontal spacing in the table-of-content -->
<?rfc tocompact="yes" ?>    <!-- Default tocompact="yes" if toc is "yes", then setting this to "no" will make it a little less compact -->

<!-- Cross referencing, footnotes, comments -->
<?rfc symrefs="yes" ?>  <!-- Default symrefs="no" Don't use anchors, but use numbers for refs -->
<?rfc sortrefs="yes"?>  <!-- Default sortrefs="no" Don't sort references into order -->
<?rfc comments="yes" ?>    <!-- Default comments="no" Don't render comments -->
<?rfc inline="no" ?>    <!-- Default inline="no" if comments is "yes", then render comments inline; otherwise render them in an `Editorial Comments' section -->
<?rfc editing="no" ?>    <!-- Default editing="no" Don't insert editing marks for ease of discussing draft versions -->

<!-- Pagination control -->
<?rfc compact="yes"?>   <!-- Default compact="no" Start sections on new pages -->
<?rfc subcompact="no"?> <!-- Default subcompact="(as compact setting)" yes/no is not quite as compact as yes/yes -->
<?rfc autobreaks="yes" ?>    <!-- Default autobreaks="yes" avoid widows and orphans (not perfect) -->

<!-- HTML formatting control -->
<?rfc emoticonic="yes" ?>    <!-- Default emoticonic="no" Doesn't prettify HTML format -->
<?rfc background="" ?>    <!-- Default background="" when producing a html file, use this image -->
<?rfc useobject="no" ?>    <!-- Default useobject="no" use <object> not <src> when outputting HTML -->
<?rfc linkmailto="yes" ?>    <!-- Default linkmailto="yes" generate mailto: URL, as appropriate -->


    <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 1473 648734</phone>
                <email>toby.moncaster@bt.com</email>
                <uri>http://www.cs.ucl.ac.uk/staff/B.Briscoe/</uri>
            </address>
        </author>
        <author initials="B." surname="Briscoe" fullname="Bob Briscoe">
            <organization>BT & UCL</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>room B206, Institute of Computer Science</street>
                    <street>Am Hubland</street>
                    <city> Wuerzburg</city>
                    <code>D-97074</code>
                    <country>Germany</country>
                </postal>
                <phone>+49 931 888 6644</phone>
                <email>menth@informatik.uni-wuerzburg.de</email>
            </address>
        </author>
        <date day="11" month="July" year="2008"></date>
        <area>Transport</area>
        <workgroup>Congestion and Pre Congestion</workgroup>
        <keyword>Quality of Service</keyword>
        <keyword>QoS</keyword>
        <keyword>Congestion Control</keyword>
        <keyword>Differentiated Services</keyword>
        <keyword>Admission Control</keyword>
        <keyword>Signalling</keyword>
        <keyword>Protocol</keyword>
        <keyword>Pre-emption</keyword>
        <abstract>
            <t>Pre-congestion notification (PCN) provides information to support 
            admission control and flow termination in order to protect
   the Quality of Service of inelastic flows.  It does this by marking packets 
   when traffic load on a link is approaching or has exceeded a threshold
   below the physical link rate. This document specifies how such marks are to 
   be encoded into the IP header.  The baseline encoding described here provides 
   for only two PCN encoding states. Other documents describe extended 
   encoding schemes that allow for three encoding states.

            </t>
        </abstract>

<!-- ================================================================ -->
<note title="Status">
    <t>This memo is posted as an Internet-Draft with an intent to eventually progress to standards track.
    </t>
</note>

</front>
    
    
<middle>

<!-- ================================================================ -->
<section anchor="pcn_enc_intro" title="Introduction">

    <t>
    Pre-congestion notification (PCN) provides information to support admission 
    control and flow termination in order to protect the quality of service (QoS) 
    of inelastic flows.  This is achieved by marking packets according to the 
    level of pre-congestion at nodes within the PCN-domain. Two algorithms exist 
    for that purpose. Excess traffic marking marks all PCN packets exceeding 
   a certain reference rate on a link while threshold marking marks all PCN 
   packets on a link when the PCN traffic rate exceeds the reference rate. These 
   markings are evaluated by the egress nodes of the PCN-domain. <xref target="PCN-arch"></xref> 
   describes how PCN packet markings can be used to assure the QoS of inelastic 
   flows within a single DiffServ domain.</t> 
<t>
This document specifies how these PCN marks are encoded into the IP header. 
It also describes how packets are identified as belonging to a PCN flow.  Some 
deployment models require two PCN encoding states, others require three. The baseline 
encoding described here only provides for two PCN encoding states. An extended 
   encoding described in <xref target="PCN-3-enc-state"></xref> provides for 
   three PCN encoding states.
     </t>
</section>

<note title="Changes from previous drafts (to be removed by the RFC Editor)">
<list style="hanging">
        <t hangText="From -01 to -02:">
        </t>
        <t>Minor changes throughout including tightening up language to remain 
        consistent with the PCN Architecture terminology</t>
        <t hangText="From -00 to -01:">
        </t>
        <t>Change of title from "Encoding and Transport of (Pre-)Congestion Information from within a
        DiffServ Domain to the Egress"</t>
        <t>Extensive changes to Introduction and abstract.</t>
        <t>Added a section on the implications of re-using a DSCP.</t>
        <t>Added appendix listing possible operator scenarios for using this baseline encoding.</t>
        <t>Minor changes throughout.</t>
    </list>
</note>

<!-- ================================================================ -->
<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">

    <t>  The following terms are used in this document:
   <list style="symbols">
<t>not-PCN - packets that are not PCN capable.</t>
<t>PCN-marked - codepoint indicating packets that have been marked at a 
PCN-interior-node using some PCN marking behaviour. Also PM.</t>

<t>not-Marked - codepoint indicating packets that are PCN capable but are not 
PCN-marked. Also NM.</t>
 
<t>PCN-Capable codepoints - collective term for all the NM and PM codepoints.</t>
<t>PCN-enabled Diffserv codepoint - a Diffserv codepoint for which PCN has been 
enabled on a particular machine.</t>

 </list>
In addition the document uses the terminology defined in <xref target="PCN-arch"></xref>.
</t>
</section>

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

<t> 
   The PCN encoding states are defined using the Type of Service field of the 
   IP header which is a combination of the DSCP field and ECN field. 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). The following 
   table defines how to encode these states in IP: 
<texttable anchor="pcn_enc_Tab_Default_coding" title="Encoding PCN in IP">
    <ttcol align="center">DSCP</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>NM</c><c>PM</c>
     <postamble>Where DSCP n is a PCN-enabled DiffServ codepoint (see <xref target="pcn_enc_DSCPs"></xref>)</postamble>
 </texttable>
 </t>
 <t>
The following rules apply to all PCN traffic:
<list style="symbols">
      <t>PCN traffic MUST be marked with a PCN-enabled DiffServ Codepoint. That is a 
      DiffServ codepoint that indicates that PCN is enabled. To conserve DSCPs, 
      DiffServ Codepoints SHOULD be chosen that are already defined for use with 
      admission controlled traffic, such as the Voice-Admit codepoint defined in 
      <xref target="voice-admit"></xref>.  </t>

      <t>Any packet that is not PCN capable (not-PCN) but which shares the same 
      DiffServ codepoint as PCN capable traffic MUST have the ECN field set to 00.  </t>

      <t>Any packet that belongs to a PCN capable flow MUST have the ECN field set to 
      one of the two ECT codepoints 10 or 01 at the PCN-ingress-node.</t>
      <t>Any packet that is PCN capable and has been PCN-marked by a PCN-interior-node 
      MUST have the ECN field set to 11. </t>
 </list> 
</t>

<!-- ================================================================ -->
<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> and 
 <xref target="RFC4774"></xref>. Full details are contained in 
 <xref target="pcn-enc-compare"></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="pcn_enc_app_tunnel"></xref> 
 explains this in detail. The main effect of this constraint is that any PCN 
 marking has to use the ECN field set to 11 (CE codepoint). If the packet is 
 being tunneled then only the CE codepoint gets copied into the inner header upon 
 decapsulation. An additional constraint is the need to minimise the use of DiffServ 
 codepoints as these are in increasingly short supply. 
 <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>
The encoding scheme (<xref target="pcn_enc_Tab_Default_coding"></xref>) that best 
addresses the above constraints 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-Enabled DiffServ Codepoints">

<t> 
 Equipment complying with the baseline PCN encoding MUST allow PCN to be enabled 
 for a certain Diffserv codepoint or codepoints. This document defines the term 
 "PCN-Enabled Diffserv Codepoint" for such a DSCP. Enabling PCN for a DSCP 
 switches on PCN marking behaviour for packets with that DSCP, but only if those 
 packets also have their ECN field set to indicate a codepoint other than not-PCN.
 <t> </t>
Enabling PCN marking behaviour disables any other marking behaviour (e.g. enabling 
PCN  disables the default ECN marking behaviour introduced in 
<xref target="RFC3168"></xref>). The scheduling behaviour used for a packet does 
not change whether PCN is enabled for a DSCP or not and whatever the setting of 
the ECN field.

</t>
<section anchor="pcn_enc_dscp_implications" title="Implications of re-using a DiffServ Codepoint">
 <t>
<xref target="RFC4774"></xref> requires that packets for which alternate ECN semantics 
(PCN semantics) are used are clearly distinguished from packets to which the 
default ECN semantics <xref target="RFC3168"></xref> apply. One means of doing this is
using a DSCP to indicate that the ECN field is to be interpreted in a different manner.
We have chosen to use this approach for PCN. Non-PCN-enabled forwarding nodes 
treat packets with a PCN-enabled DSCP like ECN traffic if appropriate ECN 
codepoints are set in the IP header. This has several consequences. 
<list style="symbols">
<t>
Care must be taken to ensure that forwarding nodes do not interpret PCN encodings 
as ECN encodings, and that no harm is done if this were to happen. 
To that end, appropriate marking and re-marking is performed at the ingress and 
the egress of a PCN-domain.</t>

<t>The re-used DSCP should be able to serve its original purpose which was not 
PCN support. This is achieved by marking the packets of such flows with a not-PCN 
codepoint.</t>

<t>The scheduling behaviour is coupled with the DSCP only. Therefore, the same 
scheduling and buffer management rules are applied for non-PCN-capable and PCN-capable 
traffic using the same PCN-enabled DSCP.</t>

<t>Once the ECN field of a packet is used for PCN encoding, it has lost its previous 
information unless this information is tunnelled through the PCN domain. Therefore, 
the baseline PCN encoding disables ECN for PCN-enabled DSCPs. 
<xref target="PCN-3-enc-state"></xref> provides end-to-end ECN support where this 
is needed.
</t>
</list> </t>
</section>
</section>
 <!-- ================================================================ -->
<section anchor="pcn_enc_nodes" title="Valid and Invalid Encoding Transitions at a PCN Node">
 <t>
  PCN-boundary-node behaviour compliant with the PCN baseline encoding:
<list style="symbols">
<t>Any packet with the ECN field already marked as CE or ECT arriving at a 
PCN-ingress-node SHOULD be dropped or downgraded to a lower class of service. 
Alternatively it MAY be tunnelled through the PCN-domain. It MUST NOT be admitted to the PCN-domain directly. </t>
<t>On leaving the PCN-domain the ECN bits of every PCN-packet MUST be set to 00 (not-ECT).  </t>
 </list>
</t><t>
   PCN-interior-node behaviour compliant with the PCN baseline encoding:
      <list style="symbols">
<t>	PCN-interior-nodes MUST NOT change not-PCN to another codepoint and they 
MUST NOT change a PCN-Capable codepoint to not-PCN.    </t>
<t>PCN-interior-nodes that are in a pre-congestion state above the configured level 
MUST set the PM codepoint by changing the ECN bits of NM marked packets to 11. </t>
<t> The PM codepoint MUST NOT be changed to NM.</t>
  </list>
  </t>
</section>
<!-- ================================================================ -->
<!-- ================================================================ -->
</section>      
<section anchor="pcn_enc_compat" title="Backwards Compatability">

<t>  BCP 124 <xref target="RFC4774"></xref> gives guidelines for specifying 
alternative semantics for the ECN field. It sets out a number of factors that 
must be taken into consideration. It also suggests various techniques to allow 
the co-existence of default ECN and alternative ECN semantics. The alternative 
semantics specified here are compliant with this BCP: 
<list style="symbols">
<t>	they use a DSCP to allow routers to distinguish that traffic uses the alternate 
ECN semantics; </t>
<t>	these semantics are defined for use within a controlled domain; </t>
<t>	ECN marked traffic is blocked from entering the PCN-domain directly 
(though it might be tunnelled through the PCN-domain).</t>
<t>All traffic leaving the controlled domain is re-marked as not-ECT.</t>
 </list>
</t>

</section>

<!-- ================================================================ -->

<!-- ================================================================ -->
<section title="IANA Considerations">
    <t>This document makes no request to IANA. It does however suggest a change to 
    the default (<xref target="RFC3168"></xref>) behaviour for the ECN field for 
    the Voice-Admit <xref target="voice-admit"></xref> DSCP. 
    </t>
</section>

<!-- ================================================================ -->
<section anchor="pcn_enc_security" title="Security Considerations">

    <t>Packets claim entitlement to be PCN marked by carrying a PCN-enabled DSCP 
    and a PCN-Capable ECN codepoint. This encoding document is intended to stand 
    independently of the architecture used to determine whether specific packets 
    are authorised to be PCN marked, which will be described in a future separate 
    document on PCN edge-node behaviour. 

The PCN working group has initially been chartered to only consider a PCN-domain 
to be entirely under the control of one operator, or a set of operators who trust 
each other <xref target="PCN-charter"></xref>. However there is a requirement to 
keep inter-domain scenarios in mind when defining the PCN encoding. One way to 
extend to multiple domains would be to concatenate PCN-domains and use 
PCN-boundary-nodes back to back at borders. Then any one domain's security 
against its neighbours would be described as part of the edge-node behaviour document as above.

One proposal on the table allows one to extend PCN across multiple domains without
PCN-boundary-nodes back-to-back at borders <xref target="re-PCN"></xref>. It is 
believed that the encoding described here would be compatible with the security 
framework described there.

    </t>
</section>

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

    <t>This document defines the baseline PCN encoding utilising a combination of a 
    PCN-enabled 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 traffic that is not PCN-capable within 
    the same DSCP so long as theat traffic doesn't require end-to-end ECN support.
    The encoding scheme is conformant with <xref target="RFC4774"></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 and others. Full details 
    of the alternative schemes that were considered for adoption can be found in 
    the document <xref target="pcn-enc-compare"></xref>. 
    Thanks to Ruediger Geib for providing detailed comments on this document.
    </t>

</section>
<!-- ================================================================ -->
<section anchor="pcn_enc_Comments_Solicited" title="Comments Solicited">

    <t>Comments and questions are encouraged and very welcome. They can be 
    addressed to the IETF congestion and pre-congestion working group mailing 
    list <pcn@ietf.org>, and/or to the authors.
    </t>

</section>
    </middle>
    <back>
<!-- ================================================================ -->
<references title="Normative References">


    <?rfc include="refs\reference.RFC.2119" ?>
    <?rfc include="refs\reference.RFC.4774" ?>

</references>

<references title="Informative References">
    <?rfc include="refs\reference.RFC.3168" ?>
    <?rfc include="refs\reference.RFC.4301" ?>
    <?rfc include="refs\localref.I-D.briscoe-re-pcn-border-cheat" ?>
    <?rfc include="refs\localref.PCN-charter"?>
    <?rfc include="refs\reference.I-D.draft-ietf-pcn-architecture-03"    ?>
    <?rfc include="refs\reference.I-D.draft-ietf-tsvwg-admitted-realtime-dscp-04"    ?>
    <?rfc include="refs\reference.I-D.draft-chan-pcn-encoding-comparison-03"    ?>
    <?rfc include="refs\localref.I-D.draft-moncaster-pcn-3-state-encoding-00"  ?>

</references>
<section anchor="pcn_enc_app_tunnel" title="Tunnelling Constraints">
    <t>
    The rules that govern the behaviour of the ECN field for IP-in-IP tunnels were 
    defined in <xref target="RFC3168"></xref>. This allowed for two tunnel modes.
    The limited functionality mode sets the outer header to not-ECT, 
    regardless of the value of the inner header, in other words disabling ECN 
    within the tunnel. The full functionality mode 
    copies the inner ECN field into the outer header if the inner header is not-ECT 
    or either of the 2 ECT codepoints. If the inner header is CE then the outer 
    header is set to ECT(0). On decapsulation, if the CE codepoint is set on the 
    outer header then this is copied into the inner header. Otherwise the inner 
    header is left unchanged. The stated reason for blocking CE from being 
    copied to the outer header was to prevent this from being used as a covert 
    channel through IPSec tunnels.
    </t>
    
    <t>
The IPSec protocol <xref target="RFC4301"></xref> changed the ECN tunnelling rule 
to allow IPSec tunnels to simply copy the inner header into the outer header. On 
decapsulation the outer header is discarded and the ECN field is only copied down 
if it is set to CE.</t>
<t>
Because of the possible existence of tunnels, only CE (11) can 
be used as a PCN marking as it is the only mark that will survive decapsulation.
However there is a need for caution with all tunneling within the PCN-domain.  
RFC3168 full functionality IP in IP tunnels are 
expected to set the ECN field to ECT(0) if the inner ECN field is set to CE. This 
leads to the possibility that some packets within the PCN-domain that have already 
been marked may have that mark concealed further into the domain. This is undesirable 
for many PCN schemes and thus standard IP in IP tunnels SHOULD NOT be used within a 
PCN-domain. Further work is needed within the Transport Area to rationalise the 
behaviour of tunnels in respect to the ECN field.
     </t>
</section>
<section anchor="pcn_enc_app_usecases" title="Deployment Scenarios for PCN Using Baseline Encoding">
<t>
This appendix illustrates possible PCN deployment scenarios where the baseline encoding
can be used and also explain a case for which baseline encoding is not sufficient. 
{Note this appendix is provided for information only}.

<list style="numbers">
<t>An operator may wish to use PCN-based admission control only. To that end, 
threshold marking based on admissible rates might be used as the only PCN metering 
and marking algorithm. As a consequence, the PM marks on the packets are interpreted as 
admission-stop (AS) marks. The admission-control algorithm is based on 
"admissible-rate overload".</t>

<t>
An operator may wish to use PCN-based flow termination only. To that end, excess 
rate marking based on supportable rates might be used as the only PCN metering and 
marking algorithm. As a consequence, the PM marks on the packets are interpreted as 
excess-traffic (ET) marks.  The flow termination algorithm is based on 
"supportable-rate overload".</t>


<t>
An operator may wish to use both PCN-based admission control and flow termination. 
To that end, excess rate marking based on admissible rates may be used as the only
PCN metering and marking algorithm. As a consequence, the PM marks on the packets are 
interpreted as admission-stop (AS) marks. Both the admission control and the flow 
termination algorithm are based on "admissible-rate overload".</t>

<t>
An operator may wish to implement admission control based on threshold marking at 
admissible rates and flow termination based on excess rate marking at supportable 
rates because these methods are believed to work better with small ingress-egress 
aggregates. Then two different markings are needed. Such a deployment scenario is not
supported by the PCN baseline encoding.</t>
</list></t></section>
    </back>
</rfc>

PAFTECH AB 2003-20262026-04-22 21:36:49