MRT format data parser
Python

README.rst

mrtparse

mrtparse is a module to read and analyze the MRT format data.
The MRT format can be used to export routing protocol messages, state changes, and routing information base contents, and is defined in RFC6396.
Programs like Quagga / Zebra, BIRD, OpenBGPD and PyRT can dump the MRT format data.
You can also download archives from the Route Views Projects, RIPE NCC.

Supported MRT types

Name Value
TABLE_DUMP 12
TABLE_DUMP_V2 13
BGP4MP 16
BGP4MP_ET 17

Supported TABLE_DUMP subtypes

Name Value
AFI_IPv4 1
AFI_IPv6 2

Supported TABLE_DUMP_V2 subtypes

Name Value
PEER_INDEX_TABLE 1
RIB_IPV4_UNICAST 2
RIB_IPV4_MULTICAST 3
RIB_IPV6_UNICAST 4
RIB_IPV6_MULTICAST 5
RIB_GENERIC 6
RIB_IPV4_UNICAST_ADDPATH 8
RIB_IPV4_MULTICAST_ADDPATH 9
RIB_IPV6_UNICAST_ADDPATH 10
RIB_IPV6_MULTICAST_ADDPATH 11
RIB_GENERIC_ADDPATH 12

Supported BGP4MP/BGP4MP_ET subtypes

Name Value
BGP4MP_STATE_CHANGE 0
BGP4MP_MESSAGE 1
BGP4MP_MESSAGE_AS4 4
BGP4MP_STATE_CHANGE_AS4 5
BGP4MP_MESSAGE_LOCAL 6
BGP4MP_MESSAGE_AS4_LOCAL 7
BGP4MP_MESSAGE_ADDPATH 8
BGP4MP_MESSAGE_AS4_ADDPATH 9
BGP4MP_MESSAGE_LOCAL_ADDPATH 10
BGP4MP_MESSAGE_AS4_LOCAL_ADDPATH 11

Supported BGP capabilities

Name Value
Multiprotocol Extensions for BGP-4 1
Route Refresh Capability for BGP-4 2
Outbound Route Filtering Capability 3
Graceful Restart Capability 64
Support for 4-octet AS number capability 65
ADD-PATH Capability 69

Supported BGP attributes

Name Value
ORIGIN 1
AS_PATH 2
NEXT_HOP 3
MULTI_EXIT_DISC 4
LOCAL_PREF 5
ATOMIC_AGGREGATE 6
AGGREGATOR 7
COMMUNITY 8
ORIGINATOR_ID 9
CLUSTER_LIST 10
MP_REACH_NLRI 14
MP_UNREACH_NLRI 15
EXTENDED_COMMUNITIES 16
AS4_PATH 17
AS4_AGGREGATOR 18
AIGP 26
LARGE_COMMUNITY 32
ATTR_SET 128

Requirements

Python2 or Python3 or PyPy or PyPy3

Installation

$ pip install mrtparse

or

$ git clone https://github.com/YoshiyukiYamauchi/mrtparse.git
$ cd mrtparse
$ python setup.py install
running install
running build
running build_py
running install_lib
copying build/lib/mrtparse.py -> /Library/Python/2.7/site-packages
byte-compiling /Library/Python/2.7/site-packages/mrtparse.py to mrtparse.pyc
running install_egg_info
Writing /Library/Python/2.7/site-packages/mrtparse-0.8-py2.7.egg-info

Usage

from mrtparse import *

or

import mrtparse

Programming

First, import the module.

from mrtparse import *
And pass a MRT format data as a filepath string or file object to a class Reader().
It is also supported gzip and bzip2 format.
You can retrieve each entry from the returned object using a loop and then process it.
d = Reader(f)
for m in d:
    <statements>

We have prepared some example scripts and sample data in "examples" and "samples" directory.

Authors

Tetsumune KISO t2mune@gmail.com
Yoshiyuki YAMAUCHI info@greenhippo.co.jp
Nobuhiro ITOU js333123@gmail.com

License

Licensed under the Apache License, Version 2.0
Copyright © 2017 Tetsumune KISO