< draft-irtf-nmrg-sming-inet-modules-00.txt   draft-irtf-nmrg-sming-inet-modules-01.txt >
Network Working Group J. Schoenwaelder Network Working Group F. Strauss
Internet-Draft F. Strauss Internet-Draft J. Schoenwaelder
Expires: May 11, 2001 TU Braunschweig Expires: May 25, 2001 TU Braunschweig
November 10, 2000 K. McCloghrie
Cisco Systems
November 24, 2000
SMIng Internet Core Modules SMIng Internet Protocol Core Modules
draft-irtf-nmrg-sming-inet-modules-00.txt draft-irtf-nmrg-sming-inet-modules-01
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with This document is an Internet-Draft and is in full conformance with
all provisions of Section 10 of RFC2026. all provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as other groups may also distribute working documents as
Internet-Drafts. Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six Internet-Drafts are draft documents valid for a maximum of six
months and may be updated, replaced, or obsoleted by other documents months and may be updated, replaced, or obsoleted by other documents
at any time. It is inappropriate to use Internet-Drafts as reference at any 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."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on May 11, 2001. This Internet-Draft will expire on May 25, 2001.
Abstract Abstract
This memo defines SMIng [1] modules for commonly used Internet This memo presents SMIng modules that introduce commonly used
network layer addressing information. The intent is that these Internet Protocol specific data definitions. They are provided so
definitions will be imported and used in other SMIng modules that that other SMIng modules that would otherwise define their own
would otherwise define their own representations. representations can import them from a common place.
This document builds on RFC 2851 [3] and extends it in many ways. The IRTF-NMRG-INET module defines types and classes for representing
Internet Protocol specific information. It builds on RFC 2851 and
extends it in several ways.
Copyright Notice The IRTF-NMRG-INET-FILTER module extends the IRTF-NMRG-INET module
by providing generic definitions for typical IP packet filters.
Copyright Notice
Copyright (C) The Internet Society (2000). All Rights Reserved. Copyright (C) The Internet Society (2000). All Rights Reserved.
Table of Contents Table of Contents
1. IRTF-NMRG-INET . . . . . . . . . . . . . . . . . . . . . . . . 3 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. IRTF-NMRG-INET-FILTER . . . . . . . . . . . . . . . . . . . . 8 2. IRTF-NMRG-INET . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Security Considerations . . . . . . . . . . . . . . . . . . . 10 3. IRTF-NMRG-INET-FILTER . . . . . . . . . . . . . . . . . . . . 8
4. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 11 4. Usage Examples . . . . . . . . . . . . . . . . . . . . . . . . 10
5. Security Considerations . . . . . . . . . . . . . . . . . . . 12
6. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 12
References . . . . . . . . . . . . . . . . . . . . . . . . . . 12 References . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 12 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . 12
A. OPEN ISSUES . . . . . . . . . . . . . . . . . . . . . . . . . 13
1. IRTF-NMRG-INET 1. Introduction
SMIng [1] modules frequently need to represent Internet Protocol
specific information such as IP addresses. This memo contains SMIng
modules which define a core set of SMIng types and classes to be
imported by other SMIng modules.
The IRTF-NMRG-INET module provides core SMIng data definitions for
the Internet Protocol suite. This module is derived from [3].
The IRTF-NMRG-INET-FILTER module provides SMIng data definitions
that model Internet Protocol filters and components thereof.
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 [2].
2. IRTF-NMRG-INET
module IRTF-NMRG-INET { module IRTF-NMRG-INET {
organization "IRTF Network Management Research Group (NMRG), organization "IRTF Network Management Research Group (NMRG)";
Network Management Group, TU Braunschweig";
contact "Juergen Schoenwaelder contact "Juergen Schoenwaelder
TU Braunschweig TU Braunschweig
Bueltenweg 74/75 Bueltenweg 74/75
38106 Braunschweig 38106 Braunschweig
Germany Germany
Phone: +49 531 391-3266 Phone: +49 531 391-3289
EMail: schoenw@ibr.cs.tu-bs.de"; EMail: schoenw@ibr.cs.tu-bs.de";
description "This module defines core types and classes for description "This module defines core types and classes for
the Internet protocol suite. This document builds the Internet Protocol suite. This document builds
upon RFC 2851 and extends it in various ways." upon RFC 2851 and extends it in various ways.";
revision { revision {
date "2000-11-10"; date "2000-11-23";
description "Initial revision."; description "Initial revision, published as RFC XXXX.";
}; };
// //
// core type definitions for the Internet Protocol suite // Core type definitions for the Internet Protocol suite.
// //
typedef InetPort { typedef InetPortNumber {
type Unsigned32 (0..65535); type Unsigned32 (0..65535);
description description
"Represents a 16 bit port number of an Internet "Represents a 16 bit port number of an Internet
transport layer protocol."; transport layer protocol. Port numbers are assigned by
IANA. A list of all assignments is available at the
following location:
http://www.isi.edu/in-notes/iana/assignments/port-numbers";
reference
"STD 6 (RFC 768), STD 7 (RFC 793) and RFC 2960";
}; };
typedef InetProtocol { typedef InetProtocolNumber {
type Unsigned32 (0..255); type Unsigned32 (0..255);
description description
"Represents an Internet Protocol (IP) protocol number."; "Represents an 8 bit protocol number which indicates the
next upper-layer protocol used in the data portion of an
Internet datagram. Protocol numbers are assigned by
IANA. A list of all assignments is available at the
following location:
http://
www.isi.edu/in-notes/iana/assignments/protocol-numbers";
reference
"STD 5 (RFC 791) Section 3.1 and RFC 2460 Section 3.";
};
typedef InetDiffServCodePoint {
type Unsigned32 (-1, 0..63);
description
"Represents a 6 bit Differentiated Services Code Point
(DSCP). The special value -1 may be used to indicate
that the DSCP is not relevant.";
reference
"RFC 2474";
}; };
typedef InetAddress { typedef InetAddress {
type OctetString; type OctetString;
description description
"Represents a generic IP version neutral Internet address."; "Represents a generic IP version neutral Internet address.";
}; };
typedef InetAddressMask { typedef InetAddressMask {
type Unsigned32; type Unsigned32;
description description
"Represents an address prefix length (traditionally called "Represents an address prefix length (traditionally called
an address mask) for generic Internet addresses."; an address mask) for generic Internet addresses.";
}; };
// //
// Internet Protocol address types for specific IP versions // Internet Protocol address types for specific IP versions.
// //
typedef InetAddressType { typedef InetAddressType {
type Enumeration (unknown(0), ipv4(1), ipv6(2), dns(16)); type Enumeration (unknown(0), ipv4(1), ipv6(2),
dns(16));
description description
"A value that represents a type of Internet address. "A value that represents a type of Internet address.
unknown(0) An unknown address type. This value MUST unknown(0) An unknown address type. This value MUST
be used if the value of the corresponding be used if the value of the corresponding
address object is a zero-length string. address attribute is a zero-length string.
It may also be used to indicate an IP address It may also be used to indicate an IP address
which is not in one of the formats defined which is not in one of the formats defined
below. below.
ipv4(1) An IPv4 address as defined by the ipv4(1) An IPv4 address as defined by the
InetAddressIPv4 type. InetAddressIPv4 type.
ipv6(2) An IPv6 address as defined by the ipv6(2) An IPv6 address as defined by the
InetAddressIPv6 type. InetAddressIPv6 type.
dns(16) A DNS domain name as defined by the dns(16) A DNS domain name as defined by the
InetAddressDNS type. InetAddressDNS type.
The type SHOULD NOT be subtyped in object type definitions The type SHOULD NOT be subtyped to support future
to support future extensions. It MAY be subtyped in extensions. It MAY be subtyped in compliance statements
compliance statements in order to require only a subset of in order to require only a subset of these address types
these address types for a compliant implementation."; for a compliant implementation.";
}; };
typedef InetAddressIPv4 { typedef InetAddressIPv4 {
type InetAddress (4); type InetAddress (4);
format "1d.1d.1d.1d"; format "1d.1d.1d.1d";
description description
"Represents a 32 bit IP version 4 (IPv4) network address: "Represents a 32 bit IP version 4 (IPv4) network address:
octets contents encoding octets contents encoding
1-4 IPv4 address network-byte order 1-4 IPv4 address network-byte order
If there is a corresponding InetAddressType attribute, If there is a corresponding InetAddressType attribute,
its value MUST be ipv4(1)."; its value MUST be ipv4(1).";
reference
reference "STD 5 (RFC 791)"; "STD 5 (RFC 791)";
}; };
typedef InetAddressIPv6 { typedef InetAddressIPv6 {
type InetAddress (16 | 20); type InetAddress (16 | 20);
format "2x:2x:2x:2x:2x:2x:2x:2x%4d"; format "2x:2x:2x:2x:2x:2x:2x:2x%4d";
description description
"Represents an IPv6 network address: "Represents a 128 bit IPv6 network address plus an
optional 32 bit scope identifier:
octets contents encoding octets contents encoding
1-16 IPv6 address network-byte order 1-16 IPv6 address network-byte order
17-20 scope identifier network-byte order 17-20 scope identifier network-byte order
If there is a corresponding InetAddressType attribute, If there is a corresponding InetAddressType attribute,
its value MUST be ipv6(2). its value MUST be ipv6(2).
The scope identifier (bytes 17-20) MUST NOT be present The scope identifier (bytes 17-20) MUST NOT be present
for global IPv6 addresses. For non-global IPv6 addresses for global IPv6 addresses. For non-global IPv6 addresses
(e.g. link-local or site-local addresses), the scope (e.g. link-local or site-local addresses), the scope
identifier MUST always be present. It contains a link identifier MUST always be present. It contains a link
identifier for link-local and a site identifier for identifier for link-local and a site identifier for
site-local IPv6 addresses. site-local IPv6 addresses.
The scope identifier MUST disambiguate identical address The scope identifier MUST disambiguate identical address
values. For link-local addresses, the scope identifier will values. For link-local addresses, the scope identifier will
skipping to change at page 5, line 41 skipping to change at page 6, line 35
IF-MIB, RFC 2233) of the interface on which the address is IF-MIB, RFC 2233) of the interface on which the address is
configured. configured.
The scope identifier may contain the special value 0 The scope identifier may contain the special value 0
which refers to the default scope. The default scope which refers to the default scope. The default scope
may be used in cases where the valid scope identifier may be used in cases where the valid scope identifier
is not known (e.g., a management application needs to is not known (e.g., a management application needs to
write a site-local InetAddressIPv6 address without write a site-local InetAddressIPv6 address without
knowing the site identifier value). The default scope knowing the site identifier value). The default scope
SHOULD NOT be used as an easy way out in cases where SHOULD NOT be used as an easy way out in cases where
the scope identifier for a non-global IPv6 is known."; the scope identifier for a non-global IPv6 address is
known.";
reference
"RFC 2373";
}; };
typedef InetAddressDNS { typedef InetAddressDNS {
type InetAddress (1..255); type InetAddress (1..255);
format "255a"; format "255a";
description description
"Represents a DNS domain name. The name SHOULD be "Represents a DNS domain name. The name SHOULD be
fully qualified whenever possible. fully qualified whenever possible.
If there is a corresponding InetAddressType attribute, If there is a corresponding InetAddressType attribute,
its value MUST be dns(16). its value MUST be dns(16).
The descriptions of objects of this type must fully describe The descriptions of attributes of this type must fully
how (and when) such names are to be resolved to IP describe how (and when) such names are to be resolved
addresses."; to IP addresses.";
}; };
// //
// generic Internet Protocol endpoints // Core class definitions for the Internet Protocol suite.
// //
class InetEndpoint { class InetNetworkEndpoint {
attribute InetAddressType type { attribute InetAddressType type {
access readwrite; access readwrite;
description description
"The type of this Internet Protocol endpoint."; "The type of this Internet Protocol endpoint.";
}; };
attribute InetAddress address { attribute InetAddress address {
typemap type { typemap type {
map ipv4 InetAddressIPv4, map ipv4 InetAddressIPv4;
map ipv6 InetAddressIPv6, map ipv6 InetAddressIPv6;
map dns InetAddressDNS map dns InetAddressDNS;
}; };
access readwrite; access readwrite;
description description
"The address of this Internet Protocol endpoint. "The address of this Internet Protocol endpoint.
An address value is always interpreted within the An address value is always interpreted within the
context of the type value. The type attribute defines context of the type value. The type attribute defines
the context."; the context.";
}; };
description description
"...";. "This class defines a generic Internet Protocol endpoint
at the network layer.";
}; };
// class InetTransportEndpoint {
// generic Internet Protocol subnets attribute InetNetworkEndpoint address {
// description
"The network layer endpoint.";
};
attribute InetPortNumber port {
description
"The transport layer port number.";
};
description
"This class defines a generic transport layer endpoint for
the Internet Protocol suite.";
};
class InetSubnet { class InetSubnet {
attribute InetEndpoint endpoint { attribute InetNetworkEndpoint endpoint {
access readwrite;
description description
"An endpoint in the Internet Protocol subnet."; "A network layer endpoint within the Internet
Protocol subnet.";
} }
attribute InetAddressMask mask { attribute InetAddressMask mask {
access readwrite; description
description "The address mask which identifies the subnet
"The address mask which identifies the subnet portion of the address of the network layer
portion of the address of the endpoint."; endpoint.";
}; };
description description
"...";. "This class defines a generic Internet Protocol subnet.";
}; };
// class InetPortNumberRange {
// generic Internet Protocol transport layer endpoints attribute InetPortNumber start {
// access readwrite;
description
class InetTransportEndpoint { "The first port number in the port range.";
attribute InetEndpoint address { };
access readwrite; attribute InetPortNumber end {
description access readwrite;
""; description
}; "The last port number in the port range.";
attribute InetPort port; };
access readwrite;
description
"";
description description
"...";. "This class represents a range of consecutive Internet
transport layer port numbers. The start and end port
numbers are included in the range of consecutive port
numbers.";
}; };
}; };
2. IRTF-NMRG-INET-FILTER 3. IRTF-NMRG-INET-FILTER
module IRTF-NMRG-INET-FILTER { module IRTF-NMRG-INET-FILTER {
import IRTF-NMRG-INET (InetPort, InetSubnet); import IRTF-NMRG-INET (InetProtocolNumber,
InetDiffServCodePoint,
InetPortNumberRange,
InetSubnet);
import IRTF-NMRG-SMING (Counter64,
DisplayString255);
organization "IRTF Network Management Research Group (NMRG), organization "IRTF Network Management Research Group (NMRG)";
Network Management Group, TU Braunschweig";
contact "Juergen Schoenwaelder contact "Juergen Schoenwaelder
TU Braunschweig TU Braunschweig
Bueltenweg 74/75 Bueltenweg 74/75
38106 Braunschweig 38106 Braunschweig
Germany Germany
Phone: +49 531 391-3266 Phone: +49 531 391-3289
EMail: schoenw@ibr.cs.tu-bs.de"; EMail: schoenw@ibr.cs.tu-bs.de";
description "This module defines core filter classes for description "This module defines core filter classes for
the Internet protocol suite."; the Internet protocol suite.";
revision { revision {
date "2000-11-10"; date "2000-11-23";
description "Initial revision."; description "Initial revision.";
}; };
class InetPortRange { class Filter {
attribute InetPort start { attribute DisplayString255 name {
access readwrite; access readwrite;
description description
"The first port number in the port range."; "The administratively assigned name of the filter.";
}; };
attribute InetPort end { attribute Counter64 packets {
access readwrite; access readonly;
units "packets";
"The number of packets matching this filter.";
};
attribute Counter64 bytes {
access readonly;
units "bytes";
description description
"The last port number in the port range."; "The number of bytes contained in packets matching
this filter.";
}; };
description description
"This class represents a range of consecutive Internet "A generic filter. Classes derived from this generic filter
transport layer port numbers. The start and end port must introduce additional attributes which define the
numbers are included in the range of consecutive port filter parameters.";
numbers.";
}; };
class BaseFilter { class InetFilter : Filter {
attribute DisplayString name { attribute InetSubnet srcSubNet {
access readwrite; description
description "..."; "The subnet to match against the packet's
}; source address.";
attribute Counter64 byteCount { };
access readonly; attribute InetSubnet dstSubNet {
description "..."; description
}; "The subnet to match against the packet's
attribute Counter64 packetCount { destination address.";
access readonly;
description "..."; };
attribute InetPortRange srcPortRange {
description
"The port range to match against the packet's
source port."
};
attribute InetPortRange dstPortRange {
description
"The port range to match against the packet's
destination port.";
};
attribute InetProtocolNumber protocol {
access readwrite;
description
"The protocol number to match against the packet's
Internet Protocol version. A value of zero
matches any IP version.";
};
attribute InetDiffServCodePoint dscp {
access readwrite;
description
"The value that the DSCP in the packet must have to
match this entry. A value of -1 indicates that a
specific DSCP value has not been defined and thus all
DSCP values are considered a match.";
}
description
"This class represents a generic Internet Protocol filter.
Classes derived from this class may add attributes which
define further filter criteria.";
}; };
}; };
class FiveTupleFilter : BaseFilter { 4. Usage Examples
attribute InetSubnet srcSubNet {
description "..."; // description optional?! The following example shows how a TCP connection might be modelled.
}; The class definition below could be used to derive an IP version
attribute InetSubnet dstSubNet { independent MIB for representing open TCP connections.
description "...";
}; module IRTF-NMRG-TCP {
attribute InetPortRange srcPortRange {
description "..."; import IRTF-NMRG-INET (InetTransportEndpoint);
};
attribute InetPortRange dstPortRange { // ...
description "...";
typedef TcpConnectionState {
type Enumeration (closed(1), listen(2), synSent(3),
synReceived(4), established(5),
finWait1(6), finWait2(7), closeWait(8),
lastAck(9), closing(10), timeWait(11));
description
"The state of a TCP connection.";
reference
"STD 7 (RFC 793)";
}; };
attribute InetProtocol protocol {
access readwrite; typedef TcpConnectionCtrl {
description "..."; type Enumeration (none(0), delete(1));
description
"The enumerated numbers defined by this type allow to control
TCP connections. The value none(0) will be reported whenever
an attribute of this type is read.
The only value which may be written is delete(1). If a
management station writes the value delete(1), then this
has the effect of deleting the TCB (as defined in RFC 793)
of the corresponding connection on the managed node,
resulting in immediate termination of the connection.
As an implementation-specific option, a RST segment may be
sent from the managed node to the other TCP endpoint (note
however that RST segments are not sent reliably).";
}; };
};
class TcpConnection {
attribute InetTransportEndpoint local {
description
"The local endpoint of the TCP connection.";
};
attribute InetTransportEndpoint remote {
description
"The remote endpoint of the TCP connection.";
};
attribute TcpConnectionState state {
access readonly;
description
"The current state of the TCP connection.";
};
attribute TcpConnectionCtrl ctrl {
access readwrite;
description
"A control which allows to change the state of the
TCP connection.";
};
description
"This class contains information about a particular current
TCP connection.";
};
}; };
3. Security Considerations 5. Security Considerations
This module does not define any management objects. Instead, it This module does not define any management objects. Instead, it
defines a set of SMIng types and classes which may be used by other defines a set of SMIng types and classes which may be used by other
SMIng modules to define management objects. SMIng modules to define management objects. These data definitions
have no security impact on the Internet.
Meaningful security considerations can only be written in the
modules that define management objects.
4. Acknowledgments 6. Acknowledgments
The document builds on RFC 2851 [3], which was written by M. This document was produced by the Network Management Research Group
Daniele, B. Haberman, S. Routhier and J. Schoenwaelder. (NMRG) of the Internet Research Task Force (IRTF).
The authors would like to thank Randy Bush, Richard Draves, Mark Some definitions in this document are derived from RFC 2851 [3],
Ellison, Bill Fenner, Jun-ichiro Hagino, Tim Jenkins, Glenn which was written by M. Daniele, B. Haberman, S. Routhier and J.
Mansfield, Keith McCloghrie, Thomas Narten, Erik Nordmark, Peder Schoenwaelder.
Chr. Norgaard, Randy Presuhn, Andrew Smith, Dave Thaler, Kenneth
White, Bert Wijnen, and Brian Zill for their comments and
suggestions.
References References
[1] Strauss, F., "SMIng - A new Structure of Management [1] Strauss, F., Schoenwaelder, J., McCloghrie, K., "SMIng - Next
Information", October 2000. Generation Structure of Management Information",
draft-irtf-nmrg-sming-04.txt, November 2000.
[2] Bradner, S., "Key words for use in RFCs to Indicate Requirement [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", RFC 2119, BCP 14, March 1997. Levels", RFC 2119, BCP 14, March 1997.
[3] Daniele, M., Haberman, B., Routhier, S., Schoenwaelder, J., [3] Daniele, M., Haberman, B., Routhier, S., Schoenwaelder, J.,
"Textual Conventions for Internet Network Addresses", RFC 2851, "Textual Conventions for Internet Network Addresses", RFC 2851,
June 2000. June 2000.
Authors' Addresses Authors' Addresses
Juergen Schoenwaelder Frank Strauss
TU Braunschweig TU Braunschweig
Bueltenweg 74/75 Bueltenweg 74/75
38106 Braunschweig 38106 Braunschweig
Germany Germany
Phone: +49 531 391-3289 Phone: +49 531 391-3266
EMail: schoenw@ibr.cs.tu-bs.de EMail: strauss@ibr.cs.tu-bs.de
URI: http://www.ibr.cs.tu-bs.de/ URI: http://www.ibr.cs.tu-bs.de/
Juergen Schoenwaelder
Frank Strauss
TU Braunschweig TU Braunschweig
Bueltenweg 74/75 Bueltenweg 74/75
38106 Braunschweig 38106 Braunschweig
Germany Germany
Phone: +49 531 391-3266 Phone: +49 531 391-3289
EMail: strauss@ibr.cs.tu-bs.de EMail: schoenw@ibr.cs.tu-bs.de
URI: http://www.ibr.cs.tu-bs.de/ URI: http://www.ibr.cs.tu-bs.de/
Keith McCloghrie
Cisco Systems
170 West Tasman Drive
San Jose, CA 95134-1706
USA
Phone: +1 408 526 5260
EMail: kzm@cisco.com
URI: http://www.cisco.com/
Appendix A. OPEN ISSUES
1. There might be more core type or class definitions that should
go into the IRTF-NMRG-SMING-INET module.
2. The filters probably need more work to cover more cases.
3. Is it useful to include more examples, e.g. on the usage of
filters or subnets?
4. Does the InetDiffServCodePoint type definition really belong
into this module?
5. 255a or 255t? Length restriction?
6. Check the attribute identifiers and descriptions of
InetTransportEndpoint and InetSubnet: when should the term
endpoint be used, and when address? Should an InetProtocolNumber
attribute be added to InetTransportEndpoint?
Full Copyright Statement Full Copyright Statement
Copyright (C) The Internet Society (2000). All Rights Reserved. Copyright (C) The Internet Society (2000). All Rights Reserved.
This document and translations of it may be copied and furnished to This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it others, and derivative works that comment on or otherwise explain it
or assist in its implmentation may be prepared, copied, published or assist in its implmentation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph kind, provided that the above copyright notice and this paragraph
are included on all such copies and derivative works. However, this are included on all such copies and derivative works. However, this
 End of changes. 83 change blocks. 
176 lines changed or deleted 350 lines changed or added

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