draft-ietf-mpls-base-yang-09.txt   draft-ietf-mpls-base-yang-10.txt 
MPLS Working Group T. Saad MPLS Working Group T. Saad
Internet-Draft K. Raza Internet-Draft K. Raza
Intended status: Standards Track R. Gandhi Intended status: Standards Track R. Gandhi
Expires: May 8, 2019 Cisco Systems Inc Expires: August 28, 2019 Cisco Systems Inc
X. Liu X. Liu
Volta Networks Volta Networks
V. Beeram V. Beeram
Juniper Networks Juniper Networks
November 04, 2018 February 24, 2019
A YANG Data Model for MPLS Base A YANG Data Model for MPLS Base
draft-ietf-mpls-base-yang-09 draft-ietf-mpls-base-yang-10
Abstract Abstract
This document contains a specification of the the MPLS base YANG This document contains a specification of the the MPLS base YANG
model. The MPLS base YANG model serves as a base framework for model. The MPLS base YANG model serves as a base framework for
configuring and managing an MPLS switching subsystem on an MPLS- configuring and managing an MPLS switching subsystem on an MPLS-
enabled router. It is expected that other MPLS YANG models (e.g. enabled router. It is expected that other MPLS YANG models (e.g.
MPLS LSP Static, LDP or RSVP-TE YANG models) will augment the MPLS MPLS LSP Static, LDP or RSVP-TE YANG models) will augment the MPLS
base YANG model. base YANG model.
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on May 8, 2019. This Internet-Draft will expire on August 28, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2019 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 25 skipping to change at page 2, line 25
1.2. Acronyms and Abbreviations . . . . . . . . . . . . . . . 3 1.2. Acronyms and Abbreviations . . . . . . . . . . . . . . . 3
2. MPLS Base Model . . . . . . . . . . . . . . . . . . . . . . . 3 2. MPLS Base Model . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Model Overview . . . . . . . . . . . . . . . . . . . . . 3 2.1. Model Overview . . . . . . . . . . . . . . . . . . . . . 3
2.2. Model Organization . . . . . . . . . . . . . . . . . . . 4 2.2. Model Organization . . . . . . . . . . . . . . . . . . . 4
2.3. Model Tree Diagram . . . . . . . . . . . . . . . . . . . 5 2.3. Model Tree Diagram . . . . . . . . . . . . . . . . . . . 5
2.4. Model YANG Module . . . . . . . . . . . . . . . . . . . . 7 2.4. Model YANG Module . . . . . . . . . . . . . . . . . . . . 7
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 15
4. Security Considerations . . . . . . . . . . . . . . . . . . . 15 4. Security Considerations . . . . . . . . . . . . . . . . . . . 15
5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 16 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 16
6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 16 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 16
7. Normative References . . . . . . . . . . . . . . . . . . . . 16 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 16
7.1. Normative References . . . . . . . . . . . . . . . . . . 16
7.2. Informative References . . . . . . . . . . . . . . . . . 18
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 18
1. Introduction 1. Introduction
A core routing data model is defined in [RFC8349], and it provides a A core routing data model is defined in [RFC8349], and it provides a
basis for the development of data models for routing protocols. The basis for the development of data models for routing protocols. The
MPLS base model augments core routing data model with additional data MPLS base model augments core routing data model with additional data
specific to MPLS technology as described in the MPLS architecture specific to MPLS technology as described in the MPLS architecture
document [RFC3031]. document [RFC3031].
skipping to change at page 4, line 27 skipping to change at page 4, line 27
| \ | \
v v v v
+-------------------+ +---------------------+ +-------------------+ +---------------------+
MPLS Static | ietf-mpls-static@ | | ietf-mpls-ldp.yang@ | . . MPLS Static | ietf-mpls-static@ | | ietf-mpls-ldp.yang@ | . .
LSP module +-------------------+ +---------------------+ LSP module +-------------------+ +---------------------+
@: not in this document, shown for illustration only @: not in this document, shown for illustration only
Figure 1: Relationship between MPLS modules Figure 1: Relationship between MPLS modules
The ietf-mpls module imports the followinig modules:
o ietf-routing defined in [RFC8349]
o ietf-routing-types defined in [RFC8294]
o ietf-interfaces defined in [RFC8343]
ietf-mpls module contains the following high-level types and ietf-mpls module contains the following high-level types and
groupings: groupings:
label-block-alloc-mode: label-block-alloc-mode:
A base YANG identity for supported label block allocation mode(s). A base YANG identity for supported label block allocation mode(s).
mpls-operations-type: mpls-operations-type:
An enumeration type that represents support possible MPLS An enumeration type that represents support possible MPLS
skipping to change at page 5, line 40 skipping to change at page 5, line 34
label-blocks: label-blocks:
A YANG grouping that describes the list of MPLS enabled interfaces A YANG grouping that describes the list of MPLS enabled interfaces
on a device. on a device.
2.3. Model Tree Diagram 2.3. Model Tree Diagram
The MPLS base tree diagram that follows the notation defined in The MPLS base tree diagram that follows the notation defined in
[RFC8340] is shown in Figure 2. [RFC8340] is shown in Figure 2.
module: ietf-mpls module: ietf-mpls
augment /rt:routing: augment /rt:routing:
+--rw mpls +--rw mpls
+--rw ttl-propagate? boolean +--rw ttl-propagate? boolean
+--rw label-blocks +--rw label-blocks
| +--rw label-block* [index] | +--rw label-block* [index]
| +--rw index string | +--rw index string
| +--rw start-label? rt-types:mpls-label | +--rw start-label? rt-types:mpls-label
| +--rw end-label? rt-types:mpls-label | +--rw end-label? rt-types:mpls-label
| +--rw block-allocation-mode? identityref | +--rw block-allocation-mode? identityref
| +--ro state | +--ro state
| +--ro free-labels-count? uint32 | +--ro free-labels-count? uint32
| +--ro inuse-labels-count? uint32 | +--ro inuse-labels-count? uint32
+--rw interface* [name] +--rw interface* [name]
+--rw name if:interface-ref +--rw name if:interface-ref
+--rw enabled? boolean +--rw enabled? boolean
+--rw mtu? uint32 +--rw mtu? uint32
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route: augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route:
+--ro local-label? rt-types:mpls-label +--ro mpls-enabled? boolean
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rt:next-hop/ +--ro local-label? rt-types:mpls-label
rt:next-hop-options/rt:simple-next-hop: augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rt:next-hop
+--ro mpls-label-stack /rt:next-hop-options/rt:simple-next-hop:
+--ro entry* [id] +--ro mpls-label-stack
+--ro id uint8 +--ro entry* [id]
+--ro label? rt-types:mpls-label +--ro id uint8
+--ro ttl? uint8 +--ro label? rt-types:mpls-label
+--ro traffic-class? uint8 +--ro ttl? uint8
augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rt:next-hop/ +--ro traffic-class? uint8
rt:next-hop-options/rt:next-hop-list/rt:next-hop-list/rt:next-hop: augment /rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/rt:next-hop
+--ro index? string /rt:next-hop-options/rt:next-hop-list/rt:next-hop-list
+--ro backup-index? string /rt:next-hop:
+--ro loadshare? uint16 +--ro index? string
+--ro role? nhlfe-role +--ro backup-index? string
+--ro mpls-label-stack +--ro loadshare? uint16
+--ro entry* [id] +--ro role? nhlfe-role
+--ro id uint8 +--ro mpls-label-stack
+--ro label? rt-types:mpls-label +--ro entry* [id]
+--ro ttl? uint8 +--ro id uint8
+--ro traffic-class? uint8 +--ro label? rt-types:mpls-label
augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input: +--ro ttl? uint8
+---w local-label? rt-types:mpls-label +--ro traffic-class? uint8
augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output/rt:route/ augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input:
rt:next-hop/rt:next-hop-options/rt:simple-next-hop: +---w local-label? rt-types:mpls-label
+-- index? string augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output/rt:route
+-- backup-index? string /rt:next-hop/rt:next-hop-options/rt:simple-next-hop:
+-- loadshare? uint16 +-- mpls-label-stack
+-- role? nhlfe-role +-- entry* [id]
+-- mpls-label-stack +-- id uint8
+-- entry* [id] +-- label? rt-types:mpls-label
+-- id uint8 +-- ttl? uint8
+-- label? rt-types:mpls-label +-- traffic-class? uint8
+-- ttl? uint8 augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output/rt:route
+-- traffic-class? uint8 /rt:next-hop/rt:next-hop-options/rt:next-hop-list
augment /rt:routing/rt:ribs/rt:rib/rt:active-route/rt:output/rt:route/ /rt:next-hop-list/rt:next-hop:
rt:next-hop/rt:next-hop-options/rt:next-hop-list/rt:next-hop-list/ +-- index? string
rt:next-hop: +-- backup-index? string
+-- index? string +-- loadshare? uint16
+-- backup-index? string +-- role? nhlfe-role
+-- loadshare? uint16 +-- mpls-label-stack
+-- role? nhlfe-role +-- entry* [id]
+-- mpls-label-stack +-- id uint8
+-- entry* [id] +-- label? rt-types:mpls-label
+-- id uint8 +-- ttl? uint8
+-- label? rt-types:mpls-label +-- traffic-class? uint8
+-- ttl? uint8
+-- traffic-class? uint8
Figure 2: MPLS Base tree diagram Figure 2: MPLS Base tree diagram
2.4. Model YANG Module 2.4. Model YANG Module
This section describes the "ietf-mpls" YANG module that provides base This section describes the "ietf-mpls" YANG module that provides base
components of the MPLS data model. Other YANG module(s) may import components of the MPLS data model. Other YANG module(s) may import
and augment the base MPLS module to add feature specific data. and augment the base MPLS module to add feature specific data.
<CODE BEGINS> file "ietf-mpls@2018-11-04.yang" The ietf-mpls module imports the followinig modules:
o ietf-routing defined in [RFC8349]
o ietf-routing-types defined in [RFC8294]
o ietf-interfaces defined in [RFC8343]
<CODE BEGINS> file "ietf-mpls@2019-02-24.yang"
module ietf-mpls { module ietf-mpls {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-mpls"; namespace "urn:ietf:params:xml:ns:yang:ietf-mpls";
/* Replace with IANA when assigned */
prefix "mpls"; prefix "mpls";
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference "RFC8349: A YANG Data Model for Routing Management"; reference "RFC8349: A YANG Data Model for Routing Management";
} }
import ietf-routing-types { import ietf-routing-types {
prefix "rt-types"; prefix "rt-types";
reference "RFC6991: Common YANG Data Types"; reference "RFC8294:Common YANG Data Types for the Routing Area";
} }
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
reference "RFC7223: A YANG Data Model for Interface Management"; reference "RFC7223: A YANG Data Model for Interface Management";
} }
organization "IETF MPLS Working Group"; organization "IETF MPLS Working Group";
contact contact
skipping to change at page 8, line 43 skipping to change at page 8, line 44
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note. // note.
// RFC Ed.: update the date below with the date of RFC publication // RFC Ed.: update the date below with the date of RFC publication
// and remove this note. // and remove this note.
revision "2018-11-04" { revision "2019-02-24" {
description description
"Latest revision: "Latest revision:
- Addressed review comments"; - Addressed review comments";
reference "RFC XXXX: A YANG Data Model for base MPLS"; reference "RFC XXXX: A YANG Data Model for base MPLS";
} }
/* Identities */ /* Identities */
identity mpls { identity mpls {
base rt:address-family; base rt:address-family;
description description
"This identity represents the MPLS address family."; "This identity represents the MPLS address family.";
} }
identity label-block-alloc-mode { identity label-block-alloc-mode {
description description
"Base identity label-block allocation mode"; "Base identity label-block allocation mode";
} }
skipping to change at page 13, line 43 skipping to change at page 13, line 45
other MPLS sub-features config, e.g. MPLS static LSP, MPLS other MPLS sub-features config, e.g. MPLS static LSP, MPLS
LDP LSPs, and Trafic Engineering MPLS LSP Tunnels, etc."; LDP LSPs, and Trafic Engineering MPLS LSP Tunnels, etc.";
uses globals; uses globals;
uses label-blocks; uses label-blocks;
uses interfaces-mpls; uses interfaces-mpls;
} }
} }
/* MPLS routes augmentation */ /* MPLS routes augmentation */
augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" { augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" {
when "derived-from-or-self(../../rt:address-family, " description
+ "'mpls:mpls')" { "This is augmentation for all MPLS routes.";
leaf mpls-enabled {
type boolean;
default 'false';
description description
"This augment is valid only for IPv4 unicast."; "Indicates whether MPLS is enabled for this route";
} }
description
"This leaf augments an MPLS routes.";
leaf local-label { leaf local-label {
when "../mpls-enabled = 'true'";
type rt-types:mpls-label; type rt-types:mpls-label;
description description "MPLS local label associated with the route.";
"MPLS local label.";
} }
} }
/* MPLS simple-next-hop augmentation */ /* MPLS simple-next-hop augmentation */
augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/" augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/"
+ "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" { + "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" {
when "derived-from-or-self(../../../rt:address-family, "
+ "'mpls:mpls')" {
description
"This augment is valid only for IPv4 unicast.";
}
description description
"Augment 'simple-next-hop' case in IPv4 unicast routes."; "Augment 'simple-next-hop' case in IP unicast routes.";
uses nhlfe-single-contents; uses nhlfe-single-contents {
when "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" +
"/mpls:mpls-enabled = 'true'";
}
} }
/* MPLS next-hop-list augmentation */ /* MPLS next-hop-list augmentation */
augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/" augment "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route/"
+ "rt:next-hop/rt:next-hop-options/rt:next-hop-list/" + "rt:next-hop/rt:next-hop-options/rt:next-hop-list/"
+ "rt:next-hop-list/rt:next-hop" { + "rt:next-hop-list/rt:next-hop" {
when "derived-from-or-self(../../../../../rt:address-family, "
+ "'mpls:mpls')" {
description
"This augment is valid only for IPv4 unicast.";
}
description description
"This leaf augments the 'next-hop-list' case of IPv4 unicast "This leaf augments the 'next-hop-list' case of IP unicast
routes."; routes.";
uses nhlfe-multiple-contents; uses nhlfe-multiple-contents {
when "/rt:routing/rt:ribs/rt:rib/rt:routes/rt:route" +
"/mpls:mpls-enabled = 'true'";
}
} }
/* MPLS RPC input augmentation */ /* MPLS RPC input augmentation */
augment augment
"/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input" { "/rt:routing/rt:ribs/rt:rib/rt:active-route/rt:input" {
description description
"This augment adds the input parameter of the 'active-route' "This augment adds the input parameter of the 'active-route'
action."; action.";
/* uses nhlfe-multiple-contents; */
leaf local-label { leaf local-label {
type rt-types:mpls-label; type rt-types:mpls-label;
description description
"MPLS local label."; "MPLS local label.";
} }
} }
/* MPLS RPC output augmentation */ /* MPLS RPC output augmentation */
augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/"
+ "rt:output/rt:route/" + "rt:output/rt:route/"
+ "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" { + "rt:next-hop/rt:next-hop-options/rt:simple-next-hop" {
description description
"This augment adds the destination prefix to the reply of the "This augment adds the destination prefix to the reply of the
'active-route' action."; 'active-route' action.";
uses nhlfe-multiple-contents; uses nhlfe-single-contents;
} }
augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/" augment "/rt:routing/rt:ribs/rt:rib/rt:active-route/"
+ "rt:output/rt:route/" + "rt:output/rt:route/"
+ "rt:next-hop/rt:next-hop-options/rt:next-hop-list/" + "rt:next-hop/rt:next-hop-options/rt:next-hop-list/"
+ "rt:next-hop-list/rt:next-hop" { + "rt:next-hop-list/rt:next-hop" {
description description
"This augment adds the destination prefix to the reply of the "This augment adds the destination prefix to the reply of the
'active-route' action."; 'active-route' action.";
uses nhlfe-multiple-contents; uses nhlfe-multiple-contents;
} }
skipping to change at page 16, line 44 skipping to change at page 16, line 42
6. Contributors 6. Contributors
Igor Bryskin Igor Bryskin
Huawei Technologies Huawei Technologies
email: Igor.Bryskin@huawei.com email: Igor.Bryskin@huawei.com
Himanshu Shah Himanshu Shah
Ciena Ciena
email: hshah@ciena.com email: hshah@ciena.com
7. Normative References 7. References
7.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
[RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol
Label Switching Architecture", RFC 3031,
DOI 10.17487/RFC3031, January 2001,
<https://www.rfc-editor.org/info/rfc3031>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004,
<https://www.rfc-editor.org/info/rfc3688>. <https://www.rfc-editor.org/info/rfc3688>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010,
<https://www.rfc-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
skipping to change at page 18, line 23 skipping to change at page 18, line 18
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349, Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018, DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>. <https://www.rfc-editor.org/info/rfc8349>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol [RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018, Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>. <https://www.rfc-editor.org/info/rfc8446>.
7.2. Informative References
[RFC3031] Rosen, E., Viswanathan, A., and R. Callon, "Multiprotocol
Label Switching Architecture", RFC 3031,
DOI 10.17487/RFC3031, January 2001,
<https://www.rfc-editor.org/info/rfc3031>.
Authors' Addresses Authors' Addresses
Tarek Saad Tarek Saad
Cisco Systems Inc Cisco Systems Inc
Email: tsaad@cisco.com Email: tsaad@cisco.com
Kamran Raza Kamran Raza
Cisco Systems Inc Cisco Systems Inc
 End of changes. 28 change blocks. 
113 lines changed or deleted 114 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/