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.

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.

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.

Number of times to transmit the Link OAM event notification in a period. Possible values range from 1 to 10. The default is 2.

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.

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.

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.

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