<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
    <!ENTITY rfc2119 PUBLIC ''
      'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
]>

<rfc category="std" ipr='full3978' docName='draft-ietf-grow-mrt-08.txt'>

<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc toc="yes" ?>
<?rfc symrefs="yes" ?>
<?rfc sortrefs="yes"?>
<?rfc iprnotified="no" ?>
<?rfc strict="yes" ?>

<front>
    <title abbrev='MRT Format'>MRT routing information export format</title>
    <author initials="L" surname="Blunk" fullname="Larry Blunk">
	<organization abbrev="">Merit Network</organization>
	<address><email>ljb@merit.edu</email></address>
    </author>
    <author initials="M" surname="Karir" fullname="Manish Karir">
	<organization abbrev="">Merit Network</organization>
	<address><email>mkarir@merit.edu</email></address>
    </author>
    <author initials="C" surname="Labovitz" fullname="Craig Labovitz">
	<organization abbrev="">Arbor Networks</organization>
	<address><email>labovit@arbor.net</email></address>
    </author>
    <date year="2008" month="July" />
    <area>Operations</area>
    <workgroup>Network Working Group</workgroup>
    <keyword>MRT</keyword>
    <abstract>
    <t>This document describes the MRT format for routing information export.
This format was developed in concert with the Multi-threaded Routing
Toolkit (MRT) from whence the format takes it name.
The format can be used to export routing protocol messages,
state changes, and routing information base contents.</t>
    </abstract>
</front>
<middle>

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

<section anchor="intro" title="Introduction">
<t>Researchers and engineers often wish to analyze network behavior
by studying routing protocol transactions and routing information
base snapshots.  To this end, the MRT format was developed to
encapsulate, export, and archive this information in a standardized
data representation.
The BGP routing protocol, in particular, has been the subject of
extensive study and analysis which has been significantly aided
by the availability of the MRT format.
The MRT format was initially defined in
the <xref target="MRT PROG GUIDE">MRT Programmer's Guide</xref>.
</t>
<t>
This memo serves to document the MRT format as currently implemented
in publicly available software.  The format has been extended since
it's original introduction in the MRT toolset and these
extensions are also included in this memo.  Further extensions may
be introduced at a later date through additional definitions of the
MRT Type field and Subtype fields.
</t>
<t>Fields which contain multi-byte numeric values are encoded in
network byte order from most significant byte to least significant byte.
Fields which contain routing message fields are encoded in the same
order as they appear in the packet contents.
</t>
</section>
<section title="Basic MRT Format">
<t>
All MRT format messages have a common header which includes a timestamp,
Type, Subtype, and length field.  The header is followed by a message
field.  The MRT common header is illustrated below.
</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                           Timestamp                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |             Type              |            Subtype            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                             Length                            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Message... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>Header Field Descriptions:
<list style="empty">
<t><vspace />
Timestamp:
<list style="empty">
<t>Time in seconds since 1 January 1970 00:00:00 UTC</t>
</list></t>
<t><vspace />
Type:
<list style="empty">
<t>A 2-octet field that indicates the Type of information contained
in the message field.  Types 0 through 4 are informational
messages pertaining to the state of an MRT collector,
while Types 5 and higher are used to convey routing information.</t>
</list></t>
<t><vspace />
Subtype:
<list style="empty">
<t>A 2-octet field that is used to further distinguish message information within a particular message Type.</t>
</list></t>
<t><vspace />
Length:
<list style="empty">
<t>A 4-octet message length field.  The length field contains the number of bytes within the message.  The length field does not include the length of the MRT common header.</t>
</list></t>
<t><vspace />
Message:
<list style="empty">
<t>A variable length message.  The contents of this field are context
dependent upon the Type and Subtype fields.</t>
</list></t>
</list>
</t>
</section>
<section title="MRT Informational Types">
<t>The MRT format defines five Informational Type messages.  These messages
are intended to signal the state of an MRT data collector
and do not contain routing information.  These messages are
OPTIONAL and were largely intended for use when MRT messages are
sent over a network to a remote repository store.
However, MRT message repository stores have traditionally resided on the same
device as the collector and these Informational Types have seen limited
implementation.  Further, transport mechanisms for MRT messages are
considered to be outside the scope of this document.</t>
<t>The START and I_AM_DEAD messages MAY be used to provide a time reference
when a data collector begins and ends the collection process.</t> 
<t>The message field MAY contain an OPTIONAL message string for diagnostic
purposes. The message string encoding MUST follow the UTF-8 transformation
format.  The Subtype field is unused for these Types and SHOULD be set to 0.</t>
<t>The MRT Informational Types are defined below:</t>
<figure><artwork>
    1    START
    3    I_AM_DEAD
</artwork></figure>
<section title="START Type">
<t>The START Type indicates a collector is about to begin generating MRT
messages.</t>
</section>
<section title="I_AM_DEAD Type">
<t>An I_AM_DEAD MRT message indicates that a collector has shut down
and has stopped generating MRT messages.</t>
</section>
</section>
<section title="MRT Routing Information Types">
<t>The following Types are currently defined for the MRT format.  Types
11 and 12 were defined in the MRT Toolkit package.  The BGP4MP
Type, number 16, was initially defined in the Zebra routing software package.
The BGP4MP_ET, ISIS, and ISIS_ET Types were initially defined in the
Sprint Labs Python Routing Toolkit (PyRT).  The OSPFv3 and OSPFv3_ET Types
are newly defined types created for the OSPFv3 routing protocol.
</t>
<figure><artwork>
    11   OSPF
    12   TABLE_DUMP
    13   TABLE_DUMP_V2
    16   BGP4MP
    17   BGP4MP_ET
    32   ISIS
    33   ISIS_ET
    48   OSPFv3
    49   OSPFv3_ET
</artwork></figure>
<section title="OSPF Type">
<t>This Type supports the OSPF Protocol as defined in
<xref target="RFC2328">RFC 2328</xref>.  The Subtype field may
contain two possible values:</t>
<figure><artwork>
    0    OSPF_STATE_CHANGE
    1    OSPF_LSA_UPDATE
</artwork></figure>
<t>The format of the MRT Message field for the OSPF Type is as follows:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Remote IP address                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Local IP address                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                  OSPF Message Contents (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
<section title="TABLE_DUMP Type">
<t>The TABLE_DUMP Type is used to encode the contents of a
BGP Routing Information Base (RIB). Each RIB entry is encoded in
a distinct sequential MRT record.  The
Subtype field is used to encode whether the RIB entry contains IPv4 or
IPv6 addresses.  There are two possible values for the Subtype
as shown below.</t>
<figure><artwork>
    1    AFI_IPv4
    2    AFI_IPv6
</artwork></figure>
<t>The format of the TABLE_DUMP Type is illustrated below.</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           View #              |       Sequence number         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Prefix (variable)                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Prefix Length |    Status     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Originated Time                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    Peer IP address (variable)                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           Peer AS             |       Attribute Length        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                   BGP Attribute... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>The View field is normally 0 and is intended for cases where an
implementation may have multiple RIB views (such as a route server).
The Sequence field is a simple incremental counter for each
RIB entry.   A typical RIB dump will exceed the 16-bit bounds of this
counter and implementation should simply wrap back to zero and continue
incrementing the counter in such cases.</t>
<t>The Prefix field contains the IP address of a particular
RIB entry.  The size of this field is dependent on the value of
the Subtype for this message.  For AFI_IPv4, this field is 4 octets,
for AFI_IPv6, it is 16 octets in length.  The Prefix Length field
indicates the length in bits of the prefix mask for the preceding
Prefix field.</t>
<t>The Status octet is not used in the TABLE_DUMP Type and SHOULD be set
to 1.</t>
<t>The Originated Time contains the 4-octet time at which this prefix
was heard.  The value represents the time in seconds since
1 January 1970 00:00:00 UTC.</t>
<t>The Peer IP field is the IP address of the peer which provided
the update for this RIB entry.  As with the Prefix field, the
size of this field is dependent on the Subtype.  AFI_IPv4 indicates
a 4 octet field and an IPv4 address, while a Subtype of AFI_IPv6 requires
a 16 octet field and an IPv6 address.  The Peer AS field contains
the AS number of the peer.</t>
<t>Attribute length is the length of Attribute field and is 2-octets.
The Attribute field contains the attribute information for the RIB
entry.</t>
</section>
<section title="TABLE_DUMP_V2 Type">
<t>The TABLE_DUMP_V2 Type updates the TABLE_DUMP Type to include 32BIT
ASN support and full support for BGP Multiprotocol extensions.  It also
improves upon the space efficiency of the TABLE_DUMP Type by employing
an index table for peers and permitting a single MRT record per NLRI entry.
The following subtypes are used with the TABLE_DUMP_V2 Type.</t>
<figure><artwork>
    1    PEER_INDEX_TABLE 
    2    RIB_IPV4_UNICAST
    3    RIB_IPV4_MULTICAST
    4    RIB_IPV6_UNICAST
    5    RIB_IPV6_MULTICAST
    6    RIB_GENERIC
</artwork></figure>
<t>An initial PEER_INDEX_TABLE MRT record provides the BGP ID of the
collector, an optional view name, and a list of indexed peers.
Following the PEER_INDEX_TABLE MRT record, a series of MRT records
are used to encode RIB table entries.  This series of MRT records
use subtypes 2-6 and are separate from the PEER_INDEX_TABLE MRT
record itself and include full MRT record headers.  The header of the
PEER_INDEX_TABLE Subtype is shown below.   The View Name is optional
and, if not present, the View Name Length MUST be set to 0. The
View Name encoding MUST follow the UTF-8 transformation format.</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Collector BGP ID                         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       View Name Length        |     View Name (variable)      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |          Peer Count           |  
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>The format of the peer entries is shown below.  The PEER_INDEX_TABLE
record contains Peer Count peer entries.</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |   Peer Type   |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Peer BGP ID                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                   Peer IP address (variable)                  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Peer AS (variable)                     |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>The Peer Type, Peer BGP ID, Peer IP, and Peer AS fields are repeated
as indicated by the Peer Count field.  The position of the Peer in
the PEER_INDEX_TABLE is used as an index in the subsequent TABLE_DUMP_V2
MRT records.  The index number begins with 0.</t>
<t> The Peer Type field is a bit field
which encodes the type of the AS and IP address as follows:</t>
<figure><artwork>
    Bit 0 - unset for IPv4 Peer IP address, set for IPv6
    Bit 1 - unset when Peer AS field is 16 bits, set when it's 32 bits
</artwork></figure>
<t>The records which follow the PEER_INDEX_TABLE record constitute the RIB
entries and include a header which specifies a sequence number, NLRI,
and a count of the number of RIB entries which follow.</t>
<t>The format for the RIB_IPV4_UNICAST, RIB_IPV4_MULTICAST, RIB_IPV6_UNICAST,
and RIB_IPV6_MULTICAST headers are shown below.  The Prefix Length
and Prefix fields are encoded in the same manner as the BGP
NLRI encoding for IPV4 and IPV6 prefixes.
Namely, the Prefix field contains address prefixes followed by enough
trailing bits to make the end of the field fall on an octet
boundary.  Note that the value of trailing bits is irrelevant.</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Sequence number                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Prefix Length |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Prefix (variable)                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |         Entry Count           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
</artwork></figure>
<t>The RIB_GENERIC header is shown below.  It includes Address
Family Identifier (AFI), Subsequent AFI and a single NLRI entry.
The NLRI information is specific to the AFI and SAFI values.
An implementation which does not recognize particular AFI and SAFI
values SHOULD discard the remainder of the MRT record.</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Sequence number                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |    Address Family Identifier  |Subsequent AFI |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |     Network Layer Reachability Information (variable)         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |         Entry Count           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
</artwork></figure>
<t>The RIB entry headers are followed
by a series of RIB entries which are repeated Entry Count times.
These entries share a common format as shown below.  They include a
Peer Index from the PEER_INDEX_TABLE MRT record, an originated time for
the RIB entry, and the BGP path attribute length and attributes
encoded as provided in a BGP Update message.</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Peer Index            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |                         Originated Time                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
    |      Attribute Length         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    BGP Attributes... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>There is one exception to the encoding of BGP attributes for the BGP
MP_REACH_NLRI attribute (BGP Type Code 14) [RFC 4760].  Since the AFI,
SAFI, and NLRI information is already encoded in the MULTIPROTOCOL
header, only the Next Hop Address Length and Next Hop Address fields
are included.  The Reserved field is omitted.  The attribute length is
also adjusted to reflect only the length of the Next Hop Address Length
and Next Hop Address fields.</t>
</section>
<section title="BGP4MP Type">
<t>This Type was initially defined in the Zebra software package for
the BGP protocol with multiprotocol extension support as defined by
<xref target="RFC4760">RFC 4760</xref>.  It supersedes the
BGP, BGP4PLUS, BGP4PLUS_01 Types.  The BGP4MP Type has
six Subtypes which are defined as follows:</t>
<figure><artwork>
    0    BGP4MP_STATE_CHANGE
    1    BGP4MP_MESSAGE
    4    BGP4MP_STATE_CHANGE_AS4
    5    BGP4MP_MESSAGE_AS4
</artwork></figure>
<section title="BGP4MP_STATE_CHANGE Subtype">
<t>This record is used to encode state changes in the BGP finite state machine.
The BGP FSM states are encoded in the Old State and New State fields to
indicate the previous and current state.
The format is illustrated below:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Peer AS number        |        Local AS number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Interface Index        |        Address Family         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Peer IP address (variable)               | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Local IP address (variable)              | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            Old State          |          New State            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>The FSM states are
defined in <xref target="RFC4271">RFC 4271</xref>, Section 8.2.2.
Both the old state value and the new state value are encoded as 2-octet
numbers.  The state values are defined numerically as follows:</t>
<figure><artwork>
    1    Idle     
    2    Connect
    3    Active
    4    OpenSent
    5    OpenConfirm
    6    Established
</artwork></figure>
<t>The BGP4MP_STATE_CHANGE message also includes interface index
and Address Family fields.
The interface index provides the interface number of the peering session.
The index value is OPTIONAL and MAY be zero if unknown or unsupported.
The Address Family indicates what types of addresses are in the
the address fields.  At present, the following AFI Types are supported:</t>
<figure><artwork>
    1    AFI_IPv4
    2    AFI_IPv6
</artwork></figure>
</section>
<section title="BGP4MP_MESSAGE Subtype">
<t>This Subtype is used to encode BGP Messages.  It can be used to encode any
Type of BGP message.  In order to
determine the BGP message Type, the entire BGP message is included in
the BGP Message field.  This includes 16-octet marker, 2-ocet length, and
1-octet type fields.  Note that the BGP4MP_MESSAGE Subtype does not
support 32BIT AS numbers.  The BGP4MP_MESSAGE_AS4 Subtype updates the
BGP4MP_MESSAGE Subtype in order
to support these.  The BGP4MP_MESSAGE fields are shown below:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Peer AS number        |        Local AS number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Interface Index        |        Address Family         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Peer IP address (variable)               | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Local IP address (variable)              | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    BGP Message... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>The interface index provides the interface number of the peering session.
The index value is OPTIONAL and MAY be zero if unknown or unsupported.
The Address Family indicates what types of addresses are in the
the subsequent address fields.  At present, the following AFI Types
are supported:</t>
<figure><artwork>
    1    AFI_IPv4
    2    AFI_IPv6
</artwork></figure>
<t>Note that the Address Family value only applies to the IP addresses
contained in the MRT header.  The BGP4MP_MESSAGE Subtype is otherwise
transparent to the contents of the actual message which may contain
any valid AFI/SAFI values.  Only one BGP message may be encoded in
the BGP4MP_MESSAGE Subtype.</t>
</section>
<section title="BGP4MP_STATE_CHANGE_AS4 Subtype">
<t>This Subtype updates the BGP4MP_STATE_CHANGE Subtype to support 32BIT
Autonomous System numbers.  As with the BGP4MP_STATE_CHANGE Subtype,
the BGP FSM states are encoded in the Old State and New State fields
to indicate the previous and current state.  Aside from the extension
of the peer and local AS fields to 32 bits, this subtype is
otherwise identical to the BGP4MP_STATE_CHANGE Subtype.
The BGP4MP_STATE_CHANGE_AS4 fields are shown below:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Peer AS number                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Local AS number                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Interface Index        |        Address Family         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Peer IP address (variable)               | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Local IP address (variable)              | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            Old State          |          New State            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
<section title="BGP4MP_MESSAGE_AS4 Subtype">
<t>This Subtype updates the BGP4MP_MESSAGE Subtype to support 32BIT Autonomous
System numbers.  The BGP4MP_MESSAGE_AS4 Subtype is otherwise identical
to the BGP4MP_MESSAGE Subtype.  The BGP4MP_MESSAGE_AS4 fields are
shown below:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Peer AS number                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Local AS number                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Interface Index        |        Address Family         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Peer IP address (variable)               | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Local IP address (variable)              | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    BGP Message... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
</section>
<section title="BGP4MP_ET Type">
<t>This Type was initially defined in the Sprint Labs Python Routing
Toolkit (PyRT).  It extends the MRT common header field to
include a 32BIT microsecond timestamp field.  The type and subtype field
definitions remain as defined for the BGP4MP Type.  The 32BIT microsecond
timestamp immediately follows the length field in the MRT common header
and precedes all other fields in the message.  The 32BIT microsecond
field is included in the computation of the length field value.  The
MRT common header modification is illustrated below.</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                           Timestamp                           |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |             Type              |            Subtype            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                             Length                            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      microsecond timestamp                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Message... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
<section title="ISIS Type">
<t>This Type was initially defined in the Sprint Labs Python Routing and
supports the IS-IS routing protocol as defined in
<xref target="RFC1195">RFC 1195</xref>.
There is no Type specific header for the ISIS Type.  The Subtype code
for this Type is undefined.  The ISIS PDU directly follows the MRT common
header fields.</t>
</section>
<section title="ISIS_ET Type">
<t>The ISIS_ET Type extends the ISIS Type to support microsecond
timestamps.  As with the BGP4MP_ET Type, a 32BIT microsecond timestamp
field is appended to the MRT common header after the length field.  The
ISIS_ET Type is otherwise identical to the ISIS Type.</t>
</section>
<section title="OSPFv3 Type">
<t>The OSPFv3 Type
extends the original OSPF Type to support IPv6 addresses for the
OSPFv3 protocol as defined in <xref target="RFC2740">RFC 2740</xref>.
The format of the MRT Message field for the OSPFv3 Type is as follows:
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Address Family         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Remote IP address (variable)              | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Local IP address (variable)              | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                  OSPF Message Contents (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</t>
</section>
<section title="OSPFv3_ET Type">
<t>The OSPFv3_ET Type extends the OSPFv3 Type to support microsecond
timestamps.  As with the BGP4MP_ET Type, a 32BIT microsecond timestamp
field is appended to the MRT common header after the length field and its
length is included in the calculation of the length field value.  The
OSPFv3_ET Type is otherwise identical to the OSPFv3 Type.</t>
</section>
</section>
<section title="IANA Considerations">
<t>This section provides guidance to the Internet Assigned Numbers
Authority (IANA) regarding registration of values related to the MRT
specification, in accordance with BCP 26, <xref target="RFC2434">RFC 2434</xref>.</t>
<t>There are two name spaces in MRT that require registration: Type
Codes and Subtype Codes.</t> 
<t>MRT is not intended as a general-purpose specification for protocol
information export, and allocations
should not be made for purposes unrelated to routing protocol information
export.</t>
<t>The following policies are used here with the meanings defined in BCP
26: "Specification Required", "IETF Consensus".</t>
<section title="Type Codes">
<t>Type Codes have a range from 0 to 65535, of which 0-64 have been
allocated.  New Type Codes MUST be allocated starting at 65.  Type
Codes 65 - 32767 are to be assigned by IETF Consensus.  Type
Codes 32768 - 65535 are assigned based on Specification Required.</t>
</section>
<section title="Subtype Codes">
<t>Subtype Codes have a range from 0 to 65535.  Subtype definitions
are specific to a particular Type Code definition.  New Subtype Code
definition must reference an existing Type Code to which the Subtype
belongs.  As Subtype Codes are specific to Type Codes, new numbers must be
unique for the particular Type Code to which the Subtype applies.
Subtype Codes specific to the Type Codes 0 - 32767 are assigned by
IETF Consensus.  Subtype Codes specific to Type Codes 32768 - 65535
are assigned based on Specification Required.</t>
</section>
</section>
<section title="Security Considerations">
<t>The MRT Format utilizes a structure which can store routing protocol
information data.  The fields defined in the MRT specification are of
a descriptive nature and provide information that is useful to facilitate
the analysis of routing data.  As such, the fields currently defined in the
MRT specification do not in themselves create additional security risks,
since the fields are not used to induce any particular behavior by the
recipient application.
</t>
</section>
</middle>
<back>
  <references title="Normative References">
    <?rfc include="reference.RFC.1058" ?>
    <?rfc include="reference.RFC.1195" ?>
    <?rfc include="reference.RFC.2080" ?>
    <?rfc include="reference.RFC.2119" ?>
    <?rfc include="reference.RFC.2328" ?>
    <?rfc include="reference.RFC.2434" ?>
    <?rfc include="reference.RFC.2740" ?>
    <?rfc include="reference.RFC.4271" ?>
    <?rfc include="reference.RFC.4760" ?>
  </references>
  <references title="Informative References">
  <reference anchor="MRT PROG GUIDE" target="http://www.merit.edu/networkresearch/mrtprogrammer.pdf">
      <front>
      <title>MRT Programmer's Guide</title>
      <author initials="C" surname="Labovitz" fullname="Craig Labovitz">
	<organization abbrev="">Arbor Networks</organization>
	<address><email>labovit@arbor.net</email></address>
      </author>
      <date month="November" year="1999" />
      </front>
      <format type="HTML" target="http://www.merit.edu/networkresearch/mrtprogrammer.pdf" />
  </reference>
  </references>
<section anchor="app-deprecated" title="Deprecated MRT types">
<t>This Appendix lists deprecated MRT types.  These types are
documented for informational purposes only.  While documented
in some references, they are not known to have been generally
implemented.</t>
<section title="Deprecated MRT Informational Types">
<t>The deprecated MRT Informational Types are defined below:</t>
<figure><artwork>
    0    NULL 
    2    DIE
    4    PEER_DOWN
</artwork></figure>
<section title="NULL Type">
<t>The NULL Type message causes no operation.</t>
</section>
<section title="DIE Type">
<t>The DIE Type signals a remote MRT repository it should stop accepting
 messages.</t>
</section>
<section title="PEER_DOWN Type">
<t>The PEER_DOWN message was intended to indicate that a collector
had lost association with a BGP peer.  However, the MRT format provides
BGP state change message types which duplicate this functionality.</t>
</section>
</section>
<section title="Deprecated MRT Routing Information Types">
<figure><artwork>
    5    BGP 
    6    RIP
    7    IDRP
    8    RIPNG
    9    BGP4PLUS
    10   BGP4PLUS_01
</artwork></figure>
<section title="BGP Type">
<t>The BGP Type indicates the Message field contains BGP routing information.
The BGP routing protocol is defined in <xref target="RFC4271">RFC 4271</xref>.
The information in the message is dependent on the Subtype value.  The
BGP Type and all associated Subtypes below are considered to be
deprecated by the BGP4MP Type.</t>
<t>The following BGP Subtypes are defined for the MRT BGP Type.  As with
the BGP Type itself, they are all considered to be deprecated.
</t>
<figure><artwork>
    0    BGP_NULL
    1    BGP_UPDATE
    2    BGP_PREF_UPDATE
    3    BGP_STATE_CHANGE
    4    BGP_SYNC
    5    BGP_OPEN
    6    BGP_NOTIFY
    7    BGP_KEEPALIVE
</artwork></figure>
<section title="BGP_NULL Subtype">
<t>The BGP_NULL Subtype is a reserved Subtype.</t>
</section>
<section title="BGP_UPDATE Subtype">
<t>The BGP_UPDATE Subtype is used to encode BGP UPDATE messages. The format of the MRT Message field for this Subtype is as follows:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Peer AS number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Peer IP address                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Local AS number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Local IP address                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    BGP UPDATE Contents (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>The BGP UPDATE Contents include the entire BGP UPDATE message
which follows the BGP Message Header.  The BGP Message Header itself
is not included.  The Peer AS number and IP address fields contain the AS number
and IP address of the remote system which are generating the BGP
UPDATE messages.  The Local AS number and IP address fields contain the AS
number and IP address of the local collector system which is archiving
the messages.
</t>
</section>
<section title="BGP_PREF_UPDATE Subtype">
<t>The BGP_PREF_UPDATE Subtype is not defined.</t>
</section>
<section title="BGP_STATE_CHANGE Subtype">
<t>The BGP_STATE_CHANGE Subtype is used to record changes in the BGP
finite state machine.  These FSM states
are defined in <xref target="RFC4271">RFC 4271</xref>, Section 8.2.2.
Both the old state value and the new state value are encoded as 2-octet
numbers.  The state values are defined numerically as follows:</t>
<figure><artwork>
    1    Idle     
    2    Connect
    3    Active
    4    OpenSent
    5    OpenConfirm
    6    Established
</artwork></figure>
<t> The format of the MRT Message field is as follows:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Peer AS number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Peer IP address                        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            Old State          |          New State            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
<section title="BGP_SYNC Subtype">
<t>The BGP_SYNC Subtype was intended to convey a system file name where
BGP Table Dump messages should be recorded.  The View # was to correspond to
the View # provided in the TABLE_DUMP Type messages.  There are no known
implementations of this subtype and it SHOULD be ignored.
The following format applies to this Subtype:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        View #                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            File Name... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
<t>The File Name is terminated with a NULL (0) character.</t>
</section>
<section title="BGP_OPEN Subtype">
<t>The BGP_OPEN Subtype is used to encode BGP OPEN messages. The format of
the MRT Message field for this Subtype is the same as the BGP_UPDATE,
however, the last field contains the contents of the BGP OPEN message.
</t>
</section>
<section title="BGP_NOTIFY Subtype">
<t>The BGP_NOTIFY Subtype is used to encode BGP NOTIFICATION messages. The
format of the MRT Message field for this Subtype is the same as the BGP_UPDATE,
however, the last field contains the contents of the BGP NOTIFICATION message.
</t>
</section>
<section title="BGP_KEEPALIVE Subtype">
<t>The BGP_KEEPALIVE Subtype is used to encode BGP KEEPALIVE messages.
The format of the MRT Message field for this Subtype is the same as
the BGP_UPDATE, however, the last field contains no information.</t>
</section>
</section>
<section title="RIP Type">
<t>The RIP Type is used to export RIP protocol packets as defined in 
<xref target="RFC1058">RFC 1058</xref>.
The Subtype field is currently reserved for this Type and SHOULD be set to 0.</t>
<t>The format of the MRT Message field for the RIP Type is as follows:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Peer IP address                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                         Local IP address                      |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    RIP Message Contents (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
<section title="IDRP Type">
<t>The IDRP Type is used to export Inter-Domain-Routing Protocol (IDRP) protocol
information as defined in the ISO/IEC 10747 standard.  The Subtype field
is unused.  This Type is deprecated due to lack of deployment of IDRP.</t>
</section>
<section title="RIPNG Type">
<t>The RIPNG Type is used to export RIPNG protocol packets as defined in
<xref target="RFC2080">RFC 2080</xref>.  The RIPNG protocol updates the RIP
protocol to support IPv6.   The Subtype field is currently
reserved for this Type and SHOULD be set to 0.</t>
<t>The format of the MRT Message field for the RIPNG Type is as follows:</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    ~                        Peer IPv6 address                      ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                                                               |
    ~                        Local IPv6 address                     ~
    |                                                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                  RIPNG Message Contents (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
<section title="BGP4PLUS and BGP4PLUS_01 Types">
<t>The BGP4PLUS and BGP4PLUS_01 Types were defined to support IPv6 BGP
routing information.  The BGP4PLUS Type
was specified based on the initial Internet Draft for Multiprotocol
Extensions to BGP-4.  The BGP4PLUS_01 Type was specified to correspond to
the -01 revision of this Internet Draft.  The two Types share the
same definitions in terms of their MRT format specifications.</t>
<t>The Subtype field definitions are shared with the BGP Type, however, the
address fields in the BGP_UPDATE, BGP_OPEN, BGP_NOTIFY, BGP_KEEPALIVE,
and BGP_STATE_CHANGE Subtype messages
are extended to 16 octets for IPv6 addresses.  As with the BGP Type,
the BGP4PLUS and BGP4PLUS_01 Types are deprecated as they superseded
by the BGP4MP Type.</t>
</section>
<section title="Deprecated BGP4MP Subtypes">
<t>The following two subtypes of the BGP4MP Type are considered
to be deprecated.</t>
<figure><artwork>
    2    BGP4MP_ENTRY
    3    BGP4MP_SNAPSHOT
</artwork></figure>
<section title="BGP4MP_ENTRY Subtype">
<t>This Subtype is similar to
the TABLE_DUMP Type and is used to record RIB table entries. It extends
the TABLE_DUMP Type to include true multiprotocol support.  However, this
Type does not support 32BIT AS numbers and has not been widely implemented.
This Type is deprecated in favor of the TABLE_DUMP_V2 which includes 32BIT
AS number support and a more compact format.
</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |         Peer AS number        |        Local AS number        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Interface Index        |        Address Family         |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Peer IP address (variable)               | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                      Local IP address (variable)              | 
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |           View #              |             Status            |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                        Time last change                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        Address Family         |    SAFI       | Next-Hop-Len  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Next Hop Address (variable)               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    | Prefix Length  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                     Address Prefix (variable)                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |       Attribute Length        |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |                    BGP Attribute... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
<section title="BGP4MP_SNAPSHOT Subtype">
<t>This Subtype was intended to convey a system file name where
BGP4MP_ENTRY messages should be recorded.
It is similar to the BGP_SYNC message Subtype and is deprecated.
</t>
<figure><artwork>
     0                   1                   2                   3
     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |        View #                 |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |            File Name... (variable)
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>
</section>
</section>
</section>
</section>
</back>
</rfc>
