MRT 文件库

介绍

OS-Ken MRT 文件库帮助您读取/写入 MRT(多线程路由工具包)路由信息导出格式 [RFC6396]。

读取 MRT 文件

为了加载 MRT 文件中包含的路由信息,您可以使用 mrtlib.Reader。

class os_ken.lib.mrtlib.Reader(f)

MRT 格式文件读取器。

参数

描述

f

以二进制模式读取 MRT 格式文件的文件对象。

使用示例

import bz2
from os_ken.lib import mrtlib

count = 0
for record in mrtlib.Reader(
        bz2.BZ2File('rib.YYYYMMDD.hhmm.bz2', 'rb')):
    print("%d, %s" % (count, record))
    count += 1

写入 MRT 文件

为了转储您的 OSKenApp 生成的路由信息,您可以使用 mrtlib.Writer。

class os_ken.lib.mrtlib.Writer(f)

MRT 格式文件写入器。

参数

描述

f

以二进制模式写入 MRT 格式文件的文件对象。

用例示例

import bz2
import time
from os_ken.lib import mrtlib
from os_ken.lib.packet import bgp

mrt_writer = mrtlib.Writer(
    bz2.BZ2File('rib.YYYYMMDD.hhmm.bz2', 'wb'))

prefix = bgp.IPAddrPrefix(24, '10.0.0.0')

rib_entry = mrtlib.MrtRibEntry(
    peer_index=0,
    originated_time=int(time.time()),
    bgp_attributes=[bgp.BGPPathAttributeOrigin(0)])

message = mrtlib.TableDump2RibIPv4UnicastMrtMessage(
    seq_num=0,
    prefix=prefix,
    rib_entries=[rib_entry])

record = mrtlib.TableDump2MrtRecord(
    message=message)

mrt_writer.write(record)