One document matched: draft-ietf-pcn-baseline-encoding-00.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" >
<rfc ipr="full3978" docName="draft-ietf-pcn-baseline-encoding-00" 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>
</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="30" month="September" year="2008"></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>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. It is designed to be easily extensible to
provide more encoding states but such schemes will be described in other documents.
</t>
</abstract>
<!-- ================================================================ -->
</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 a PCN-domain. 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 more. The baseline
encoding described here only provides for two PCN encoding states. An extension of the baseline
encoding described in <xref target="PCN-3-enc-state"></xref> provides for
three PCN encoding states. Other extensions have also been suggested all of which
can build on the baseline encoding.
</t>
<t>
Changes from previous drafts (to be removed by the RFC Editor):
<list style="hanging">
<t hangText="From -02 to -03:"> </t>
<t>Minor changes throughout.</t>
<t> Modified meaning of ECT(1) state to EXP.</t>
<t>Moved text relevant to behaviour of nodes into appendix for later transfer to new document on edge behaviours
</t>
<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>
</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">
<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-enabled codepoints - collective term for all the NM and PM codepoints.</t>
<t>PCN-compatible Diffserv codepoint - a Diffserv codepoint for which the ECN field
is used to carry PCN markings rather thatn <xref target="RFC3168"></xref> markings.</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 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">DSCP \ RFC3168 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>
<postamble>Where DSCP n is a PCN-enabled DiffServ codepoint (see <xref target="pcn_enc_DSCPs"></xref>)
and EXP means available for Experimental use.</postamble>
</texttable>
<t>
The following rules apply to all PCN traffic:
<list style="symbols">
<t>PCN traffic MUST be marked with a PCN-compatible DiffServ Codepoint. That is a
DiffServ codepoint that indicates that PCN could be enabled by setting the
appropriate value in the ECN field. 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-enabled (not-PCN) but which shares the same
DiffServ codepoint as PCN-enabled traffic MUST have the ECN field set to 00. </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-Compatible 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-Compatible 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 is discussed in
<xref target="pcn-marking-behaviour"></xref>.
</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 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>
</section>
<!-- ================================================================ -->
<!-- ================================================================ -->
<section title="IANA Considerations">
<t>This document makes no request to IANA.
</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 (see <xref target="pcn_enc_app_behaviours"></xref>).
</t>
<t>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.
</t>
<t>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" ?>
<?rfc include="refs\reference.I-D.briscoe-tsvwg-ecn-tunnel" ?>
<?rfc include="refs\reference.I-D.draft-eardley-pcn-marking-behaviour-01" ?>
</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 IP in IP tunnels in respect to the ECN field and bring them in line with the
behaviour of IPSec tunnels <xref target="ecn-tunnelling"></xref>.
</t>
</section>
<section anchor="pcn_enc_app_behaviours" title="PCN Node Behvaiours">
<t>Any packet that belongs to a PCN capable flow MUST have the ECN field set to
indicate a NM state 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 indicate a PM state.</t>
<t>Any packet leaving the PCN-domain SHOULD have the ECN field reset to 00.
The only exception is where the egress node knows the end-hosts will react
safely to any PCN marks they receive.</t>
<section anchor="pcn_enc_nodes" title="Valid and Invalid Encoding Transitions at a PCN Node">
<t>
<list style="symbols">
<t> PCN-interior-nodes MUST NOT change not-PCN to another codepoint and they
SHOULD NOT change a PCN-Capable codepoint to not-PCN except where they need to downgrade the
packet to a lower class of service.</t>
<t>PCN-interior-nodes that are in a pre-congestion state above the configured level
MUST set a PM codepoint as defined in <xref target="pcn_enc_Tab_Default_coding"></xref>
or in any local/experimental scheme running within the PCN-domain. </t>
<t>Packets carrying the 01 ECT(1) codepoint are for local/experimental use only and their unexpected
presence SHOULD cause an alarm to be raised at the management level. However, to allow for the possibility of
misconfiguration they SHOULD be treated as NM packets. </t>
<t> The PM codepoint MUST NOT be changed to NM.</t>
</list>
</t>
</section>
</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
meaning the ingress should stop admitting new traffic.</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
meaning the ingress shoudl start terminating appropriate flows.</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 might be used as the only
PCN metering and marking algorithm. The level of marks will be used to determine when
the ingress shoudl stop admitting new traffic and whether the ingress should terminate
any flows.</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-2026 | 2026-04-22 21:39:10 |