BFD Functions¶
sth::emulation_bfd_config¶
Purpose¶
Creates, enables, modifies, disables, or deletes an emulated Bidirectional Forwarding Detection (BFD) router on a Spirent HLTAPI chassis.
BFD is a simple hello protocol. A pair of systems transmits BFD packets periodically over each path between the systems. If a system stops receiving BFD packets for long enough, some component in that particular bidirectional path to the neighboring system is assumed to have failed. Under some conditions, systems may negotiate to not send periodic BFD packets to reduce overhead. Each system estimates how quickly it can send and receive BFD packets to come to an agreement with its neighbor about how rapidly detection of failure will take place.
Synopsis¶
Note
- M indicates that the argument is Mandatory .
- S indicates the argument is for
scaling
scenarios.
sth::emulation_bfd_config [-mode {create|enable|modify|disable|activate|delete} M] [-port_handle <port_handle>] [-handle <bfd_router_handle>] [-active_mode {active|passive} ] [-count <integer>] [-detect_multiplier <2-100>] [-echo_rx_interval <0-10000>] [-gateway_ip_addr <a.b.c.d>] [-gateway_ip_addr_step <a.b.c.d>] [-gateway_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>] [-gateway_ipv6_addr_step <a:b:c:d::e> ] [-intf_ip_addr <a.b.c.d>] [-intf_ip_addr_step <a.b.c.d>] [-intf_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>] [-intf_ipv6_addr_step <a:b:c:d::e> ] [-ip_version {IPv4|IPv6|IPv46}] [-local_mac_addr <aa:bb:cc:dd:ee:ff>] [-local_mac_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>] [-remote_ip_addr <a.b.c.d>] [-remote_ip_addr_step <a.b.c.d>] [-remote_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>] [-remote_ipv6_addr_step <a:b:c:d::e>] [-enable_discriminator {true|false} ] [-session_discriminator <integer> ] [-session_discriminator_step <integer> ] [-ipv6_enable_discriminator {true|false} ] [-ipv6_session_discriminator <integer> ] [-ipv6_session_discriminator_step <integer> ] [-vci <0-65535>] [-vci_step <0-65535>] [-vlan_id1 <0-4096>] [-vlan_id2 <0-4096>] [-vlan_id_mode1 {fixed|increment}] [-vlan_id_mode2 {fixed|increment}] [-vlan_id_step1 <0-4096>] [-vlan_id_step2 <0-4096>] [-vpi <0-255>] [-vpi_step <0-255>] [-vlan_ether_type1 {vlan_tag_0x8100|vlan_tag_0x88a8|vlan_tag_0x9100}] [-vlan_ether_type2 {vlan_tag_0x8100|vlan_tag_0x88a8|vlan_tag_0x9100}] [-expand {true|false} S] [-ipv4_session_addr <IPV4>] [-ipv4_session_addr_step <IPV4>] [-ipv4_session_incr <IPV4>] [-ipv4_session_count <NUMERIC>] [-ipv6_mask <1-128>] [-ipv6_session_count <NUMERIC>] [-ipv6_session_addr_step <IPV6>] [-ipv6_session_addr <IPV6>] [-ipv6_session_incr <NUMERIC>] [-authentication {md5|none|simple}] [-password <ANY>] [-md5_key_id <NUMERIC>]
Arguments¶
-
-active_mode
¶
Define whether this BFD session should actively attempt to establish a connection. Possible values are:
active - Send BFD control packets for the BFD session, regardless of whether the system has received any BFD packets. passive - Do not send BFD control packets for the BFD session until the system has received a BFD packet.
-
-count
¶
Defines the number of BFD routers to create. Possible values are 1 to <max_int>. The default is 1.
-
-detect_multiplier
¶
The negotiated transmit interval multiplied by this value is the detection time for this session. Possible values range from 2 to 100. The negotiated transmit interval, which is created by STC BLL automatically, is set to 50.
-
-echo_rx_interval
¶
Specifies the minimum interval, in microseconds, between received BFD Echo packets. Possible values ranges from 0 to 10000. If this value is zero, the transmitting system does not support the receipt of BFD Echo packets.
-
-gateway_ip_addr
¶
Configures the IPv4 gateway address of the BFD router. The default is 192.85.1.1. This is the default gateway for routing the IPv4 address you specified in the -intf_ip_addr argument. The default gateway is the router that Spirent HLTAPI will use to reach hosts not on its local network.
-
-gateway_ip_addr_step
¶
Configures the IPv4 gateway address for multiple routers. This argument is used with the -gateway_ip_addr argument. The default is 0.0.1.0.
-
-gateway_ipv6_addr
¶
Configures the IPv6 gateway address of the BFD router. The default is 2000::1. This is the default gateway for routing the IPv6 address you specified in the -intf_ipv6_addr argument. The default gateway is the router that Spirent HLTAPI will use to reach hosts not on its local network.
-
-gateway_ipv6_addr_step
¶
Configures the IPv6 gateway address for multiple routers. This argument is used with the -gateway_ipv6_addr argument. The default is 0:0:0:1::0.
-
-handle
¶
Specifies the BFD router handle, a string value, to use when mode is set to “modify”, “disable”, or “delete”. This argument is Mandatory for every mode except “create” and “enable”. See -port_handle.
-
-intf_ip_addr
¶
Specifies the first IPv4 address in the group. The default for IPv4 is 192.85.1.3.
-
-intf_ip_addr_step
¶
Specifies the difference between the interface IP addresses of consecutive hosts when multiple BFD hosts are created. The default increment is 1 (for example, 0.0.0.1). This argument is only applicable in create mode.
-
-intf_ipv6_addr
¶
Specifies the IPv6 address of the interface for the emulated router that will establish an adjacency with the DUT. The default is 2000::2.
-
-intf_ipv6_addr_step
¶
Defines the increment used to generate IP addresses for emulated routers. Spirent HLTAPI increments the -intf_ipv6_addr value. You must specify the interface IP address step when the -count argument is greater than 1. The range of possible values is 0 to <max_int>. The default is 0:0:0:1::0.
-
-ip_version
¶
Specifies the IP version of the BFD emulated router. Possible values are IPv4 (for IPv4 address format) or IPv6 (for IPv6 address format) or IPv46 (for both IPv4 and IPv6 address format specification).
-
-local_mac_addr
¶
Specifies the first MAC address to use when emulating multiple clients. The default is 00:10:94:00:00:01.
-
-local_mac_addr_step
¶
Specifies the increment to use to generate additional MAC addresses for multiple clients. Possible values range from 00.00.00.00.00.01 to 00.00.7f.ff.ff.ff. The default is 00.00.00.00.00.01.
-
-mode
¶
Specifies the action to perform on the specified test port. The modes are described below:
create - Creates one or more BFD routers on the port specified with the -port_handle argument. You must specify the -port_handle argument. enable - Same as create mode. modify - Changes the configuration for the BFD router identified by the -handle argument. You must specify the -handle argument. activate - Used for ``Scaling`` scenarios. 1. Enables BFD devices and configures BFD parameters for the devices created via the sth::emulation_device_config function. This mode requires the value of param_handle as the input to the -handle option. Use this mode for ``Scaling`` scenarios. Refer to -count and -expand options under the ``sth::emulation_bfd_config`` function for more information. For this mode, only the following set of options are valid:: detect_multiplier echo_rx_interval control_plane_independent active_mode rx_interval tx_interval ipv4_session_addr ipv4_session_addr_step ipv4_session_count ipv4_session_addr_incr ipv6_session_addr ipv6_session_addr_step ipv6_session_count ipv6_session_addr_incr ipv6_mask md5_enable md5_key md5_key_id 2. Creates devices and enables BFD protocol. Requires -port_handle and -block_mode options. For this mode, the following options are required/supported along with the options specified above:: -count -block_mode -block_name_index -name -vlan_id -vlan_outer_id -vlan_user_pri -vlan_id_count -vlan_id_repeatmode -vlan_outer_id_count -vlan_outer_user_pri -vlan_outer_id_repeatmode -router_id -router_id_step -router_id_ipv6 -router_id_ipv6_step -intf_ip_addr -intf_ip_addr_step -intf_prefix_len -gateway_ip_addr -gateway_ip_addr_step -mac_addr -mac_addr_step -link_local_ipv6_addr -link_local_ipv6_addr_step -intf_ipv6_addr -intf_ipv6_addr_step -intf_ipv6_prefix_len -link_local_ipv6_prefix_len -gateway_ipv6_addr -gateway_ipv6_addr_step -mac_addr_step_per_port -mac_addr_step_per_vlan -ip_step_per_port -ip_step_per_vlan -ipv6_step_per_vlan -ipv6_step_per_port -link_local_ipv6_step_per_port -link_local_ipv6_step_per_vlan .. note:: Please refer to the emulation_device_config documentation. delete - Deletes all of the BFD routers specified in the -handle argument. You must specify the -handle argument. disable - Same as delete mode.
-
-port_handle
¶
Specifies the port on which to create the BFD router when mode is set to “create.” This argument is Mandatory only for create and enable modes.
-
-remote_ip_addr
¶
Specifies the SUT IP address for the BFD IPv4 session pool.
-
-remote_ip_addr_step
¶
Specifies the step size in which the SUT IP address is incremented.
-
-remote_ipv6_addr
¶
Specifies the SUT IP address for the BFD IPv6 session pool.
-
-remote_ipv6_addr_step
¶
Specifies the step size in which the SUT IP address is incremented.
-
-enable_discriminator
¶
Specifies to enable or disable session discriminator values under control plane independent session. Possible values are true and false. The default is true.
-
-session_discriminator
¶
Specifies the BFD remote discriminator value.
-
-session_discriminator_step
¶
Specifies the BFD session discriminator step value.
-
-ipv6_enable_discriminator
¶
Specifies to enable or disable session discriminator values under control plane independent session. Possible values are true and false. This argument is valid only when -ip_version is set to IPv46. The default is true.
-
-ipv6_session_discriminator
¶
Specifies the BFD remote discriminator value. This argument is valid only when -ip_version is set to IPv46.
-
-ipv6_session_discriminator_step
¶
Specifies the BFD session discriminator step value. This argument is valid only when -ip_version is set to IPv46.
-
-vci
¶
Specifies the VCI of the first ATM PVC pool. Possible values range from 0 to 65535.
-
-vci_step
¶
Specifies the step size in which the VCI value is incremented. Possible values range from 0 to 65535.
-
-vlan_id1
¶
The VLAN ID of the first VLAN sub-interface (that is, the Inner VLAN ID). Possible values range from 0 to 4096. The default is 1.
-
-vlan_id2
¶
The VLAN ID of the second VLAN sub-interface (that is, the Outer VLAN ID). Possible values range from 0 to 4096. The default is 1.
-
-vlan_id_mode1
¶
Specifies VLAN ID assignment for multiple router configurations when -count is greater than 1. Valid values are “fixed” or “increment”. If you configure more than one interface on Spirent HLTAPI with VLAN, you can choose to either automatically increment the VLAN tag (mode “increment”) or leave it idle for each interface (mode “fixed”), in which case the VLAN ID is the same for all packets. If you set this argument to “increment”, then you must also specify the -vlan_id_step1 argument to indicate the step size.
-
-vlan_id_mode2
¶
Specifies VLAN ID assignment for multiple router configurations when -count is greater than 1. Valid values are “fixed” or “increment”. If you configure more than one interface on Spirent HLTAPI with VLAN, you can choose to either automatically increment the VLAN tag (mode “increment”) or leave it idle for each interface (mode “fixed”), in which case the VLAN ID is the same for all packets. If you set this argument to “increment”, then you must also specify the -vlan_id_step2 argument to indicate the step size.
-
-vlan_id_step1
¶
The value that Spirent HLTAPI uses to increment the VLAN ID. You must specify this step when you use specify “increment” for the -vlan_id_mode1 argument and the router count (-count) is greater than 1. Possible step values range from 0 to 4096.
-
-vlan_id_step2
¶
The value that Spirent HLTAPI uses to increment the VLAN ID. You must specify this step when you use specify “increment” for the -vlan_id_mode2 argument and the router count (-count) is greater than 1. Possible step values range from 0 to 4096.
-
-vpi
¶
Specifies the VPI of the first ATM PVC pool (for an ATM connection). Possible values are 0 to 255.
-
-vpi_step
¶
Specifies the step size in which the VPI value is incremented. Possible values are 0 to 255.
-
-vlan_ether_type1
¶
Specifies the inner VLAN EtherType. Possible values are vlan_tag_0x8100, vlan_tag_0x88a8 and vlan_tag_0x9100. You can use this argument when you specify the -vlan_id1 argument. The types are described below:
vlan_tag_0x8100 - Specifies EtherType value 0x8100, a value of 8100 in hexadecimal. When a frame has the VLAN EtherType equal to 8100, this frame carries the tag IEEE 802.1Q. vlan_tag_0x88a8 - Specifies EtherType value 0x88a8, a value of 88a8 in hexadecimal. When a frame has the VLAN EtherType equal to 88A8, this frame carries the tag EEE 802.1ad. vlan_tag_0x9100 - Specifies EtherType value 0x9100, a value of 9100 in hexadecimal. When a frame has the VLAN EtherType equal to 9100, this frame carries the tag IEEE standard IEEE 802.1Q-1998.
-
-vlan_ether_type2
¶
Specifies the outer VLAN EtherType. Possible values are vlan_tag_0x8100, vlan_tag_0x88a8 and vlan_tag_0x9100. You can use this argument when you specify the -vlan_id2 argument. The types are described below:
vlan_tag_0x8100 - Specifies EtherType value 0x8100, a value of 8100 in hexadecimal. When a frame has the VLAN EtherType equal to 8100, this frame carries the tag IEEE 802.1Q. vlan_tag_0x88a8 - Specifies EtherType value 0x88a8, a value of 88a8 in hexadecimal. When a frame has the VLAN EtherType equal to 88A8, this frame carries the tag IEEE 802.1ad. vlan_tag_0x9100 - Specifies EtherType value 0x9100, a value of 9100 in hexadecimal. When a frame has the VLAN EtherType equal to 9100, this frame carries the tag IEEE standard IEEE 802.1Q-1998.
-
-expand
¶
Spirent Extension (for Spirent HLTAPI only).
Determines whether to expand the specified BFD device parameters into emulated BFD device objects. It is used in
Scaling
test scenarios.When set to true, a list of emulated device handles (handle_list) with enabled BFD device configurations is created.
When set to false, only BFD parameters are configured with no handle returned.
-
-ipv4_session_addr
¶
Specifies the starting IPv4 session destination address. The default is 192.0.0.1 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-ipv4_session_incr
¶
Specifies the IPv4 destination increment. The default is 0.0.0.1 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-ipv4_session_addr_step
¶
Specifies the address increment for IPv4 control plane independent sessions. The default is 0.0.0.0 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-ipv4_session_count
¶
Specifies the number of IPv4 control plane independent sessions. The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-ipv6_session_addr
¶
Specifies the starting IPv6 session destination address. The default is 2001::1 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-ipv6_session_incr
¶
Specifies the IPv6 destination increment. The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-ipv6_session_addr_step
¶
Specifies the address increment for IPv6 control plane independent sessions. The default is ::0 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-ipv6_session_count
¶
Specifies the number of IPv6 control plane independent sessions. The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-ipv6_mask
¶
Specifies the mask used to increment the IPv6 address. The default is 128 Applicable only in -mode activate when -block_mode or -expand is specified.
-
-authentication
¶
Specifies the type of authentication to use. The default is none Applicable only in -mode activate when -block_mode or -expand is specified.
-
-password
¶
Specifies the password for the session. Set Authentication to simple. The default is spirent Applicable only in -mode activate when -block_mode or -expand is specified.
-
-md5_key_id
¶
Specifies the MD5 key ID for the session. Set Authentication to md5. The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified.
Arguments Unsupported by Save as HLTAPI¶
None
Cisco-specific Arguments¶
The following arguments are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:
-control_interval
-control_plane_independent
-pkts_per_control_interval
-hop_mode
-poll_interval
-reset
-encap_type
-remote_mac_addr
-remote_mac_addr_step
-dlci
-remote_discriminator
-remote_discriminator_step
-echo_bit
-echo_timeout
-echo_tx_interval
-flap_tx_interval
-performance_mode
Return Values¶
Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):
handles A list of handles that identify the routers created by the
``sth::emulation_bfd_config`` function.
handle_list The emulated device handles list with enabled BFD device
configurations is created when expand is set true.
status Success (1) or failure (0) of the operation.
log An error message (if the operation failed).
Description¶
The sth::emulation_bfd_config
function creates, enables,
modifies, disables, or deletes an emulated BFD router. Use the -mode
argument to specify the action to perform. (See the -mode argument
description for information about the actions.)
Use create or enable mode to create one or more routers with the BFD protocol. The handle of each BFD router is returned. Use the -count argument to specify how many routers to create. The routers can be further configured with modify mode, as well as removed with either delete or disable mode.
When you create an emulated router, use the -port_handle argument to specify the Spirent HLTAPI port that the emulated router will use for BFD communication. (The port handle value is contained in the keyed list returned by the connect function.)
In addition to specifying the port, you must also provide one or more of the following pieces of information when you create a router:
- The IP address for the emulated router (the -intf_ip_addr or -intf_ipv6_addr argument)
- The IP address for the BFD router (DUT) to communicate with (the -gate_way_addr or -gateway_ipv6_addr argument)
- The first MAC address to use when emulating multiple clients (the -local_mac_addr argument)
- The SUT IP address for BFD IPv4 session pool (the -remote_ip_addr or -remote_ipv6_addr argument)
After you create a router, use the “emulation_bfd_control -mode start” command for Spirent HLTAPI to start the router communication.
Once you start sessions, Spirent HLTAPI handles all of the message
traffic for the emulated routers. During the test, use the
sth::emulation_bfd_control
function to stop and re-start individual
routers. To stop and start all of the routers associated with a particular
port, use the restart mode with the sth::emulation_bfd_control
function.
Examples¶
#### HLTAPI for Tcl ####
The following example creates a BFD router:
sth::emulation_bfd_config \
-mode create \
-port_handle port1 \
-count 1 \
-ip_version IPv4 \
-local_mac_addr 00:10:94:00:00:01 \
-local_mac_addr_step 00:00:00:00:00:01 \
-intf_ip_addr 192.85.1.3 \
-intf_ip_addr_step 0.0.1.0 \
-remote_ip_addr 10.1.1.1\
-gateway_ip_addr 192.85.1.1 \
-gateway_ip_addr_step 0.0.1.0 \
-vlan_id1 100 \
-vlan_id_mode1 increment \
-vlan_id_step1 10 \
-vlan_id2 300 \
-vlan_id_mode2 fixed \
-session_discriminator 12 \
-session_discriminator_step 1 \
-detect_multiplier 2 \
-echo_rx_interval 50 \
-active_mode active
Sample output for example shown above:
{handle router1} {handles router1} {status 1}
The following example stops the created BFD router at the router level instead of at the port level:
sth::emulation_bfd_config -mode disable -handle bfdRtrHandle1
Sample output for example shown above:
{status 1}
The following example modifies handle router1:
sth::emulation_bfd_config \
-mode modify \
-handle bfdRtrHandle1 \
-active_mode passive
Sample output for example shown above:
{handle router1} {handles router1} {status 1}
The following example creates five BFD routers:
sth::emulation_bfd_config -mode create \
-port_handle port1 \
-count 5 \
-ip_version IPv4 \
-local_mac_addr 00:10:94:00:00:01 \
-local_mac_addr_step 00:00:00:00:00:01 \
-intf_ip_addr 192.85.1.3 \
-inft_ip_addr_step 0.0.1.0 \
-remote_ip_addr 10.1.1.1 \
-gateway_ip_addr 192.85.1.1 \
-gateway_ip_addr_step 0.0.1.0 \
-vlan_id1 100 \
-vlan_id_mode1 increment \
-vlan_id_step1 10 \
-session_discriminator 12 \
-session_discriminator_step 1 \
-detect_multiplier 2 \
-echo_rx_interval 50 \
-active_mode active
Sample output for example shown above:
{handle router1 router2 router3 router4 router5}
The following example creates dual stack BFD router:
sth::emulation_bfd_config -mode create \
-ip_version IPv46\
-vlan_id_mode1 increment\
-enable_discriminator false\
-ipv6_enable_discriminator false\
-session_discriminator 14\
-session_discriminator_step 1\
-ipv6_session_discriminator 13\
-ipv6_session_discriminator_step 1\
-remote_ipv6_addr 3001::1 \
-remote_ipv6_addr_step ::0001 \
-port_handle port1\
-intf_ipv6_addr cafe:1890:c00:5402::2 \
-intf_ipv6_addr_step ::1 \
-gateway_ipv6_addr_step ::1 \
-gateway_ipv6_addr cafe:1890:c00:5402::1 \
-vlan_ether_type1 vlan_tag_0x8100 \
-vlan_id1 141 \
-vlan_id_step1 0 \
-router_id_step 0.0.0.1 \
-ipv6_router_id 2000::1 \
-router_id 192.0.0.1 \
-ipv6_router_id_step ::1 \
-intf_ip_addr 21.1.1.3 \
-gateway_ip_addr 21.1.1.1 \
-gateway_ip_addr_step 0.0.0.0 \
-intf_ip_addr_step 0.0.0.1 \
-local_mac_addr_step 00:00:00:00:00:01 \
-local_mac_addr 00:10:94:01:00:09 \
-scale_mode normal \
-use_partial_block_state 0 \
-tx_interval 50 \
-echo_rx_interval 0 \
-active_mode active \
-detect_multiplier 3 \
-interval_time_unit msec \
-rx_interval 50 \
Sample output for example shown above:
{handle router1} {status 1}
The following example uses the function in Scaling
mode (-mode activate)
with -port_handle and -block_mode:
set bfd_ret [sth::emulation_bfd_config\
-mode activate \
-port_handle $port1\
-count 2 \
-block_mode ONE_DEVICE_PER_BLOCK\
-block_name_index 1\
-detect_multiplier 4\
-echo_rx_interval 1\
-control_plane_independent 1\
-active_mode passive\
-rx_interval 51\
-tx_interval 51\
-ipv4_session_addr 10.1.1.1\
-ipv4_session_addr_step 0.0.0.1\
-ipv4_session_count 1\
-ipv4_session_addr_incr 0.0.0.1\
-ipv6_session_addr 2002::1\
-ipv6_session_addr_step ::1\
-ipv6_session_count 1\
-ipv6_session_addr_incr 1\
-ipv6_mask 64\
-vlan_id 444 \
-vlan_outer_id 333 \
-router_id 11.111.11.11 \
-router_id_step 0.0.0.2\
-mac_addr 00:11:11:11:11:11 \
-mac_addr_step 00:00:00:00:00:02 \
-mac_addr_step_per_port 00:00:00:00:01:01 \
-mac_addr_step_per_vlan {"" 00:00:00:00:00:01} \
-ip_step_per_port 0.0.0.5 \
-ip_step_per_vlan {"" 0.0.1.1} \
-intf_ipv6_prefix_len 65 \
-ipv6_step_per_vlan {"" ::2} \
-ipv6_step_per_port ::1 \
-intf_prefix_len 22 \
-link_local_ipv6_step_per_port ::4 \
-link_local_ipv6_step_per_vlan {::4 ::5} \
-name DEVICE_BLOCK_BFD_ROUTER \
-vlan_user_pri 3 \
-vlan_id_count 2 \
-vlan_id_repeatmode REPEAT_ACROSS_PORT\
-vlan_outer_id_count 2 \
-vlan_outer_user_pri 4 \
-vlan_outer_id_repeatmode REPEAT_ACROSS_PORT\
-router_id_ipv6 0101::011 \
-router_id_ipv6_step ::11 \
-intf_ip_addr 11.111.11.11 \
-gateway_ip_addr 11.111.11.1 \
-link_local_ipv6_addr fe80::2 \
-link_local_ipv6_addr_step ::1 \
-intf_ipv6_addr 1111::3e9 \
-intf_ipv6_addr_step ::1 \
-link_local_ipv6_prefix_len 64 \
-gateway_ipv6_addr 1111::1 \
-gateway_ipv6_addr_step ::1 \
-expand true \
Sample Output:
{param_handle emulateddevicegenparams1} {status 1} {handle_list {emulateddevice1
emulateddevice2 emulateddevice3 emulateddevice4 emulateddevice5 emulateddevice6
emulateddevice7 emulateddevice8}} {handle {}} {handles {emulateddevice1
emulateddevice2 emulateddevice3 emulateddevice4 emulateddevice5 emulateddevice6
emulateddevice7 emulateddevice8}}
The following example deletes the specified BFD router:
sth::emulation_bfd_config \
-mode delete \
-handle bfdRtrHandle1
Sample output for example shown above:
{status 1}
#### HLTAPI for Python ####
The following example creates a BFD router:
device_ret0 = sth.emulation_bfd_config (
mode = 'create',
ip_version = 'IPv4',
vlan_id_mode1 = 'increment',
session_discriminator= '2',
session_discriminator_step= '3',
remote_ip_addr = '192.0.1.0',
remote_ip_addr_step = '0.0.0.1',
port_handle = port_handle[0],
vlan_ether_type1 = 'vlan_tag_0x8100',
vlan_id1 = '100',
vlan_id_step1 = '1',
local_mac_addr_step = '00:00:00:00:00:01',
local_mac_addr = '00:10:94:00:00:01',
intf_ip_addr = '192.85.1.3',
gateway_ip_addr = '192.85.1.1',
gateway_ip_addr_step= '0.0.0.0',
intf_ip_addr_step = '0.0.0.1',
echo_rx_interval = '0',
active_mode = 'active',
detect_multiplier = '3');
Sample output for example shown above:
{'status': '1', 'handles': 'router1', 'handle': 'router1'}
#### HLTAPI for Perl ####
The following example creates a BFD router:
my %device_ret0 = sth::emulation_bfd_config (
mode => 'create',
ip_version => 'IPv4',
vlan_id_mode1 => 'increment',
session_discriminator=> '2',
session_discriminator_step=> '3',
remote_ip_addr => '192.0.1.0',
remote_ip_addr_step => '0.0.0.1',
port_handle => "$hport[1]",
vlan_ether_type1 => 'vlan_tag_0x8100',
vlan_id1 => '100',
vlan_id_step1 => '1',
local_mac_addr_step => '00:00:00:00:00:01',
local_mac_addr => '00:10:94:00:00:01',
intf_ip_addr => '192.85.1.3',
gateway_ip_addr => '192.85.1.1',
gateway_ip_addr_step=> '0.0.0.0',
intf_ip_addr_step => '0.0.0.1',
echo_rx_interval => '0',
active_mode => 'active',
detect_multiplier => '3');
Output::
$VAR1 = 'handle';
$VAR2 = 'router1';
$VAR3 = 'handles';
$VAR4 = 'router1';
$VAR5 = 'status';
$VAR6 = '1';
End of Procedure Header
sth::emulation_bfd_control¶
Purpose¶
Starts, flaps, or stops a BFD router from routing traffic for the specified port.
Synopsis¶
Note
M indicates that the argument is Mandatory .
sth::emulation_bfd_control [-mode {admin_up|admin_down|disable_demand|enable_demand|flap|initiate_poll| start|stop|resume_pdus|stop_pdus} M] [-handle <bfd_router_handle_list>] [-port_handle <port_handle_list>] [-flap_count <integer>] [-flap_interval <integer>]
Arguments¶
-
-handle
¶
Identifies a list of router handles or session handles on which to stop or start the router. It is Mandatory that you specify either -handle or -port_handle but not both.
-
-mode
¶
Specifies the action to be taken on the specified handle or port handle. This argument is Mandatory . Possible values are:
- admin_up
- Administratively starts a BFD session for one or more routers running BFD
- admin_down
- Administratively stops a BFD session for one or more routers running BFD
- enable_demand
- Enables Demand mode on one or more BFD sessions
- disable_demand
- Disables Demand mode on one or more BFD sessions
- initiate_poll
- Initiates polling on one or more BFD sessions with Demand mode enabled
- stop
- Stops the router for the specified port
- start
- Starts the router for the specified port
- flap
- Disconnects and then reconnects the link to the router based on the settings for -flap_count and -flap_interval.
- resume_pdus
- Resumes sending BFD PDUs for one or more BFD sessions
- stop_pdus
- Stops sending BFD PDUs for one or more BFD sessions
-
-flap_count
¶
Specifies the number of flaps. Each flap includes one suspend and one resume. The default is 5. This argument is valid only when -mode is set to “flap”.
-
-flap_interval
¶
Specifies the time, in seconds, between flap cycles. This argument is valid only when -mode is set to “flap”.
-
-port_handle
¶
Specifies a list of ports on which BFD emulation will start, stop, flap, suspend or resume. It is Mandatory that you specify either -handle or -port_handle but not both.
Cisco-specific Arguments¶
None
Return Values¶
Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):
status Success (1) or failure (0) of the operation.
log An error message (if the operation failed).
Description¶
The sth::emulation_bfd_control
function controls the routing of
traffic through the specified ports. You can use the function to perform
several actions: starting routers, stopping routers, suspending routers,
resuming routers, and controlling route flapping.
When the mode is set to “flap”, Spirent HLTAPI stops the PDU that caused the BFD session to flap. Mode flap stops sending or responding for the specified flap interval. Each flap includes one suspend and one resume.
Spirent HLTAPI enables you to use flapping in your network environment. You can use flapping to control various kind of events in your test environment, including routing. When you use the sth::emulation_bfd_control function to define flapping for your test, you must:
- Define the flapping mode with “-mode flap”.
- Set -flap_count and -flap_interval to define the flapping cycle.
- Specify where flapping will take place using -handle or port_handle.
When you call the sth::emulation_bfd_control
function, you specify a port
handle. Spirent HLTAPI applies the specified action to all of the
emulated BFD routers associated with the specified port.
Examples¶
#### HLTAPI for Tcl ####
To start the specified BFD router:
sth::emulation_bfd_control -mode start -handle $bfdRouterHandle
To start all BFD routers on the specified port:
sth::emulation_bfd_control -mode start -port_handle $port1
To control route flapping:
sth::emulation_bfd_control -mode flap \
-handle bfdRouterHandle \
-flap_count 10 \
-flap_interval 10
To stop a BFD router:
sth::emulation_bfd_control -mode stop -handle $bfdRouterHandle
To stop all BFD routers on the specified port:
sth::emulation_bfd_control -mode stop -port_handle $port1
Sample Output:
{status 1}
#### HLTAPI for Python ####
To start the specified BFD router:
ctrl_ret1 = sth.emulation_bfd_control (
handle = device_list,
mode = 'start');
Sample Output::
{'status': '1'}
#### HLTAPI for Perl ####
To start the specified BFD router:
my %ctrl_ret1 = sth::emulation_bfd_control (
handle => "$device_list",
mode => 'start');
Sample Output:
$VAR1 = 'status';
$VAR2 = '1';
End of Procedure Header
sth::emulation_bfd_info¶
Purpose¶
Returns information about the BFD configuration
Synopsis¶
Note
M indicates that the argument is Mandatory .
sth::emulation_bfd_info [-mode {aggregate_stats|learned_info|clear_stats|bfd_stats|mpls_stats} M] [-handle <bfd_router_handle>] [-port_handle <port_handle>]
Arguments¶
-
-handle
¶
Specifies the router from which to extract BFD session data. It is Mandatory that either -handle or -port_handle, but not both, be specified
-
-mode
¶
Specifies the kind of information you want to see. This argument is mandatory. Possible values are:
- aggregate_stats
- Returns transmitted and received statistics for each port
- learned_info
- Retrieves learned information by the BFD protocol
- bfd_stats
- BFD results for the router
- mpls_stats
- BFD MPLS session results
clear_stats - Not supported.
-
-port_handle
¶
Specifies the ports from which to extract BFD session data. It is Mandatory that either -handle or -port_handle, but not both, be specified
Return Values¶
Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):
status Retrieves a value indicating the success (1) or failure
(0) of the operation.
log Retrieves a message describing the last error that
occurred during the operation. If the operation was
successful - {status 1} - the log value is null
The following keys are returned when you specify -mode aggregate_stats:
<port_handle>.aggregate.routers_configured
<port_handle>.aggregate.routers_running
<port_handle>.aggregate.control_pkts_tx
<port_handle>.aggregate.control_pkts_tx
<port_handle>.aggregate.echo_self_pkts_tx
<port_handle>.aggregate.echo_self_pkts_rx
<port_handle>.aggregate.echo_dut_pkts_tx
<port_handle>.aggregate.echo_dut_pkts_rx
<port_handle>.aggregate.sessions_configured
<port_handle>.aggregate.sessions_auto_created
<port_handle>.aggregate.sessions_configured_up
<port_handle>.aggregate.sessions_auto_created_up
The following keys are returned when you specify -mode learned_info:
Statistics list info will be returned per session basis.
Example: learned_info.<handle>.statistics
packet_rx BFD packets received
packet_dr BFD packets received but dropped due to
mismatch or error
poll_rx BFD packets received with Poll bit set
final_rx BFD packets received with Final bit set
echo_rx Echo packets received and reflected
avg_intr_arriv Average inter-arrival time of received BFD
packets. This value is not updated when
session is not in Up state.
min_intr_arriv Minimum inter-arrival time of received
BFD packets. This value is not updated
when session is not in Up state.
max_intr_arriv Maximum inter-arrival time of received
BFD packets. This value is not updated when
session is not in Up state.
packet_tx BFD packets transmitted
poll_tx BFD packets transmitted with Poll bit set
final_tx BFD packets transmitted with Final bit set
echo_tx Number of packets echoed
avg_intr_dept Average inter-departure time of
transmitted BFD packets. This value is not
updated when session is not in Up state
min_intr_dept Minimum inter-departure time of transmitted
BFD packets. This value is not updated when
session is not in Up state
max_intr_dept Maximum inter-departure time of
transmitted BFD packets. This value is not
updated when session is not in Up state
to_down_state State changes to Down state
to_admin_down_state State changes to AdminDown state
to_init_state State changes to Init state
to_up_state State changes to Up state
The following keys are returned when you specify -mode bfd_stats:
flap_count
Number of times a flap event was detected by BFD
rx_count
Number of BFD packets received on this router
timeout_count
Number of timeout conditions detected by BFD
tx_count
Number of BFD packets sent on this router
session_up_count
Number of BFD sessions in UP state
session_down_count
Number of BFD sessions in DOWN and ADMINDOWN states
The following keys are returned when you specify -mode mpls_stats:
bfd_control_bits
Value of the Poll, Final, Control
Plane Independent, Authentication Present,
Demand, Detect Mult (PFCADM) bits
bfd_diagnostic_code
Reason for the session's last state change::
NO_DIAGNOSTIC No diagnostic code available
CD_TIME_EXPIRE Control detection time expired
ECHO_FUNCTION_FAILED Echo function failed
NBOR_SIG_SESSION_DOWN Neighbor signaled session down
FOR_PLANE_RESET Forwarding plane reset
PATH_DOWN Path down
CONCAT_PATH_DOWN Concatenated path down
ADMIN_DOWN Administratively down
REVERSE_CONCAT_PATH_DOWN Reverse concatenated path down
NOT_APPLICABLE Result is not applicable for
bfd_session_state
State of the BFD session
ADMINDOWN Session is administratively down
DOWN Session is down
INIT Session is initializing
UP Session is up
fec_info
Forwarding equivalency class information
flap_count
Number of flaps (state transitions) detected
last_bfd_diagnostic_error_rx
Last BFD diagnostic error received
NO_DIAGNOSTIC No diagnostic code available
CD_TIME_EXPIRE Control detection time expired
ECHO_FUNCTION_FAILED Echo function failed
NBOR_SIG_SESSION_DOWN Neighbor signaled session down
FOR_PLANE_RESET Forwarding plane reset
PATH_DOWN Path down
CONCAT_PATH_DOWN Concatenated path down
ADMIN_DOWN Administratively down
REVERSE_CONCAT_PATH_DOWN Reverse concatenated path down
NOT_APPLICABLE Result is not applicable for
current mode
my_discriminator
Value of the My Discriminator field
rx_avg_rate
Average rate (packets per second) at which BFD packets
were received
rx_count
Number of BFD control packets received
rx_desired_min_rx_interval
Minimum interval, in microseconds, between
received BFD control packets that this system is
capable of supporting
rx_max_rate
Maximum rate (packets per second) at which BFD packets
were received
rx_min_rate
Minimum rate (packets per second) at which BFD packets
were received
rx_req_min_echo_rx_interval
Minimum interval, in microseconds, between
received BFD Echo packets
timeout_count
Count of the number of timeout states detected
tx_avg_rate
Average rate (packets per second) at which
BFD packets were transmitted
tx_count
Number of BFD control packets sent
tx_interval
Minimum interval, in microseconds, that the local system
will use when transmitting BFD control packets
tx_max_rate
Maximum rate (packets per second) at which BFD packets
were transmitted.
tx_min_rate
Minimum rate (packets per second) at which BFD packets
were transmitted
your_discriminator
Value of the Your Discriminator field
Description¶
The sth::emulation_bfd_info
function provides information about either
the routers or ports specified for the BFD configuration.
This function returns the requested data and a status value (1 for success). If there is an error, the function returns the status value (0) and an error message. Function return values are formatted as a keyed list (supported by the Tcl extension software - TclX). Use the TclX function keylget to retrieve data from the keyed list. (See Return Values for a description of each key.)
Examples¶
#### HLTAPI for Tcl ####
Sample Input:
sth::emulation_bfd_info \
-mode learned_info \
-handle $bfdRouterHandle
Sample Output:
{bfd_session_state DOWN} {learned_info {{router1 {{packet_rx 0}
{to_down_state 1} {min_intr_arriv 1000} {packet_tx 473} {to_up_state 0}}}}}
{status 1}
Sample Input:
sth::emulation_bfd_info \
-mode learned_info \
-port_handle port1
Sample Output:
{bfd_session_state DOWN} {learned_info {{router1 {{packet_rx 0}
{to_down_state 1} {min_intr_arriv 1000} {packet_tx 83} {to_up_state 0}}}
{router2 {{packet_rx 0} {to_down_state 1} {min_intr_arriv 1000}
{packet_tx 0} {to_up_state 0}}}}} {status 1}
To retrieve BFD statistics from the specified router:
set bfdRouterHandle "router1"
set stats [sth::emulation_bfd_info \
-mode bfd_stats \
-handle $bfdRouterHandle]
Sample Output:
{router1 {{session_up_count 0} {tx_count 6} {rx_count 0} {session_down_count
1} {timeout_count 0} {flap_count 0}}} {status 1}
To retrieve BFD statistics from the specified port:
set bfdRouterHandle "router1"
set stats [sth::emulation_bfd_info \
-mode bfd_stats \
-port_handle port3]
Sample Output:
{router1 {{session_up_count 0} {tx_count 14} {rx_count 0} {session_down_count
1} {timeout_count 0} {flap_count 0}}} {router2 {{session_up_count 0}
{tx_count 121} {rx_count 0} {session_down_count 10} {timeout_count 0}
{flap_count 0}}} {status 1}
To retrieve BFD MPLS session statistics from the specified router:
set bfdRouterHandle "router1"
set stats [sth::emulation_bfd_info \
-mode mpls_stats \
-handle $bfdRouterHandle]
Sample Output:
{router1 {{0 {{tx_interval 1000} {rx_min_rate 0} {rx_desired_min_rx_interval
1000} {tx_min_rate 1} {rx_avg_rate 0} {rx_count 0} {rx_max_rate 0}
{flap_count 0} {tx_max_rate 1.333} {tx_count 18} {tx_avg_rate 1.009}
{bfd_control_bits 8} {last_bfd_diagnostic_error_rx NO_DIAGNOSTIC}
{timeout_count 0} {bfd_session_state DOWN} {fec_info {Static LSP: 100}}
{bfd_diagnostic_code NO_DIAGNOSTIC} {my_discriminator 49152}
{your_discriminator 0} {rx_req_min_echo_rx_interval 0}}}}} {status 1}
To retrieve BFD MPLS session statistics from the specified port:
set stats [sth::emulation_bfd_info \
-mode mpls_stats \
-port_handle port3]
Sample Output:
{router1 {{0 {{tx_interval 1000} {rx_min_rate 0} {rx_desired_min_rx_interval
1000} {tx_min_rate 0.854} {rx_avg_rate 0} {rx_count 0} {rx_max_rate 0}
{flap_count 0} {tx_max_rate 1.333} {tx_count 27} {tx_avg_rate 1.043}
{bfd_control_bits 8} {last_bfd_diagnostic_error_rx NO_DIAGNOSTIC} {timeout_count
0} {bfd_session_state DOWN} {fec_info {Static LSP: 100}} {bfd_diagnostic_code
NO_DIAGNOSTIC} {my_discriminator 49152} {your_discriminator 0}
{rx_req_min_echo_rx_interval 0}}}}} {router2 {{0 {{tx_interval 1000} {rx_min_rate
0} {rx_desired_min_rx_interval 1000} {tx_min_rate 0.854} {rx_avg_rate 0}
{rx_count 0} {rx_max_rate 0} {flap_count 0} {tx_max_rate 1.333} {tx_count 25}
{tx_avg_rate 0.967} {bfd_control_bits 8} {last_bfd_diagnostic_error_rx
NO_DIAGNOSTIC} {timeout_count 0} {bfd_session_state DOWN} {fec_info {Static PW::
1000/0.0.3.232 (global) 167772162/10.0.0.2 (node) 1000/0.0.3.232 (ac)}}
{bfd_diagnostic_code NO_DIAGNOSTIC} {my_discriminator 49153} {your_discriminator
0} {rx_req_min_echo_rx_interval 0}}} {1 {{tx_interval 1000} {rx_min_rate 0}
{rx_desired_min_rx_interval 1000} {tx_min_rate 0.854} {rx_avg_rate 0} {rx_count
0} {rx_max_rate 0} {flap_count 0} {tx_max_rate 1.333} {tx_count 27} {tx_avg_rate
1.044} {bfd_control_bits 8} {last_bfd_diagnostic_error_rx NO_DIAGNOSTIC}
{timeout_count 0} {bfd_session_state DOWN} {fec_info {Static PW: 1000/0.0.3.232
(global) 167772162/10.0.0.2 (node) 1001/0.0.3.233 (ac)}} {bfd_diagnostic_code
NO_DIAGNOSTIC} {my_discriminator 49154} {your_discriminator 0}
{rx_req_min_echo_rx_interval 0}}}}} {status 1}
#### HLTAPI for Python ####
Sample Input:
results_ret2 = sth.emulation_bfd_info (
handle = device,
mode = 'aggregate_stats');
Sample Output:
{'status': '1', 'bfd_session_state': 'DOWN'}
#### HLTAPI for Perl ####
Sample Input:
my %results_ret2 = sth::emulation_bfd_info (
handle => "$device",
mode => 'aggregate_stats');
Sample Output:
$VAR1 = 'bfd_session_state';
$VAR2 = 'DOWN';
$VAR3 = 'status';
$VAR4 = '1';
Note
The aggregate_stats keys are currently not supported in Spirent TestCenter HLTAPI.
The only learned_info keys supported are -packet_tx, packet_rx, min_intr_arriv, to_down_state, and to_up_state.
End of Procedure Header