2.1. bfd module

BFD protocol implementation

class bfd.BFD(_pkt='', post_transform=None, _internal=0, _underlayer=None, **fields)

Bases: scapy.packet.Packet

BFD protocol layer for scapy

aliastypes = [<class 'bfd.BFD'>, <class 'scapy.packet.Packet'>]
bfd_pkt_len = 24
fields_desc = [<Field (BFD).version>, <Field (BFD).diag>, <Field (BFD).state>, <Field (BFD).flags>, <Field (BFD).detect_mult>, <Field (BFD).length>, <Field (BFD).my_discriminator>, <Field (BFD).your_discriminator>, <Field (BFD).desired_min_tx_interval>, <Field (BFD).required_min_rx_interval>, <Field (BFD).required_min_echo_rx_interval>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>, <scapy.fields.ConditionalField object>]
mysummary()
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(_pkt='', post_transform=None, _internal=0, _underlayer=None, **fields)

Bases: scapy.packet.Packet

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

aliastypes = [<class 'bfd.BFD_vpp_echo'>, <class 'scapy.packet.Packet'>]
fields_desc = [<Field (BFD_vpp_echo).discriminator>, <Field (BFD_vpp_echo).expire_time_clocks>, <Field (BFD_vpp_echo).checksum>]
mysummary()
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()
auth_type

Authentication type for this key

conf_key_id

configuration key ID

get_bfd_auth_keys_dump_entry()

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

key

key data

object_id()
query_vpp_config()
remove_vpp_config()
test

Test which created this key

class bfd.VppBFDUDPSession(test, interface, peer_addr, local_addr=None, af=2, desired_min_tx=300000, required_min_rx=300000, detect_mult=3, sha1_key=None, bfd_key_id=None)

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()
admin_down()

set bfd session admin-down

admin_up()

set bfd session admin-up

af

Address family - AF_INET or AF_INET6

bfd_key_id

bfd key id in use

deactivate_auth(delayed=False)

deactivate authentication

desired_min_tx

desired minimum tx interval

detect_mult

detect multiplier

get_bfd_udp_session_dump_entry()

get the namedtuple entry from bfd udp session dump

interface

Interface on which this session lives

local_addr

BFD session local address (VPP address)

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()
peer_addr

BFD session peer address

peer_addr_n

BFD session peer address - raw, suitable for API

query_vpp_config()
remove_vpp_config()
required_min_rx

required minimum rx interval

sha1_key

sha1 key

state

BFD session state

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?