PTP Functions

emulation ptp config

Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>

Purpose:

The emulation ptp config command configures Precision Time Protocol (PTP) master and slave over UDP over IPv4/IPv6 or over Ethernet emulation for a given port.

PTP, known officially as IEEE 1588v2, is a highprecision time protocol for synchronization used in measurement and control systems residing on a local area network. It provides synchronous communications in an asynchronous environment by allowing heterogeneous systems that include clocks of various precision, resolution, and stability to synchronize to a grandmaster clock at the nanosecond level.

Synopsis:

Note: 1. M indicates the argument is `Mandatory`.
      2. S indicates the argument is for `scaling` scenarios.

    emulation ptp config
        mode= {create|activate|delete|enable|disable|modify|enable_all|disable_all} M
        port_handle= <port_handle>
        handle= <ptp_device_handle>
        device_type= {ptpSlave|ptpMaster}
        transport_type= {ethernet_ii|ipv4|ipv6}
        count= <integer>
        name= <name>
        encapsulation= {ethernetii|llc_snap|vc_mux|ethernetii_llc_snap|ethernetii_vc_mux}
        vlan_id1= <0 - 4095>
        vlan_ether_type1= {0x8100|0x88A8|0x9100|0x9200}
        vlan_id_mode1= {fixed|increment}
        vlan_id_step1= <0-4095>
        vlan_id_repeat1= <0 - 4095>
        vlan_priority1= <0-7>
        vlan_id2= <0 - 4095>
        vlan_ether_type2= {0x8100|0x88A8|0x9100|0x9200}
        vlan_id_mode2= {fixed|increment}
        vlan_id_step2= <0 - 4095>
        vlan_id_repeat2= <0 - 4095>
        vlan_priority2= <0-7>
        local_mac_addr= <aa:bb:cc:dd:ee:ff>
        local_mac_addr_step=  <aa:bb:cc:dd:ee:ff>
        local_mac_addr_repeat= <integer>
        local_ip_addr= <a.b.c.d>
        local_ip_addr_step= <a.b.c.d>
        local_ip_addr_repeat= <integer>
        local_ip_prefix_len= <0-32>
        local_ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        local_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        local_ipv6_addr_repeat= <integer>
        local_ipv6_prefix_len= <0-128>
        remote_ip_addr= <a.b.c.d>
        remote_ip_addr_step= <a.b.c.d>
        remote_ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        remote_ipv6_addr_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        ptp_session_mode= {unicast|multicast}
        ipv4_priority= {tos|diffserv}
        ip_tos_field= <0x0 - 0xFF>
        tos_precedence= {routine|priority|immediate|flash|flashoverride|critic-ecp|
                          internetcontrol|networkcontrol}
        tos_delay= {normal|low}
        tos_throughput= {normal|high}
        tos_reliability= {normal|high}
        tos_monetary_cost= {normal|minimize}
        tos_unused= <0x0-0xF>
        diff_default=  <0-255>
        diff_class= <0-7>
        diff_assured_forwarding= {class1low-drop| class1-medium-drop|class1-high-drop|
                          class2low-drop|class2-medium-drop|class2-high-drop|
                          class3low-drop|class3-medium-drop|class3-high-drop|
                          class4low-drop|class4-medium-drop|class4-high-drop}
        diff_explicit_forwarding= <0-63>
        diff_ecn= {ecncapable-transport1|ecncapable-transport0|
                   nonecn-capable-transport|congestion}
        ptp_domain_number= <0-255>
        ptp_port_number= <0-65535>
        ptp_clock_id= <hexadecimal | colon seperated value>
        ptp_clock_id_mode= {increment|list}
        ptp_clock_id_step= <hexadecimal | colon seperated value>
        ptp_clock_id_repeat= <integer>
        master_clock_class= <0-255>
        master_clock_priority1= <0-255>
        master_clock_priority2= <0-255>
        time_source= {atomicclock|gps|terrestrial-radio|ptp|ntp|
                       handset|other|internaloscillator|ptp-profile}
        announce_message_enable= {0|1}
        log_announce_message_interval= <-127-127>
        announce_receipt_timeout= <3-20>
        sync_enable= {0|1}
        sync_two_step_flag= { on }
        log_sync_message_interval= <-127-127>
        path_delay_mechanism  {endtoend= }
        delay_request_enable= {0|1}
        log_minimum_delay_request_interval= <-127-127>
        tx_crc_error_perc= <0-100>
        tx_time_stamp_error_perc= <0-100>
        tx_delay_resp_dropped_perc= <0-100>
        tx_followup_dropped_perc= <0-100>
        enable_correction= {0|1}
        sync_correction= <integer>
        followup_correction= <integer>
        delay_request_correction= <integer>
        delay_response_correction= <integer>
        ptp_scale_mode= {normal|gen_tx_no_results}
        clock_accuracy= {local_clock_accuracy|less_025_0ns|less_100_0ns|less_250_0ns|
                            less_001_0us|less_002_5us|less_010_0us|less_025_0us|
                            less_100_0us|less_250_0us|less_001_0ms|less_002_5ms|
                            less_010_0ms|less_025_0ms|less_100_0ms|less_250_0ms|
                            less_001_0s|less_010_0s|greater_010_0s}]
        custom_clock_accuracy= <0-255>
        enable_unicast_negotiation= {true|false}
        frequency_traceable= {true|false}
        leap_flag= {leap59|leap61|none}
        master_clock_selection_method= {none|bmca}
        messaging_mode= {multicast|unicast|mixed}
        multicast_mac= {default_mac|primary_mac|pdelay_mac}
        offset_scaled_log_variance= <0-65535>
        time_traceable= {true|false}
        ptp_ttl= <1-255>
        unicast_master_port_ipv4= <a.b.c.d>
        unicast_master_port_ipv6= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        use_custom_clock_accuracy= {true|false}
        use_partial_block_state= {true|false}
        utc_offset= <1-255>
        vci= <0-65535>
        vci_step= <0-65535>
        vpi= <0-255>
        vpi_step= <0-255>
        ptp_domain_number_step= <0-255>
        encap= {udp_ipv4|udp_ipv6|ethernet}
        master_clock_priority1_step= <0-255>
        master_clock_priority2_step= <0-255>
        ptp_profile= {default|ieee1588v2_smpte|ieee1588v2_aes67|ieee1588v2_enterprise}
        unicast_ipv4_addr_type= {unicast_ip_list|unicast_ip_increment}
        unicast_ipv6_addr_type= {unicast_ip_list|unicast_ip_increment}
        unicast_master_port_ipv4_addr_count= <integer>
        unicast_master_port_ipv4_port_step= <a.b.c.d>
        unicast_master_port_ipv4_start= <a.b.c.d>
        unicast_master_port_ipv4_step= <a.b.c.d>
        unicast_master_port_ipv6_addr_count= <integer>
        unicast_master_port_ipv6_port_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        unicast_master_port_ipv6_start= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        unicast_master_port_ipv6_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        expand= {true|false} S

Arguments:

mode
                Specifies the action to perform on the port (port_handle)
                or on the device (handle). This argument is `Mandatory`. Possible
                values are described below::


                 create - Creates a new PTP device on the port specified by
                          port_handle.

                 activate - Used for `scaling` scenarios.
                            1. Enables PTP devices and configures
                               PTP parameters for the devices returned from
                               interface_config() or emulation_device_config(wizard).
                               Requires param_handle value as the input to the
                               handle option.
                            2. Creates devices and enables PTP protocol.
                               Requires port_handle and -block_mode options.

                 Note: 1. When handle is provided for the create mode, the following
                          options will be obsoleted::

                          count
                          mac_address_start
                          local_ip_addr
                          local_addr_step
                          netmask
                          local_ipv6_addr
                          next_hop_ip
                          next_hop_ip_step
                          local_router_id_enable
                          local_router_id
                          local_router_id_step
                          affiliated_router_target
                          vci
                          vci_step
                          vlan_cfi
                          vlan_id
                          vlan_id_mode
                          vlan_id_step
                          vlan_user_priority
                          vpi
                          vpi_step
                          tunnel_handle
                          vlan_outer_id
                          vlan_outer_id_mode
                          vlan_outer_id_step
                          vlan_outer_user_priority

                      2. For mode activate, the following set of options are valid::


                           When handle option is provided::


                             announce_receipt_timeout
                             ptp_clock_id
                             ptp_clock_id_step
                             ptp_domain_number
                             ptp_domain_number_step
                             path_delay_mechanism
                             enable_unicast_negotiation
                             encap
                             log_announce_message_interval
                             log_minimum_delay_request_interval
                             log_sync_message_interval
                             messaging_mode
                             multicast_mac
                             master_clock_priority1
                             master_clock_priority1_step
                             master_clock_priority2
                             master_clock_priority2_step
                             ptp_port_number
                             ptp_profile
                             device_type
                             sync_two_step_flag
                             unicast_ipv4_addr_type
                             unicast_ipv6_addr_type
                             unicast_master_port_ipv4
                             unicast_master_port_ipv6
                             unicast_master_port_ipv4_addr_count
                             unicast_master_port_ipv4_port_step
                             unicast_master_port_ipv4_start
                             unicast_master_port_ipv4_step
                             unicast_master_port_ipv6_addr_count
                             unicast_master_port_ipv6_port_step
                             unicast_master_port_ipv6_start
                             unicast_master_port_ipv6_step

                           When port_handle and -block_mode options are provided,
                           requires following options along with the above
                           specified options.

                             block_mode
                             block_mode_index
                             count_per_block
                             count_block_per_port
                             mac_addr
                             mac_addr_step
                             mac_addr_step_per_port
                             mac_addr_step_per_vlan
                             ip_step_per_port
                             ip_step_per_vlan
                             intf_ipv6_prefix_len
                             ipv6_step_per_port
                             ipv6_step_per_vlan
                             link_local_ipv6_step_per_port
                             link_local_ipv6_step_per_vlan
                             name
                             vlan_id
                             vlan_id_step
                             vlan_user_pri
                             vlan_id_count
                             vlan_id_repeat_count
                             vlan_id_stack_count
                             vlan_tpid
                             vlan_cfi
                             vlan_outer_id
                             vlan_outer_id_step
                             vlan_outer_id_count
                             vlan_outer_user_pri
                             vlan_outer_id_repeat_count
                             vlan_outer_tpid
                             vlan_outer_cfi
                             qinq_incr_mode
                             vlan_outer_id_count
                             vlan_outer_user_pri
                             intf_prefix_len
                             router_id
                             router_id_step
                             link_local_ipv6_prefix_len
                             router_id_ipv6
                             router_id_ipv6_step
                             link_local_ipv6_addr
                             link_local_ipv6_addr_step
                             gateway_ipv6_addr
                             gateway_ipv6_addr_step
                             intf_ipv6_addr
                             intf_ipv6_addr_step

                           Note: Please refer to the emulation_device_config documentation.

                 modify - Modifies the PTP device specified by handle.

                 delete - Deletes the PTP device specified by handle.

                 enable_all - Activates all the PTP devices on the port specified by
                          port_handle.

                 disable_all - Deactivates all the PTP devices on the port specified
                          by port_handle.

                 enable - Active the specific PTP device specified by handle.

                 disable - Deactivates the specific PTP device specified by handle.

port_handle
                Defines the port on which the PTP emulation will be created. The
                port handle is returned from the ``connect`` function. This
                parameter is `Mandatory` for the create, the enable_all, and the
                disable_all mode.

handle
                Specifies the handle of the created PTP device.
                This argument is `Mandatory` for the modify, the enable, the
                disable or the delete mode. For the modify mode, you can specify
                only one handle; For the delete, the enable, or the disable mode,
                you can specify a list of handles.

device_type
                Specifies the port role of the PTP emulation. Possible values are
                described below::


                 ptpMaster - The PTP emulation is a master port that transits the
                     synchronous time. This is the default.

                 ptpSlave - The PTP emulation is a slave port that receives the
                     synchronous time only.

transport_type
                Defines the protocol layer that carries the PTP packets. This
                argument is `Mandatory` for the create mode. Possible values are
                described below::


                 ethernet_ii - The PTP protocol will transport directly over
                        Ethernet frames.

                 ipv4 - The PTP protocol will transport over User Datagram
                        Protocol (UDP) over IPv4  encapsulation.

                 ipv6 - The PTP protocol will transport over UDP over IPv6
                        encapsulation.

                Note: This argument determines the encapsulation used by PTP
                    emulation as well as the scope of IP address parameters. For
                    example, if transport_type is set to ipv4, parameters to configure
                    the IPv4 address will take effect;if transport_type is set to
                    ethernet_ii, IP address setting parameters will not take effect.

count
                Specifies the number of PTP emulations to create on the port
                specified by the port_handle argument. This argument is
                available only in the create mode. The default value is 1.

name
                Defines the name of the PTP device.

encapsulation
                Specifies the Layer2 framing mode for encapsulated devices. The
                default is ETHERNETII. Possible values are described below::


                 ETHERNETII - Specifies the Layer 2 encapsulation to be Ethernet II
                     frame. This option is available for Ethernet cards.

                 VC_MUX - Specifies the ATM encapsulation to be VC Multiplexed.
                     Virtual Circuit Multiplexing (VC_MUX) is one of the two
                     mechanisms or identifying the protocol carried in ATM
                     Adaptation Layer5 (AAL5) frame. This option is available for
                     ATM cards.

                 LLC_SNAP - Specifies the ATM encapsulation to be LLC
                     Encapsulated. LLC_SNAP is the other mechanism for
                     identifying the protocol carried in AAL5 frame. This option
                     is available for ATM cards.

                 ETHERNETII_LLC_SNAP - Specifies the Layer 2 encapsulation to be
                     Ethernet over VC Multiplexed ATM which will encapsulate the
                     Ethernet packets inside AAL5 LLC_SNAP frames. This option is
                     available for ATM cards.

                 ETHERNETII_VC_MUX - Specifies the Layer 2 encapsulation to be
                     Ethernet over LLC Encapsulated ATM which will encapsulate the
                     Ethernet packets inside AAL5 VC_MUX frames.This option is
                     available for ATM cards.

                Note: When encapsulation is set to ETHERNETII,
                     ETHERNETII_LLC_SNAP, or ETHERNETII_VC_MUX, you can use
                     vlan_id1 and related VLAN arguments to configure VLAN
                     interface, or you can use vlan_id1, vlan_id2 and related
                     VLAN arguments to configure Qin-Q interface. See the
                     vlan_id1 and the vlan_id2 arguments description for more
                     information.

vlan_id1
                Specifies the VLAN ID of the first VLAN for the Ethernet field.
                When multiple VLAN tags are configured by configuring vlan_id1
                and vlan_id2 both, the first VLAN (vlan_id1) is the outer VLAN,
                also known as the Service Provider VLAN. Possible values range
                from 0 to 4095. The default value is 100.
                The Ethernet VLAN encapsulation will be enabled, when you specify
                vlan_id1 and leave vlan_id2 unspecified. The Ethernet Q-in-Q
                encapsulation will be enabled, when you specify both vlan_id1
                and vlan_id2.In this case, vlan_id1 is used as the outer VLAN
                and vlan_id2 the inner VLAN.
                This argument is available when encapsulation is set to
                ETHERNETII, ETHERNETII_LLC_SNAP, or ETHERNETII_VC_MUX.

vlan_ether_type1
                Specifies the VLAN Ethernet type for the Ethernet field. When
                vlan_id1 is specified, you can use this argument. Possible
                values are described below::


                 0x8100 - Specifies EtherType value 0x8100, a value of 8100 in
                     hexadecimal. When a frame has the VLAN EtherType equal to
                     8100, this frame carries the tag IEEE 802.1Q. This is the
                     default.

                 0x88A8 - Specifies EtherType value 0x88a8, a value of 88a8 in
                     hexadecimal. When a frame has the VLAN EtherType equal to
                     88A8, this frame carries the tag EEE 802.1ad.

                 0x9100 - Specifies EtherType value 0x9100, a value of 9100 in
                     hexadecimal. When a frame has the VLAN EtherType equal to
                     9100, this frame carries the tag IEEE standard IEEE
                     802.1Q-1998.

                 0x9200 - Specifies EtherType value 0x9200, a value of 9200 in
                     hexadecimal.

vlan_id_mode1
                Specifies the VLAN ID assignment for multiple PTP emulations when
                count is greater than 1.Possible values are fixed and increment.
                You can use this argument when vlan_id1 is specified. The
                default value is increment. If you set this argument to
                "increment", then you must also specify the vlan_id_step1
                argument to indicate the step size.

vlan_id_step1
                Defines the value by which the VLAN IDs are to be incremented.
                Possible values range from 0 to 4095. The default value is 1.You
                can use this argument when vlan_id_mode is set to increment.

vlan_id_repeat1
                Specifies the number of times a VLAN ID is to be repeated before
                the step specified by the vlan_id_step1 argument is applied to
                the VLAN ID specified by vlan_id1. Possible values range from 0
                to 4095. The default value is 0. You can use this argument when
                the vlan_id_mode is set to increment.


vlan_priority1
                Specifies the priority of the first VLAN under the Ethernet
                header. Possible values range from 0 (highest) to 7 (lowest). The
                default value is 0. You can use this argument only when vlan_id1
                is specified.

vlan_id2
                Specifies the VLAN ID of the second VLNA for the Ethernet field.
                When multiple VLAN tags are configured by configuring vlan_id1
                and vlan_id2 both, the second VLAN is the inner VLAN, also known
                as Customer VLAN. Possible values range from 0 to 4095. The
                default value is 100. You can use this argument when vlan_id1 is
                specified and encapsulation is set to ETHERNETII,
                ETHERNETII_LLC_SNAP, or ETHERNETII_VC_MUX.

vlan_ether_type2
                Specifies the inner VLAN Ethernet type for the Ethernet field.
                When vlan_id2 is specified, you can use this argument. Possible
                values are described below::


                 0x8100 - Specifies EtherType value 0x8100, a value of 8100 in
                     hexadecimal. When a frame has the VLAN EtherType equal to
                     8100, this frame carries the tag IEEE 802.1Q. This is the
                     default.

                 0x88A8 - Specifies EtherType value 0x88a8, a value of  88a8 in
                     hexadecimal. When a frame has the VLAN EtherType equal to
                     88A8, this frame carries the tag IEEE 802.1ad.

                 0x9100 - Specifies EtherType value 0x9100, a value of 9100 in
                     hexadecimal. When a frame has the VLAN EtherType equal to
                     9100, this frame carries the tag IEEE standard IEEE
                     802.1Q-1998.

                 0x9200 - Specifies EtherType value 0x9200, a value of 9200
                     in hexadecimal.

vlan_id_mode2
                Determines whether the inner VLAN IDs are fixed or increment.
                Possible values are fixed and increment. You can use this
                argument when vlan_id2 is specified. The default value is
                increment. If you set this argument to "increment", then you must
                also specify the vlan_id_step2 argument to indicate the step
                size.

vlan_id_step2
                Defines the value by which the inner VLAN IDs are to be
                incremented. Possible values range from 0 to 4095. The default
                value is 1. You can use this argument vlan_id_mode2 is set to
                increment.

vlan_id_repeat2
                Specifies the number of times an inner VLAN ID is to be repeated
                before the step specified by the vlan_id_step2 argument is
                applied to the VLAN ID specified by vlan_id2. Possible values
                range from 0 to 4095. The default value is 0. You can use this
                argument only when you specify vlan_id2 and the vlan_id_mode2
                argument is set to increment.

vlan_priority2
                Specifies the priority of the inner VLAN under the Ethernet
                header. Possible values range from 0 (highest) to 7 (lowest). The
                default value is 0. You can use this argument only when vlan_id2
                is specified.

local_mac_addr
                Specifies the starting MAC address. You can use this argument
                when encapsulation is set to ETHERNETII, THERNETII_LLC_SNAP, or
                ETHERNETII_VC_MUX. The values must be in MAC address format.

local_mac_addr_step
                Specifies the increment for the MAC address. The default value is
                00:00:00:00:00:01. You can use this argument when encapsulation
                is set to ETHERNETII, ETHERNETII_LLC_SNAP, or ETHERNETII_VC_MUX.

local_mac_addr_repeat
                Specifies the number of times a MAC address is to be repeated
                before the step is applied to the MAC address. The default value
                is 0. You can use this argument when encapsulation is set to
                ETHERNETII, ETHERNETII_LLC_SNAP, or ETHERNETII_VC_MUX.

local_ip_addr
                Specifies the starting IPv4 address. The values must be in IPv4
                format. This argument is available when transport_type is set to
                ipv4.

local_ip_addr_step
                Specifies the IPv4 address step for increment. The values must be
                in IPv4 format. The default value is 0.0.0.1. This argument is
                available when transport_type is set to ipv4.

local_ip_addr_repeat
                Specifies the number of times an IPv4 address is to be repeated
                before the step specified by the local_ip_addr_step argument is
                applied to the MAC address specified by local_ip_addr. The
                default value is 0. This argument is available when
                transport_type is set to ipv4.

local_ip_prefix_len
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the prefix length on the emulated device. Possible
                values range from 0 to 32. The default value is 24. This argument
                is available when transport_type is set to ipv4.

local_ipv6_addr
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the starting IPv6 address. The values must be in IPv6
                format. This argument is available when transport_type is set to
                ipv6.

local_ipv6_addr_step
                Spirent Extension (for Spirent HLTAPI only).Specifies the IPv6
                address step for increment. The values must be in IPv6. This
                argument is available when transport_type is set to ipv6.

local_ipv6_addr_repeat
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the number of times an IPv6 address is to be repeated
                before the step specified by the local_ipv6_addr_step argument
                is applied to the MAC address specified by local_ipv6_addr. The
                default value is 0. This argument is available when
                transport_type is set to ipv6.

local_ipv6_prefix_len
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the IPv6 prefix length on the emulated device. Possible
                values range from 0 to 128. The default value is 64.This argument
                is available when transport_type is set to ipv6.

remote_ip_addr
                Specifies the IPv4 address of the SUT. The values must be in IPv4
                format. This argument is available when transport_type is set to
                ipv4.

remote_ip_addr_step
                Specifies the increment step for the SUT IPv4 address. The values
                must be in IPv4 format. The default is 0.0.0.0. This argument is
                available when transport_type is set to ipv4.

remote_ipv6_addr
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the IPv6 address of the SUT. The values must be in IPv6
                format. This argument is available when transport_type is set to
                ipv6.

remote_ipv6_addr_step
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the increment step for the SUT IPv6 address. The values
                must be in IPv6 format. This argument is available when
                transport_type is set to ipv6.

ptp_session_mode
                Defines the type of the destination address. Possible values
                are describe below::


                 multicast - Sends multicast PTP messages to learnt or configured
                     devices. This is the default.

                 unicast - Sends unicast PTP messages to configured devices.

                Note: The unicast is not supported by Spirent HLTAPI.

ipv4_priority
                Specifies the service class of the Type of Service (TOS) field in
                an IPv4 header. You can configure different arguments when you
                choose different options for this argument. Possible values are::


                 tos - Type of service. TOS specifies a preference for how the
                     datagram would be handled. This is the default.

                 diffserv - Differentiated services (DiffServ).
                     Differentiated Services classify and manage network traffic
                     and provide quality of service (QoS) guarantees on IP
                     networks.

ip_tos_field
                Configures the IPv4 header's TOS bits. The values must be in
                hexadecimal format. Possible values range from 0x0 to 0xFF. The
                default value is 0x0. This argument is available when
                ipv4_priority is set to tos.
                Note: When tos_** and -ip_tos_field are configured at the same
                time, the priority of ip_tos_field is higher.

tos_precedence
                Configures the precedence of the IPv4 TOS field. It is an
                independent measurement of the datagram importance. Possible
                values are routine, priority, immediate, flash, flashoverride,
                criticecp, internet-control, network-control, and
                internetcontrol. This argument is available when -ipv4_priority
                is set to tos. The default is internetcontrol.

tos_delay
                Configures the delay of the IPv4 TOS field. This field indicates
                the importance of the prompt delivery for the datagram delivery.
                This argument is available when you specify ipv4_priority tos.
                Possible values are described below::


                 normal - The importance of the prompt delivery is normal.
                      This is the default.

                 low - The importance of the prompt delivery is low.

tos_throughput
                Configures the throughput of the IPv4 TOS field.
                This argument is available when you specify ipv4_priority
                tos. This field indicates the importance of the high data
                rate for this datagram. Possible values are described
                below::


                 normal - The importance of high data rate is normal.
                        This is the default.

                 high - The importance of high data rate is high.

tos_reliability
                Configures the reliability of the IPv4 TOS field. This field
                indicates the importance of a higher level effort to ensure
                delivery for this datagram. This argument is available when you
                specify ipv4_priority tos. Possible values are described below::


                 normal - The importance of reliability is normal. This is the
                          default.
                 high - The importance of reliability is high.

tos_monetary_cost
                Configures the monetary cost of the IPv4 TOS field. This argument
                is available when you specify ipv4_priority tos. Possible values
                are described below::


                 normal - The importance is normal. This is the default.

                 minimize - The importance is minimum.

tos_unused
                Unused bits in the IPv4 TOS. This argument is available when you
                specify ipv4_priority tos. The values must be in hexadecimal
                format. Possible values range from 0x0 to 0xF. The default value
                is 0x0.

diff_default
                Defines the default value of the DiffServ bits. Possible values
                range from 0 to 255. This argument is available when you specify
                ipv4_priority diff-serv. The values must be integers.
                When you specify the diff_default argument and the diff_*
                arguments at the same time, the diff_* arguments will be
                ignored.

diff_class
                Defines the diffserviceclass type. Possible values range from 0
                (class 0) to 7 (class 7). This argument is available when you
                specify ipv4_priority diff-serv. This argument will be ignored
                when you specify diff_assured_forwarding or
                diff_explicit_forwarding.

diff_assured_forwarding
                Defines the diffservice assured forwarding that gives the
                assurance of delivery under different conditions. Possible values
                are::


                 class1low-drop, class1-medium-drop, class1-high-drop,
                 class2low-drop, class2-medium-drop, class2-high-drop,
                 class3low-drop, class3-medium-drop, class3-high-drop,
                 class4low-drop, class4-medium-drop, and class4-high-drop.

                The assured forwarding defines the drop rate of three levels: low,
                medium, and high. "high drop" means higher drop rate. And the
                classes are used to define the measure of priority and
                proportional fairness. If congestion occurs between classes, the
                traffic in the higher class is given priority. This argument is
                available when you specify ipv4_priority diff-serv.
                diff_ssured_forwarding and diff_explicit_forwarding are
                mutually exclusive. You cannot specify the two arguments at the
                same time. When you specified diff_assured_forwarding,
                diff_class will be ignored.

diff_explicit_forwarding
                Defines the diffservice explicit forwarding behavior. Possible
                values range from 0 to 63. This argument is available when you
                specify ipv4_priority diff-serv. You can refer to RFC 3246 for
                details. diff_assured_forwarding and diff_explicit_forwarding
                are mutually exclusive. You cannot specify the two arguments at
                the same time. When you specified diff_explicit_forwarding,
                diff_class will be ignored.

diff_ecn
                Defines the diffservice Explicit Congestion Notification
                (ECN). Possible values are described below::


                 ecncapable-transport1 - The endpoints are ECNcapable.

                 ecncapable-transport0 - The endpoints are ECNcapable.

                 non- ecncapable-transport - packet is not using ECN.
                                           This is the default.

                 congestion - Indicates there is congestion.

                This argument is available when you specify ipv4_priority
                diffserv. You can refer to RFC 4774 for details.

ptp_domain_number
                The number of PTP domains to use. The master and slave clocks
                must be in the same domain to be visible to each other for
                communication. Possible values range from 0 to 255. The default
                value is 0.

ptp_port_number
                Defines the emulated Port Number. Possible values range from 0 to
                65535. The default value is 1.

ptp_clock_id
                Defines the clock identifier for the emulated clock.
                The maximum length for the clock ID is 16. The values of this
                argument must be hexadecimal or colon seperated value (ex: 00:00:00:01:02:03:11).

ptp_clock_id_mode
                Identifies the way in which the clock IDs of the emulated clocks
                are generated. Possible values are described below::


                 increment - Indicates the clock IDs increments by the step
                    specified in the ptp_clock_id_step.This is the default.

                 list - Indicates the clock IDs are defines in a list. The clock
                    IDs in the ist will be assigned to PTP devices in a
                    roundrobin fashion.

ptp_clock_id_step
                Defines the value by which the clock IDs are to be incremented.
                The values of this argument must be hexadecimal or colon seperated value
                (ex: 00:00:00:01:02:03:11). The maximum length for the clock ID is 16.
                This argument is available when ptp_clock_id_mode is set to increment.

ptp_clock_id_repeat
                Specifies the number of times a clock ID is to be repeated before
                the step specified by the ptp_clock_id_step argument is applied
                to the clock ID specified by ptp_clock_id. The values must be
                integers. The default value is 0. This argument is available when
                ptp_clock_id_mode is set to increment.

master_clock_class
                Defines the traceability of the time or the frequency distributed
                by the master clock. The values must be integers. Possible values
                range from 0 to 255. The default value is 248. This argument is
                only available when you specify device_type ptpMaster.

master_clock_priority1
                Sets the priority1 attribute of the master clock. The values must
                be integers. Possible values range from 0 to 255. The default
                value is 0. This argument is only available when you specify
                device_type ptpMaster.

master_clock_priority2
                Sets the priority2 attribute of the master clock. The values must
                be integers. Possible values range from 0 to 255. The default
                value is 0. This argument is only available when you specify
                device_type ptpMaster.

time_source
                Indicates the source of time used by the grandmaster clock. This
                argument is only available when you specify device_type
                ptpMaster. The internaloscillator is the default. Possible
                values are described below::


                 atomicclock
                       Indicates the device described below and
                       the device that connected to such a device: The
                       atomicclock device is based on atomic resonance for
                       frequency and calibrated against internal standards for
                       frequency and time, if the PTP timescale is used.

                 gps
                       Indicates the device that synchronized to a satellite
                       system that distribute time and frequency tied to
                       international standards.

                 terrestrialradio
                       Indicates the device that synchronized via
                       any of the radio distribution systems that distribute time
                       and frequency tied to international standards.

                 ptp
                       Indicates the device synchronized to a PTPbased source
                       of time external to the domain.

                 ntp
                       Indicates the device synchronized via Network Time
                       Protocol (NTP) or Simple Network Time Protocol (SNTP)
                       to servers that distribute time and frequency tied to
                       international standards.

                 handset
                       Indicates the device whose time has been set by means
                       of a human interface based on observation of an international
                       standards source of time to within the claimed clock accuracy.

                 other
                       Other source of time and/or frequency not covered by other
                       values.

                 internaloscillator
                       Defines the device whose frequency is not
                       based on atomic resonance nor calibrated against
                       international standards for frequency, and whose time is
                       based on a freerunning oscillator with epoch determined
                       in an arbitrary or unknown manner.

                 ptpprofile
                       For use by alternate PTP profiles.

                 reserved
                       Reserved. This is not supported.

announce_message_enable
                Enables or disables the transmission of Announce messages.
                Possible values are 0 (disable) and 1 (enable).The default value
                is 1. This argument is only available when you specify
                device_type ptpMaster.

log_announce_message_interval
                Indicates the log of the Announce message transmission interval,
                which is the mean time interval between the successive Announce
                messages. The values must be integers. Possible values range from
                -127 to 127. The default  value is 0. You can use this argument when
                device_type is set to ptpMaster and -announce_message_enable is
                set to 1.

                Note: When you need to specify a negative value, you must encompass
                the value by double quotation marks and braces, such as {"-5"} or
                "{-5}". Other formats like "-5", {-5} or -5 are not acceptable.

announce_receipt_timeout
                The number of seconds that has to pass without receipt of
                an Announce message to time out. The values must be integers.
                Possible values range from 3 to 20. The default value is 3.
                You can use this argument when device_type is set to ptpMaster
                and announce_message_enable is set to 1.

sync_enable
                Enables or disables the Sync message parameters.Possible values
                are 0 (disable) and 1 (enable). The default value is 1. You can
                use this argument when device_type is set to ptpMaster.

sync_two_step_flag
                Sets the behavior of Request_Response mechanism to twostep
                mode or onestep mode. Twostep mode provides time information
                using the combination of an Sync message and a subsequent
                Follow_up message. OneStep mode provides time information using
                a single Sync message. Possible values are described below::


                 on       Turns on twostep synchronism mode. This is the default.

                 auto     This is not supported.

                 off      Turns on the onestep synchronism mode. This is not supported.

                This argument is available when device_type is set to
                ptpMaster and sync_enable is set to 1.

log_sync_message_interval
                Indicates the log of the Sync message transmission interval which
                is the mean time interval between the successive Sync messages.
                The values must be integers. Possible values range from
                -127 to 127. The default value is 0. You can use
                this argument when device_type is set to ptpMaster and
                sync_enable is set to 1.

                Note: When you need to specify a negative value, you must encompass
                the value by double quotation marks and braces, such as {"-5"} or
                "{-5}". Other formats like "-5", {-5} or -5 are not acceptable.

path_delay_mechanism
                Determines the path delay mechanism. Possible values are
                described below::


                 endto-end - The port is configured to use the delay
                    requestresponse mechanism. This is the default.

                 peerto-peer - Determines to use the peer delay
                    mechanism.This is not supported.

delay_request_enable
                Enables or disables the Delay_Req messages. Possible values are 0
                (disable) and 1 (enable). The default value is 1. You can use
                this argument when you specify path_delay_mechanism end-to-end
                and device_type ptpSlave.

log_minimum_delay_request_interval
                Enables or disables the log (base 2) of the interval between
                successive Delay_Req messages. Possible values range from
                -127 to 127. The default value is 0. You can use
                this argument when you specify path_delay_mechanism end-to-end.

                When you need to specify a negative value, you must
                encompass the value by double quotation marks and braces,
                such as {"-5"} or "{-5}". Other formats like "-5", {-5} or -5 are
                not acceptable.

tx_crc_error_perc
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the percentage of frames to send with Cyclic Redundancy
                Check (CRC) errors. Possible values range from 0 to 100. The
                default value is 0.

tx_time_stamp_error_perc
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the percentage of frames to send with time stamp errors.
                Possible values range from 0 to 100. The default value is 0.

tx_delay_resp_dropped_perc
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the percentage of the Delay_Resp messages to drop.
                Possible values range from 0 to 100. The default value is 0.

tx_followup_dropped_perc
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the percentage of the Follow_Up messages to drop.
                Possible values range from 0 to 100. The default value is 0.

enable_correction
                `Spirent Extension (for Spirent HLTAPI only).`

                Enables or disables the correction field. Possible values are 0
                (disable) and 1 (enable). The default value is 0.

sync_correction
                `Spirent Extension (for Spirent HLTAPI only).`

                Configures values for the correction field for Sync messages. The
                default value is 0.

followup_correction
                `Spirent Extension (for Spirent HLTAPI only).`

                Configures values for the correction field for Follow_Up messages.
                The default value is 0.

delay_request_correction
                `Spirent Extension (for Spirent HLTAPI only).`

                Configures values for the correction field for Delay_Req messages.
                The default value is 0.

ptp_scale_mode
                Specifies the performance level of the protocol.
                The default value is normal.
                Possible values are described below::


                 Value                   Description
                 normal                  Normal performance, with all results
                 gen_tx_no_results       Improve scale performance by transmitting
                                          packets using the generator, and reducing
                                          results collected.

clock_accuracy
                Specifies the accuracy of the clock using IEEE 1588
                defined values. The default value is less_001_0us.
                Possible values are described below::


                 Value                   Description
                 local_clock_accuracy    0 - Local clock accuracy
                 less_025_0ns            0x20 - 25 nanoseconds
                 less_100_0ns            0x21 - 100 nanoseconds
                 less_250_0ns            0x22 - 250 nanoseconds
                 less_001_0us            0x23 - 1 microsecond
                 less_002_5us            0x24 - 2.5 microseconds
                 less_010_0us            0x25 - 10 microseconds
                 less_025_0us            0x26 - 25 microseconds
                 less_100_0us            0x27 - 100 microseconds
                 less_250_0us            0x28 - 250 microseconds
                 less_001_0ms            0x29 - 1 millisecond
                 less_002_5ms            0x2A - 2.5 milliseconds
                 less_010_0ms            0x2B - 10 milliseconds
                 less_025_0ms            0x2C - 25 milliseconds
                 less_100_0ms            0x2D - 100 milliseconds
                 less_250_0ms            0x2E - 250 milliseconds
                 less_001_0s             0x2F - 1 second
                 less_010_0s             0x30 - 10 seconds
                 greater_010_0s          0x31 - More than 10 seconds

custom_clock_accuracy
                Specifies the custom clock accuracy. Possible values
                range from 0-255. The default value is 35.

enable_unicast_negotiation
                Determines whether to enable unicast negotiation.
                The default value is false.

frequency_traceable
                Indicates the traceability of the frequency.
                The default value is false.

leap_flag
                Specifies the value of leap flag. The default value is
                none. Possible values are described below::


                 Value          Description
                 leap59         The last minute of the current UTC day
                                 contains 59 seconds
                 leap61         The last minute of the current UTC day
                                 contains 61 seconds
                 none           The last minute of the current UTC day
                                 contains 60 seconds

master_clock_selection_method
                Specifies the method used for selecting master clock.
                Possible values are none and bmca. The default value is bmca.

messaging_mode
                Specifies the type of messaging mode. The default value is
                multicast. Possible values are described below::


                 Value            Description
                 multicast        All packets sent on Multicast address
                 unicast          All packets sent on Unicast address
                 mixed            Delay request and delay response sent
                                   on Unicast address, all other packets
                                   sent on multicast address

multicast_mac
                Specifies the list of PTP multicast MAC addresses.
                The default value is default_mac.
                Possible values are described below::


                 Value            Description
                 default_mac      Default MAC address as per IEEE spec
                 primary_mac      Primary MAC address
                 pdelay_mac       Pdelay MAC address

offset_scaled_log_variance
                Specifies the variations of the clock from a linear
                time scale when it is not synchronized to another clock
                using the protocol. Possible values range from 1-65535.
                The default value is 65535.

time_traceable
                Determines whether to indicate the traceability of
                time. The default value is false.

ptp_ttl
                Specifies the time to live value for multicast packets.
                Possible values range from 1 to 255. The default value
                is 1.

unicast_master_port_ipv4
                Specifies the list of IPv4 addresses for unicast master
                clocks. The default value is 192.0.1.0.

unicast_master_port_ipv6
                Specifies the list of IPv6 addresses for unicast master
                clocks. The default value is 2000::1.

use_custom_clock_accuracy
                Determines whether to use value of custom_clock_accuracy
                instead of clock_accuracy. The default value is false.

use_partial_block_state
                Determines whether to use partial block state.
                The default value is false.

utc_offset
                Specifies the difference from Coordinated Universal Time(UTC)
                in seconds. Possible values range from 1 to 255.
                The default value is 36.

vci
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the VCI of the first ATM PVC pool. Possible values
                range from 0 to 65535. The default value is 32. This argument is
                available when you set encapsulation to LLC_SNAP, VC_MUX,
                ETHERNETII_LLC_SNAP, and ETHERNETII_VC_MUX.

vci_step
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the step size in which the VCI value is incremented.
                Possible values range from 0 to 65535. The default value is 0.

vpi
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the VPI of the first ATM PVC pool (for an ATM connection).
                Possible values range from 0 to 255. The default value is 0. This
                argument is available when you set encapsulation to LLC_SNAP,
                VC_MUX, ETHERNETII_LLC_SNAP, and ETHERNETII_VC_MUX.

vpi_step
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the step size in which the VPI value is incremented.
                Possible values range from 0 to 255. The default value is 0.


expand
                `Spirent Extension (for Spirent HLTAPI only).`

                Determines whether to expand the specified PTP device
                parameters into emulated PTP device objects. It is
                used in `scaling` test scenarios.

                When set to true, a list of emulated device handles (handle_list)
                with enabled PTP device configurations are created.

                When set to false, only PTP parameters are configured with no
                handle returned.

ptp_domain_number_step
                Specifies to increment the PTP Domain Number.
                Possible values range from 0 to 255.
                The default value is 0.
                Only applicable scale mode (mode activate and -expand).

encap
                Specifies to configure the encapsulation.
                Possible values are udp_ipv4, udp_ipv6 and ethernet.
                The default value is udp_ipv4.
                Only applicable scale mode (mode activate and -expand).

master_clock_priority1_step
                Specifies to increment the priority1 attribute value of the master clock.
                The values must be integers. Possible values range from 0 to 255.
                The default value is 0.
                Only applicable scale mode (mode activate and -expand).

master_clock_priority2_step
                Specifies to increment the priority2 attribute value of the master clock.
                The values must be integers. Possible values range from 0 to 255.
                The default value is 0.
                Only applicable for scale mode (mode activate and -expand).

ptp_profile
                Specifies to configure the PTP profile attribute type.
                Possible values are default, ieee1588v2_smpte, ieee1588v2_aes67 and ieee1588v2_enterprise.
                The default value is default.

unicast_ipv4_addr_type
                Specifies the unicast IPv4 address type.
                Possible values are::


                 UNICAST_IP_LIST   - Unicast IP type for both IPv4 and IPv6 master
                                    port address, list will be entered by the user

                 UNICAST_IP_INCREMENT   - Unicast IP type for both IPv4 and IPv6 master port address,
                                      list will be created based on start, step and count properties

                The default value is UNICAST_IP_LIST.
                Only applicable scale mode (mode activate and -expand).

unicast_ipv6_addr_type
                Specifies the unicast IPv6 address type.
                Possible values are::


                 UNICAST_IP_LIST   - Unicast IP type for both IPv4 and IPv6 master
                                    port address, list will be entered by the user

                 UNICAST_IP_INCREMENT   - Unicast IP type for both IPv4 and IPv6 master port address,
                                      list will be created based on start, step and count properties

                The default value is UNICAST_IP_LIST.
                Only applicable scale mode (mode activate and -expand).

unicast_master_port_ipv4_addr_count
                Specifies to configure IPv4 address count, to generated unicast master port
                Ipv4 address list.
                The default value is 1.
                Only applicable scale mode (mode activate and -expand).

unicast_master_port_ipv4_port_step
                Specifies unicast Master Port IPv4 Address Port Step. If this is 0, devices on all the ports,
                will have same unicast IPv4 address list
                The default value is 0.0.0.0.
                Only applicable scale mode (mode activate and -expand).

unicast_master_port_ipv4_start
                Specifies IPv4 Starting Address, to generated unicast master port IPv4 address list.
                The default value is 192.0.1.0.
                Only applicable scale mode (mode activate and -expand).

unicast_master_port_ipv4_step
                Specifies IPv4 Address Step, to generated unicast master port IPv4 address list.
                The default value is 0.0.0.1.
                Only applicable scale mode (mode activate and -expand).

unicast_master_port_ipv6_addr_count
                Specifies IPv6 Address Count, to generated unicast master port IPv6 address list.
                The default value is 1.
                Only applicable scale mode (mode activate and -expand).

unicast_master_port_ipv6_port_step
                Specifies Unicast Master Port IPv6 Address Port Step. If this is 0, devices on all
                the ports, will have same unicast IPv6 address list.
                The default value is ::.
                Only applicable scale mode (mode activate and -expand).

unicast_master_port_ipv6_start
                Specifies IPv6 Starting Address, to generated unicast master port IPv6 address list
                The default value is 2000::1.
                Only applicable scale mode (mode activate and -expand).

unicast_master_port_ipv6_step
                Specifies IPv6 Address Step, to generated unicast master port IPv6 address list
                The default value is 2000::1.
                Only applicable scale mode (mode activate and -expand).

Arguments Unsupported by Save as HLTAPI:

The following Spirent HLTAPI arguments are currently not supported by the Save as
HLTAPI function::


  diff_class
  diff_assured_forwarding
  diff_explicit_forwarding
  diff_ecn
  ptp_clock_id_repeat
  tos_precedence
  tos_delay
  tos_throughput
  tos_reliability
  tos_monetary_cost
  tos_unused

Note:
   diff_default is supported by Save as HLTAPI and provides the
   same functionality as using the above differ_* arguments combined.

   ip_tos_field is supported by Save as HLTAPI and provides
   the same the same functionality as as using the above tos_* arguments combined.
Ciscospecific Arguments:

The following arguments are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:

num_sessions
remote_mac_addr
remote_mac_addr_step
remote_mac_addr_repeat
remote_ip_addr_repeat
gateway_enable
gateway_ipv4_address
gateway_ipv6_address
ipv4_address_type
ptp_session_mode
unicast_negotiation_enable
unicast_grant_duration
peer_port_identity_ipv4_address
peer_port_identity_port_number
peer_port_identity_clock_id
unicast_destination_count
unicast_ipv4_address
unicast_ipv4_address_mode
unicast_ipv4_address_repeat
unicast_ipv4_address_step
unicast_ipv4_address_percentage_overlap
unicast_clock_id
unicast_clock_id_mode
unicast_clock_id_step
unicast_clock_id_repeat
unicast_clock_id_percentage_overlap
raw_priority
udp_source_port
udp_source_port_mode
udp_source_port_step
udp_source_port_repeat
master_clock_accuracy
master_clock_offset_scaled_log_variance
alternate_master_enable
steps_removed
followup_enable
followup_delay
random_distribution_enable
peer_delay_request_enable
log_min_peer_delay_request_interval
peer_delay_response_enable
peer_delay_response_flag
peer_delay_response_followup_enable
peer_delay_response_followup_delay
tx_calibration_factor
rx_calibration_factor
activity_trace_enable
message_filter_enable
filter_session_instance
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    PTP device handle
status     Success (1) or failure (0) of the operation.
log       An error message (if the operation failed).
Description:

The emulation ptp config function creates, enables, modifies, deletes and performs other actions to the PTP device. Use the port_handle to define the port on which the PTP master or slave emulation will be created.

When in the create mode, one or a list of PTP devices will be created and the PTP device handle(s) will be returned. Except for the Mandatory port_handle, these arguments are necessary or use their default values:

encapsulation
device_type
transport_type
ptp_clock_id
ptp_clock_id_step

In the modify mode, you can change the configuration of the created PTP device except these arguments: count, -encapsulation, and -transport_type.

In the delete mode, you can remove the created device. If the creation, configuration, or delete fails, Spirent HLTAPI returns an error message. For example, if the user tries to modify a nonexisting session handle, an error message will be returned.

Examples:

To create and configure 2 new PTP devices:

emulation ptp config mode=    "create"
        port_handle=                    $hltSourcePort
        count=                          2
        encapsulation=                  ETHERNETII
        device_type=                    ptpMaster
        transport_type=                 ipv4
        local_mac_addr=                 00:33:00:00:00:01
        local_ip_addr=                  10.0.0.5
        remote_ip_addr=                 10.0.0.1
        vlan_id1=                       100
        vlan_id2=                       200
        ptp_session_mode=               multicast
        ptp_domain_number=              10
        ptp_port_number=                1
        ptp_clock_id=                   0xAAAA480000000000
        ptp_clock_id_step=              0x0000000000000001
        master_clock_class=             200
        master_clock_priority1=         2
        master_clock_priority2=         2
        time_source                    ptpprofile=
        sync_enable=                    1
        sync_two_step_flag=             on
        log_sync_message_interval=      {"-5"}
        path_delay_mechanism           endtoend=

Sample Output:

{handle router1 router2} {status 1}

To modify the created PTP device:

emulation ptp config mode=  modify
   handle=                         $ptpHandle1
   ptp_session_mode=                multicast
   ptp_domain_number=              10
   ptp_port_number=                1
   ptp_clock_id=                   0xAAAA480000000000
   master_clock_class=               200
   master_clock_priority1=            8
   master_clock_priority2=            7

Sample Output:

{handle router1 router2} {status 1}

The following example uses the function in scaling mode (mode= activate) with expand:

set hnd [keylget int_ret0 param_handle]
# param_handle returned from sth::interface_config or emulation device config
puts "Param List: $int_ret0"


set rtn [emulation ptp config
           mode=                               activate
           handle=                             "$hnd"
           ptp_profile=                         default
           encap=                               udp_ipv4
           path_delay_mechanism                endtoend=
           messaging_mode=                      mixed
           sync_two_step_flag=                  on
           ptp_clock_id=                        0xACDE480000001200
           multicast_mac=                       pdelay_mac
           ptp_clock_id_step=                   2
           master_clock_priority1=              110
           master_clock_priority2=              120
           master_clock_priority1_step=         2
           master_clock_priority2_step=         4
           ptp_domain_number_step=              6
           ptp_domain_number=                   10
           log_announce_message_interval=       1
           log_sync_message_interval=           2
           log_minimum_delay_request_interval=  3
           announce_receipt_timeout=            6
           ptp_port_number=                     2
           device_type=                         ptpSlave
           enable_unicast_negotiation=          true
           unicast_ipv4_addr_type=              unicast_ip_increment
           unicast_master_port_ipv4_addr_count= 3
           unicast_master_port_ipv4_start=      2.3.4.5
           unicast_master_port_ipv4_port_step=  0.0.0.2
           unicast_master_port_ipv4_step=       0.0.0.2
           unicast_master_port_ipv4=            4.5.6.7
           unicast_master_port_ipv6=            4345::6
           expand=                              true
 ]

Sample Output:

{handle_list {emulateddevice1 emulateddevice2 emulateddevice3 emulateddevice4}}
{handle {}} {handles {emulateddevice1 emulateddevice2 emulateddevice3
emulateddevice4}} {status 1}

The following examples uses the function in scaling mode (mode= activate) with expand, port_handle= and block_mode:

set rtn [emulation ptp config
           mode=                    activate
           port_handle=             $port1
           block_mode=              MULTIPLE_DEVICE_PER_BLOCK
           block_name_index=        1
           count_per_block=         5
           count_block_per_port=    1
           intf_ip_addr=            192.85.1.2
           ip_version=              4
           expand=                  true
 ]

Sample Output:

{param_handle emulateddevicegenparams1} {status 1} {handle_list {emulateddevice1}}
{handle {}} {handles {emulateddevice1}}

set device_ret0 [emulation ptp config
           mode=                                         activate
           port_handle=                                  $port1
           expand=                                       true
           block_mode=                                   ONE_DEVICE_PER_BLOCK
           block_name_index=                             2
           count=                                        5
           name=                                         "PTP_1"
           mac_addr=                                     00:33:00:00:00:01
           mac_addr_step=                                00:00:00:00:00:01
           intf_prefix_len=                              24
           intf_ip_addr=                                 100.100.10.1
           intf_ip_addr_step=                            0.0.0.1
           gateway_ip_addr=                              100.100.10.2
           gateway_ip_addr_step=                         0.0.0.1
           unicast_master_port_ipv4=                     4.5.6.7
           unicast_master_port_ipv6=                     4345::6
           ptp_profile=                                  default
           encap=                                        udp_ipv4
           path_delay_mechanism                         endtoend=
           messaging_mode=                               mixed
           sync_two_step_flag=                           on
           ptp_clock_id=                                 0xACDE480000001200
           multicast_mac=                                pdelay_mac
           ptp_clock_id_step=                            2
           master_clock_priority1=                       110
           master_clock_priority2=                       120
           master_clock_priority1_step=                  2
           master_clock_priority2_step=                  4
           ptp_domain_number_step=                       6
           ptp_domain_number=                            10
           log_announce_message_interval=                1
           log_sync_message_interval=                    2
           log_minimum_delay_request_interval=           3
           announce_receipt_timeout=                     6
           ptp_port_number=                              2
           device_type=                                  ptpSlave
           enable_unicast_negotiation=                   true
           unicast_ipv4_addr_type=                       unicast_ip_increment
           unicast_master_port_ipv4_addr_count=          3
           unicast_master_port_ipv4_start=               2.3.4.5
           unicast_master_port_ipv4_port_step=           0.0.0.2
           unicast_master_port_ipv4_step=                0.0.0.2
]

Sample Output:

{param_handle emulateddevicegenparams1} {status 1} {handle_list {emulateddevice1 emulateddevice2
emulateddevice3 emulateddevice4 emulateddevice5}}{handle {}} {handles {emulateddevice1 emulateddevice2
emulateddevice3 emulateddevice4 emulateddevice5}}

emulation ptp control

Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>

Purpose:
The emulation ptp control function starts or stops the specified PTP device.

Synopsis:

Note: M indicates the argument is `Mandatory`.
    emulation ptp control
        action_control= {start|stop} M
        port_handle= <port_handle_list>
        handle= <handle_list>
        enable_iq_stats= {true|false}

Arguments:

port_handle
                Specifies a list of ports on which to the actions will be
                performed. You must specify either handle or -port_handle, but
                not both.

handle
                Specifies a list of PTP devices on which to perform the
                action. You must specify either handle or -port_handle, but not
                both.

action_control
                Performs a certain action on the specified port or to the
                specified PTP device. This argument is `Mandatory`.

enable_iq_stats
                Specifies to enable PTP Spirent Testcenter IQ results on the
                specified port. This argument is `Mandatory` to retrieve
                Spirent Testcenter IQ results.
Ciscospecific Arguments:

The following arguments are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:

action
peer_count
interval
interval_unit
job_handle
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 emulation ptp control function starts or stops the PTP devices. Use the action_control argument to specify the action to perform. (See the action_control argument description for information about the actions.)

Examples:

To start the PTP device:

emulation ptp control
       action_control=  start
       port_handle=     port1

Sample Output:

{status 1}

To enable Spirent Testcenter IQ results and start PTP device:

emulation ptp control
       action_control=  start
       port_handle=     port1
       enable_iq_stats=  true

Sample Output:

{status 1}

emulation ptp stats

Execute Tester Command ${rt_handle} command=test_control <additional key=value arguments>

Purpose:
emulation ptp stats allows user to collect or clear statistics about the PTP device.

Synopsis:

Note: M indicates the argument is `Mandatory`.

    emulation ptp stats
        handle= <ptp_emulation_handle>
        port_handle= <port_handle>
        reset= { 0| 1 }
        mode=  device
        result_type= {ieee1588v2_clock_stats|ieee1588v2_clock_sync_stats|
                        ieee1588v2_cum_clock_state_count|
                        ieee1588v2_message_rate_stats|ieee1588v2_parent_clock_stats|
                        ieee1588v2_time_properties_stats|ieee1588v2_unicast_negotiation|
                        ieee1588v2_foreign_master_clock|ieee1588v2_traffic_start_time_stats|
                        ieee1588v2_clock_sync_filtered_stats|}]

Arguments:

port_handle
                Specifies the port to retrieve statistics from. You must specify
                either handle or -port_handle, but not both.

handle
                Specifies the handle of the PTP master or slave device to
                retrieve statistics from. You must specify either handle or
                port_handle, but not both.

reset
                Determines to reset the statistics or not on the specified port.
                Possible values are 0 and 1. When this argument is set to 1, the
                statistics will be reset. You must specify port_handle when you
                use this argument.

mode
                Specifies the statistics retrieval mode. The modes are described
                below::


                 device - Gets the statistics of the ptp device specified by handle.
                       This is the default.
                 instance - Gets the statistics of the instance within the ptp device.
                        This is not supported.

result_type
                Specifies the type of IEEE 1588v2 results. This
                argument is `Mandatory` to retrieve Spirent Testcenter IQ results.
                Dependency: port_handle
                Possible values are::


                ieee1588v2_clock_stats
                             Returns IEEE 1588v2 clock statistics
                             from Spirent TestCenter IQ.

                ieee1588v2_clock_sync_stats
                             Returns IEEE 1588v2 clock sync statistics
                             from Spirent TestCenter IQ.

                ieee1588v2_cum_clock_state_count
                             Returns IEEE 1588v2 cumulative clock state count
                             statistics from Spirent TestCenter IQ.

                ieee1588v2_message_rate_stats
                             Returns IEEE 1588v2 message rate statistics
                             from Spirent TestCenter IQ.

                ieee1588v2_parent_clock_stats
                             Returns IEEE 1588v2 parent clock statistics
                             from Spirent TestCenter IQ.

                ieee1588v2_time_properties_stats
                             Returns IEEE 1588v2 time properties statistics
                             from Spirent TestCenter IQ.

                ieee1588v2_unicast_negotiation
                             Returns IEEE 1588v2 unicast negotiation statistics
                             from Spirent TestCenter IQ.

                ieee1588v2_foreign_master_clock
                             Returns IEEE 1588v2 foreign master clock statistics
                             from Spirent TestCenter IQ.

                ieee1588v2_traffic_start_time_stats
                             Returns IEEE 1588v2 traffic start time statistics
                             from Spirent TestCenter IQ.

                ieee1588v2_clock_sync_filtered_stats
                             Returns IEEE 1588v2 clock sync filtered statistics
                             from Spirent TestCenter IQ.
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).

These statistics are returned for all configured PTP devices:

clock_state     Possible values are described below::

                initializing - Initializing data sets, hardware, and communication
                             facilities.
                faulty    -  Multiple Pdelay_Resp messages were received.
                disabled  -  Does not implement the delay mechanism.
                listening -  Waiting for the announceReceiptTimeout to
                             expire or to receive an Announce message from a
                             master.
                pre_master - No Announce message was received within the
                             required time. Allowing changes to propagate
                             from points in the system between the local clock
                             and possible masters visible from the port
                             before assuming the Master state.
                master  -    Operating as the master clock.
                passive -    Not the master on the path. Not synchronizing to a
                             master.
                uncalibrated - One or more master ports have been detected in
                              the domain.
                slave - Synchronizing to the selected master port.

total_rx_announce       The number of Announce messages received
total_rx_sync           The number of Sync messages received
total_rx_sync_followup  The number of Sync Followup messages received
total_rx_delay_req      The number of Delay_Req messages received
total_rx_delay_resp     The number of Delay_Resp messages received
total_tx_announce       The number of Announce messages sent
total_tx_sync           The number of Sync messages sent
total_tx_sync_followup  The number of Sync Followup messages sent
total_tx_delay_req      The number of Delay_Req messages sent
total_tx_delay_resp     The number of Delay_Resp messages sent
peer_mean_path_delay    An estimate of the current oneway propagation
                        delay on the link
clock_domain            PTP clock domain
total_tx_signaling_count Number of Signaling messages sent
total_rx_signaling_count Number of Signaling messages received

These statistics can be retrieved when the ptp device is a “Slave” port:

bmc_grandmaster_clock_id          The grandmaster ID
bmc_clock_class                   The grandmaster clock class
bmc_clock_accuracy                The grandmaster clock accuracy
bmc_offset_scaled_log_variance    The scaled log variance of the
                                   grandmaster clock offset.
bmc_priority1                     The grandmaster priority1
bmc_priority2                     The grandmaster priority2
bmc_steps_removed                 The number of communication paths
                                   traversed between the local clock and
                                   the grandmaster clock.
bmc_time_source                   The grandmaster time source
bmc_source_port_clock_id          The clock identity.
offset_from_master                The value of the current Universal
                                   Coordinated Time offset.
mean_path_delay                   The mean propagation delay between two
                                   ports.
rx_log_min_delay_req_interval     The minimum permitted mean time interval
                                   between successive Pdelay_Req message.
Ciscospecific Arguments:

The following arguments are specific to the Cisco HLTAPI but are not supported by Spirent HLTAPI:

device_instance

***Common table**
total_rx_msgs
total_dropped_msgs
total_rx_peerdelay_resp_followup
total_rx_signalling
total_rx_management
total_rx_unicast
total_rx_mcast
total_tx_msgs
total_tx_peerdelay_resp_followup
total_tx_signalling
total_tx_management

***Slave stat***
bmc_source_addr
bmc_last_change
bmc_source_port_number
min_sync_correction_factor_error
avg_sync_correction_factor_error
max_sync_correction_factor_error
min_delay_req_correction_factor
avg_delay_req_correction_factor
max_delay_req_correction_factor
min_sync_latency
avg_sync_latency
max_sync_latency
min_delay_req_latency
avg_delay_req_latency
max_delay_req_latency
min_latency_asymmetry
avg_latency_asymmetry
max_latency_asymmetry
rx_log_announce_interval
rx_log_sync_interval
rx_log_min_peerdelay_request_interval
unicast_granted_log_announce_period
unicast_granted_log_sync_period
unicast_granted_log_delay_resp_period
unicast_granted_log_peerdelay_resp_period
total_seq_number_errors
total_misorder_sequence_errors
Description:

The emulation ptp stats function provides information about the specified PTP device.

This function returns the requested data and a status value (1 for success). If there is an error, the function returns the status value (0) and an error message. Function return values are formatted as a keyed list (supported by the Tcl extension software - TclX). Use the TclX function keylget to retrieve data from the keyed list. (See Return Values for a description of each key.)

Examples:

Sample Input:

emulation ptp stats mode= device
                     handle=    $ptpHandle1

Output for a master PTP device:

{router1 {{clock_state master} {total_rx_announce 3}
{total_tx_announce 5} {peer_mean_path_delay 0}
{total_rx_sync_followup 3} {total_rx_sync 3}
{total_tx_sync_followup 119} {total_rx_delay_req 10} {clock_domain 10}
{total_tx_sync 129} {total_tx_delay_req 0} {total_rx_delay_resp 0}
{total_tx_delay_resp 10} {bmc_clock_accuracy >10s}}} {status 1}

Output for a slave PTP device:

{router2 {{clock_state slave}
{bmc_grandmaster_clock_id 12297720897325760512}
{bmc_steps_removed 1} {total_rx_announce 23}
{total_tx_announce 1} {peer_mean_path_delay 0}
{rx_log_min_delay_req_interval 0}
{bmc_time_source PTP_PROFILE240} {total_rx_sync_followup 599}
{total_rx_sync 639} {bmc_clock_class 200} {total_tx_sync_followup 1}
{total_rx_delay_req 10} {mean_path_delay 0} {clock_domain 10}
{total_tx_sync 1} {bmc_priority1 2}
{bmc_offset_scaled_log_variance 65535} {total_tx_delay_req 9}
{total_rx_delay_resp 56} {offset_from_master 0}
{bmc_source_port_clock_id 13609394288797417472}
{bmc_priority2 2} {total_tx_delay_resp 0} {bmc_clock_accuracy 1s}}}
{status 1}

To get Spirent Testcenter IQ results for PTP devices:

set ctrl_ret1 [emulation ptp control
   port_handle=        "$port1 $port2 "
   action_control=     start
   enable_iq_stats=    true]

Sample Output::

 {status 1}
set results_ret1 [emulation ptp stats
   port_handle=        "$port1 $port2 "
   result_type=         ieee1588v2_clock_stats]

Sample Output::

 {port1 {{ieee1588v2_clock_stats {{0 {{emulated_device_name Device_1}
 {ieee1588v2_session_session_index 1} {clock_state IEEE1588_STATE_SLAVE}
 {port_number 1} {clock_domain 0} {tx_announce_count 3} {rx_announce_count 18}
 {tx_sync_count 3} {rx_sync_count 18} {tx_follow_up_count 3}
 {rx_follow_up_count 18} {tx_delay_request_count 14} {rx_delay_request_count 0}
 {tx_delay_response_count 0} {rx_delay_response_count 14}
 {tx_management_msg_count 0} {rx_management_msg_count 0}}}}}}}
 {port2 {{ieee1588v2_clock_stats {{1 {{emulated_device_name Device_2}
 {ieee1588v2_session_session_index 1} {clock_state IEEE1588_STATE_MASTER}
 {port_number 1} {clock_domain 0} {tx_announce_count 20} {rx_announce_count 3}
 {tx_sync_count 20} {rx_sync_count 3} {tx_follow_up_count 20} {rx_follow_up_count 3}
 {tx_delay_request_count 0} {rx_delay_request_count 16} {tx_delay_response_count 16}
 {rx_delay_response_count 0} {tx_management_msg_count 0} {rx_management_msg_count 0}}}}}}}
 {status 1}

#### HLTAPI for Python ####

Sample Input:

results_ret1 = sth.emulation_ptp_stats (
             handle              = device,
             mode                = 'device');

Sample Output:

{'status': '1', 'router1': {'total_rx_delay_req': '0', 'total_rx_announce': '0',
'total_rx_delay_resp': '0', 'total_tx_sync': '0', 'total_tx_delay_resp': '0',
'peer_mean_path_delay': '0', 'total_tx_sync_followup': '0', 'clock_state': 'none',
'total_tx_announce': '0', 'bmc_clock_accuracy': '35', 'clock_domain': '10',
'total_rx_sync_followup': '0', 'total_rx_sync': '0', 'total_tx_delay_req':'0'}}

#### HLTAPI for Perl ####

Sample Input:

my %results_ret1 = emulation ptp stats (
             handle              => "$device",
             mode                => 'device');

Sample Output:

$VAR1 = 'router1';
$VAR2 = {
          'total_rx_sync' => '0',
          'clock_state' => 'none',
          'total_tx_sync' => '0',
          'peer_mean_path_delay' => '0',
          'bmc_clock_accuracy' => '35',
          'total_rx_delay_req' => '0',
          'clock_domain' => '10',
          'total_rx_sync_followup' => '0',
          'total_tx_sync_followup' => '0',
          'total_rx_announce' => '0',
          'total_tx_delay_resp' => '0',
          'total_tx_announce' => '0',
          'total_tx_delay_req' => '0',
          'total_rx_delay_resp' => '0'
        };
$VAR3 = 'status';
$VAR4 = '1';