Ethernet EFM Functions¶
sth::emulation_efm_config¶
Purpose¶
Creates, modifies, deletes, or resets an emulated EFM router for a given port.
Ethernet in the First Mile (EFM) technology is a transparent extension of Ethernet-based LANs into wide area networks. No conversion of packet formats is required when transmitting between the LAN and WAN. EFM technology enables service providers to build and provision cost-effective, high-performance broadband access to their customers, providing businesses and residences with voice, video, and data over a single gigabit Ethernet connection.
EFM supports remote failure indication, remote loopback, link monitoring, and management channel. The emulated router and its peer transmit packets periodically over a path between the devices. If a device stops receiving packets for long enough, the link is assumed to be broken.
Synopsis¶
Note
M indicates that the argument is Mandatory .
sth::emulation_efm_config [-mode {create|modify|destroy|reset} M] [-port_handle <port_handle>] [-critical_event {0|1}] [-dying_gasp {0|1}] [-error_frame_period_threshold <0-65535 >] [-error_frame_period_window <1-65535>] [-error_frame_threshold <0-65535 >] [-error_frame_summary_threshold <0-65535>] [-error_frame_summary_window <100-9000>] [-error_frame_window <10-600>] [-error_symbol_period_threshold <0-65535 >] [-error_symbol_period_window <1-65535>] [-link_events {0|1}] [-link_fault {0|1}] [-link_notification_events_per_interval <1-10>] [-link_notifications_interval] [-osi_enable {0|1}] [-osi_value <hexadecimal>] [-osi_oui <000000-FFFFFF>] [-organization_specific_event_value] [-organization_specific_event_oui <000000-FFFFFF>] [-mac_local <aa:bb:cc:dd:ee:ff>] [-oam_mode {active|passive}] [-oui_value <6 HEX chars>] [-remote_loopback {0|1}] [-unidirectional {0|1}] [-variable_retrieval {0|1}] [-vsi_value <8 HEX chars>] [-variable_response_tx {0|1}] [-pdu_tx {0|1}] [-loopback_response_tx {0|1}] [-max_pdu_size <4-2047>] [-oam_version <0-255>] [-override_local_satisfied {false|true|default}] [-override_remote_stable {false|true|default}] [-override_revision {0|1}] [-revision <0-65535>] [-error_frame_count] [-error_frame_period_count] [-error_frame_summary_count] [-error_symbol_period_count] [-link_notifications_ose_oui] [-link_notifications_ose_value] [-loopback_response_timer <1-10>] [-lost_link_timer {2 - 90}] [-pdu_timer <1-10>] [-variable_response_timer <1-10>] [-variable_response_branch] [-variable_response_data] [-variable_response_indication {0|1}] [-variable_response_leaf] [-variable_response_width] [-variable_request_branch] [-variable_request_leaf] [-vlan_id <0-4095>] [-vlan_id_mode { fixed|increment }] [-vlan_id_step <1-4094>] [-vlan_user_priority <0-7>] [-vlan_outer_id <0-4095>] [-vlan_outer_id_mode { fixed|increment }] [-vlan_outer_id_step <1-4094>] [-vlan_outer_user_priority <0-7>]
Arguments¶
-
-critical_event
¶
Send Critical Event messages to signal the remote EFM router whether an unspecified critical event has occurred. Possible values are 0 and 1. The default is 0.
-
-dying_gasp
¶
Send Dying Gasp messages to signal the remote EFM router whether an unrecoverable local fault has occurred. Possible values are 0 and 1. The default is 0.
-
-error_frame_period_threshold
¶
The number of errored frames in the period must be equal to or greater than this value for Errored Frame Period Events to be generated. Possible values range from 0 to 65535. The default value is 30.
-
-error_frame_period_window
¶
Defines the window, measured in received frames, within which the number of errored frames exceeds the threshold defined by the -error_frame_period_threshold argument. Possible values range from 1 to 65535. The default value is 300.
-
-error_frame_threshold
¶
The number of detected errored frames in the period must be equal to or greater than this value for Errored Frame Events to be generated. Possible values range from 0 to 65535. The default value is 40.
-
-error_frame_summary_threshold
¶
The number of errored frame seconds in the period must be equal to or greater than this value for Errored Frame Seconds Summary Event to be generated. Possible values range from 0 to 65535. The default value is 20.
-
-error_frame_summary_window
¶
Defines the window, measured in 100ms intervals, within which the number of errored frame seconds exceeds the threshold defined by the -error_frame_summary_threshold argument. Possible values range from 100 to 9000.The default value is 200.
-
-error_frame_window
¶
Defines the window, measured in 100ms intervals, within which the number of errored frames exceeds the threshold defined by the -error_frame_threshold argument. Possible values range from 10 to 600. The default value is 400.
-
-error_symbol_period_threshold
¶
The number of errored symbols in the period must be equal to or greater than this value for Errored Symbol Period Events to be generated. Possible values range from 0 to 65535. The default value is 50.
-
-error_symbol_period_window
¶
Defines the window, measured in number of symbols, within which the number of errored symbols exceeds the threshold defined by the -error_symbol_period_threshold argument. Possible values range from 1 to 65535. The default value is 500.
-
-link_events
¶
Specifies whether the EFM emulated router supports signaling Link Events, which include Errored Symbol Period Events, Errored Frame Events, Errored Frame Period Events and Errored Frame Seconds Summary Events. Possible values are 0 and 1. When the -link_events argument is enabled, the emulated EFM router will send Event Notification OAMPDUs (Operation, Administration and Maintenance Protocol Data Unit) containing a Link Event TLV (Type Length Value) for every event to its peer. The default is 0.
-
-link_fault
¶
Send Link Fault message in Information OAMPDU to signal the remote EFM router whether receive path is broken. Possible values are 0 and 1. The default is 0.
-
-link_notification_events_per_interval
¶
Number of times to transmit the Link OAM event notification in a period. Possible values range from 1 to 10. The default is 2.
-
-link_notifications_interval
¶
Specifies the initial time base in 100 ms intervals. The default is 0.
-
-mac_local
¶
Defines the MAC address {aa:bb:cc:dd:ee:ff} of the EFM router. The -mode argument must be set to either “config” or “modify”.
-
-mode
¶
Specifies the action to perform on the specified test port. This argument is Mandatory . Possible values are create, modify, destroy, and reset. The modes are described below:
- create
- Creates one emulated EFM router on the portspecified in the -port_handle argument. To create routers, specify the -port_handle argument. You must specify the -port_handle argument.
- modify
- Changes the configuration for the EFM router on the port identified by the -port_handle argument. You must specify the -port_handle argument.
- destroy
- Deletes the EFM router on the port specified in the -port_handle argument. You must specify the -port_handle argument.
- reset
- Same as destroy mode.
-
-oam_mode
¶
Defines the operation mode of EFM. Possible values are:
- active
- Initiates the EFM OAM Discovery process and can send any OAMPDU to its peer. At least one EFM router in a P2P(point to point) link must be in active mode.
- passive
- Waits for the remote EFM router in active mode to initiate the Discovery process.
The default is active.
-
-oui_value
¶
Defines the Organizational Unique Identifier (OUI) value. OUI is the first 24 bits of a MAC address for a network device, which indicates the specific vendor for that device as assigned by the IEEE. Specify this value as a string of six hexadecimal characters. The default is 000000.
-
-osi_enable
¶
Specifies a list of Booleans to determine whether you want the data Organization Specific information TLV data in Information OAMPDUs to be applied. Possible values are 0 (No) and 1 (Yes). The default is 1. The length of the list must be the same as that the length of lists -osi_value and -osi_oui list.
-
-osi_value
¶
Specifies a list of data fields of Organization Specific information TLV in Information OAMPDU except OUI. The default is 00. The value should be in hexadecimal format with an even length. The length of the list must be the same as that of the length of lists -osi_value and -osi_enable. For example, {01}, {0102}, {030405}
-
-osi_oui
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the OUI value in Organization Specific information TLV in Information OAMPDUs. Possible values range from 000000-FFFFFF. The default is 001094. The length of the list must be the same as that of lists -osi_value and -osi_enable.
-
-organization_specific_event_value
¶
Specifies the value of the Organization Specific OAMPDU data field except OUI. The default is 00. The value should be in hexadecimal format with an even length. (For example, {01}, {0102}, {030405}).
-
-organization_specific_event_oui
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the OUI value of the Organization Specific OAMPDU Data field. Possible values range from 000000-FFFFFF. The default is 001094.
-
-port_handle
¶
Specifies the port on which to create, modify, destroy or reset the EFM router. This argument is Mandatory for the four modes (create|modify|destroy|reset).
-
-remote_loopback
¶
Specifies that EFM emulation should attempt to put its peer into Remote Loopback mode. OAM remote loopback can be used for fault localization and link performance testing. Statistics from both the emulated EFM router and its peer can be queried and compared at any time while the peer of the emulated EFM router is in OAM remote loopback mode. When -remote_loopback is enabled, the local EFM router in Active mode sends a Loopback Control OAMPDU to get the remote EFM router into Remote Loopback mode. The Passive EFM router is not permitted to send Loopback Control OAMPDUs. Possible values are 0 and 1. The default is 0.
-
-unidirectional
¶
Specifies that EFM should run in Unidirectional mode. This is an OAMPDU-based mechanism that notifies the remote EFM router when one direction of a link is non-operational and therefore data transmission is disabled. When a link is operating in Unidirectional OAM mode, the OAM sublayer ensures that only Information OAMPDUs with the Link Fault critical link event indication set. Meanwhile, no Information TLVs are sent across the link. Possible values are 0(off) and 1(on). The default is 0(off).
-
-variable_retrieval
¶
Specifies that EFM emulation should have variable retrieval enabled. Possible values are 0 and 1. The default is 0, which indicates the emulated EFM router does not support sending Variable Response OAMPDUs.
-
-vsi_value
¶
Defines the Vendor-Specific Identifier (VSI) value. VSI is a 32-bit Identifier used to differentiate a vendor’s product model or versions. Specify this value as a string of eight hexadecimal characters. The default is 00000000.
-
-variable_response_tx
¶
Spirent Extension (for Spirent HLTAPI only).
Enables or disables the transmission of variable responses. Possible values are 0 and 1. The default is 1.
-
-pdu_tx
¶
Spirent Extension (for Spirent HLTAPI only).
Enables or disables the transmission of PDUs. Possible values are 0 and 1. The default is 1.
-
-loopback_response_tx
¶
Spirent Extension (for Spirent HLTAPI only).
Enables or disables the transmission of loopback responses. Possible values are 0 and 1. The default is 1.
-
-max_pdu_size
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the maximum OAMPDU size supported. Possible values range from 4 to 2047. The default is 1500.
-
-oam_version
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the OAM version of the emulated router. Possible values range from 0 to 255. The default is 1.
-
-override_local_satisfied
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies whether the local satisfied flag is to be overridden Possible values are:
false - Set local satisfied to false. true - Set local satisfied to true. default - Use the default handling of the local satisfied flag.
The default is default.
-
-override_remote_stable
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies whether the remote stable flag is to be overridden. Possible values are:
false - Set remote stable to false. true - Set remote stable to true. default - Use the default handling of the remote stable flag.
The default is default.
-
-override_revision
¶
Spirent Extension (for Spirent HLTAPI only).
Enables or disables overriding of the revision number. Possible values are 0 and 1. The default is 0.
-
-revision
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the current revision number. Possible values range from 0 to 65535. The default is 0. This argument is available when -override_revision is set to 1.
-
-error_frame_count
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the number of detected errored frames in the period, specified in 100 ms intervals. The default is 1.
-
-error_frame_period_count
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the number of detected frame errors in the period, specified in terms of frames. The default is 1.
-
-error_frame_summary_count
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the number of detected errored frame seconds in the period, specified in 100 ms intervals. The default is 1.
-
-error_symbol_period_count
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the number of detected symbol errors in the period, specified in number of symbols. The default is 1.
-
-link_notifications_ose_oui
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the OUI of Organization Specific Event TLV in Event Notification OAMPDUs. Possible values range from 000000 to FFFFFF. The default is 001094.
-
-link_notifications_ose_value
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the Organization Specific Event TLV data in Event Notification OAMPDU except OUI. The default is 00. The value should be in hexadecimal format with an even length. (For example, {01}, {0102}, {030405})
-
-loopback_response_timer
¶
Spirent Extension (for Spirent HLTAPI only).
Number of seconds to wait for a loopback response. Possible values range from 1 to 10. The default is 1.
-
-lost_link_timer
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the lost link timer used to reset the discovery state machine. Possible values range from 2 to 90. The default is 5.
-
-pdu_timer
¶
Spirent Extension (for Spirent HLTAPI only).
Number of seconds to wait for a received PDU and the interval at which Information PDUs are sent. Possible values range from 1 to 10. The default is 1.
-
-variable_response_timer
¶
Spirent Extension (for Spirent HLTAPI only).
Number of seconds to wait for a variable response. Possible values range from 1 to 10. The default is 1.
-
-variable_response_branch
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies a list of Variable branches in Variable Response OAMPDUs. The value must be a one-byte hex. The default is 00. The length of the list must be the same as that of lists -variable_response_data, -variable_response_indication, -variable_response_leaf and -variable_response_width.
-
-variable_response_data
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies a list of Variable values in Variable Response OAMPDUs. The default is 00. The value should be in hexadecimal format with an even length. The length of the list must be the same as that of lists -variable_response_branch, -variable_response_indication, -variable_response_leaf and -variable_response_width. (For example, {01}, {0102}, {030405})
-
-variable_response_indication
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies a list of Booleans to determine whether to enable the indication bit of the variable width. Possible values are 0 (disable) and 1 (enable). The default is 0. The length must be the same as that of lists -variable_response_branch, -variable_response_data, -variable_response_leaf and -variable_response_width.
-
-variable_response_leaf
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies a list of Variable leaves in Variable Response OAMPDUs. The value must be a two-byte hex. The default is 0000. length of the list must be the same as that of lists -variable_response_branch, -variable_response_indication, -variable_response_data and -variable_response_width.
-
-variable_response_width
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies a list of widths in Variable Response OAMPDUs. The default is 00. The length of the list must be the same as that of lists -variable_response_branch, -variable_response_indication, -variable_response_leaf and -variable_response_data.
-
-variable_request_branch
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies a list of Variable branches in Variable Request OAMPDUs. The value must be a one-byte hex. The default is 00. The length of the list must be the same as that of list -variable_request_leaf.
-
-variable_request_leaf
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies a list of Variable leaves in Variable Request OAMPDUs. The value must be a two-byte hex. The default is 0000. The length of the list must be the same as that of list -variable_request_branch.
-
-vlan_id
¶
Spirent Extension (for Spirent HLTAPI only).
The inner VLAN ID of VLAN sub-interface. Possible values range from 0 to 4095. The default is 1.
-
-vlan_id_mode
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies inner VLAN ID assignment for multiple router configurations. Valid values are “fixed” or “increment”. If you specify “fixed”, all of the routers will be assigned the same VLAN ID (the value of the -vlan_id argument). If you specify “increment”, then Spirent HLTAPI assigns unique VLAN IDs. When you use increment mode, you must also specify the -vlan_id_step argument to define the increment value.
-
-vlan_id_step
¶
Spirent Extension (for Spirent HLTAPI only).
The step size by which the inner VLAN value is incremented when you set -vlan_id_mode to “increment”. Possible values range from 1 to 4094. You must specify the step when the -count argument is greater than 1. The default is 1.
-
-vlan_user_priority
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the inner VLAN priority for the inner VLANs on this port. Possible values range from 0 to 7. The default is 0.
-
-vlan_outer_id
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the outer VLAN ID of VLAN sub-interface. Possible values range from 0 to 4095. The default is 1. When you use -vlan_outer_id, you must specify -vlan_id.
-
-vlan_outer_id_mode
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies how Spirent TestCenter assigns VLAN tags to packets in the specified outer header when router count is greater than 1. Possible values are:
fixed - The outer VLAN ID is the same for all packets. The fixed outer VLAN ID is the value of the -vlan_outer_id argument. increment - For all packets, the outer VLAN tag ID increments by the step specified in the -vlan_outer_id_step argument.
-
-vlan_outer_id_step
¶
Spirent Extension (for Spirent HLTAPI only).
The amount by which to increment the specified outer VLAN ID (-vlan_outer_id) for subsequent packets. Possible values range from 1 to 4094. You must specify this step when you specify “increment” for the -vlan_outer_id_mode argument.
-
-vlan_outer_user_priority
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the VLAN priority to assign to the outer header. Possible values range from 0 to 7. The default is 0.
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:
-passive_peer_only
-pdu_count
-mac_remote
-automatic_discovery
-error_symbol_period_event
-error_frame_event
-error_frame_period_event
-error_frame_seconds_summary_event
-organization_specific_event_enable
-size
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):
handle The handle that identifies the router created by the
``sth::emulation_efm_config`` function.
status Success (1) or failure (0) of the operation.
log An error message (if the operation failed).
Description¶
The sth::emulation_efm_config
function creates, modifies,
deletes, or resets an emulated EFM router. Use the -mode argument to
specify the action to perform. (See the -mode argument description for
information about the actions.)
When you create an emulated router, use the -port_handle argument to specify the Spirent HLTAPI port that the emulated router will use for EFM communication. (The port handle value is contained in the keyed list returned by the connect function.) Create mode returns the handle of the EFM router.
After you create an emulated EFM router, use the “emulation_efm_control -mode start” command for Spirent HLTAPI to start the router communication. The EFM router in Active mode sends Information PDUs to initiate the Discovery process. It may send Event Notification PDUs when -link_events is enabled and Loopback Control PDUs when -remote_loopback is enabled. The EFM router in Passive mode waits for the EFM router in Active mode to initiate the Discovery process.
If the local EFM router and the remote EFM router are satisfied with the
settings, an OAM link is established. During the test, use the
sth::emulation_efm_control
function to stop individual routers.
Examples¶
#### HLTAPI for Tcl ####
The following example creates an EFM router:
sth::emulation_efm_config \
-port_handle $hltSourcePort\
-mode create\
-critical_event 0\
-dying_gasp 1\
-error_frame_period_threshold 100\
-error_frame_period_window 200\
-error_frame_threshold 50\
-error_frame_summary_threshold 40\
-error_frame_summary_window 150\
-error_frame_window 180\
-error_symbol_period_threshold 10\
-error_symbol_period_window 30\
-link_events 1\
-link_fault 0\
-mac_local "00.00.00.01.00.01"\
-oam_mode active\
-oui_value 000001\
-remote_loopback 1\
-unidirectional 1\
-variable_retrieval 1\
-vsi_value 00000001\
-loopback_response_tx 0\
-pdu_tx 1\
-variable_response_tx 0\
-max_pdu_size 1500\
-oam_version 1\
-override_local_satisfied true\
-override_remote_stable true\
-override_revision 1\
-revision 3\
-error_frame_count 2\
-error_frame_period_count 3\
-error_frame_summary_count 4\
-error_symbol_period_count 5\
-link_notification_events_per_interval 4\
-link_notifications_interval 1\
-link_notifications_ose_oui 000002\
-link_notifications_ose_value {0708}\
-loopback_response_timer 2\
-lost_link_timer 6\
-pdu_timer 4\
-variable_response_timer 5\
-organization_specific_event_oui 000004 \
-organization_specific_event_value 01\
-osi_enable {1 1}\
-osi_oui {000003 000004}\
-osi_value {0506 0708}\
-variable_response_indication {1 1}\
-variable_response_data {0506 08}\
-variable_response_branch {02 03}\
-variable_response_leaf {0003 0004}\
-variable_response_width {03 05}\
-variable_request_branch {01 02}\
-variable_request_leaf {0001 0002}\
-vlan_id 2\
-vlan_id_mode increment \
-vlan_id_step 2\
-vlan_user_priority 1\
-vlan_outer_id 10\
-vlan_outer_id_mode increment \
-vlan_outer_id_step 2\
-vlan_outer_user_priority 2
Sample output for example shown above:
{handle router1} {status 1}
The following example modifies the created EFM router:
sth::emulation_efm_config \
-mode modify \
-port_handle portHandle \
-oam_mode passive
Sample output for example shown above:
{handle router1} {status 1}
The following examples delete the specified EFM router:
sth::emulation_efm_config \
-mode delete \
-port_handle portHandle
- sth::emulation_efm_config
- -mode reset -port_handle portHandle
Sample output for example shown above:
{status 1}
#### HLTAPI for Python ####
The following example creates an EFM router:
device_ret0 = sth.emulation_efm_config (
mode = 'create',
error_symbol_period_window= '10',
error_frame_window = '10',
error_frame_count = '1',
error_symbol_period_threshold= '1',
error_frame_period_count= '1',
error_frame_threshold= '1',
error_symbol_period_count= '1',
error_frame_period_window= '10',
error_frame_summary_window= '600',
error_frame_period_threshold= '1',
link_notification_events_per_interval= '2',
link_notifications_interval= '0',
error_frame_summary_threshold= '1',
link_notifications_ose_value= '00',
error_frame_summary_count= '1',
link_notifications_ose_oui= '001094',
organization_specific_event_value= '00',
organization_specific_event_oui= '001094',
pdu_timer = '1',
loopback_response_timer= '1',
variable_response_timer= '1',
lost_link_timer = '5',
vlan_outer_id_mode = 'increment',
vlan_id_mode = 'increment',
port_handle = port_handle[0],
vlan_outer_id_step = '1',
vlan_outer_user_priority= '7',
vlan_outer_id = '100',
vlan_id = '100',
vlan_user_priority = '6',
vlan_id_step = '1',
override_remote_stable= 'default',
link_fault = '0',
override_local_satisfied= 'default',
oam_version = '1',
pdu_tx = '1',
max_pdu_size = '1500',
link_events = '1',
critical_event = '0',
dying_gasp = '0',
oui_value = '001094',
oam_mode = 'active',
remote_loopback = '1',
unidirectional = '1',
variable_retrieval = '1',
loopback_response_tx= '1',
vsi_value = '00000000',
override_revision = '0',
variable_response_tx= '1',
mac_local = '00:10:94:00:00:01');
Sample Output:
{'status': '1', 'handle': 'router1'}
#### HLTAPI for Perl ####
The following example creates an EFM router:
my %device_ret0 = sth::emulation_efm_config (
mode => 'create',
error_symbol_period_window=> '10',
error_frame_window => '10',
error_frame_count => '1',
error_symbol_period_threshold=> '1',
error_frame_period_count=> '1',
error_frame_threshold=> '1',
error_symbol_period_count=> '1',
error_frame_period_window=> '10',
error_frame_summary_window=> '600',
error_frame_period_threshold=> '1',
link_notification_events_per_interval=> '2',
link_notifications_interval=> '0',
error_frame_summary_threshold=> '1',
link_notifications_ose_value=> '00',
error_frame_summary_count=> '1',
link_notifications_ose_oui=> '001094',
organization_specific_event_value=> '00',
organization_specific_event_oui=> '001094',
pdu_timer => '1',
loopback_response_timer=> '1',
variable_response_timer=> '1',
lost_link_timer => '5',
vlan_outer_id_mode => 'increment',
vlan_id_mode => 'increment',
port_handle => "$hport[1]",
vlan_outer_id_step => '1',
vlan_outer_user_priority=> '7',
vlan_outer_id => '100',
vlan_id => '100',
vlan_user_priority => '6',
vlan_id_step => '1',
override_remote_stable=> 'default',
link_fault => '0',
override_local_satisfied=> 'default',
oam_version => '1',
pdu_tx => '1',
max_pdu_size => '1500',
link_events => '1',
critical_event => '0',
dying_gasp => '0',
oui_value => '001094',
oam_mode => 'active',
remote_loopback => '1',
unidirectional => '1',
variable_retrieval => '1',
loopback_response_tx=> '1',
vsi_value => '00000000',
override_revision => '0',
variable_response_tx=> '1',
mac_local => '00:10:94:00:00:01');
Sample Output:
$VAR1 = 'handle';
$VAR2 = 'router1';
$VAR3 = 'status';
$VAR4 = '1';
End of Procedure Header
sth::emulation_efm_control¶
Purpose¶
Starts or stops an EFM router from routing traffic for the specified port.
Synopsis¶
Note
M indicates that the argument is Mandatory .
sth::emulation_efm_control [-action {start|stop|start_variable_request|stop_variable_request| start_loopback|stop_loopback|start_event_notification| stop_event_notification|start_organization_specific_event| stop_organization_specific_event|resume} M] [-port_handle <port_handle_list> M] [-pdu_packing {single_tlv|batch_tlvs}] [-period <1-10>] [-error_symbol_period_event_enable {0|1}] [-error_frame_event_enable {0|1}] [-error_frame_period_event_enable {0|1}] [-error_frame_seconds_summary_event_enable {0|1}] [-organization_specific_event_enable {0|1}] [-pause_at { fault|active_passive|send_local_remote|] send_local_remote_ok|send_any|none}] [-tx_type {single_mag|periodic}]
Arguments¶
-
-port_handle
¶
Identifies a list of ports on which to stop or start the EFM router. This argument is Mandatory .
-
-action
¶
Specifies the action to be taken on the specified port. Possible values are start or stop. This argument is mandatory. Possible values are:
start - Starts the EFM emulation for the specified port stop - Stops the EFM emulation for the specified port start_variable_request - Starts sending Variable Requests to DUT stop_variable_request - Stops sending Variable Requests to DUT start_loopback - Send a Loopback Control OAMPDU to enable remote loopback stop_loopback - Send a Loopback Control OAMPDU to disable remote loopback start_event_notification - Starts sending Link Event Notification PDUs stop_event_notification - Stops sending Link Event Notification PDUs resume - Resumes sending Link OAM commands start_organization_specific_event - Starts sending Organization Specific Event PDUs stop_organization_specific_event - Stops sending Organization Specific Event
-
-pdu_packing
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies how TLVs are packed into the PDU when a Variable Request OAMPDU or Event Notification OAMPDU is sent. Possible values are:
single_tlv - Send a single TLV per PDU batch_tlvs - Batch TLVs into a minimum number of PDUs
The default is single_tlv. This argument is available when -action is set to start_variable_request or start_event_notification.
-
-period
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the transmission period to send Variable Request OAMPDU/Event Notification OAMPDU/Organization Specific OAMPDU periodically. Possible values range from 1 to 10. This argument is available when -action is set to one of the following values:
start_variable_request start_event_notification start_organization_specific_event.
-
-error_symbol_period_event_enable
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies whether to send an errored symbol period event when you send Event Notification OAMPDUs. Possible values are 0 and 1. The default is 0. This argument is available when -action is set to start_event_notification.
-
-error_frame_event_enable
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies whether to send an errored frame event when you send Event Notification OAMPDUs. Possible values are 0 and 1. The default is 0. This argument is available when -action is set to start_event_notification.
-
-error_frame_period_event_enable
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies whether to send an errored frame period event when you send Event Notification OAMPDUs. Possible values are 0 and 1. The default is 0. This argument is available when -action is set to start_event_notification.
-
-error_frame_seconds_summary_event_enable
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies whether to send an errored frame seconds summary event when you send Event Notification OAMPDUs. Possible values are 0 and 1. The default is 0. This argument is available when -action is set to start_event_notification.
-
-organization_specific_event_enable
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies whether to send an organization specific event when you send Event Notification OAMPDUs. Possible values are 0 and 1. The default is 0. This argument is available when -action is set to start_event_notification.
-
-tx_type
¶
Spirent Extension (for Spirent HLTAPI only).
Specifies the message transmission type to send Variable Request OAMPDU/Event Notification OAMPDU/Organization Specific OAMPDUs. Possible values are:
single_mag - Send a single message. periodic - Send continuous messages.
The default is single_mag. This argument is available when -action is set to one of the following values:
start_variable_request start_event_notification start_ organization_specific_event
-
-pause_at
¶
Spirent Extension (for Spirent HLTAPI only).
The state the Link OAM router will remain in, until -action is set to “resume”. Possible values are:
Value Description fault FAULT state active_passive ACTIVE_SEND_LOCAL or PASSIVE_WAIT state, depending on OAM mode send_local_remote SEND_LOCAL_REMOTE state send_local_remote_ok SEND_LOCAL_REMOTE_OK state send_any SEND_ANY state none NONE
The default is 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_efm_control
function controls the routing of
traffic through the specified ports. You can use this function to
perform two actions: starting routers and stopping routers.
Examples¶
#### HLTAPI for Tcl ####
To start the EFM router on the specified port:
sth::emulation_efm_control -mode start -port_handle portHandle
To stop the EFM router on the specified port:
sth::emulation_efm_control -mode stop -port_handle portHandle
Sample Output:
{status 1}
#### HLTAPI for Python ####
To start the EFM router on the specified port:
ctrl_ret1 = sth.emulation_efm_control (
port_handle = port_handle[0],
action = 'start');
Sample Output:
{'status': '1'}
#### HLTAPI for Perl ####
To start the EFM router on the specified port:
my %ctrl_ret2 = sth::emulation_efm_control (
port_handle => "$hport[2]",
action => 'start');
Sample Output:
$VAR1 = 'status';
$VAR2 = '1';
End of Procedure Header
sth::emulation_efm_stat¶
Purpose¶
Returns EFM statistics on the specified port. Statistics include the EFM connection status and link event counters.
Synopsis¶
Note
M indicates that the argument is Mandatory .
sth::emulation_efm_stat [-port_handle <port_handle> M] [-action {get|reset} M]
Arguments¶
-
-port_handle
¶
Specifies the ports for which you want information. This argument is Mandatory .
-
-action
¶
Specifies the action to take on the specified port handles. This argument is mandatory. Possible values are:
get Retrieves all EFM statistics for the specified port. reset Deletes all EFM statistics for the specified port.
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.
- port_handle
- The ports for which you want to retrieve information about the EFM session.
- local_state
Indicates the state information of the emulated EFM router. Possible values are NONE, UNSATISFIED, NOT COMPLETED, and COMPLETED:
NONE - Indicates there is no state information available. UNSATISFIED - Indicates that the Discovery process cannot complete. NOT COMPLETED - Indicates that the Discovery process is in progress. COMPLETED - Indicates that the Discovery process is complete.
The following keys are returned when you specify -action get:
- statistics
- remote_dte_oam_version
- The OAM version of the remote OAM client
- remote_dte_revision
- Revision number of the remote OAM client
- remote_max_pdu_size
- Maximum PDU size supported on the remote OAM client
- current_discovery_state
Value of the local DTE state:
UNSATISFIED Discovery can not complete NOT_COMPLETED Discovery has not completed COMPLETED Discovery has completed RESERVED Reserved flag should not be received NONE No current state exists
- local_dte_tx_critical_event_bit
Value of the critical event flag:
OFF Critical event is not enabled ON Critical event is enabled
- local_dte_tx_dying_gasp_bit
Value of the dying gasp flag:
OFF Dying gasp is not enabled ON Dying gasp is enabled
- local_dte_tx_link_fault_bit
- Value of the link fault flag::
- OFF Link fault is not enabled ON Link fault is enabled
- remote_dte_rx_critical_event_bit
Value of the remote critical event flag:
OFF Remote critical event is not enabled ON Remote critical event is enabled
- remote_dte_rx_dying_gasp_bit
Value of the remote dying gasp flag:
OFF Remote dying gasp is not enabled ON Remote dying gasp is enabled
- remote_dte_rx_link_fault_bit
Value of the remote link fault flag:
OFF Remote link fault is not enabled ON Remote link fault is enabled
- remote_dte_multiplexer_action_value
Value of the remote multiplexer action:
FWD Forwarding non-OAMPDUs DISCARD Discarding non-OAMPDUs
- remote_dte_parser_action_value
Value of the remote parser action:
FWD Forwarding non-OAMPDUs LB Looping back non-OAMPDUs DISCARD Discarding non-OAMPDUs RESERVED Reserved flag should not be set
Spirent Extension (for Spirent HLTAPI only).
- local_dte_multiplexer_action_value
Value of the local multiplexer action:
FWD Forwarding non-OAMPDUs DISCARD Discarding non-OAMPDUs
Spirent Extension (for Spirent HLTAPI only).
local_dte_parser_action_value Value of the parser action:
FWD Forwarding non-OAMPDUs LB Looping back non-OAMPDUs DISCARD Discarding non-OAMPDUs RESERVED Reserved flag should not be set
Spirent Extension key (for Spirent HLTAPI only).
- remote_state
Value of the remote DTE state:
UNSATISFIED Discovery can not complete NOT_COMPLETED Discovery has not completed COMPLETED Discovery has completed RESERVED Reserved flag should not be received NONE No current state exists
Spirent Extension (for Spirent HLTAPI only).
- info_pdu_timesout
- Number of information PDU timeouts
Spirent Extension (for Spirent HLTAPI only).
- rx_loopback_pdu_count
- Number of loopback PDUs received
Spirent Extension (for Spirent HLTAPI only).
- loopback_pdu_timesout
- Number of loopback PDU timeouts
Spirent Extension (for Spirent HLTAPI only).
tx_loopback_pdu_count Number of loopback PDUs transmitted
Spirent Extension (for Spirent HLTAPI only).
- tx_org_specific_pdu_count Number of organization specific PDUs
- transmitted
Spirent Extension (for Spirent HLTAPI only).
- rx_variable_request_pdu_count Number of variable request PDUs
- received
Spirent Extension (for Spirent HLTAPI only).
- variable_request_pdu_time_out Number of variable request PDU
- timeouts
Spirent Extension (for Spirent HLTAPI only).
- tx_variable_request_pdu_count Number of variable request PDUs
- transmitted
Spirent Extension (for Spirent HLTAPI only).
- rx_ variable_response_pdu_count
- Number of variable response PDUs received
Spirent Extension (for Spirent HLTAPI only).
- tx_ variable_response_pdu_count
- Number of variable response PDUs transmitted
- mac_remote
- link_events_enabled
Value of the link events flag:
TRUE - Supports interpreting Link Events
- oam_mode
- State of the emulated router
- oampdu_count
- Number of OAMPDUs received
- oampdu_size
- Size of OAMPDUs
- oui_value
- OUI Value
- remote_loopback_enabled
Value of the remote loopback flag:
TRUE - Runs in Remote Loopback mode
- unidir_enabled
Value of the unidirectional flag:
TRUE - Supports unidirectional mode
- variable_retrieval_enabled
Value of the variable retrieval flag:
TRUE - Supports sending Variable Response OAMPDUs
- vsi_value
- VSI Value
- oampdu_count
- Number of OAMPDUs received
- oui_value
- OUI Value
- vsi_value
- Specifies the vendor specific information
- tx_information_oam_pdu_count
- Number of information PDUs transmitted
- tx_link_event_notification_count
- Number of event PDUs transmitted
- rx_information_oam_pdu_count
- Number of information PDUs received
- rx_link_event_notification_count
- Number of event PDUs received
- rx_organization_specific_oam_pdu_count
- Number of organization specific PDUs received
Spirent Extension (for Spirent HLTAPI only).
- remote_vsi_value
- Vendor specific information value on the remote OAM client
alarms
- errored_frame_events
- Number of Errored Frame Events detected
- errored_frame_period_events
- Number of Errored Frame Period Events detected
- errored_frame_seconds_summary_events
- Number of Errored Frame Period Events detected
- errored_symbol_period_events
- Number of Errored Symbol Period Events detected
- organization_specific_events
- Number of organization specific events received
- tx_errored_symbol_period_events
- Number of errored symbol period events transmitted
- tx_errored_frame_events
- Number of errored frame events transmitted
- tx_errored_frame_period_events
- Number of errored frame period events transmitted
- tx_errored_frame_seconds_summary_events
- Number of errored frame seconds summary events transmitted
- tx_organization_specific_event
- Number of organization specific events transmitted
- tx_critical_events
- Number of critical events transmitted
- tx_dying_gasp
- Number of dying gasps transmitted
- tx_link_fault
- Number of link faults transmitted
- rx_critical_events
- Number of critical events received
- rx_dying_gasp
- Number of dying gasp received
- rx_link_fault
- Number of link faults received
- event_notification
Spirent Extension (for Spirent HLTAPI only).
There can be a more than one event_notification hash. For example, if you send two kinds of Link Event Notification PDUs, you will get two -event_notification hashes. Please refer to the sample output for more details. The hash elements are described below:
event_type Spirent HLTAPI value of the event type Errored symbol period event ERRORED_FRAME Errored frame event ERRORED_FRAME_PERIOD Errored frame period event ERRORED_FRAME_SECONDS_SUMMARY Errored frame seconds summary event ORG_SPECIFIC Organization specific event time_stamp Timestamp of the event in 100 ms intervals window_size Window size of the event threshold Threshold of the event error_count Error count of the event error_running_total Error running total of the event event_running_total Event running total oui OUI in Organization Specific Event TLV of Event Notification PDUs value Value of the Organization Specific Event TLV in Event Notification PDUs
Description¶
The sth::emulation_efm_stat
function provides information about
the ports specified for the EFM 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.)
Note
The following -mac_remote statistics keys are not supported:
oampdu_size
tx_loopback_enable_count
tx_loopback_disable_count
rx_loopback_enable_count
rx_loopback_disable_count
rx_invalid_oam_pdu_count
The following -alarms statistics keys are not supported:
rx_errored_symbol_period_events
rx_errored_frame_events
rx_errored_frame_period_events
rx_errored_frame_seconds_summary_events
rx_organization_specific_event
The following -statistics keys are not supported:
attempted_discovery_count
successful_discovery_count
unsuccessful_discovery_count
last_discovery_time
min_discovery_time
max_discovery_time
avg_discovery_time
lost_link_timeouts_count
last_info_tlv_received_timestamp
attempted_loopback_enable_count
successful_loopback_enable_count
unsuccessful_loopback_enable_count
attempted_loopback_disable_count
successful_loopback_disable_count
unsuccessful_loopback_disable_count
last_loopback_enable_time
last_loopback_disable_time
current_remote_loopback_state
current_link_event_notification_state
remote_dte_mac
local_dte_tx_last_oampdu_type
remote_dte_rx_last_oampdu_type
last_error_description
Examples¶
#### HLTAPI for Tcl ####
Sample Input:
::sth::emulation_efm_stat \
-action get \
-port_handle portHandle
Sample Output:
{port_handle port2} {local_state COMPLETED} {statistics
{{tx_org_specific_pdu_count 0} {local_dte_multiplexer_action_value FWD}
{remote_max_pdu_size 1500} {local_dte_tx_critical_event_bit OFF}
{remote_dte_multiplexer_action_value DISCARD}{local_dte_tx_dying_gasp_bit ON}
{loopback_pdu_timesout 0} {remote_dte_oam_version1}
{remote_dte_rx_dying_gasp_bit OFF} {remote_state COMPLETED}
{remote_dte_parser_action_value FWD} {info_pdu_timesout 0}
{rx_variable_request_pdu_count 6} {tx_variable_request_pdu_count 0}
{rx_variable_response_pdu_count 0} {current_discovery_state COMPLETED}
{local_dte_tx_link_fault_bit OFF} {remote_dte_rx_critical_event_bit OFF}
{rx_loopback_pdu_count 1} {tx_loopback_pdu_count 0}
{tx_variable_response_pdu_count 0} {variable_request_pdu_timeouts 0}
{remote_dte_rx_link_fault_bit OFF} {local_dte_parser_action_value FWD}
{remote_dte_revision 5}}} {alarms {{rx_link_fault 0} {tx_link_fault 0}
{tx_errored_frame_seconds_summary_events 1} {errored_frame_period_events 0}
{rx_critical_events 0} {errored_frame_seconds_summary_events 0}
{tx_errored_frame_period_events 1} {rx_dying_gasp 0} {tx_dying_gasp 23}
{tx_errored_symbol_period_events 1} {tx_errored_frame_events 1}
{tx_organization_specific_events 0} {tx_critical_events 0}
{errored_symbol_period_events 1} {errored_frame_events 0}
{organization_specific_events 1}}} {mac_remote {{rx_information_oam_pdu_count 6}
{variable_retrieval_enabled FALSE} {tx_link_event_notification_count 16}
{remote_vsi_value {0000 0002}} {rx_link_event_notification_count 8} {oui_value
00-00-01} {oam_mode PASSIVE} {link_events_enabled FALSE}
{tx_information_oam_pdu_count 7} {remote_loopback_enabled FALSE} {unidir_enabled
FALSE} {vsi_value {0000 0001}} {rx_organization_specific_oam_pdu_count 4}
{oampdu_count 25}}} {event_notification {{1 {{event_type ERRORED_SYMBOL_PERIOD}
{error_count 5} {value {}} {event_running_total 0} {error_running_total 5} {oui
{}} {threshold 20} {time_stamp 222} {window_size 40}}} {2 {{event_type
ORG_SPECIFIC} {error_count 0} {value {07 08}} {event_running_total 0}
{error_running_total 0} {oui 00-00-02}{threshold 0} {time_stamp 0} {window_size
0}}}}} {status 1}
#### HLTAPI for Python ####
Sample Input:
results_ret1 = sth.emulation_efm_stat (
port_handle = port_handle[0],
action = 'get');
Sample Output:
{'status': '1', 'statistics': {'remote_max_pdu_size': '0',
'loopback_pdu_timesout': '0', 'remote_state': 'UNSATISFIED',
'remote_dte_oam_version': '0', 'rx_loopback_pdu_count': '0',
'local_dte_tx_link_fault_bit': 'OFF', 'rx_variable_request_pdu_count': '0',
'info_pdu_timesout': '0', 'local_dte_tx_critical_event_bit': 'OFF',
'remote_dte_revision': '0', 'variable_request_pdu_timeouts': '0',
'tx_loopback_pdu_count': '0', 'tx_org_specific_pdu_count': '0',
'tx_variable_response_pdu_count': '0', 'rx_variable_response_pdu_count': '0',
'current_discovery_state': 'NONE', 'local_dte_multiplexer_action_value': 'FWD',
'remote_dte_rx_critical_event_bit': 'OFF', 'remote_dte_parser_action_value':'FWD',
'remote_dte_multiplexer_action_value': 'FWD',
'local_dte_tx_dying_gasp_bit': 'OFF', 'tx_variable_request_pdu_count': '0',
'local_dte_parser_action_value': 'FWD', 'remote_dte_rx_dying_gasp_bit': 'OFF',
'remote_dte_rx_link_fault_bit': 'OFF'},
'mac_remote':{'rx_organization_specific_oam_pdu_count': '0',
'link_events_enabled': 'FALSE', 'remote_loopback_enabled': 'FALSE',
'remote_vsi_value': '0000 0000', 'variable_retrieval_enabled': 'FALSE',
'oam_mode': 'PASSIVE', 'tx_information_oam_pdu_count': '0',
'rx_information_oam_pdu_count': '0', 'oui_value': '00-10-94', 'unidir_enabled':'FALSE',
'vsi_value': '0000 0000', 'rx_link_event_notification_count': '0',
'tx_link_event_notification_count': '0', 'oampdu_count': '0'}, 'port_handle':'port1',
'local_state': 'NONE', 'alarms': {'organization_specific_events': '0',
'tx_link_fault': '0', 'errored_symbol_period_events': '0',
'tx_errored_symbol_period_events': '0',
'tx_errored_frame_seconds_summary_events': '0', 'rx_link_fault': '0',
'rx_critical_events': '0', 'tx_errored_frame_events': '0',
'tx_critical_events':'0', 'tx_errored_frame_period_events': '0',
'rx_dying_gasp': '0', 'errored_frame_period_events': '0', 'tx_dying_gasp': '0',
'tx_organization_specific_events': '0', 'errored_frame_seconds_summary_events':'0',
'errored_frame_events': '0'}}
#### HLTAPI for Perl ####
Sample Input:
my %results_ret1 = sth::emulation_efm_stat (
port_handle => "$hport[1]",
action => 'get');
Sample Output:
$VAR1 = 'alarms';
$VAR2 = {
'errored_frame_period_events' => '0',
'tx_organization_specific_events' => '0',
'tx_critical_events' => '0',
'tx_link_fault' => '0',
'organization_specific_events' => '0',
'errored_frame_seconds_summary_events' => '0',
'rx_dying_gasp' => '0',
'tx_errored_frame_period_events' => '0',
'tx_errored_symbol_period_events' => '0',
'tx_errored_frame_seconds_summary_events' => '0',
'errored_symbol_period_events' => '0',
'tx_dying_gasp' => '0',
'rx_critical_events' => '0',
'rx_link_fault' => '0',
'errored_frame_events' => '0',
'tx_errored_frame_events' => '0'
};
$VAR3 = 'port_handle';
$VAR4 = 'port1';
...
$VAR7 = 'status';
$VAR8 = '1';
End of Procedure Header