2.1. bfd module

BFD protocol implementation

class bfd.BFD(*args, **kwargs)

Bases: scapy.packet.Packet

BFD protocol layer for scapy

bfd_pkt_len = 24
fields_desc = [scapy.fields.BitField, scapy.fields.BitEnumField, scapy.fields.BitEnumField, scapy.fields.FlagsField, scapy.fields.XByteField, scapy.fields.BitField, scapy.fields.BitField, scapy.fields.BitField, scapy.fields.BitField, scapy.fields.BitField, scapy.fields.BitField, scapy.fields.ConditionalField, scapy.fields.ConditionalField, scapy.fields.ConditionalField, scapy.fields.ConditionalField, scapy.fields.ConditionalField, scapy.fields.ConditionalField, scapy.fields.ConditionalField]
mysummary()
name = 'BFD'
sha1_auth_len = 28
udp_dport = 3784

BFD destination port per RFC 5881

udp_dport_echo = 3785
udp_sport_max = 65535

BFD source port max value per RFC 5881

udp_sport_min = 49152

BFD source port min value per RFC 5881

class bfd.BFDAuthType(value)

Bases: util.NumericConstant

BFD Authentication Type

desc_dict = {0: 'No authentication', 1: 'Simple Password', 2: 'Keyed MD5', 3: 'Meticulous Keyed MD5', 4: 'Keyed SHA1', 5: 'Meticulous Keyed SHA1'}
keyed_md5 = 2
keyed_sha1 = 4
meticulous_keyed_md5 = 3
meticulous_keyed_sha1 = 5
no_auth = 0
simple_pwd = 1
class bfd.BFDDiagCode(value)

Bases: util.NumericConstant

BFD Diagnostic Code

administratively_down = 7
concatenated_path_down = 6
control_detection_time_expired = 1
desc_dict = {0: 'No diagnostic', 1: 'Control Detection Time Expired', 2: 'Echo Function Failed', 3: 'Neighbor Signaled Session Down', 4: 'Forwarding Plane Reset', 5: 'Path Down', 6: 'Concatenated Path Down', 7: 'Administratively Down', 8: 'Reverse Concatenated Path Down'}
echo_function_failed = 2
forwarding_plane_reset = 4
neighbor_signaled_session_down = 3
no_diagnostic = 0
path_down = 5
reverse_concatenated_path_down = 8
class bfd.BFDState(value)

Bases: util.NumericConstant

BFD State

admin_down = 0
desc_dict = {0: 'AdminDown', 1: 'Down', 2: 'Init', 3: 'Up'}
down = 1
init = 2
up = 3
class bfd.BFD_vpp_echo(*args, **kwargs)

Bases: scapy.packet.Packet

BFD echo packet as used by VPP (non-rfc, as rfc doesn’t define one)

fields_desc = [scapy.fields.BitField, scapy.fields.BitField, scapy.fields.BitField]
mysummary()
name = 'BFD_VPP_ECHO'
udp_dport = 3785

BFD echo destination port per RFC 5881

class bfd.VppBFDAuthKey(test, conf_key_id, auth_type, key)

Bases: vpp_object.VppObject

Represents BFD authentication key in VPP

add_vpp_config()

Add the configuration for this object to vpp.

property auth_type

Authentication type for this key

property conf_key_id

configuration key ID

get_bfd_auth_keys_dump_entry()

get the entry in the auth keys dump corresponding to this key

property key

key data

object_id()

Return a unique string representing this object.

query_vpp_config()

Query the vpp configuration.

Returns

True if the object is configured

remove_vpp_config()

Remove the configuration for this object from vpp.

property test

Test which created this key

class bfd.VppBFDUDPSession(test, interface, peer_addr, local_addr=None, af=<AddressFamily.AF_INET: 2>, desired_min_tx=300000, required_min_rx=300000, detect_mult=3, sha1_key=None, bfd_key_id=None, is_tunnel=False)

Bases: vpp_object.VppObject

Represents BFD UDP session in VPP

activate_auth(key, bfd_key_id=None, delayed=False)

activate authentication for this session

add_vpp_config()

Add the configuration for this object to vpp.

admin_down()

set bfd session admin-down

admin_up()

set bfd session admin-up

property af

Address family - AF_INET or AF_INET6

property bfd_key_id

bfd key id in use

deactivate_auth(delayed=False)

deactivate authentication

property desired_min_tx

desired minimum tx interval

property detect_mult

detect multiplier

get_bfd_udp_session_dump_entry()

get the namedtuple entry from bfd udp session dump

property interface

Interface on which this session lives

property is_tunnel
property local_addr

BFD session local address (VPP address)

property local_addr_n

BFD session local address (VPP address) - raw, suitable for API

modify_parameters(detect_mult=None, desired_min_tx=None, required_min_rx=None)

modify session parameters

object_id()

Return a unique string representing this object.

property peer_addr

BFD session peer address

property peer_addr_n

BFD session peer address - raw, suitable for API

query_vpp_config()

Query the vpp configuration.

Returns

True if the object is configured

remove_vpp_config()

Remove the configuration for this object from vpp.

property required_min_rx

required minimum rx interval

property sha1_key

sha1 key

property state

BFD session state

property test

Test which created this session

bfd.bfd_is_auth_used(pkt)

is packet authenticated?

bfd.bfd_is_md5_or_sha1_used(pkt)

is md5 or sha1 used?

bfd.bfd_is_md5_used(pkt)

is md5 authentication used?

bfd.bfd_is_sha1_used(pkt)

is sha1 authentication used?

bfd.bfd_is_simple_pwd_used(pkt)

is simple password authentication used?