BMP

BGP Monitoring Protocol draft-ietf-grow-bmp-07

class os_ken.lib.packet.bmp.BMPInitiation(info, type_=4, len_=None, version=3)

BMP Initiation Message

Attribute

Description

version

Version. this packet lib defines BMP ver. 3

len

Length field. Ignored when encoding.

type

Type field. one of BMP_MSG_ constants.

info

One or more piece of information encoded as a TLV

classmethod parser(buf)

Decode a protocol header.

This method is used only when decoding a packet.

Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

  • An object to describe the decoded header.

  • A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

  • The rest of packet.

class os_ken.lib.packet.bmp.BMPMessage(type_, len_=None, version=3)

Base class for BGP Monitoring Protocol messages.

An instance has the following attributes at least. Most of them are same to the on-wire counterparts but in host byte order. __init__ takes the corresponding args in this order.

Attribute

Description

version

Version. this packet lib defines BMP ver. 3

len

Length field. Ignored when encoding.

type

Type field. one of BMP_MSG_ constants.

classmethod parser(buf)

Decode a protocol header.

This method is used only when decoding a packet.

Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

  • An object to describe the decoded header.

  • A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

  • The rest of packet.

serialize()

Encode a protocol header.

This method is used only when encoding a packet.

Encode a protocol header. Returns a bytearray which contains the header.

payload is the rest of the packet which will immediately follow this header.

prev is a packet_base.PacketBase subclass for the outer protocol header. prev is None if the current header is the outer-most. For example, prev is ipv4 or ipv6 for tcp.serialize.

class os_ken.lib.packet.bmp.BMPPeerDownNotification(reason, data, peer_type, is_post_policy, peer_distinguisher, peer_address, peer_as, peer_bgp_id, timestamp, version=3, type_=2, len_=None, is_adj_rib_out=False)

BMP Peer Down Notification Message

Attribute

Description

version

Version. this packet lib defines BMP ver. 3

len

Length field. Ignored when encoding.

type

Type field. one of BMP_MSG_ constants.

reason

Reason indicates why the session was closed.

data

vary by the reason.

classmethod parser(buf)

Decode a protocol header.

This method is used only when decoding a packet.

Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

  • An object to describe the decoded header.

  • A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

  • The rest of packet.

class os_ken.lib.packet.bmp.BMPPeerMessage(peer_type, is_post_policy, peer_distinguisher, peer_address, peer_as, peer_bgp_id, timestamp, version=3, type_=None, len_=None, is_adj_rib_out=False)

BMP Message with Per Peer Header

Following BMP Messages contain Per Peer Header after Common BMP Header.

  • BMP_MSG_TYPE_ROUTE_MONITRING

  • BMP_MSG_TYPE_STATISTICS_REPORT

  • BMP_MSG_PEER_UP_NOTIFICATION

Attribute

Description

version

Version. this packet lib defines BMP ver. 3

len

Length field. Ignored when encoding.

type

Type field. one of BMP_MSG_ constants.

peer_type

The type of the peer.

is_post_policy

Indicate the message reflects the post-policy

is_adj_rib_out

Indicate the message reflects Adj-RIB-Out (defaults to Adj-RIB-In)

peer_distinguisher

Use for L3VPN router which can have multiple instance.

peer_address

The remote IP address associated with the TCP session.

peer_as

The Autonomous System number of the peer.

peer_bgp_id

The BGP Identifier of the peer

timestamp

The time when the encapsulated routes were received.

classmethod parser(buf)

Decode a protocol header.

This method is used only when decoding a packet.

Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

  • An object to describe the decoded header.

  • A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

  • The rest of packet.

class os_ken.lib.packet.bmp.BMPPeerUpNotification(local_address, local_port, remote_port, sent_open_message, received_open_message, peer_type, is_post_policy, peer_distinguisher, peer_address, peer_as, peer_bgp_id, timestamp, version=3, type_=3, len_=None, is_adj_rib_out=False)

BMP Peer Up Notification Message

Attribute

Description

version

Version. this packet lib defines BMP ver. 3

len

Length field. Ignored when encoding.

type

Type field. one of BMP_MSG_ constants.

peer_type

The type of the peer.

peer_flags

Provide more information about the peer.

peer_distinguisher

Use for L3VPN router which can have multiple instance.

peer_address

The remote IP address associated with the TCP session.

peer_as

The Autonomous System number of the peer.

peer_bgp_id

The BGP Identifier of the peer

timestamp

The time when the encapsulated routes were received.

local_address

The local IP address associated with the peering TCP session.

local_port

The local port number associated with the peering TCP session.

remote_port

The remote port number associated with the peering TCP session.

sent_open_message

The full OPEN message transmitted by the monitored router to its peer.

received_open_message

The full OPEN message received by the monitored router from its peer.

classmethod parser(buf)

Decode a protocol header.

This method is used only when decoding a packet.

Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

  • An object to describe the decoded header.

  • A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

  • The rest of packet.

class os_ken.lib.packet.bmp.BMPRouteMonitoring(bgp_update, peer_type, is_post_policy, peer_distinguisher, peer_address, peer_as, peer_bgp_id, timestamp, version=3, type_=0, len_=None, is_adj_rib_out=False)

BMP Route Monitoring Message

Attribute

Description

version

Version. this packet lib defines BMP ver. 3

len

Length field. Ignored when encoding.

type

Type field. one of BMP_MSG_ constants.

peer_type

The type of the peer.

peer_flags

Provide more information about the peer.

peer_distinguisher

Use for L3VPN router which can have multiple instance.

peer_address

The remote IP address associated with the TCP session.

peer_as

The Autonomous System number of the peer.

peer_bgp_id

The BGP Identifier of the peer

timestamp

The time when the encapsulated routes were received.

bgp_update

BGP Update PDU

classmethod parser(buf)

Decode a protocol header.

This method is used only when decoding a packet.

Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

  • An object to describe the decoded header.

  • A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

  • The rest of packet.

class os_ken.lib.packet.bmp.BMPStatisticsReport(stats, peer_type, is_post_policy, peer_distinguisher, peer_address, peer_as, peer_bgp_id, timestamp, version=3, type_=1, len_=None, is_adj_rib_out=False)

BMP Statistics Report Message

Attribute

Description

version

Version. this packet lib defines BMP ver. 3

len

Length field. Ignored when encoding.

type

Type field. one of BMP_MSG_ constants.

peer_type

The type of the peer.

peer_flags

Provide more information about the peer.

peer_distinguisher

Use for L3VPN router which can have multiple instance.

peer_address

The remote IP address associated with the TCP session.

peer_as

The Autonomous System number of the peer.

peer_bgp_id

The BGP Identifier of the peer

timestamp

The time when the encapsulated routes were received.

stats

Statistics (one or more stats encoded as a TLV)

classmethod parser(buf)

Decode a protocol header.

This method is used only when decoding a packet.

Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

  • An object to describe the decoded header.

  • A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

  • The rest of packet.

class os_ken.lib.packet.bmp.BMPTermination(info, type_=5, len_=None, version=3)

BMP Termination Message

Attribute

Description

version

Version. this packet lib defines BMP ver. 3

len

Length field. Ignored when encoding.

type

Type field. one of BMP_MSG_ constants.

info

One or more piece of information encoded as a TLV

classmethod parser(buf)

Decode a protocol header.

This method is used only when decoding a packet.

Decode a protocol header at offset 0 in bytearray buf. Returns the following three objects.

  • An object to describe the decoded header.

  • A packet_base.PacketBase subclass appropriate for the rest of the packet. None when the rest of the packet should be considered as raw payload.

  • The rest of packet.