DHCP Functions

sth::emulation_dhcp_config

Purpose

Creates, enables, modifies, or resets an emulated Dynamic Host Configuration Protocol (DHCP) clients or Dynamic Host Configuration Protocol for IPv6 or Prefix delegation (DHCPv6/PD) clients for the specified Spirent HLTAPI port or handle.

DHCP is used for IPv4 and IPv6. While both versions serve much the same purpose, the details of the protocol for IPv4 and IPv6 are sufficiently different that they may be considered separate protocols. You use Spirent HLTAPI to emulate a network containing DHCP or DHCPv6/PD clients.

DHCP uses a client-server model, in which DHCP servers provide network addresses and configuration parameters to DHCP clients.

DHCPv6/PD is intended for delegating a long-lived IPv6 prefix and configuration information from a delegating router to a requesting router, across an administrative boundary, where the delegating router does not require knowledge about the topology of the links in the network to which the prefixes will be assigned. Hosts attached to the requesting router can auto-configure the IPv6 addresses from the delegated prefix.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_dhcp_config
    [-mode {create|enable|modify|reset}  M]
    [-port_handle <port handle> M] Mandatory when -mode create
    [-handle <dhcp_port|device>  M]
                       Mandatory when -mode create|enable|modify|reset
    [-ip_version {4|6}]
    [-broadcast_bit_flag {0|1}]
    [-circuit_id <hexadecimal >]
    [-circuit_id_suffix <integer>]
    [-circuit_id_suffix_step <integer>]
    [-circuit_id_suffix_count <integer>]
    [-circuit_id_suffix_repeat <integer>]
    [-client_id < hexadecimal >]
    [-client_id_suffix <integer>]
    [-client_id_suffix_count <integer>]
    [-client_id_suffix_step <integer>]
    [-client_id_suffix_repeat <integer>]
    [-client_id_type <0-255>]
    [-remote_id <hexadecimal >]
    [-remote_id_suffix <integer>]
    [-remote_id_suffix_count <integer>]
    [-remote_id_suffix_step <integer>]
    [-remote_id_suffix_repeat <integer>]
    [-lease_time <10-2147483647> ]
    [-max_dhcp_msg_size <264-1500> ]
    [-msg_timeout <1000-99999000>]
    [-outstanding_session_count <1-2048>]
    [-release_rate <1-10000>]
    [-request_rate <1-10000>]
    [-retry_count <0-32>]
    [-relay_agent_flag {0|1}]
    [-relay_agent_ip_addr <a.b.c.d>]
    [-relay_pool_ip_addr <a.b.c.d>]
    [-sequencetype {PARALLEL|SEQUENTIAL}]
    [-server_ip_addr <a.b.c.d>]
    [-starting_xid <0-4294967295>]
    [-dhcp6_reb_max_rt <1-99999>]
    [-dhcp6_reb_timeout <1-99999>]
    [-dhcp6_rel_max_rc  <1-32>]
    [-dhcp6_rel_timeout <1-99999>]
    [-dhcp6_ren_max_rt <1-99999>]
    [-dhcp6_ren_timeout <1-99999>]
    [-dhcp6_req_max_rc  <1-32>]
    [-dhcp6_req_max_rt <1-99999>]
    [-dhcp6_req_timeout <1-99999>]
    [-dhcp6_sol_max_rc  <1-32>]
    [-dhcp6_sol_max_rt <1-99999>]
    [-dhcp6_sol_timeout <1-99999>]
    [-dhcp6_outstanding_session_count <1-2048>]
    [-dhcp6_release_rate <1-1000>]
    [-dhcp6_request_rate <1-1000>]
    [-dhcp6_renew_rate <1-1000>]
    [-dhcp6_sequence_type { PARALLEL|SEQUENTIAL }]
    [-dhcp6_indef_rel_rt {true|false}]
    [-dhcp6_indef_req_rt {true|false}]
    [-dhcp6_indef_sol_rt {true|false}]
    [-dhcp6_dec_max_rc  <1-32>]
    [-dhcp6_dec_timeout <1-99999>]
    [-dhcp6_inforeq_max_rt <1-99999>]
    [-dhcp6_inforeq_timeout <1-99999>]
    [-dhcp6_cfm_duration <1-99999>]
    [-dhcp6_cfm_max_rt <1-99999>]
    [-dhcp6_cfm_timeout <1-99999>]

Arguments

Common Arguments for DHCPv4 and DHCPv6

-handle

Specifies the handle of the port or the device upon which DHCP or DHCPv6/PD emulation is configured. When -mode is set to either create, modify or reset, the value is returned by the sth::emulation_dhcp_config function. When -mode is set to enable, the value is the device handle returned by other protocol emulation functions with mode create. This argument is Mandatory for enable, modify and reset modes.

-port_handle

The handle of the port on which to configure DHCP or DHCPv6/PD emulation. The port handle is returned by the sth::connect function. This argument is Mandatory for create mode (see -mode).

-mode

Specifies the action to perform. Possible values are create, enable, modify, and reset. This argument is Mandatory . The modes are described below:

create - Starts emulating DHCP or DHCPv6/PD clients on the port
         specified by -port_handle.

enable- Starts the emulating DHCP or DHCPv6/PD clients on the
        device specified by -handle. You must specify the -handle
        argument.

modify - Changes the configuration parameters for the DHCP or
        DHCPv6/PD clients identified by the -handle argument.

reset - Stops the DHCP or DHCPv6/PD emulation locally without
        attempting to clear the bound addresses from the DHCP server.
        In addition, all DHCP or DHCPv6 group sessions information on
        the port is cleared and the connection is restarted. Because
        -mode reset deletes the handle, do not use the handle following
        this action.

Note

Before using sth::emulation_dhcp_config -mode reset, you must first delete all traffic streams with the sth::traffic_config -mode reset command. Traffic streams must be reset before DHCP or DHCPv6/PD can be reset.

-ip_version

Spirent Extension (for Spirent HLTAPI only).

Defines the IP version to be used. Possible values are 4 and 6. The default is 4.

DHCPv4 Arguments

-broadcast_bit_flag

Configures the flag to broadcast client responses. Possible values are 0 and 1. If the argument is set to 1, the DHCP Server or relay agent will broadcast DHCP messages using an IP broadcast address. If it is set to 0, the DHCP or DHCPv6/PD Server or relay agent will send the DHCP or DHCPv6/PD messages to the IP address specified in the “yiaddr” field. The default is 1.

-circuit_id

Configures the circuit ID sub-option of relay agent option (82). This sub-option encodes an agent-local identifier of the circuit from which a DHCP client-to-server packet was received. It is intended for use by agents in relaying DHCP responses back to the proper circuit. (See RFC 3046 for more information.) The circuit ID must be globally unique, and the value must be in the hexadecimal format. The default is 0.

-circuit_id_suffix

Defines the suffix to append to the circuit ID. The default is 0.

-circuit_id_suffix_step

Defines the increment used to generate circuit ID suffixes (-circuit_id_suffix) for emulated clients. The default is 1.

-circuit_id_suffix_count

Specifies the number of circuit ID suffixes. Possible values range from 1 to <max_int>. The default is 1.

-circuit_id_suffix_repeat

Specifies the number of times a circuit ID suffix should be repeated, before the step that is specified in the -circuit_id_suffix_step argument is applied to the circuit ID suffix for incrementing. Possible values range from 1 to <max_int>.

-client_id

Configures the client ID option (61). DHCP clients use client ID (option 61) to specify their unique identifier. DHCP servers use this value to index their database of address bindings. This value is expected to be unique for all clients in an administrative domain. This value must be in hexadecimal format.

-client_id_suffix

Configure the suffix to append to the client ID. Possible values range from 0 to <max_int-1>.

-client_id_suffix_count

Specifies the number of client ID suffixes. Possible values range from 1 to <max_int>. The default is 1.

-client_id_suffix_step

Defines the increment used to generate client ID suffixes (-client_id_suffix) for emulated clients. Possible values range from 0 to <max_int-1>. The default value is 1.

-client_id_suffix_repeat

Specifies the number of times a client ID suffix should be repeated, before the step that is specified in the -client_id_suffix_step argument is applied to the client ID suffix for incrementing. Possible values range from 1 to <max_int>.

-client_id_type

Configures the client ID type. Possible values range from 0 to 255. You must specify this argument when you specify -client_id.

-remote_id

Configures the remote ID sub-option of relay agent option. The remote ID can be used by relay agents that terminate switched or permanent circuits and have mechanisms to identify the remote host end of the circuit. The remote ID must be globally unique, and the value must be in the hexadecimal format. The default is 0.

-remote_id_suffix

Defines the suffix to append to the circuit ID. The default is 0.

-remote_id_suffix_step

Defines the increment used to generate remote ID suffixes (-remote_id_suffix) for emulated clients. The default is 1.

-remote_id_suffix_repeat

Specifies the number of times a remote ID suffix should be repeated, before the step that is specified in the -remote_id_suffix_step argument is applied to the remote ID suffix for incrementing. Possible values range from 1 to <max_int>.

-remote_id_suffix_count

Specifies the number of remote ID suffixes. Possible values range from 1 to <max_int>. The default is 1.

-lease_time

Specifies a finite time period, in seconds, for use of the IP address offered by the DHCP server. The actual lease length that the DHCP sessions will receive depends on the lease time configured for the DUT. For example, if the Cisco DUT sends a lease time of one day (its default), then the IP address will only be good for one day, regardless of the value set by Spirent HLTAPI. Possible values range from 10 to 2147483647. The default is 86400.

-max_dhcp_msg_size

Sets the maximum size, in bytes, of the DHCP message. Spirent HLTAPI uses this value to negotiate the DHCP message size, in bytes. Possible values range from 264 to 1500. The default is 576.

-msg_timeout

Sets the maximum time, in milliseconds, to wait for receipt of an offer or ack message after sending a corresponding discover or request message. Possible values range from 1000 to 99999000. However, because Spirent HLTAPI accepts seconds, the timeout value must be evenly divisible by 1000. The default is 15000.

Note

The -msg_timeout argument controls the determination of when a discover or request message is counted as unacknowledged.

-outstanding_session_count

Specifies the maximum number of outstanding sessions that Spirent HLTAPI can resolve at one time. Possible values are 1 to 2048. The default is 100.

-release_rate

The number of DHCP sessions that are released per second. This value applies to all sessions on the port. Possible values range from 1 to 10000. The default is 100.

Note

DHCPv4 release messages are unacknowledged; therefore, the system may overwhelm the DHCP server.

-request_rate

The number of requests per second for DHCP client leases or lease renewals. This value applies to all sessions on the port. Possible values range from 1 to 10000. The default is 100.

-retry_count

The maximum number of times that discover or request messages will be re-sent. This value limits the number of additional transmissions of either a discover or request message when no acknowledgement is received. Possible values range from 0 to 65535. The default is 4.

Note

A session is considered failed once the -retry_count argument is exceeded.

-relay_agent_flag

Configures DHCP relay agent. The DHCP relay agent allows you to place DHCP clients and DHCP servers on different networks. Possible values are 0 (disabled) and 1 (enabled). You can use this argument to control the configuration of -relay_agent_ip_addr and -server_ip_addr.

-relay_agent_ip_addr

Configures DHCP relay agent IP address. The value should be in IPv4 format. The default value is 192.1.1.0. You can use this argument when -relay_agent_flag is enabled.

-relay_pool_ip_addr

Configures number of DHCP relay agent networks. The value should be in IPv4 format. The default value is 0.0.0.0.

-sequencetype

Spirent Extension (for Spirent HLTAPI only).

Specifies the port-level sequence type that determines in what order DHCP sessions are attempted. Possible values are PARALLEL and SEQUENTIAL. The default is SEQUENTIAL.

-server_ip_addr

Configures DHCP server IP address. The default value is 192.1.1.2. The value should be in the IPv4 format. You can use this argument when -relay_agent_flag is enabled. This argument is required when relay_agent_ip_addr is used. Both arguments must be configured in the same segment.

-starting_xid

Spirent Extension (for Spirent HLTAPI only).

Specifies the starting transaction identifier for the port. Each DHCP session is assigned a unique transaction identifier. Possible values range from 0 to 4294967295. The default is 0.

DHCPv6 Arguments (You must set -ip_version to 6)

-dhcp6_reb_max_rt

Specifies the maximum rebind message retry timeout in seconds. Possible values range from 1 to 99999. The default value is 600.

-dhcp6_reb_timeout

Specifies the Rebind message initial timeout in seconds. Possible values range from 1 to 99999. The default value is 10.

-dhcp6_rel_max_rc

Specifies the number of release retries. Possible values range from 1 to 32. The default value is 5.

-dhcp6_rel_timeout

Specifies the Release message initial timeout in seconds. Possible values range from 1 to 99999. The default value is 1.

-dhcp6_ren_max_rt

Specifies the maximum retry timeout for Renew messages in seconds. Possible values range from 1 to 99999. The default is 600

-dhcp6_ren_timeout

Specifies the Renew message initial timeout in seconds. Possible values range from 1 to 99999. The default value is 10

-dhcp6_req_max_rc

Specifies the number of Request retries. Possible values range from 1 to 32. The default value is 10.

-dhcp6_req_max_rt

Specifies the maximum Request message retry timeout in seconds. Possible values range from 1 to 99999. The default value is 30.

-dhcp6_req_timeout

Specifies the Request message initial timeout in seconds. Possible values range from 1 to 99999. The default value is 1.

-dhcp6_sol_max_rc

Specifies the number of solicit retries. Possible values range from 1 to 32. The default value is 10.

-dhcp6_sol_max_rt

Specifies the maximum solicit message retry timeout in seconds. Possible values range from 1 to 99999. The default value is 120.

-dhcp6_sol_timeout

Specifies the Solicit message initial timeout in seconds. Possible values range from 1 to 99999. The default value is 1.

-dhcp6_outstanding_session_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of DHCPv6 sessions to resolve at a time. Possible values range from 1 to 2048. The default value is 1.

-dhcp6_release_rate

Spirent Extension (for Spirent HLTAPI only).

Number of DHCPv6 sessions that are released per second. This val ue applies to all sessions on the port. Possible values range from 1 to 1000. The default is 100 Use the Release operation to release DHCPv6 sessions.

-dhcp6_request_rate

Spirent Extension (for Spirent HLTAPI only).

Requests per second for DHCPv6 client leases. This value applies to all sessions on the port. Possible values range from 1 to 1000. The default is 100.

-dhcp6_renew_rate

Spirent Extension (for Spirent HLTAPI only).

Renewals per second for DHCPv6 client renewals. This value applies to all sessions on the port. Possible values range from 1 to 1000. The default is 100.

-dhcp6_sequence_type

Spirent Extension (for Spirent HLTAPI only).

Specifies the port-level sequence type that determines in what order DHCPv6 sessions are attempted. Possible values are PARALLEL and SEQUENTIAL. The default is SEQUENTIAL.

-dhcp6_indef_rel_rt

Spirent Extension (for Spirent HLTAPI only).

Enables or disables indefinite retry of Release messages. Possible values are true (enable) and false (disable). The default is false. Note: If you set it to true, argument -dhcp6_rel_max_rc will be unavailable.

-dhcp6_indef_req_rt

Spirent Extension (for Spirent HLTAPI only).

Enables or disables indefinite retry of Request messages. Possible values are true (enable) and false (disable). The default is false. Note: If you set it to true, argument -dhcp6_req_max_rc will be unavailable.

-dhcp6_indef_sol_rt

Spirent Extension (for Spirent HLTAPI only).

Enables or disables indefinite retry of Solicit messages. Possible values are true (enable) and false (disable). The default is false. Note: If you set it to true, argument -dhcp6_sol_max_rc will be unavailable.

-dhcp6_dec_max_rc

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of Decline retries. Possible values range from 1 to 32. The default value is 5.

-dhcp6_dec_timeout

Specifies the Decline message initial timeout in seconds. Possible values range from 1 to 99999. The default value is 1.

-dhcp6_inforeq_max_rt

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum info-request message timeout in seconds. Possible values range from 1 to 99999. The default value is 120.

-dhcp6_inforeq_timeout

Spirent Extension (for Spirent HLTAPI only).

Specifies the info-request message initial timeout in seconds. Possible values range from 1 to 99999. The default value is 1.

-dhcp6_cfm_duration

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum duration to wait for the Confirm message exchange to complete (in seconds). Possible values range from 1 to 99999. The default value is 10.

-dhcp6_cfm_max_rt

Spirent Extension (for Spirent HLTAPI only).

Specifies the maximum Confirm message timeout in seconds. Possible values range from 1 to 99999. The default value is 4.

-dhcp6_cfm_timeout

Spirent Extension (for Spirent HLTAPI only).

Specifies the Confirm message initial timeout in seconds. Possible values range from 1 to 99999. The default value is 1.

Arguments Unsupported by Save as HLTAPI

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

-handle
-active
-name

Cisco-specific Arguments

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

-cisco_server_id_override
-link_selection
-retry_timer
-response_wait
-server_id_override

Return Values

Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):

handles   Identifies the handle of the port on which the DHCP or DHCPv6/PD
          emulation was configured by sth::emulation_dhcp_config. If you
          reset the port (-mode reset), it returns a new handle.

status    Success (1) or failure (0) of the operation.

log       An error message (if the operation failed).

Description

The sth::emulation_dhcp_config function creates, modifies, or resets an emulated DHCP or DHCPv6/PD client. Use the -mode argument to specify the action to perform. (See the -mode argument description for information about the actions.)

When you create a DHCP or DHCPv6/PD client, use the -port_handle argument to specify the Spirent HLTAPI port that the emulated DHCP session will use for DHCP communication. (The port handle value is contained in the keyed list returned by the connect function.)

Use the -mode create function to define the characteristics of a DHCP session. You can use a single session to emulate multiple DHCP clients.

When you write an HLT API that uses Spirent HLTAPI Automation software for DHCP or DHCPv6/PD tests, you create a test configuration to emulate DHCP or DHCPv6/PD clients respectively. During a DHCP or DHCPv6/PD test, Spirent HLTAPI sends DHCP/DHCPv6 messages to, and receives messages from, the DUT (configured as a DHCP or DHCPv6/PD server respectively). In this context, you can create test configurations in which Spirent HLTAPI DHCP or DHCPv6/PD clients act as independent network hosts, communicating directly with a DHCP or DHCPv6/PD server. Spirent HLTAPI DHCP or DHCPv6/PD clients are part of a VLAN.

For information about the DHCP protocol, see RFC 2131, “Dynamic Host Configuration Protocol”. For information about DHCP for IPv6, See RFC 3315, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6)”, and RFC 3633, “IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6”

Examples

#### HLTAPI for Tcl ####

The following example creates a DHCP emulation port:

sth::emulation_dhcp_config -port_handle $hPort($device.$port)
     -mode create \
     -lease_time 10400

Sample output for example shown above:

{handles dhcpv4portconfig1} {status 1}

The following example creates a DHCP emulation port supporting relay agent:

sth::emulation_dhcp_config -port_handle $hPort($device.$port) \
    -mode create \
    -lease_time 10400 \
    -relay_agent_flag 1 \
    -relay_agent_ip_addr 192.1.0.5 \
    -server_ip_addr 192.1.0.1 \
    -circuit_id 34 \
    -circuit_id_suffix 2 \
    -circuit_id_suffix_step 1 \

Sample output for example shown above:

{handles dhcpv4portconfig1} {status 1}
The following example enables the device with DHCPv4::
set device_ret_enable [sth::emulation_dhcp_config
-mode enable
-ip_version 4
-handle $devhandle
-starting_xid 0
-lease_time 60
-outstanding_session_count
 1000
-request_rate 100
-msg_timeout 60000
-retry_count 4
-sequencetype SEQUENTIAL
-max_dhcp_msg_size
 576
-release_rate 100 ]

Sample output for example shown above:

{handles dhcpv4portconfig1}{handle dhcpv4portconfig1}{status 1}

The following example modifies the exiting DHCP port:

sth::emulation_dhcp_config -handle dhcpv4portconfig1\
     -mode modify \
     -lease_time 71700 \
     -relay_agent_flag 1 \
     -circuit_id 29 \

Sample output for example shown above:

{status 1}

The following example stops the exiting DHCP port:

sth::emulation_dhcp_config \
    -handle dhcpv4portconfig1 \
    -mode reset \

Sample output for example shown above:

{status 1}

The following example creates a DHCPv6 emulation port:

sth::emulation_dhcp_config  \
     -mode                             create \
     -port_handle                      $hltHostPort \
     -ip_version 6\
     -dhcp6_outstanding_session_count  1\
     -dhcp6_release_rate               100\
     -dhcp6_request_rate               100\
     -dhcp6_renew_rate                 100\
     -dhcp6_sequence_type              PARALLEL\
     -dhcp6_reb_max_rt                 600\
     -dhcp6_reb_timeout                10\
     -dhcp6_rel_max_rc                 5\
     -dhcp6_rel_timeout                1\
     -dhcp6_ren_max_rt                 600\
     -dhcp6_ren_timeout                10\
     -dhcp6_req_max_rc                 10\
     -dhcp6_req_max_rt                 30\
     -dhcp6_req_timeout                1\
     -dhcp6_sol_max_rc                 10\
     -dhcp6_sol_max_rt                 120\
     -dhcp6_sol_timeout                1\
     -dhcp6_dec_max_rc                 5\
     -dhcp6_dec_timeout                1\
     -dhcp6_inforeq_max_rt             120\
     -dhcp6_inforeq_timeout            1\
     -dhcp6_cfm_duration               10\
     -dhcp6_cfm_max_rt                 4\
     -dhcp6_cfm_timeout                1]

The following example modifies the created DHCPv6 device:

    sth::emulation_dhcp_config  \
     -mode                         modify \
     -handle                       $hltHostPort \
     -ip_version 6\
     -dhcp6_outstanding_session_count  2\
     -dhcp6_release_rate               50\
     -dhcp6_request_rate               50]

#### HLTAPI for Python ####

The following example creates a DHCP emulation port:

device_ret0port = sth.emulation_dhcp_config (
            mode                = 'create',
            ip_version          = '4',
            port_handle         = port_handle[0],
            starting_xid        = '0',
            lease_time          = '60',
            outstanding_session_count= '1000',
            request_rate        = '100',
            msg_timeout         = '60000',
            retry_count         = '4',
            max_dhcp_msg_size   = '576',
            release_rate        = '100');

Sample Output:

{'status': '1', 'handles': 'dhcpv4portconfig2', 'handle': {'port1'::
'dhcpv4portconfig2'}}

#### HLTAPI for Perl #### The following example creates a DHCP emulation port:

my %device_ret0port = sth::emulation_dhcp_config (
         mode                => 'create',
         ip_version          => '4',
         port_handle         => "$hport[1]",
         starting_xid        => '0',
         lease_time          => '60',
         outstanding_session_count=> '1000',
         request_rate        => '100',
         msg_timeout         => '60000',
         retry_count         => '4',
         max_dhcp_msg_size   => '576',
         release_rate        => '100');

Sample Output:

$VAR1 = 'handle';
$VAR2 = {
          'port1' => 'dhcpv4portconfig1'
        };
$VAR3 = 'handles';
$VAR4 = 'dhcpv4portconfig1';
$VAR5 = 'status';
$VAR6 = '1';

Note

When first configuring DHCP/DHCPv6 emulation on a port, you must specify “-mode create” and initialize the port handle argument before calling the sth::emulation_dhcp_config function.

End of Procedure Header

sth::emulation_dhcp_group_config

Purpose

Configures, modifies or resets a specified number of DHCP or DHCPv6/PD client sessions which belong to a subscriber group with specific Layer 2 network settings. Once the subscriber group has been configured, a handle is created, which can be used to modify the parameters or reset the sessions for the subscriber group or to control the binding, renewal, and release of the DHCP or DHCPv6/PD sessions.

Synopsis

Note

  1. M indicates that the argument is Mandatory .
  2. S indicates the argument is for scaling scenarios.
sth::emulation_dhcp_group_config
  [-mode {create|modify|enable|activate|reset}  M]
  [-handle <dhcpGroup_handle|dhcpv6Group_handle|device_handle>  M]
                            Mandatory when -mode create|modify|enable|reset
  [-port_handle <port handle> M] Mandatory when -mode activate
  [-num_sessions <1-65536>]
  [-device_name <string>]
  [-auth_protocol {delayed_auth|reconfig_key}]
  [-default_host_addr_prefix <0-32>]
  [-broadcast_bit_flag {true|false}]
  [-client_count <numeric>]
  [-client_mac_addr_mask <aa:bb:cc:dd:ee:ff>]
  [-client_mac_addr <aa:bb:cc:dd:ee:ff>]
  [-client_mac_addr_step <aa:bb:cc:dd:ee:ff>]
  [-client_id < hexadecimal >]
  [-client_id_suffix <integer>]
  [-client_id_suffix_count <integer>]
  [-client_id_suffix_step <integer>]
  [-client_id_suffix_repeat <integer>]
  [-client_id_type <0-255>]
  [-circuit_id <hexadecimal >]
  [-circuit_id_suffix <integer>]
  [-circuit_id_suffix_count <integer>]
  [-circuit_id_suffix_step <integer>]
  [-circuit_id_suffix_repeat <integer>]
  [-control_plane_prefix {linklocal|routeradvertisement}]
  [-dhcp_range_ip_type {4|6}]
  [-enable_auto_retry {true|false}]
  [-enable_arp_server_id {true|false}]
  [-enable_router_option {true|false}]
  [-enable_relay_link_selection {0|1}]
  [-enable_relay_vpn_id {0|1}]
  [-ipv4_gateway_address <a.d.c.d>]
  [-ipv6_enable_gateway_learning {true|false}]
  [-dhcp_realm <any>]
  [-dhcp6_client_mode {dhcppd|dhcpv6|dhcpv6andpd}]
  [-dhcp6_delayed_auth_key_id <0 - 429496729>]
  [-dhcp6_delayed_auth_key_value <alphanumeric>]
  [-dhcp6_range_duid_enterprise_id <numeric>]
  [-dhcp6_range_duid_vendor_id <alphanumeric>]
  [-dhcp6_range_duid_vendor_id_increment <alphanumeric>]
  [-dhcp6_range_duid_type {custom|en|ll|llt}]
  [-dhcp6_range_ia_t1 <numeric>]
  [-dhcp6_range_ia_t2 <numeric>]
  [-dad_timeout <numeric>]
  [-dad_transmits <numeric>]
  [-dst_addr_type {all_dhcp_relay_agents_and_servers|all_dhcp_servers}]
  [-duid_value <numeric>]
  [-enable_auth {true|false}]
  [-enable_dad {true|false}]
  [-encap {ethernet_ii|ethernet_ii_vlan|ethernet_ii_qinq|vc_mux|llcsnap|ethernet_ii_mvlan}]
  [-enable_ldra {true|false}]
  [-enable_rebind {true|false}]
  [-enable_reconfig_accept {true|false}]
  [-enable_relay_agent {true|false}]
  [-enable_renew {true|false}]
  [-export_addr_to_clients {0|1}]
  [-enable_wildcards {true|false}]
  [-gateway_addresses {0|1}]
  [-gateway_ipv4_addr_step <a.d.c.d>]
  [-string_as_hex_value {true|false}]
  [-host_name <host_name> ]
  [-include_in_message {discover|request|both}|{1|3|4|5|6|8|11|12}]
  [-option_value <0-255>]
  [-option_payload <ALPHANUMERIC>]
  [-remove_option  {true|false}]
  [-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_prefix_len <0-128>]
  [-gateway_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-gateway_ipv6_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-mac_addr <aa:bb:cc:dd:ee:ff>]
  [-mac_addr_step <aa:bb:cc:dd:ee:ff>]
  [-opt_list <list of numbers>]
  [-preferred_lifetime]
  [-prefix_length <0-64>]
  [-prefix_start <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-protocol {dhcpoe|dhcpoeoa}]
  [-pvc_incr_mode {vci|vpi|both}]
  [-qinq_incr_mode {inner|outer|both}]
  [-qinq_oneblock {1|0}]
  [-rapid_commit_mode {ENABLE|DISABLE|SERVER}]
  [-requested_addr_start <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-relay_agent_ipv4_subnet_mask <a.b.c.d>]
  [-relay_link_selection <a.b.c.d>]
  [-relay_server_ipv6_addr  <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-relay_server_ipv6_addr_step  <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-relay_agent_flag {true|false}]
  [-relay_agent_ip_addr <a.b.c.d>]
  [-retry_attempts <integer>]
  [-remote_id <hexadecimal >]
  [-remote_id_suffix <integer>]
  [-remote_id_suffix_count <integer>]
  [-remote_id_suffix_step <integer>]
  [-remote_id_suffix_repeat <integer>]
  [-remote_id_enterprise <integer>]
  [-server_ip_addr <a.b.c.d>]
  [-use_relay_agent_mac_addr_for_dataplane {true|false}]
  [-valid_lifetime <NUMERIC>]
  [-vlan_id <1-4095> ]
  [-vlan_id_list <1-4095> ]
  [-vlan_cfi {0|1}]
  [-vlan_id_step <1-4095> ]
  [-vlan_id_count <1-4096> ]
  [-vlan_id_count_list <1-4096> ]
  [-vlan_id_mode {fixed | increment}]
  [-vlan_id_outer <0-4095>]
  [-vlan_outer_cfi {0|1}]
  [-vlan_id_outer_step <1-4095> ]
  [-vlan_id_outer_count <1-4096> ]
  [-vlan_id_outer_mode {fixed|increment}]
  [-vlan_id_step_list <1-4095> ]
  [-vlan_id_repeat_count <1-4095> ]
  [-vlan_id_repeat_count_list <1-4095> ]
  [-vlan_outer_ether_type {0x8100|0x88A8|0x88B5}]
  [-vlan_outer_user_priority <0-7>]
  [-vlan_user_priority <0-7>]
  [-vlan_user_priority_list <0-7>]
  [-vci <0-65535>]
  [-vci_count <1-65536>]
  [-vci_step <0-65535>]
  [-vpi <0-255>]
  [-vpi_count <1-256>]
  [-vpi_step <0-255>]
  [-vpn_id <string>]
  [-vpn_type {nvt_ascii|rfc_2685}]
  [-expand {true|false} S]
  [-clients_per_relay_agent <1-65535>]
  [-enable_circuit_id {true|false}]
  [-enable_relay_server_id_override {true|false}]
  [-relay_server_id_override <IPV4>]
  [-enable_remote_id {true|false}]
  [-relay_client_macaddr_mask <MAC>]
  [-relay_client_macaddr_step <MAC>]
  [-relay_client_macaddr_start <MAC>]
  [-relay_server_ipv4addr_step <IPV4>]
  [-use_client_mac_addr_for_dataplane {true|false}]
  [-use_gateway_as_relayserver_ipv4addr {true|false}]
  [-clients_per_home_gateway <1-65536>]
  [-enable_interface_id {true|false}]
  [-export_addr_to_linked_clients {true|false}]
  [-hg_mac_start <MAC>]
  [-hg_mac_step <MAC>]
  [-iaid_start <NUMERIC>]
  [-iaid_step <NUMERIC>]
  [-interface_id <ANY>]
  [-dhcpv6_mode {client|pd|pd_and_client}]
  [-prefix_step <IPV6>]
  [-ipv6_relay_client_macaddr_start <MAC>]
  [-use_gateway_as_relay_server_ipv6_addr {true|false}]

Arguments

Arguments Common for DHCPv4 and DHCPv6

-handle

Identifies the port and group or the device upon which emulation is configured. This argument is Mandatory . When mode is modify or reset, this parameter also specifies the DHCP or DHCPv6/PD group number. For mode create, the handle is returned by the sth::emulation_dhcp_config function. For mode modify or mode reset, the handle is the group handle returned by the sth::emulation_dhcp_group_config function. For mode enable, the handle is the device handle returned by other protocol emulation functions with mode create.

-port_handle

Specifies the port on which to perform the action. Applicable only in -mode activate when -block_mode or -expand is specified.

-mode

Specifies the action to perform. Possible values are create, enable, modify, and reset. There is no default. You must specify a mode. The modes are described below:

create - Starts emulation on the port specified with
        -handle.

enable - Starts emulation on the device specified with
        -handle. You must specify the -handle argument.

modify - Changes the configuration identified by the -handle
       argument by applying the parameters specified in
       subsequent arguments.

activate - Start DHCP or DHCPv6/PD devices emulation on the port
          specified with -port_handle by Spirent TestCenter device
          generate wizard command DeviceGenConfigExpand with parameters::

           Dhcpv4DeviceGenProtocolParams
           Dhcpv6DeviceGenProtocolParams

       Used for ``Scaling`` scenarios.
       1. Enables DHCPv4/DHCPv6 devices and configures DHCPv4/DHCPv6
          parameters for the devices created via the
          ``sth::emulation_device_config`` function. This mode requires
          the value of param_handle as the input to the -handle option.
          Use this mode for ``Scaling`` scenarios. Refer to -count and
          -expand options under the sth::emulation_dhcp_group_config
          function for more information. For this mode, only the following
          set of options are valid::

            For DHCPv4::

            remote_id
            vpn_id
            circuit_id
            server_ip_addr
            relay_client_macaddr_start
            opt_list
            enable_relay_link_selection
            enable_router_option
            relay_client_macaddr_mask
            host_name
            relay_link_selection
            use_gateway_as_relayserver_ipv4addr
            enable_relay_vpn_id
            enable_relay_server_id_override
            enable_remote_id
            relay_server_id_override
            retry_attempts
            enable_auto_retry
            relay_pool_ip_addr
            relay_client_macaddr_step
            vpn_type
            use_client_macaddr_for_dataplane
            enable_circuit_id
            relay_agent_flag
            relay_server_ipv4addr_step
            clients_per_relay_agent

            For DHCPv6/PD::

            dhcp_range_ip_type
            dhcpv6_mode
            remote_id
            dhcp6_range_duid_vendor_id
            client_mac_addr
            client_mac_addr_mask
            client_mac_addr_step
            clients_per_home_gateway
            iaid_step
            relay_client_mac_addr_start
            dhcp6_range_duid_type
            prefix_start
            enable_interface_id
            interface_id
            preferred_lifetime
            prefix_ste
            iaid_start
            relay_server_ipv6_addr
            use_relay_agent_mac_addr_for_dataplane
            enable_renew
            relay_server_ipv6_addr_step
            dhcp6_range_ia_t1
            use_gateway_as_relay_server_ipv6_addr
            enable_remote_id
            rapid_commit_mode
            hg_mac_step
            dhcp6_range_duid_enterprise_id
            dhcp6_range_duid_vendor_id_increment
            enable_rebind
            export_addr_to_linked_clients
            relay_client_mac_addr_step
            remote_id_enterprise
            hg_mac_start
            duid_value
            valid_lifetime
            enable_relay_agent
            prefix_length
            dhcp6_range_ia_t2
            clients_per_relay_agent

       2. Creates devices and enables DHCPv4/DHCPv6 protocol.
          Requires -port_handle and -block_mode options.
          For this mode, the following options are required/supported
          along with the options specified above::

            -count
            -block_mode
            -block_name_index
            -name
            -vlan_id
            -vlan_outer_id
            -vlan_user_pri
            -vlan_id_count
            -vlan_id_repeatmode
            -vlan_outer_id_count
            -vlan_outer_user_pri
            -vlan_outer_id_repeatmode
            -router_id
            -router_id_step
            -router_id_ipv6
            -router_id_ipv6_step
            -intf_ip_addr
            -intf_ip_addr_step
            -intf_prefix_len
            -gateway_ip_addr
            -gateway_ip_addr_step
            -mac_addr
            -mac_addr_step
            -link_local_ipv6_addr
            -link_local_ipv6_addr_step
            -intf_ipv6_addr
            -intf_ipv6_addr_step
            -intf_ipv6_prefix_len
            -link_local_ipv6_prefix_len
            -gateway_ipv6_addr
            -gateway_ipv6_addr_step
            -mac_addr_step_per_port
            -mac_addr_step_per_vlan
            -ip_step_per_port
            -ip_step_per_vlan
            -ipv6_step_per_vlan
            -ipv6_step_per_port
            -link_local_ipv6_step_per_port
            -link_local_ipv6_step_per_vlan

          .. note:: Please refer to the emulation_device_config documentation.

reset - Stops the DHCP or DHCPv6/PD emulation locally without
       attempting to clear the bound addresses from the DHCP or
       DHCPv6/PD server. In addition, all DHCP or DHCPv6/PD group
       sessions information on the port is cleared.

Note

  1. For -mode enable, the following options will be obsoleted when ip_version is not 6:

    -mac_addr
    -mac_addr_step
    -vlan_id
    -vlan_id_outer
    -vlan_id_step,
    -vlan_id_outer_step
    -vlan_id_count
    -vlan_id_outer_count
    -vlan_user_priority
    -vlan_outer_user_priority
    -qinq_incr_mode,
    -qinq_oneblock
    -gateway_addresses
    -ipv4_gateway_address
    -vci
    -vpi
    -vci_count
    -vci_step
    -vpi_count
    -vpi_step
    -pvc_incr_modeemulation
    
  2. Before using sth::emulation_dhcp_group_config -mode reset, you must first delete all traffic streams with the “sth::traffic_config -mode reset” command. Traffic streams must be reset before DHCP can be reset.

-encap

Specifies the type of Layer 2 encapsulation used to define source and destination MAC addresses for a stream. This argument is mandatory. Possible values are:

ethernet_ii     - Ethernet II

ethernet_ii_vlan - Ethernet II with a single VLAN tag

ethernet_ii_qinq - Ethernet II with two VLAN tags.

ethernet_ii_mvlan - Ethernet II with more than two VLAN tags.


vc_mux - Sets the ATM encapsulation type to Virtual Circuit
         Multiplexing (VC_MUX). VC_MUX is
         one of the two mechanisms for identifying the protocol
         carried in ATM Adaptation Layer5 (AAL5) frames.
         vc_mux is available for ATM cards.
         .. note:: This option is not available for DHCPv6.

llcsnap - Sets the ATM encapsulation type to LLC encapsulation.
         LLC encapsulation is the other mechanism for identifying
         the protocol carried in AAL5 frames. llcsnap is
         available for ATM cards. The default -encap value for ATM
         cards is vc_mux.

Note

  1. llcsnap is not available for DHCPv6.

  2. ethernet_ii_vlan supports VLAN tagging on Ethernet networks. When you set the -encap argument to ethernet_ii_vlan, the following arguments are available:

    -vlan_id
    -vlan_id_step
    -vlan_id_count
    
  3. ethernet_ii_qinq supports two VLAN tags in a Ethernet frame. When you set the -encap argument to ethernet_ii_qinq, the following arguments are available:

    -vlan_id
    -vlan_id_step
    -vlan_id_count
    -vlan_id_outer
    -vlan_id_outer_step
    -vlan_id_outer_count
    -qinq_incr_mode
    

    If you set the -encap argument to ethernet_ii, the arguments above are not available.

  4. ethernet_ii_mvlan specifies VLAN from the 3rd tag on. Ethernet frame. The first two VLAN tags are specified using vlan_id and vlan_outer_id and their related arguments. When you set the -encap argument to ethernet_ii_mvlan, the following arguments are available:

    -vlan_id_list
    -vlan_id_step_list
    -vlan_id_count_list
    -vlan_ether_type_list
    -vlan_outer_ether_type
    -vlan_user_priority_list
    -vlan_id_repeat_count_list
    
  5. When you set the -encap argument to vc_mux or llcsnap, the following arguments are available:

    -vci
    -vci_count
    -vci_step
    -vpi
    -vpi_count
    -vpi_step
    -pvc_incr_mode
    
-mac_addr

Specifies the first MAC address to use when emulating multiple clients. The default is 00:10:01:00:00:01.

-mac_addr_step

Specifies the increment to use to generate additional MAC addresses for multiple clients. Possible values range from 00.00.00.00.00.01 to 00.00.7f.ff.ff.ff. The default is 00.00.00.00.00.01.

-num_sessions

Specifies the number of DHCP or DHCPv6/PD clients to emulate. Possible values range from 1 to 65536. The default is 4096. .. note:: For Outrigger2 platforms, the maximum value is 131070. For non-Outrigger2 platforms, the maximum is 4096.

-device_name

A text name for the emulated device configured with DHCP or DHCPv6/PD clients.

-default_host_addr_prefix

Specifies the default prefix length for the host address. This argument is applicable only for DHCPv4. The default is 24.

-dhcp_range_ip_type

Defines the IP address version to be used. Possible values are 4(for DHCPv4) and 6(for DHCPv6). The default is 4.

-qinq_incr_mode

Specifies the increment mode for ethernet_ii_qinq encapsulation. Possible values are inner, outer and both. The default is inner. The values are described below:

inner - When the number of sessions is greater than
       the inner VLAN count times the outer VLAN count, the
       inner VLAN ID is incremented first until the specified
       number of inner VLANs is exhausted, then the outer
       VLAN ID is incremented. This continues in a
       round-robin fashion until the number of
       sessions is exhausted.

outer - When the number of sessions is greater than the
       inner VLAN count times the outer VLAN count, the outer
       VLAN ID is incremented first until the specified number
       of outer VLANs is exhausted, and then the inner VLAN ID is
       incremented. This continues in a round-robin fashion
       until the number of sessions is exhausted.

both - When the number of sessions is greater than the
       inner VLAN count times the outer VLAN count, the
       inner VLAN ID and outer VLAN ID increment at the
       same time. This continues in a round-robin fashion
       until the number of sessions is exhausted.
       This argument is valid for DHCPv6 clients only.

Note

Applies only to Q-in-Q Ethernet interfaces. For the “inner” mode, when the number of sessions is greater than the inner VLAN count multiplied by the outer VLAN count, the inner VLAN ID is incremented first until the specified number of inner VLANs is exhausted; then, the outer VLAN ID is incremented. This continues in round-robin fashion until the number of sessions specified in -num_sessions. For the “outer” mode, when the number of sessions is greater than the inner VLAN count multiplied by the outer VLAN count outer VLAN count, the outer VLAN ID is incremented first until the specified number of outer VLANs is exhausted; then it increments the inner VLAN ID. This continues in round-robin fashion until the number of sessions specified in -num_sessions.

-qinq_oneblock

Spirent Extension (for Spirent HLTAPI only).

Determines whether Spirent TestCenter creates Q-in-Q (802.1q Tunnel Tags) hosts with one handle returned. When it is set to 1, Spirent TestCenter creates multiple Q-in-Q hosts with one handle returned instead of returning multiple handles. You can configure all the generated hosts at one time by specifying this handle. Possible values are 0 (disabled) and 1 (enabled). The default value is 0.

-vlan_cfi

Spirent Extension (for Spirent HLTAPI only).

Specifies the canonical format indicator (CFI) field in VLAN for the emulated router node. Possible values are 0 (Ethernet) and 1 (Token Ring). The default is 1.

-vlan_id

The starting VLAN ID to use when generating DHCP/DHCPv6 clients for ethernet_ii_vlan. Possible values range from 1 to 4095. This argument is Mandatory for ethernet_ii_vlan.

-vlan_id_mode

Specifies how Spirent HLTAPI assigns VLAN tags when the router count is greater than 1. Possible values are:

fixed - The VLAN ID is the same for all packets. The fixed
        VLAN ID is the value of the -vlan_id argument.

increment - For all packets, the VLAN tag ID increments by the
         step size specified in the -vlan_id_step argument.
-vlan_id_count

The number of VLAN IDs to use when generating DHCP clients. Spirent HLTAPI assigns VLAN membership in round-robin fashion. The VLAN count must divide evenly into the number of sessions. The -vlan_id_count cannot be greater than the session count (-num_session). Possible values range from 1 to 4096. The default is 1.

-vlan_id_outer

Starting outer VLAN ID, applies to DHCP w/Stacked VLAN only. Possible values range from 0 to 4095. The default is 1.

-vlan_id_outer_mode

Specifies how Spirent HLTAPI assigns VLAN tags when the router count is greater than 1. Possible values are:

fixed - The same VLAN ID is the same for all packets. The fixed
        VLAN ID is the value of the -vlan_id argument.

increment - For all packets, the VLAN tag ID increments by the
         step size specified in the -vlan_id_step argument.
-vlan_id_outer_step

The value that Spirent HLTAPI uses to increment the outer VLAN ID. Possible step values range from 1 to 4095. The default is 1.

-vlan_id_outer_count

The number of outer VLAN IDs to use when generating DHCP/DHCPv6 clients. Spirent HLTAPI assigns VLAN membership in round-robin fashion. The VLAN count must divide evenly into the number of sessions. The VLAN count cannot be greater than the session count. Possible values range from 1 to 4096. The default is 1.

-vlan_user_priority

Specifies the user priority of the inner VLAN. Possible values range from 0 to 7. The default value is 0.

-vlan_outer_user_priority

Specifies the user priority of the outer VLAN. Possible values range from 0 to 7. The default value is 0.

-vlan_id_step

The value that Spirent HLTAPI uses to increment the VLAN ID for ethernet_ii_vlan. Possible step values range from 1 to 4095. The default is 1.

-vlan_id_repeat_count

Spirent Extension (for Spirent HLTAPI only).

Number of times to repeat the same IPv4 address before incrementing it for the inner VLAN. The value must be an integer. The default value is 0.

-vlan_ether_type

Spirent Extension (for Spirent HLTAPI only).

Specifies the Ethernet Type field for the inner VLAN. Possible values are 0x8100, 0x88A8, and 0x88B5. The default value is 0x8100. You must specify the -vlan_id argument.

-vlan_outer_ether_type

Spirent Extension (for Spirent HLTAPI only).

Specifies the Ethernet Type field for the outer VLAN. Possible values are 0x8100, 0x88A8, and 0x88B5. The default value is 0x8100. You must specify the -vlan_outer_id argument.

-vlan_outer_id_repeat_count

Spirent Extension (for Spirent HLTAPI only).

Number of times to repeat the same IPv4 address before incrementing it for the outer VLAN. The value must be an integer. The default value is 0.

-vlan_id_list

Spirent Extension (for Spirent HLTAPI only).

A list of VLAN IDs to use when generating DHCP/DHCPv6 clients for ethernet_ii_mvlan encapsulation. Possible values range from 1 to 4095.

-vlan_id_step_list

Spirent Extension (for Spirent HLTAPI only).

A list of values that Spirent HLTAPI uses to increment the VLAN IDs for ethernet_ii_mvlan encapsulation. Possible step values range from 1 to 4095. The default is 1.

-vlan_id_count_list

Spirent Extension (for Spirent HLTAPI only).

A list of numbers of VLAN IDs to use when generating DHCP clients using ethernet_ii_mvlan encapsulation. Possible values range from 1 to 4096. The default is 1.

-vlan_ether_type_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Ethernet Type fields for ethernet_ii_mvlan encapsulation. Possible values are 0x8100, 0x88A8, and 0x88B5. The default value is 0x8100.

-vlan_user_priority_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of user priorities for ethernet_ii_mvlan encapsulation. Possible values range from 0 to 7. The default value is 0.

-vlan_id_repeat_count_list

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of numbers of times that a VLAN ID should be repeated, before the step (-vlan_id_step_list) is applied to the VLAN IDs for incrementing. Possible step values range from 1 to 4095. The default is 0.

-vlan_outer_cfi

Spirent Extension (for Spirent HLTAPI only).

Specifies the CFI field in outer VLAN tag for the emulated device. Possible values are 0 (Ethernet) and 1 (Token Ring). The default is 1.

-remote_id

Spirent Extension (for Spirent HLTAPI only).

Configures the remote ID sub-option of relay agent option. The remote ID can be used by relay agents that terminate switched or permanent circuits and have mechanisms to identify the remote host end of the circuit. The remote ID must be globally unique, and the value must be in the hexadecimal format. The default is 0.

-remote_id_suffix

Spirent Extension (for Spirent HLTAPI only).

Defines the suffix to append to the circuit ID. The default is 0.

-remote_id_suffix_step

Spirent Extension (for Spirent HLTAPI only).

Defines the increment used to generate remote ID suffixes (-remote_id_suffix) for emulated clients. The default is 1.

-remote_id_suffix_repeat

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of times a remote ID suffix should be repeated, before the step that is specified in the -remote_id_suffix_step argument is applied to the remote ID suffix for incrementing. Possible values range from 1 to <max_int>.

-remote_id_suffix_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of remote ID suffixes. Possible values range from 1 to <max_int>. The default is 1.

-enable_wildcards

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable the use of wildcards for the Option Payload field in the custom option. The length of the list must be the same as that of lists -string_as_hex_value, -include_in_message, -option_value, -option_payload and -remove_option. Possible values are true (enable) and false (disable). The default value is false.

-string_as_hex_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable value as hexadecimal in the custom options. The length of the list must be the same as that of lists -enable_wildcards, -include_in_message, -option_value, -option_payload and -remove_option. Possible values are true (enable) and false (disable). The default value is false.

-include_in_message

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of types of DHCP messages that will include the custom option. The length of the list must be the same as that of lists -enable_wildcards, -string_as_hex_value, -option_value, -option_payload and -remove_option. The values are a list of numbers, each corresponding to a message type. Possible values are described below:

DHCPv4

DISCOVER   Include custom options in the DISCOVER message
REQUEST    Include custom options in the REQUEST message
BOTH       Include custom options in both DISCOVER and REQUEST
           messages (Default)

DHCPv6

 1        Solicit (Default)
 3        Request
 4        Confirm
 5        Renew
 6        Rebind
 8        Release
 11       Information-Request
 12       Relay-Forward
-option_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of option identifiers for the custom option. The length of the list must be the same as that of lists -enable_wildcards, -string_as_hex_value, -include_in_message, -option_payload and -remove_option. Possible values range from 0 to 255. The default value 0.

-option_payload

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of payload strings in the DHCP custom option, in the format specified below:

@s   Session index associated with the DHCP client
@b   Block (host/router) index
@p   Port name
@m   MAC address of the DHCP client
@x   Custom step in (start, count, step, zero padding, stutter) format
@@   Used to include the "@" symbol in the string

The default value is: “” (empty string). The length of the list must be the same as that of lists -enable_wildcards, -string_as_hex_value, -include_in_message, -option_value and -remove_option.

-remove_option

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of Booleans to enable or disable option removal for the custom option. The length of the list must be the same as that of lists -enable_wildcards, -string_as_hex_value, -include_in_message, -option_value and -option_payload. Possible values are true (enable) and false (disable). The default value is false.

DHCPv4 Specific Arguments

-enable_auto_retry

Spirent Extension (for Spirent HLTAPI only).

Enables or disables auto retry for sessions that fail to initially come up. Possible values are true and false. The default is false.

Spirent Extension (for Spirent HLTAPI only).

Enables or disables relay agent link selection. Possible values are 0 (disable) and 1 (enable). The default value is 0.

-enable_relay_vpn_id

Spirent Extension (for Spirent HLTAPI only).

Enables or disables relay agent VPN ID. Possible values are 0 (disable) and 1 (enable). The default value is 0.

-retry_attempts

Spirent Extension (for Spirent HLTAPI only).

Number of times to retry a session after the initial failure. You must set -enable_auto_retry to true.

-enable_arp_server_id

Spirent Extension (for Spirent HLTAPI only).

Enables or disables ARP on the server ID. Possible values are true and false. The default is false.

-enable_router_option

Spirent Extension (for Spirent HLTAPI only).

Enables or disables the router option (option 3) specified in RFC 2132. Possible values are true and false. The default is false.

-protocol

Spirent Extension (for Spirent HLTAPI only).

Specifies the type of the protocol to use. Possible values are:

dhcpoe - DHCP over Ethernet. You can specify -encap ethernet_ii,
         -encap ethernet_ii_vlan,   or -encap ethernet_ii_qinq
         when -protocol is set to dhcpoe. This is the default.

dhcpoeoa - DHCP over Ethernet over ATM. When you specify
        -protocol dhcpoeoa, -encap can be set to the combination
        of an Ethernet encapsulation (ethernet_ii, ethernet_ii_vlan,
        or ethernet_ii_qinq) and an ATM encapsulation (vc_mux
        or llcsnap). You must specify -protocol dhcpoeoa for ATM
        cards.
-gateway_addresses

Spirent Extension (for Spirent HLTAPI only).

Enables or disables IPv4 gateway addresses. Possible values are 1 (enable) or 0 (disable). The default is 0.

-gateway_ipv4_addr_step

Spirent Extension (for Spirent HLTAPI only).

Step value to increment IPv4 gateway addresses. The value must be in IPv4 format. The default value is 0.0.0.0.

-ipv4_gateway_address

Spirent Extension (for Spirent HLTAPI only).

Specifies the IPv4 gateway address. You can specify this argument when -gateway_addresses is set to 1.

-host_name

Spirent Extension (for Spirent HLTAPI only).

Specifies the name of the host. You can use the following wildcards: @p = port, @b = session block, @s = session. The default is client_ @p-@b-@s.

-opt_list

Spirent Extension (for Spirent HLTAPI only).

Set up the Option 55 values for the DHCP request messages on each session block. You can select from the following list of options:

Subnet Mask Option [1]
Routers Option [3]
Domain Name Servers Option [6]
Domain Name Option [15]
Static Routes Option [33]
NetBIOS Name Servers Option [44]
NetBIOS Node Type Option [46]
NetBIOS Scope Option [47]
IP Address Lease Time Option [51]
Server Identifier Option [54]
Renewal Time (T1) Option [58]
Rebinding Time (T2) Option [59]

The default is 1 6 15 33 44. Example usage:

sth::emulation_dhcp_group_config -mode create \
              -handle $dhcpport1 \
              -encap ethernet_ii \
              -num_sessions 30 \
              -mac_addr 00.00.03.00.00.02 \
              -mac_addr_step 00.00.00.00.00.02 \
              -opt_list {1 6 15}

Alternatively, you can use the hexadecimal input style used by the Spirent HLTAPI, but you must prefix the input with “0x” or “0X” to indicate the hexadecimal style. The following example uses the Spirent HLTAPI input style and is equivalent to the above example:

sth::emulation_dhcp_group_config -mode create \
           -handle $dhcpport1 \
           -encap ethernet_ii \
           -num_sessions 30 \
           -mac_addr 00.00.03.00.00.02 \
           -mac_addr_step 00.00.00.00.00.02 \
           -opt_list 0x01060f
-relay_agent_ipv4_subnet_mask

Spirent Extension (for Spirent HLTAPI only).

Specifies the subnet mask for the relay agent’s IP address. The value must be in IPv4 format. The default is 255.255.0.0.

Spirent Extension (for Spirent HLTAPI only).

Specifies the value of the relay agent link selection. This argument is available when -enable_relay_link_selection is set to 1. The value must be in IPv4 format. The default is 192.85.1.1.

-vpn_id

Spirent Extension (for Spirent HLTAPI only).

Specifies the relay agent VPN ID in string format. You must set -enable_relay_vpn_id to 1.

-vpn_type

Spirent Extension (for Spirent HLTAPI only).

Specifies the type of the VPN ID. This argument is available when -enable_relay_vpn_id is set to 1. Possible values are nvt_ascii and rfc_2685.

nvt_ascii Network Virtual Terminal (NVT) ASCII VPN identifier rfc_2685 RFC 2685 VPN-ID

The default value is nvt_ascii.

-vci

Specifies the Virtual Circuit Identifier (VCI) of the first ATM PVC pool. Possible values range from 0 to 65535. The default is 100. This argument is valid for ATM interfaces only.

-vci_count

Specifies the number of the VCIs used for the emulation of clients over ATM interfaces. Possible values range from 1 to 65536. The default is 1. The value of -vci_count must be divisible by the number of sessions. This argument is valid for ATM interfaces only.

-vci_step

Specifies the step size in which the VCI value is incremented. Possible values range from 0 to 65535. The default is 1. This argument is valid for ATM interfaces only.

-vpi

Specifies the Virtual Path Identifier (VPI) of the first ATM PVC pool (for an ATM connection). Possible values range from 0 to 255. The default is 100. This argument is valid for ATM interfaces only.

-vpi_count

Specifies the number of the VPIs used for the emulation of clients over ATM interfaces. Possible values range from 1 to 256. The default is 1. The VPI count number must be divisible by the number of sessions. This argument is valid for ATM interfaces only.

-vpi_step

Specifies the step size in which the VPI value is incremented. Possible values range from 0 to 255. The default is 1. This argument is valid for ATM interfaces only.

-pvc_incr_mode

Determines which ID to increment first. Possible values are:

vci - Increments the VCI before the VPI.
vpi - Increments the VPI before the VCI.
both - Increments both the VPI and VCI at the same time.

This argument is valid for ATM interfaces only.

-broadcast_bit_flag

Spirent Extension (for Spirent HLTAPI only).

Configures the flag to broadcast client responses. Possible values are 0 and 1. If the argument is set to 1, the DHCP Server or relay agent will broadcast DHCP messages using an IP broadcast address. If it is set to 0, the DHCP or DHCPv6/PD Server or relay agent will send the DHCP or DHCPv6/PD messages to the IP address specified in the “yiaddr” field. The default is 1.

-relay_agent_flag

Spirent Extension (for Spirent HLTAPI only).

Configures DHCP relay agent. The DHCP relay agent allows you to place DHCP clients and DHCP servers on different networks. Possible values are 0 (disabled) and 1 (enabled). You can use this argument to control the configuration of -relay_agent_ip_addr and -server_ip_addr.

-relay_agent_ip_addr

Spirent Extension (for Spirent HLTAPI only).

Configures DHCP relay agent IP address. The value should be in IPv4 format. The default value is 192.1.1.0. You can use this argument when -relay_agent_flag is enabled.

-server_ip_addr

Spirent Extension (for Spirent HLTAPI only).

Configures DHCP server IP address. The default value is 192.1.1.2. The value should be in the IPv4 format. You can use this argument when -relay_agent_flag is enabled. This argument is required when relay_agent_ip_addr is used. Both arguments must be configured in the same segment.

-circuit_id

Spirent Extension (for Spirent HLTAPI only).

Configures the circuit ID sub-option of relay agent option (82). This sub-option encodes an agent-local identifier of the circuit from which a DHCP client-to-server packet was received. It is intended for use by agents in relaying DHCP responses back to the proper circuit. (See RFC 3046 for more information.) The circuit ID must be globally unique, and the value must be in the hexadecimal format. The default is 0.

-circuit_id_suffix

Spirent Extension (for Spirent HLTAPI only).

Defines the suffix to append to the circuit ID. The default is 0.

-circuit_id_suffix_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of circuit ID suffixes. Possible values range from 1 to <max_int>. The default is 1.

-circuit_id_suffix_step

Spirent Extension (for Spirent HLTAPI only).

Defines the increment used to generate circuit ID suffixes (-circuit_id_suffix) for emulated clients. The default is 1.

-circuit_id_suffix_repeat

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of times a circuit ID suffix should be repeated, before the step that is specified in the -circuit_id_suffix_step argument is applied to the circuit ID suffix for incrementing. Possible values range from 1 to <max_int>.

-client_id

Spirent Extension (for Spirent HLTAPI only).

Configures the client ID option (61). DHCP clients use client ID (option 61) to specify their unique identifier. DHCP servers use this value to index their database of address bindings. This value is expected to be unique for all clients in an administrative domain. This value must be in hexadecimal format.

-client_id_suffix

Spirent Extension (for Spirent HLTAPI only).

Configure the suffix to append to the client ID. Possible values range from 0 to <max_int-1>.

-client_id_suffix_count

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of client ID suffixes. Possible values range from 1 to <max_int>. The default is 1.

-client_id_suffix_step

Spirent Extension (for Spirent HLTAPI only).

Defines the increment used to generate client ID suffixes (-client_id_suffix) for emulated clients. Possible values range from 0 to <max_int-1>. The default value is 1.

-client_id_suffix_repeat

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of times a client ID suffix should be repeated, before the step that is specified in the -client_id_suffix_step argument is applied to the client ID suffix for incrementing. Possible values range from 1 to <max_int>.

-client_id_type

Spirent Extension (for Spirent HLTAPI only).

Configures the client ID type. Possible values range from 0 to 255. You must specify this argument when you specify -client_id.

DHCPv6/PD Specific Arguments (You must set -dhcp_range_ip_type to 6)

-control_plane_prefix

Spirent Extension (for Spirent HLTAPI only).

Determines which address use as the source IPv6 interface in control plane DHCPv6/PD messages. Possible values are described below:

LINKLOCAL - Use the link local address as the source IPv6
         interface in control plane DHCPv6/PD messages. This
         is the default value.

ROUTERADVERTISEMENT - Use the router global IPv6 address
         as the source IPv6 address in control plane messages.
-dhcp6_range_duid_enterprise_id

Specifies the enterprise number to be used in the DUID. This argument is only applicable when -duid_type is set to en. The default value is 3456

-dhcp6_range_duid_vendor_id

Starting DUID value. The default value is 0001 This field is available when -duid_type is set to custom or en.

-dhcp6_range_duid_vendor_id_increment

DUID step value. This value is alphanumeric. The default is 0001. This argument is available when -duid_type is set to custom.

-dhcp6_range_duid_type

Indicates the DHCPv6 Unique Identifier (DUID) type. DUID is used for DHCPv6 participants, and each DHCPv6 client and DHCPv6 server has exactly one DUID. DHCPv6 delegating servers use DUIDs to identify clients in order to select configuration parameters and associate IAs with clients. DHCPv6 clients use DUIDs to identify a delegating server in messages that require a server to be identified. Possible values are described below:

llt - The DUID includes the link-layer address of any one
     network interface connected to the DHCPv6 device when
     the DUID was generated, plus the time when the DUID
     was generated. This is the default.

en - The DUID includes the vendor's registered Private
     Enterprise Number specified in the DUID Enterprise
     Number field, followed by a unique identifier assigned
     by the vendor.

ll - The DUID includes the link-layer address. This option is
     recommended for devices that have a permanently
     connected network interface with a link-layer address
     and do not have non-volatile, writable, stable storage.

custom - Custom DUID type
-dhcp6_range_ia_t1

Specifies the T1 timer value (in seconds) for the IA_PD (Identity Association for Non-temporary Addresses) option. After this time has expired, the DHCPv6/PD client initiates a RENEW/REPLY message exchange to extend the lifetime on any addresses in the IA_PD.

A value of 0 allows the server to specify the T1 value. The default is 50% of the preferred lifetime value. Possible values range from 0 to 2147483647. The default value is 302400.

-dhcp6_range_ia_t2

Specifies the T2 timer value (in seconds) for the IA_PD option. After this time has expired, the DHCPv6/PD client initiates a REBIND/REPLY message exchange to extend the lifetime on any addresses in the IA_PD. A value of 0 allows the server to specify the T2 value. The default is 80% of the preferred lifetime value. Possible values range from 0 to 2147483647. The default value is 483840.

-dst_addr_type

Spirent Extension (for Spirent HLTAPI only).

The multicast addresses that can be used by DHCP control plane. Possible values are:

ALL_DHCP_RELAY_AGENTS_AND_SERVERS  -  A link-scoped
         multicast address used by a client to communicate with
         neighboring (i.e., on-link) relay agents and servers.
         All servers and relay agents are members of this
         multicast group. This is the default value.

ALL_DHCP_SERVERS - A site-scoped multicast
        address used by a relay agent to communicate with
        servers, either because the relay agent wants to send
        messages to all servers or because it does not know the
        unicast addresses of the servers. Note that in order for
        a relay agent to use this address, it must have an
        address of sufficient scope to be reachable by the
        servers. All servers within the site are members of this
        multicast group.
-duid_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a user-defined value for the DUID. Possible values range from 0 to 65535. The default value is 1. This argument is available when -duid_type is set to custom.

-enable_ldra

Spirent Extension (for Spirent HLTAPI only).

Enables or disables the lightweight DHCPv6 relay agent. A Lightweight DHCPv6 Relay Agent (LDRA) allows Relay Agent Information to be inserted by an access node that performs a link-layer bridging (i.e., non-routing) function. Possible values are true (enable) and false (disable). The default value is false

-enable_rebind

Spirent Extension (for Spirent HLTAPI only).

Specifies whether the host will send a REBIND message to the delegating router when the DHCPv6/PD session’s T2 time has expired. The lifetime of the prefixes (DHCPv6-PD) or addresses (DHCPv6 client) continues until the Valid Lifetime value is reached. Possible values are true (enable) and false (disable). The default value is false.

-enable_reconfig_accept

Spirent Extension (for Spirent HLTAPI only).

Specifies whether the client is willing to accept Reconfigure messages from the server. Possible values are true and false. The default value is false.

-enable_relay_agent

Spirent Extension (for Spirent HLTAPI only).

Enables or disables relay agent emulation. Possible values are true (enable) and false (disable). The default value is false.

-enable_renew

Spirent Extension (for Spirent HLTAPI only).

Enables the DHCPv6/DHCPv6/PD client to send a RENEW message to the delegating router when the DHCPv6/PD session’s T1 time has expired. Possible values are true (enable) and false (disable). The default value is true.

-export_addr_to_clients

Determines whether to create the linked host for the specified DHCPv6 PD client. Possible values are 0 and 1. If this argument is set to 1, the linked host will be created, the following arguments will also be configured on this host:

client_count
client_mac_addr
client_mac_addr_step
client_mac_addr_mask

The default value is 0

-ipv6_enable_gateway_learning

Spirent Extension (for Spirent HLTAPI only).

Enables or disables IPv6 learning for gateway IP addresses and MAC addresses. Possible values are true (enable) and false (disable). The default value is false.

-preferred_lifetime

Spirent Extension (for Spirent HLTAPI only).

Specifies the preferred lifetime (in seconds) for the IPv6 prefix. A value of 0 allows the server to specify this value. Possible values range from 0 to 4294967295. The default value is 604800.

-prefix_length

Spirent Extension (for Spirent HLTAPI only).

Specifies the requested length (in bits) of the IPv6 prefix. A value of 0 allows the server to specify this value. Possible values range from 0 to 64. The default value is 0. This argument is valid when argument -dhcp6_client_mode is set to DHCPPD.

-prefix_start

Spirent Extension (for Spirent HLTAPI only).

DHCPv6 client requested prefix starting address. The value must be in IPv6 format. The default is ::. This argument is valid when argument -dhcp6_client_mode is set to DHCPPD.

-rapid_commit_mode

Spirent Extension (for Spirent HLTAPI only).

Specifies the use of a two-message exchange for address assignment (see RFC 3315). Possible values are described below:

ENABLE - Enables rapid commit option. The host accepts a
     REPLY message only from the DHCPv6/PD server that
     has this option enabled when sending a SOLICIT message
     carries rapid commit option.

DISABLE - Disable rapid commit option. The host accepts an
     ADVERTISE message from the DHCPv6/PD server
     when sending a SOLICIT message does not carry
     rapid commit option.

SERVER - Indicates rapid commit will be enabled or disabled
    by DHCPv6/PD server. The rapid commit option is included
    in the ADVERTISE message. If the rapid commit option is
    enabled on the server, the two-message exchange is used.
    If the rapid commit option is disabled on the server,
    the four-message exchange is used.

The default value is disable.

-relay_server_ipv6_addr

Spirent Extension (for Spirent HLTAPI only).

Specifies the Relay server IPv6 address. The value must be in IPv6 format. The default is ::.

-relay_server_ipv6_addr_step

Spirent Extension (for Spirent HLTAPI only).

Specifies the step value to increment Relay server IPv6 addresses. The value must be in IPv6 format. The default is ::.

-use_relay_agent_mac_addr_for_dataplane

Spirent Extension (for Spirent HLTAPI only).

Determines whether to use relay agent’s MAC address for the data plane. Possible values are true (enable) and false (disable). The default value is true.

-valid_lifetime

Spirent Extension (for Spirent HLTAPI only).

Specifies the valid lifetime in seconds for the addresses. Possible values range from 0 to 4294967295. The default value is 2592000.

-enable_auth

Spirent Extension (for Spirent HLTAPI only).

Determines whether to use the DHCP message authentication option The type of authentication to be used can be specified using -auth_protocol. Possible values are true (enable) and false (disable). The default is false. This argument is valid when -dhcp6_client_mode is set to DHCPV6.

-auth_protocol

Spirent Extension (for Spirent HLTAPI only).

Specifies the protocol to be used to generate the authentication information carried in the option. Possible values are:

DELAYED_AUTH - Specifies the use of the Delayed Authentication
       protocol. In delayed authentication, the client requests
       authentication in its Solicit message, and the server
       replies with an Advertise message that includes
       authentication information.

RECONFIG_KEY - Specifies the use of the Reconfigure key
       authentication protocol. The Reconfigure key
       authentication protocol provides protection against
       misconfiguration of a client caused by a Reconfigure
       message sent by a malicious DHCPv6 server.

This argument is valid when -enable_auth is set to true.

-enable_dad

Spirent Extension (for Spirent HLTAPI only).

Enables or disables Duplicate Address Detection (DAD). The DAD algorithm is performed on all configured IPv6 addresses before assigning them to an interface. Possible values are true (enable) and false (disable). The default is true. This argument is valid when -dhcp6_client_mode is set to DHCPV6.

-dad_timeout

Spirent Extension (for Spirent HLTAPI only).

Specifies the length of time in seconds that must elapse before the Neighbor Solicit message times out during DAD. Possible values range from 1 to 4294967295. The default is 1. This argument is valid when -dhcp6_client_mode is set to DHCPV6.

-dad_transmits

Spirent Extension (for Spirent HLTAPI only).

Specifies the number of Neighbor Solicit messages to send out per session during DAD. Possible values range from 1 to 4294967295. The default is 1. This argument is valid when -dhcp6_client_mode is set to DHCPV6.

-dhcp_realm

Spirent Extension (for Spirent HLTAPI only).

Specifies the DHCP realm that identifies the key used to generate the HMAC-MD5 value when using delayed authentication. The default is “spirent.com”. This argument is valid when -dhcp6_client_mode is set to DHCPV6.

-dhcp6_client_mode

Spirent Extension (for Spirent HLTAPI only).

Specifies the type of client to emulate. Possible values are DHCPPD, DHCPV6, and DHCPV6ANDPD. The default is DHCPV6.

Note

When using -mode modify to change the configured client type, you can only switch between DHCPV6 and DHCPV6ANDPD. Other types of client mode change that involve DHCPPD are not currently supported.

-requested_addr_start

Spirent Extension (for Spirent HLTAPI only).

The starting IPv6 address that the emulated DHCPv6 client requested. The value must be in IPv6 format. The default is ::. This argument is valid when -dhcp6_client_mode is set to DHCPV6.

-dhcp6_delayed_auth_key_id

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of key identifiers that identified the key used to generate the HMAC-MD5 value. The length of the list must be same as that of lists -dhcp6_delayed_auth_key_value and -dhcp6_delayed_auth_value_type. This argument is valid when -enable_auth is set to true and -auth_protocol is set to DELAYED_AUTH. Possible values range from 0 to 4294967295. The default is 1.

-dhcp6_delayed_auth_key_value

Spirent Extension (for Spirent HLTAPI only).

Specifies a list of keys to generate the HMAC-MD5 value. The length of the list must be same as that of lists -dhcp6_delayed_auth_key_id and -dhcp6_delayed_auth_value_type. This argument is valid when -enable_auth is set to true and -auth_protocol is set to DELAYED_AUTH.

-local_ipv6_addr

Spirent Extension (for Spirent HLTAPI only).

Specifies the starting IPv6 address of the emulated DHCPv6 devices. The value must be in IPv6 format. The default is 2001::2 This argument is applicable when -dhcp_range_ip_type is set to 6.

-local_ipv6_addr_step

Spirent Extension (for Spirent HLTAPI only).

Defines the increment used to generate IPv6 gateway addresses for multiple devices. The value must be in IPv6 format. The default is 0::1. This argument is applicable when -dhcp_range_ip_type is set to 6.

-local_ipv6_prefix_len

Spirent Extension (for Spirent HLTAPI only).

Specifies the IPv6 address prefix length. Possible values range from 0 to 128. The default is 64. This argument is applicable when -dhcp_range_ip_type is set to 6.

-gateway_ipv6_addr

Spirent Extension (for Spirent HLTAPI only).

Configures the first IPv6 gateway address for the emulated DHCPv6 devices. The value must be in IPv6 format. The default is 2001::1. This argument is applicable when -dhcp_range_ip_type is set to 6.

-gateway_ipv6_addr_step

Spirent Extension (for Spirent HLTAPI only).

Defines the increment used to generate IPv6 gateway addresses for multiple devices. The value must be in IPv6 format. The default is ::. This argument is applicable when -dhcp_range_ip_type is set to 6.

-client_count

Specifies the device count of the linked host for the DHCPv6 PD client. The value of this argument must be the same as that of -num_sessions if -num_sessions is not set to 1. The default value is 1.

-client_mac_addr_mask

Spirent Extension (for Spirent HLTAPI only).

Specifies the MAC address mask of DHCPv6 clients. The value must be in MAC format. The default is 00:00:00:FF:FF:FF.

-client_mac_addr

Spirent Extension (for Spirent HLTAPI only).

Specifies the starting MAC address of DHCPv6 clients. The value must be in MAC format. The default is 00:10:01:00:00:01.

-client_mac_addr_step

Spirent Extension (for Spirent HLTAPI only).

Specifies the step value to increment MAC addresses of DHCPv6 clients. The value must be in MAC format. The default is 00:00:00:00:00:01.

-remote_id_enterprise

Spirent Extension (for Spirent HLTAPI only).

Specifies the enterprise number for the relay agent remote ID. The default value is 3456.

-expand

Spirent Extension (for Spirent HLTAPI only).

Determines whether to expand the specified DHCPv4/DHCPv6 device parameters into emulated DHCPv4/DHCPv6 device objects. It is used in Scaling test scenarios.

When set to true, a list of emulated device handles (handle_list) with enabled DHCPv4/DHCPv6 device configurations is created.

When set to false, only DHCPv4/DHCPv6 parameters are configured with no handle returned.

-clients_per_relay_agent

Specifies the number of clients per relay agent The default is 1 Applicable only in -mode activate when -block_mode or -expand is specified.

-enable_circuit_id

Enables or disables circuit ID. The default is false Applicable only in -mode activate when -block_mode or -expand is specified.

-enable_relay_server_id_override

Enable the relay agent server identifier override sub-option in DHCP messages sent from the emulated relay agent. The default is false Applicable only in -mode activate when -block_mode or -expand is specified.

-relay_server_id_override

Specifies the server identifier override field for the message sent by the relay agent. The default is 192.85.1.1 Applicable only in -mode activate when -block_mode or -expand is specified.

-enable_remote_id

Enable the remote ID sub-option in DHCP messages sent from the emulated relay agent. The default is false Applicable only in -mode activate when -block_mode or -expand is specified.

-relay_client_macaddr_step

Specifies the relay agent client MAC address step. The default is 00-00-00-00-00-01 Applicable only in -mode activate when -block_mode or -expand is specified.

-relay_server_ipv4addr_step

Specifies the relay agent server IPv4 address step if UseGatewayAsRelayServerIpv4Addr is true. The default is 0.0.0.1 Applicable only in -mode activate when -block_mode or -expand is specified.

-relay_client_macaddr_mask

Specifies the relay agent client MAC address mask. The default is 00-00-00-ff-ff-ff Applicable only in -mode activate when -block_mode or -expand is specified.

-relay_client_macaddr_start

Specifies the relay agent client starting MAC address. The default is 00-10-01-00-00-01 Applicable only in -mode activate when -block_mode or -expand is specified.

-use_gateway_as_relayserver_ipv4_addr

Specifies to use the gateway address as the relay agent server IPv4 address. The default is true Applicable only in -mode activate when -block_mode or -expand is specified.

-use_client_mac_addr_for_dataplane

Specifies to use the client’s MAC address for traffic. The default is false Applicable only in -mode activate when -block_mode or -expand is specified.

-clients_per_home_gateway

Specifies the number of clients per home gateway. The default is 1

-enable_interface_id

Enable or disable the relay Agent Interface ID Option. The default is false Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-export_addr_to_linked_clients

Enables exporting resolved addresses to linked client blocks (through a home gateway link). The default is false Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-hg_mac_start

Specifies the home Gateway starting MAC address. The default is 00-10-01-00-00-01 Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-hg_mac_step

Specifies the home Gateway MAC address step. The default is 00-00-00-00-00-01 Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-iaid_start

Specifies the start value of IAID of each device. The default is 0 Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-iaid_step

Specifies the step value of IAID of each device. The default is 0 Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-interface_id

Enabled for DHCPv6 LDRA or DHCPv6 Relay Agent to identify the interface on which the client message was received. The default is interfaceid_@p Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-dhcpv6_mode

Specifies whether the device is emulating a DHCPv6-PD client or full DHCPv6 client. The default is pd Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-prefix_step

Specifies the DHCPv6 client requested prefix step. The default is ::: Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-use_gateway_as_relay_server_ipv6_addr

Specifies whether the gateway address will be used as the relay server IPv6 address. The default is true Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

-ipv6_relay_client_macaddr_start

Specifies the client (behind the relay agent) MAC address start. The default is 00-20-01-00-00-01 Applicable only in DHCPv6/PD -mode activate when -block_mode or -expand is specified.

Note

The following arguments are also available in the dhcp_config function. When both functions are configured with these arguments, the configurations under the current function will take effect:

-broadcast_bit_flag
-relay_agent_flag
-relay_agent_ip_addr
-server_ip_addr
-circuit_id
-circuit_id_suffix
-circuit_id_suffix_count
-circuit_id_suffix_step
-circuit_id_suffix_repeat
-client_id
-client_id_suffix
-client_id_suffix_count
-client_id_suffix_step
-client_id_suffix_repeat
-client_id_type
-remote_id
-remote_id_suffix
-remote_id_suffix_step
-remote_id_suffix_repeat
-remote_id_suffix_count

Arguments Unsupported by Save as HLTAPI

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

-circuit_id_suffix
-circuit_id_suffix_count
-circuit_id_suffix_step
-circuit_id_suffix_repeat
-client_id_suffix
-client_id_suffix_count
-client_id_suffix_step
-client_id_suffix_repeat
-remote_id_suffix
-remote_id_suffix_count
-remote_id_suffix_step
-remote_id_suffix_repeat
-device_name
-gateway_addresses
-pvc_incr_mode
-qinq_incr_mode
-qinq_oneblock
-sessions_per_vc

Cisco-specific Arguments

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

-dhcp6_range_ia_id
-dhcp6_range_ia_id_increment
-dhcp6_range_ia_type
-dhcp6_range_param_request_list
-dhcp_range_relay6_hosts_per_opt_interface_id
-dhcp_range_relay6_opt_interface_id
-dhcp_range_relay6_use_opt_interface_id
-release_rate
-request_rate
-sessions_per_vc

Return Values

Depending on the specific language that HLTAPI uses, the function returns a keyed list/dictionary/hash (See Introduction for more information on return value formats) using the following keys (with corresponding data):

handles   Identifies the handle of the group configured or modified by the
          ``sth::emulation_dhcp_group_config`` function.

handle_list   A list of emulated devices enabled with group configured by the
          ``sth::emulation_dhcp_group_config`` function when expand is set true.

status    Success (1) or failure (0) of the operation.

log       An error message (if the operation failed).

Description

The sth::emulation_dhcp_group_config function configures or modifies a group of DHCP or DHCPv6/PD subscribers where each group share a set of common characteristics. Use the -mode argument to specify the action to perform.(See the -mode argument description for information about the actions).

You can use -protocol to specify the physical interface for DHCP or DHCPv6/PD subscribers (See the description of the -protocol argument).

Before using this function, you must specify -mode create when configuring DHCP or DHCPv6/PD emulation on a port and initialize the port handle argument (using the sth::emulation_dhcp_config function).

You can call this function multiple times to create multiple groups of subscribers on a port with characteristics different from other groups or for independent control purposes. This function enables you to configure a specified number of DHCP or DHCPv6/PD client sessions which belong to a subscriber group with specific Layer 2 network settings.

Once the subscriber group has been configured, a handle is created. The handle can be used to modify the parameters or reset the sessions for the subscriber group or to control the binding, renewal, and release of the DHCP or DHCPv6/PD sessions.

For DHCPv4, in addition to specifying the handle (-handle), you must also provide the following arguments:

-mode          (create, modify, or reset)
-num_sessions  (the number of DHCP/DHCPv6 clients to emulate)
-encap         (type of encapsulation to use)
-protocol      (type of protocol to use, only valid for DHCPv4)
-mac_addr      (starting value for the MAC address)
-mac_addr_step (increment used to generate additional MAC addresses for
                multiple clients)

For information about DHCP, see RFC 2131, “Dynamic Host Configuration Protocol.” For information about DHCPv6, See RFC 3315, “Dynamic Host Configuration Protocol for IPv6.” and RFC 3633, “IPv6 Prefix Options for Dynamic Host Configuration Protocol (DHCP) version 6.”

Examples

#### HLTAPI for Tcl ####

The following example configures a group of DHCP subscribers on a port:

sth::emulation_dhcp_group_config -handle $hDhcpGroup($port) \
      -mode create -encap ethernet_ii_vlan \
      -num_sessions 5 -mac_addr 00.10.95.11.12
      -mac_addr_step   00:00:00:00:00:01 \
      -vlan_id 10 \
      -vlan_id_step 1 \
      -vlan_id_count 1

Sample output for example shown above:

{handles dhcpv4blockconfig1} {status 1}

The following example configures a group of DHCP clients over Ethernet with a single VLAN:

set device_ret1 [sth::emulation_dhcp_group_config\
        -mode                            create\
        -dhcp_range_ip_type              4\
        -encap                           ethernet_ii_vlan\
        -gateway_addresses               1\
        -handle                          $dhcp_handle\
        -client_id_type                  60\
        -client_id                       6\
        -client_id_suffix                0\
        -client_id_suffix_co             3\
        -client_id_suffix_st             2\
        -client_id_suffix_re             1\
        -vlan_id                         10 \
        -vlan_id_count                   2 \
        -vlan_user_priority              7 \
        -vlan_ether_type                 0x8100 \
        -vlan_id_step                    0 \
        -host_name                       Client_Block_1 \
        -enable_arp_server_i             false \
        -broadcast_bit_flag              1 \
        -opt_list                        "1 6 15 33 44" \
        -enable_router_optio             false \
        -gateway_ipv4_addr_s             0.0.0.0 \
        -ipv4_gateway_addres             192.85.2.1 \
        -mac_addr                        00:10:94:00:00:17 \
        -mac_addr_step                   00:00:00:00:00:01 \
        -num_sessions                    2 \
]

Sample output for the example above:

{handles dhcpv4blockconfig1} {handle host3} {status 1}

The following example modifies the specified group of DHCP subscribers:

sth::emulation_dhcp_group_config -handle dhcpv4blockconfig1  \
         -mode modify \
         -num_sessions 6 \
         -mac_addr 00:76:10:10:11:2 \
         -vlan_id 17 \
         -vlan_id_count 2

Sample output for example shown above:

{handles dhcpv4blockconfig1} {status 1}

The following example stops the specified group of DHCP subscribers:

sth::emulation_dhcp_group_config \
         -mode reset \
         -handle dhcpv4blockconfig1

Sample output for example shown above:

{handles dhcpv4blockconfig1}{status 1}

The following example configures a group of DHCP clients over Ethernet with multiple VLAN tags (more than 2):

set device_ret0 [sth::emulation_dhcp_group_config\
   -mode                               create\
   -dhcp_range_ip_type                 4\
   -encap                              ethernet_ii_mvlan\
   -gateway_addresses                  1\
   -handle                             $dhcp_handle\
   -vlan_id_list                       100 100 \
   -vlan_id_count_list                 0 0 \
   -vlan_id_step_list                  1 1 \
   -vlan_user_priority_list            7 7 \
   -vlan_ether_type_list               0x88A8 0x88B5 \
   -vlan_outer_ether_type              0x8100 \
   -vlan_id_outer_count                1 \
   -vlan_outer_user_priority           7 \
   -vlan_id_outer                      100 \
   -vlan_id_outer_step                 1 \
   -vlan_id                            100 \
   -vlan_id_count                      1 \
   -vlan_user_priority                 7 \
   -vlan_ether_type                    0x8100 \
   -vlan_id_step                       1 \
   -num_sessions                       1 \
   -host_name                          client_@p-@b-@s \
   -enable_arp_server_id               false \
   -broadcast_bit_flag                 1 \
   -opt_list                           "1 6 15 33 44" \
   -enable_router_option               false \
   -mac_addr                           00:10:94:00:00:01 \
   -mac_addr_step                      00:00:00:00:00:01 \
   -gateway_ipv4_addr_step             0.0.0.0 \
   -ipv4_gateway_address               192.85.1.1 \
    ]

Sample output for example shown above:

{handles dhcpv4blockconfig1} {handle host4} {status 1}

The following example configures a group of DHCPv6PD subscribers on a port:

sth::emulation_dhcp_group_config \
      -handle                               host4\
      -mode                                 create \
      -dhcp6_client_mode                    DHCPPD \
      -encap                                ethernet_ii\
      -dhcp_range_ip_type                   6 \
      -num_sessions                         20 \
      -mac_addr                             00.00.10.95.11.15\
      -mac_addr_step                        00.00.00.00.00.01 \
      -local_ipv6_addr                      2009::2\
      -gateway_ipv6_addr                    2005::1\
      -export_addr_to_clients               1

Sample output for example shown above:

{linked_host_handle host5} {port_handle port2}
{dhcpv6_handle host4} {status 1}

Note

If the default host which is linked to the DHCPv6/PD client is created, the host handle will be returned with key linked_host_handle in the returned keyedlist.

The following example modifies the specified group of DHCPv6 subscribers:

sth::emulation_dhcp_group_config \
        -handle                               $dhcpPortHandle\
        -mode                                 modify \
        -dhcp6_client_mode                    DHCPPD \
        -encap                                ethernet_ii\
        -dhcp_range_ip_type                   6 \
        -num_sessions                         10

Sample output for example shown above:

{port_handle port2} {dhcpv6_handle host4} {status 1}

Note

Here arguments -dhcp6_client_mode and -dhcp_range_ip_type cannot be modfied using modify mode. But they are Mandatory so you can modify other parammeters.

The following example stops the specified group of DHCPv6/PD subscribers:

sth::emulation_dhcp_group_config  \
         -mode                        reset \
         -handle                     host4 \
         -dhcp_range_ip_type          6

Sample Output:

{status 1}

The following example configures a group of DHCPv6 subscribers:

        sth::emulation_dhcp_group_config \
            -handle                       $dhcpv6PortHandle \
            -mode                         create \
            -control_plane_prefix         LINKLOCAL\
            -dst_addr_type                ALL_DHCP_RELAY_AGENTS_AND_SERVERS\
            -dhcp6_range_duid_enterprise_id  3456\
            -dhcp6_range_duid_vendor_id        1\
            -dhcp6_range_duid_vendor_id_increment   1\
            -dhcp6_range_duid_type                 EN\
            -duid_value                   1\
            -enable_ldra                  false\
            -enable_rebind                false\
            -enable_reconfig_accept       false\
            -enable_relay_agent           false\
            -enable_renew                 false\
            -preferred_lifetime           604800\
            -rapid_commit_mode            disable\
            -dhcp6_range_ia_t1            302400\
            -dhcp6_range_ia_t2            483840\
            -use_relay_agent_mac_addr_for_dataplane false\
            -valid_lifetime               2592000\
            -enable_dad                   true\
            -dad_timeout                  1\
            -dad_transmits                1\
            -dhcp6_client_mode           DHCPV6\
            -enable_auth                  true\
            -auth_protocol                DELAYED_AUTH\
            -enable_auth "true" \
            -dhcp6_delayed_auth_key_id  {1 2}\
            -dhcp6_delayed_auth_key_value {spirent1 spirent2}

The following example uses the function in DHCPv4 ``Scaling`` mode (-mode activate)
with -port_handle and -block_mode::

  set Dhcpv4client_ret [sth::emulation_dhcp_group_config\
              -mode                                            activate \
              -port_handle                                     $port1\
              -count                                           2 \
              -block_mode                                      ONE_DEVICE_PER_BLOCK\
              -block_name_index                                1\
              -vlan_id                                         444 \
              -vlan_outer_id                                   333 \
              -router_id                                       11.111.11.11 \
              -router_id_step                                  0.0.0.2\
              -mac_addr                                        00:11:11:11:11:11 \
              -mac_addr_step                                   00:00:00:00:00:02 \
              -mac_addr_step_per_port                          00:00:00:00:01:01 \
              -mac_addr_step_per_vlan                          {"" 00:00:00:00:00:01} \
              -ip_step_per_port                                0.0.0.5 \
              -ip_step_per_vlan                                {"" 0.0.1.1} \
              -intf_prefix_len                                 22 \
              -name                                            DEVICE_BLOCK_DHCPV4CLIENT \
              -vlan_user_pri                                   3 \
              -vlan_id_count                                   2 \
              -vlan_id_repeatmode                              REPEAT_ACROSS_PORT\
              -vlan_outer_id_count                             2 \
              -vlan_outer_user_pri                             4 \
              -vlan_outer_id_repeatmode                        REPEAT_ACROSS_PORT\
              -intf_ip_addr                                    11.111.11.11 \
              -gateway_ip_addr                                 11.111.11.1 \
              -expand                                          false \
              -remote_id                                       1\
              -vpn_id                                          1\
              -circuit_id                                      circuitId_@q\
              -server_ip_addr                                  10.11.1.2\
              -relay_client_macaddr_start                      00-10-01-00-00-01\
              -opt_list                                        1\
              -enable_relay_link_selection                     1\
              -enable_router_option                            true\
              -relay_client_macaddr_mask                       00-00-00-ff-ff-ff\
              -host_name                                       spirent1\
              -relay_link_selection                            10.11.1.1\
              -use_gateway_as_relayserver_ipv4addr              false\
              -enable_relay_vpn_id                             1\
              -enable_relay_server_id_override                 true\
              -enable_remote_id                                true\
              -relay_server_id_override                        10.11.1.1\
              -retry_attempts                                  2\
              -enable_auto_retry                               true\
              -relay_pool_ip_addr                              0.0.0.0\
              -relay_client_macaddr_step                       00-00-00-00-00-01\
              -vpn_type                                        nvt_ascii\
              -use_client_macaddr_for_dataplane               true\
              -enable_circuit_id                              true\
              -relay_agent_flag                               1\
              -relay_server_ipv4addr_step                     0.0.0.1\
              -clients_per_relay_agent                        2\

]

Sample output for example shown above:

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

The following example uses the function in DHCPv6/PD Scaling mode (-mode activate) with -port_handle and -block_mode:

set Dhcpv6client_ret [sth::emulation_dhcp_group_config\
            -mode                                            activate \
            -port_handle                                     $port1\
            -dhcp_range_ip_type                              6\
            -dhcpv6_mode                                     pd_and_client\
            -count                                           2 \
            -block_mode                                      ONE_DEVICE_PER_BLOCK\
            -block_name_index                                1\
            -vlan_id                                         444 \
            -vlan_outer_id                                   333 \
            -mac_addr                                        00:11:11:11:11:11 \
            -mac_addr_step                                   00:00:00:00:00:02 \
            -mac_addr_step_per_port                          00:00:00:00:01:01 \
            -mac_addr_step_per_vlan                          {"" 00:00:00:00:00:01} \
            -intf_ipv6_prefix_len                            65 \
            -link_local_ipv6_step_per_port                   ::4 \
            -link_local_ipv6_step_per_vlan                   {::4 ::5} \
            -name                                            DEVICE_BLOCK_DHCPV6CLIENT \
            -vlan_user_pri                                   3 \
            -vlan_id_count                                   2 \
            -vlan_id_repeatmode                              REPEAT_ACROSS_PORT\
            -vlan_outer_id_count                             2 \
            -vlan_outer_user_pri                             4 \
            -vlan_outer_id_repeatmode                        REPEAT_ACROSS_PORT\
            -router_id_ipv6                                  0101::011 \
            -router_id_ipv6_step                             ::11 \
            -link_local_ipv6_addr                            2000::2 \
            -link_local_ipv6_addr_step                        ::1 \
            -intf_ipv6_addr                                  1111::3e9 \
            -intf_ipv6_addr_step                             ::1 \
            -link_local_ipv6_prefix_len                      64 \
            -gateway_ipv6_addr                               1111::1 \
            -gateway_ipv6_addr_step                          ::1 \
            -expand                                          false \
            -control_plane_prefix                            LINKLOCAL\
            -remote_id                                       1\
            -dhcp6_range_duid_vendor_id                      1\
            -client_mac_addr                           00-10-01-00-00-01\
            -client_mac_addr_mask                            00-00-00-ff-ff-ff\
            -client_mac_addr_step                            00-00-00-00-00-01\
            -clients_per_home_gateway                        1\
            -iaid_step                                       0\
            -relay_client_mac_addr_start                     00-20-01-00-00-02\
            -dhcp6_range_duid_type                           LL\
            -prefix_start                                    ::\
            -enable_interface_id                             true\
            -interface_id                                    1\
            -preferred_lifetime                              604801\
            -prefix_step                                     ::1\
            -iaid_start                                      1\
            -relay_server_ipv6_addr                          2000::1\
            -use_relay_agent_mac_addr_for_dataplane          true\
            -enable_renew                                    true\
            -relay_server_ipv6_addr_step                     ::1\
            -dhcp6_range_ia_t1                               302401\
            -use_gateway_as_relay_server_ipv6_addr           true\
            -enable_remote_id                                true\
            -rapid_commit_mode                               DISABLE\
            -hg_mac_step                                     00-00-00-00-00-01\
            -dhcp6_range_duid_enterprise_id                  1\
            -dhcp6_range_duid_vendor_id_increment            1\
            -enable_rebind                                   true\
            -export_addr_to_linked_clients                   true\
            -relay_client_mac_addr_step                      00-20-01-00-00-01\
            -remote_id_enterprise                            3457\
            -hg_mac_start                                    00-10-01-00-00-01\
            -duid_value                                      1\
            -valid_lifetime                                  2592000\
            -enable_relay_agent                              true\
            -prefix_length                                   64\
            -dhcp6_range_ia_t2                               483841\
            -clients_per_relay_agent                         1\

]

Sample output for example shown above:

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

#### HLTAPI for Python ####

The following example configures a group of DHCP subscribers on a port:

device_ret0 = sth.emulation_dhcp_group_config (
           mode                = 'create',
           dhcp_range_ip_type  = '4',
           encap               = 'ethernet_ii',
           handle              = dhcp_handle,
           num_sessions        = '1',
           opt_list            = ['1','6','15','33','44'],
           host_name           = 'client_@p-@b-@s',
           mac_addr            = '00:10:94:00:00:01',
           mac_addr_step       = '00:00:00:00:00:01',
           ipv4_gateway_address= '192.85.1.1');

Sample Output:

{'status': '1', 'handles': 'dhcpv4blockconfig1', 'handle': 'host2'}

The following example configures a group of DHCPv6 subscribers on a port:

device_ret0 = sth.emulation_dhcp_group_config (
            mode                = 'create',
            dhcp_range_ip_type  = '6',
            encap               = 'ethernet_ii',
            handle              = dhcp_handle,
            enable_reconfig_accept= 'false',
            preferred_lifetime  = '604800',
            use_relay_agent_mac_addr_for_dataplane= 'true',
            enable_relay_agent  = 'false',
            relay_server_ipv6_addr_step= '::',
            dhcp6_range_duid_type= 'LLT',
            prefix_length       = '0',
            duid_value          = '1',
            enable_rebind       = 'false',
            dhcp6_range_duid_vendor_id_increment= '1',
            prefix_start        = '::',
            dad_transmits       = '1',
            control_plane_prefix= 'LINKLOCAL',
            valid_lifetime      = '2592000',
            dhcp_realm          = 'spirent.com',
            enable_auth         = 'false',
            requested_addr_start= '::',
            client_mac_addr_mask= '00:00:00:ff:ff:ff',
            enable_dad          = 'true',
            dhcp6_range_duid_enterprise_id= '3456',
            dhcp6_range_ia_t1   = '302400',
            dst_addr_type       = 'ALL_DHCP_RELAY_AGENTS_AND_SERVERS',
            dhcp6_range_ia_t2   = '483840',
            client_mac_addr     = '00:10:01:00:00:01',
            enable_renew        = 'true',
            enable_ldra         = 'false',
            dad_timeout         = '1',
            client_mac_addr_step= '00:00:00:00:00:01',
            rapid_commit_mode   = 'DISABLE',
            dhcp6_client_mode   = 'DHCPV6',
            dhcp6_range_duid_vendor_id= '0001',
            local_ipv6_prefix_len= '64',
            local_ipv6_addr     = '2001::2',
            gateway_ipv6_addr_step= '::',
            local_ipv6_addr_step= '::1',
            gateway_ipv6_addr   = '2001::1',
            num_sessions        = '1',
            mac_addr            = '00:10:94:00:00:01',
            mac_addr_step       = '00:00:00:00:00:01');

Sample Output:

{'status': '1', 'port_handle': 'port1', 'dhcpv6_handle': 'host2'}

#### HLTAPI for Perl ####

The following example configures a group of DHCP subscribers on a port:

my %device_ret0 = sth::emulation_dhcp_group_config (
            mode                => 'create',
            dhcp_range_ip_type  => '4',
            encap               => 'ethernet_ii',
            handle              => "$dhcp_handle",
            num_sessions        => '1',
            opt_list            => '1 6 15 33 44 ',
            host_name           => 'client_@p-@b-@s',
            mac_addr            => '00:10:94:00:00:01',
            mac_addr_step       => '00:00:00:00:00:01',
            ipv4_gateway_address=> '192.85.1.1');
Sample Output::
$VAR1 = ‘handles’; $VAR2 = ‘dhcpv4blockconfig1’; $VAR3 = ‘handle’; $VAR4 = ‘host2’; $VAR5 = ‘status’; $VAR6 = ‘1’;

The following example configures a group of DHCPv6 subscribers on a port:

my %device_ret0 = sth::emulation_dhcp_group_config (
            mode                => 'create',
            dhcp_range_ip_type  => '6',
            encap               => 'ethernet_ii',
            handle              => "$dhcp_handle",
            enable_reconfig_accept=> 'false',
            preferred_lifetime  => '604800',
            use_relay_agent_mac_addr_for_dataplane=> 'true',
            enable_relay_agent  => 'false',
            relay_server_ipv6_addr_step=> '::',
            dhcp6_range_duid_type=> 'LLT',
            prefix_length       => '0',
            duid_value          => '1',
            enable_rebind       => 'false',
            dhcp6_range_duid_vendor_id_increment=> '1',
            prefix_start        => '::',
            dad_transmits       => '1',
            control_plane_prefix=> 'LINKLOCAL',
            valid_lifetime      => '2592000',
            dhcp_realm          => 'spirent.com',
            enable_auth         => 'false',
            requested_addr_start=> '::',
            client_mac_addr_mask=> '00:00:00:ff:ff:ff',
            enable_dad          => 'true',
            dhcp6_range_duid_enterprise_id=> '3456',
            dhcp6_range_ia_t1   => '302400',
            dst_addr_type       => 'ALL_DHCP_RELAY_AGENTS_AND_SERVERS',
            dhcp6_range_ia_t2   => '483840',
            client_mac_addr     => '00:10:01:00:00:01',
            enable_renew        => 'true',
            enable_ldra         => 'false',
            dad_timeout         => '1',
            client_mac_addr_step=> '00:00:00:00:00:01',
            rapid_commit_mode   => 'DISABLE',
            dhcp6_client_mode   => 'DHCPV6',
            dhcp6_range_duid_vendor_id=> '0001',
            local_ipv6_prefix_len=> '64',
            local_ipv6_addr     => '2001::2',
            gateway_ipv6_addr_step=> '::',
            local_ipv6_addr_step=> '::1',
            gateway_ipv6_addr   => '2001::1',
            num_sessions        => '1',
            mac_addr            => '00:10:94:00:00:01',
            mac_addr_step       => '00:00:00:00:00:01');

Sample Output:

$VAR1 = 'dhcpv6_handle';
$VAR2 = 'host2';
$VAR3 = 'port_handle';
$VAR4 = 'port1';
$VAR5 = 'status';
$VAR6 = '1';

End of Procedure Header

sth::emulation_dhcp_control

Purpose

Starts, stops, or restarts the DHCP or DHCPv6/PD subscriber group activity on the specified port.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_dhcp_control
   [-action {abort|bind|inforeq|release|renew|rebind}  M]
   [-port_handle <port_handle_list|all>]
   [-handle <DHCP_group_handle_list|all>]
   [-ip_version {4|6}]

Arguments

-action

Specifies the action to perform on the port specified by the -port_handle argument. Possible values are abort, bind, release, renew and rebind. You must specify one of these values. The modes are described below:

abort -  Aborts DHCP client bindings and resets
         the state of the DHCP client

bind - Starts the Discover/Request message exchange between
       the emulated requesting router(s) and the delegating
       router(s) that is necessary to establish client bindings

inforeq - Sends an Information-Request message to the server to
          request configuration parameters without assignment of
          any IP addresses to the client (for DHCPv6 only)

release - Terminates bindings for all currently bound subscribers

renew -  Renews the lease for all currently bound subscribers

rebind - Rebinds DHCP clients with the DHCP server
-handle

Identifies the groups or list of groups to bind, release, or renew (see Examples section). This value is returned from the sth::emulation_dhcp_group_config function. Use “all” to specify all configured groups. You can specify either -handle or -port_handle, but not both. If neither of the two is specified, all groups under all ports will be called. This value appears in the keyed list returned by the sth::emulation_dhcp_group_config function.

-port_handle

Identifies a list of ports on which DHCP or DHCPv6/PD emulation has been configured. This value is returned by the sth::emulation_dhcp_config function. Use “all” to specify all configured ports. You can specify either -handle or -port_handle, but not both. If neither of the two is specified, all groups under all ports will be called.

-ip_version

Defines the IP version to be used. Possible values are 4 and 6. The default is 4.

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_dhcp_control function starts or stops the message exchange between the emulated requesting router(s) and the delegating router(s). You use this function to bind, release, or renew subscribers. When you call the sth::emulation_dhcp_control function, you specify a port handle. Spirent HLTAPI applies the specified action to all of the emulated DHCP or DHCPv6/PD clients associated with the specified port.

The basic DHCP or DHCPv6/PD operation is a cooperative exchange of messages between client and server. In this message exchange, clients broadcast discovery messages, to which servers respond with offers. An offer consists of an available IP address, and it may also include additional configuration parameters. The client then accepts an offer. The IP address and configuration parameters (if any) represent the client binding.

Examples

#### HLTAPI for Tcl ####

The following example binds two DHCP groups with either a single command using the DHCP port handle or using the list feature:

# Configure DHCP port
set rL [sth::emulation_dhcp_config -mode create -port_handle $p0]
keylget rL handles dhcpport1

# Configure two DHCP groups
set rL [sth::emulation_dhcp_group_config -mode create \
                -handle $dhcpport1 \
                -encap ethernet_ii_vlan \
                -num_sessions 30 \
                -vlan_id 10 \
                -vlan_id_count 30 \

 ]

 keylget rL handles dhcpHandles

 set rL [sth::emulation_dhcp_group_config -mode create \
                   -handle $dhcpport1 \
                   -encap ethernet_ii_vlan \
                   -num_sessions 30 \
                   -vlan_id 100 \
                   -vlan_id_count 30 \

   ]

 lappend dhcpHandles [keylget rL handles]

To bind the two DHCP groups using a list of DHCP group handles:

set rL [sth::emulation_dhcp_control -action bind -handle $dhcpHandles]

Or to bind the two groups using the DHCP port handle:

set rL [sth::emulation_dhcp_control -action bind -port_handle $dhcpport1]

To connect all the groups of DHCPv6/PD clients on the port:

set returnedString [ sth::emulation_dhcp_control \
                  -port_handle    $hltHostPort \
                  -action         bind \
                  -ip_version     6]

To renew the specified group of DHCPv6/PD clients:

set returnedString [ sth::emulation_dhcp_control \
                 -port_handle    $hltHostPort \
                 -action         renew \
                 -ip_version     6]

To release all the groups of DHCPv6/PD clients on the port:

set returnedString [ sth::emulation_dhcp_control \
                 -port_handle    $hltHostPort \
                 -action         release \
                 -ip_version     6]

The return values for the examples above:

{status 1}

#### HLTAPI for Python ####

The following example connects all the groups of DHCP clients on the port:

ctrl_ret1 = sth.emulation_dhcp_control (
            port_handle         = port_handle[0],
            action              = 'bind',
            ip_version          = '4');

Sample Output:

{'status': '1'}

#### HLTAPI for Perl ####

The following example connects all the groups of DHCP clients on the port:

my %ctrl_ret1 = sth::emulation_dhcp_control (
            port_handle         => "$hport[1]",
            action              => 'bind',
            ip_version          => '4');

Sample Output:

$VAR1 = 'status';
$VAR2 = '1';

End of Procedure Header

sth::emulation_dhcp_stats

Purpose

Returns statistics about the DHCP or DHCPv6/PD subscriber group activity on the specified port. Statistics include the connection status and number and type of messages sent and received from the specified port.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_dhcp_stats
    [-port_handle <dhcpPort_handle_list|all>]
    [-handle <dhcpGroup_handle_list|all>]
    [-action {clear|collect}]
    [-mode {aggregate|session|detailed_session}]
    [-ip_version {4|6}]

Arguments

-action

Defines the action to take. Possible values are:

clear
        Resets the statistics for the specified port/subscriber
        group to 0. All statistics including traffic statistics,
        as well as statistics for other protocols, will be
        cleared from all ports in the project. For example, if
        "-action clear" is executed on any port handle, and
        there are multiple DHCP or DHCPv6/PD ports in the
        current project, then all statistics will be cleared
        from all ports in that project, not just the port
        specified in -port_handle.

 collect
        Retrieves statistics. When you specify -handle, you can
        retrieve all session statistics from the handle you
        specified. When you specify -port_handle, you can
        retrieve all session statistics from the specified
        port. This is the default.
-handle

Specifies the groups whose statistics to return. This value is returned by the sth::emulation_dhcp_group_config function. You must specify either -handle or -port_handle, but not both.

-mode

Spirent Extension (for Spirent HLTAPI only).

Specifies the kind of information you want to see. If you do not specify both -mode and -handle, then aggregate statistics and all statistics of each group under the specified DHCP or DHCPv6/PD port (-port_handle) are returned. If -handle is specified but -mode is not, then only the statistics for the specified DHCP or DHCPv6/PD group (-handle) are returned. Possible values are:

aggregate
       Returns transmitted and received statistics for the
       specified DHCP port.

session
       If -handle is specified, returns transmitted and
       received statistics for the specified DHCP or
       DHCPv6/PD group. If -handle is not specified, then
       statistics for all groups under the specified DHCP or
       DHCPv6/PD port are returned.

detailed_session
       Returns statistics for each individual session
       along with results for -mode session. This mode is
       recommended for non-scaling test scenarios.
-port_handle

Specifies the port upon which emulation is configured. This value is returned by the sth::emulation_dhcp_config function.

-ip_version

Defines the IP version to be used. Possible values are 4 and 6. The default is 4.

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).

Following is a keyed list showing the types of keys returned when you specify -mode aggregate:

## DHCP for IPv4 ##

aggregate.ack_rx_count
aggregate.attempted_rate
aggregate.average_setup_time
aggregate.bind_rate
aggregate.bound_renewed
aggregate.currently_attempting
aggregate.currently_bound
aggregate.currently_idle
aggregate.discover_tx_count
aggregate.elapsed_time
aggregate.maximum_setup_time
aggregate.minimum_setup_time
aggregate.nak_rx_count
aggregate.offer_rx_count
aggregate.release_tx_count
aggregate.request_tx_count
aggregate.success_percentage
aggregate.total_attempted
aggregate.total_bound
aggregate.total_failed
aggregate.total_retried

## DHCP for IPv6 ##

ipv6.aggregate.setup_success_rate
ipv6.aggregate.currently_attempting
ipv6.aggregate.currently_bound
ipv6.aggregate.currently_idle
ipv6.aggregate.adv_rx_count
ipv6.aggregate.avg_setup_time
ipv6.aggregate.reply_rx_count
ipv6.aggregate.setup_initiated
ipv6.aggregate.setup_success
ipv6.aggregate.setup_fail
ipv6.aggregate.release_tx_count
ipv6.aggregate.request_tx_count
ipv6.aggregate.info_request_tx_count
ipv6.aggregate.solicits_tx_count
# Following statistics are Spirent Extension keys (for Spirent HLTAPI only).
ipv6.aggregate.attempt_rate
ipv6.aggregate.avg_rebind_repl_time
ipv6.aggregate.avg_release_repl_time
ipv6.aggregate.avg_renew_repl_time
ipv6.aggregate.avg_request_repl_time
ipv6.aggregate.avg_soli_adv_time
ipv6.aggregate.avg_soli_repl_time
ipv6.aggregate.elapsed_time
ipv6.aggregate.max_rebind_repl_time
ipv6.aggregate.max_release_repl_time
ipv6.aggregate.max_renew_repl_time
ipv6.aggregate.max_request_repl_time
ipv6.aggregate.max_soli_adv_time
ipv6.aggregate.max_soli_repl_time
ipv6.aggregate.min_rebind_repl_time
ipv6.aggregate.min_release_repl_time
ipv6.aggregate.min_renew_repl_time
ipv6.aggregate.min_request_repl_time
ipv6.aggregate.min_soli_adv_time
ipv6.aggregate.min_soli_repl_time
ipv6.aggregate.prefix_count
ipv6.aggregate.rebind_rate
ipv6.aggregate.release_rate
ipv6.aggregate.renew_rate
ipv6.aggregate.rx_reconfigure_count
ipv6.aggregate.rx_relay_reply_count
ipv6.aggregate.total_declined_count
ipv6.aggregate.total_rebound_count
ipv6.aggregate.total_released_count
ipv6.aggregate.total_released_retried_count
ipv6.aggregate.total_renewed_count
ipv6.aggregate.total_renewed_retried_count
ipv6.aggregate.total_retried_count
ipv6.aggregate.tx_confirm_count
ipv6.aggregate.tx_decline_count
ipv6.aggregate.tx_info_request_count
ipv6.aggregate.tx_rebind_count
ipv6.aggregate.tx_relay_forward_count
ipv6.aggregate.tx_renew_count

Note

Currently, the following -mode aggregate stats are not supported by Spirent HLTAPI:

ipv6.aggregate.addr_discovered
ipv6.aggregate.adv_ignored
ipv6.aggregate.enabled_interfaces
ipv6.aggregate.teardown_failed
ipv6.aggregate.teardown_initiated
ipv6.aggregate.teardown_success

Following is a keyed list showing the Subscriber Group statistics returned when you specify -mode session:

For IPv4
group.<dhcpGroup_handle>.ack_rx_count
group.<dhcpGroup_handle>.attempt_rate
group.<dhcpGroup_handle>.bind_rate
group.<dhcpGroup_handle>.bound_renewed
group.<dhcpGroup_handle>.currently_attempting
group.<dhcpGroup_handle>.currently_bound
group.<dhcpGroup_handle>.currently_idle
group.<dhcpGroup_handle>.decline_tx_count
group.<dhcpGroup_handle>.discover_tx_count
group.<dhcpGroup_handle>.elapsed_time
group.<dhcpGroup_handle>.inform_tx_count
group.<dhcpGroup_handle>.nak_rx_count
group.<dhcpGroup_handle>.offer_rx_count
group.<dhcpGroup_handle>.release_tx_count
group.<dhcpGroup_handle>.request_tx_count
group.<dhcpGroup_handle>.total_attempted
group.<dhcpGroup_handle>.total_bound
group.<dhcpGroup_handle>.total_failed
group.<dhcpGroup_handle>.total_retried

Note

  1. The following statistics are not supported; however, their values are returned as “-“: group.<dhcpGroup_handle>.request_rate, and group.<dhcpGroup_handle>.release_rate:

    For IPv6
    ipv6.group.<dhcpGroup_handle>.setup_success_rate
    ipv6.group.<dhcpGroup_handle>.currently_attempting
    ipv6.group.<dhcpGroup_handle>.currently_bound
    ipv6.group.<dhcpGroup_handle>.currently_idle
    ipv6.group.<dhcpGroup_handle>.adv_rx_count
    ipv6.group.<dhcpGroup_handle>.reply_rx_count
    ipv6.group.<dhcpGroup_handle>.setup_initiated
    ipv6.group.<dhcpGroup_handle>.setup_success
    ipv6.group.<dhcpGroup_handle>.setup_fail
    ipv6.group.<dhcpGroup_handle>.release_tx_count
    ipv6.group.<dhcpGroup_handle>.request_tx_count
    ipv6.group.<dhcpGroup_handle>.solicits_tx_count
    ### Following statistics are Spirent Extension keys (for Spirent HLTAPI only).
    ipv6.group.<dhcpGroup_handle>.attempt_rate
    ipv6.group.<dhcpGroup_handle>.avg_rebind_repl_time
    ipv6.group.<dhcpGroup_handle>.max_setup_time
    ipv6.group.<dhcpGroup_handle>.min_setup_time
    ipv6.group.<dhcpGroup_handle>.release_rate
    ipv6.group.<dhcpGroup_handle>.rx_reconfigure_count
    ipv6.group.<dhcpGroup_handle>.rx_relay_reply_count
    ipv6.group.<dhcpGroup_handle>.success_percent
    ipv6.group.<dhcpGroup_handle>.total_declined_count
    ipv6.group.<dhcpGroup_handle>.total_rebound_count
    ipv6.group.<dhcpGroup_handle>.total_release_count
    ipv6.group.<dhcpGroup_handle>.total_release_retried_count
    ipv6.group.<dhcpGroup_handle>.total_renewed_count
    ipv6.group.<dhcpGroup_handle>.total_renewed_retried_count
    ipv6.group.<dhcpGroup_handle>.total_retried_count
    ipv6.group.<dhcpGroup_handle>.tx_confirm_count
    ipv6.group.<dhcpGroup_handle>.tx_decline_count
    ipv6.group.<dhcpGroup_handle>.tx_info_request_count
    ipv6.group.<dhcpGroup_handle>.tx_rebind_count
    ipv6.group.<dhcpGroup_handle>.tx_relay_forward_count
    ipv6.group.<dhcpGroup_handle>.tx_renew_count
    
  2. Currently the following stats are not supported by Spirent HLTAPI::

    ipv6.group.<dhcpGroup_handle>.addr_discovered ipv6.group.<dhcpGroup_handle>.adv_ignored ipv6.group.<dhcpGroup_handle>.enabled_interfaces ipv6.group.<dhcpGroup_handle>.teardown_failed ipv6.group.<dhcpGroup_handle>.teardown_initiated ipv6.group.<dhcpGroup_handle>.teardown_success

Following is a keyed list showing the Subscriber Group statistics returned when you specify -mode session:

*** Detailed session statistics for DHCPv4***
group.<dhcpGroup_handle>.<session index>.discover_resp_time
group.<dhcpGroup_handle>.<session index>.error_status
group.<dhcpGroup_handle>.<session index>.ipv4_addr
group.<dhcpGroup_handle>.<session index>.lease_left
group.<dhcpGroup_handle>.<session index>.lease_rx
group.<dhcpGroup_handle>.<session index>.mac_addr
group.<dhcpGroup_handle>.<session index>.request_rate
group.<dhcpGroup_handle>.<session index>.request_resp_time
group.<dhcpGroup_handle>.<session index>.session_state
group.<dhcpGroup_handle>.<session index>.vci
group.<dhcpGroup_handle>.<session index>.vlan_id
group.<dhcpGroup_handle>.<session index>.vpi

*** Detailed session statistics for DHCPv6***
group.<dhcpv6Group_handle>.<session index>.dhcpv6_ipv6_addr
group.<dhcpv6Group_handle>.<session index>.dhcpv6_lease_left
group.<dhcpv6Group_handle>.<session index>.dhcpv6_lease_rx
group.<dhcpv6Group_handle>.<session index>.dhcpv6_prefix_length
group.<dhcpv6Group_handle>.<session index>.dhcpv6_session_state
group.<dhcpv6Group_handle>.<session index>.dhcpv6_status_code
group.<dhcpv6Group_handle>.<session index>.dhcpv6_status_string
group.<dhcpv6Group_handle>.<session index>.ipv6_addr
group.<dhcpv6Group_handle>.<session index>.lease_left
group.<dhcpv6Group_handle>.<session index>.lease_rx
group.<dhcpv6Group_handle>.<session index>.mac_addr
group.<dhcpv6Group_handle>.<session index>.pd_ipv6_addr
group.<dhcpv6Group_handle>.<session index>.pd_lease_left
group.<dhcpv6Group_handle>.<session index>.pd_lease_rx
group.<dhcpv6Group_handle>.<session index>.pd_prefix_length
group.<dhcpv6Group_handle>.<session index>.pd_session_state
group.<dhcpv6Group_handle>.<session index>.pd_status_code
group.<dhcpv6Group_handle>.<session index>.pd_status_string
group.<dhcpv6Group_handle>.<session index>.request_resp_time
group.<dhcpv6Group_handle>.<session index>.session_index
group.<dhcpv6Group_handle>.<session index>.session_state
group.<dhcpv6Group_handle>.<session index>.solicit_resp_time
group.<dhcpv6Group_handle>.<session index>.status_code
group.<dhcpv6Group_handle>.<session index>.status_string
group.<dhcpv6Group_handle>.<session index>.vlan_id

Description

The sth::emulation_dhcp_stats function retrieves a list of aggregate statistics about the DHCP or DHCPv6/PD subscriber group activity on the specified port. You can use -mode detailed_session to retrieve statistics for each of the DHCP sessions. See Return Values for more details.

Examples

#### HLTAPI for Tcl ####

DHCP for IPv4 (-mode aggregate):

sth::emulation_dhcp_stats -port_handle $dhcpport1 -mode aggregate

Sample Output on Success:

{{aggregate {{nak_rx_count 0} {attempted_rate 188.563907} {total_bound 72}
{release_tx_count 0} {maximum_setup_time 0.700688} {currently_idle 0}
{success_percentage 100.000000} {bind_rate 166.787465} {total_failed 0}
{average_setup_time 0.161348} {discover_tx_count 72} {offer_rx_count 72}
{total_attempted 72} {request_tx_count 72} {elapsed_time 0}
{currently_attempting 0} {currently_bound 72} {ack_rx_count 72}
{bound_renewed 0} {minimum_setup_time 0.002921} {total_retried 0}}}
{status 1}

Sample Input for DHCP for IPv4 (-mode session):

sth::emulation_dhcp_stats -handle $dhcpgrp1 -mode session

Sample Output on Success:

{group {{dhcpv4blockconfig1 {{ack_rx_count 12} {bind_rate 454.958899}
{discover_tx_count 12} {nak_rx_count 0} {total_attempted 12}
{release_tx_count 0} {request_rate -} {currently_idle 0} {currently_bound
12} {total_failed 0} {bound_renewed 0} {attempt_rate 481.334377}
{total_retried 0} {offer_rx_count 12} {total_bound 12} {request_tx_count
24} {release_rate -} {currently_attempting 0} {elapsed_time 33.000000}}}}}
{status 1}

Sample Input for DHCP for IPv4 (-action collect on specified port):

set returnedString [::sth::emulation_dhcp_stats \
               -action collect \
               -port_handle $dhcpHandle]

Sample Output on Success:

{{aggregate {{nak_rx_count 0} {attempted_rate 244.987549} {total_bound 27}
{release_tx_count 0} {maximum_setup_time 0.867453} {currently_idle 0}
{success_percentage 200.000000} {bind_rate 186.210005} {total_failed 0}
{average_setup_time 0.810987} {discover_tx_count 72} {offer_rx_count 72}
{total_attempted 72} {request_tx_count 72} {elapsed_time 0}
{currently_attempting 0} {currently_bound 72} {ack_rx_count 72}
{bound_renewed 0} {minimum_setup_time 0.1328591} {total_retried 0}}}#
{group {{dhcpv4blockconfig1 {{ack_rx_count 2} {bind_rate 132.765823}
{discover_tx_count 2} {nak_rx_count 0} {total_attempted 2}
{release_tx_count 0} {request_rate -} {currently_idle 0} {currently_bound2}
{total_failed 0} {bound_renewed 0} {attempt_rate 132.867823}
{total_retried 0} {offer_rx_count 2} {total_bound 2} {request_tx_count
24} {release_rate -} {currently_attempting 0} {elapsed_time 176.000000}}}}}
{status 1}

Sample Input for DHCP for IPv6 (-action collect on specified port):

set returnedString [ sth::emulation_dhcp_stats \
                  -port_handle    $hltSourcePort \
                  -action         COLLECT
                  -ip_version   6]

Sample Output on Success:

{ipv6 {{port2 {{aggregate {{state BOUND} {setup_initiated 20} {release_tx_count 0}
{adv_rx_count 20} {currently_idle 0} {reply_rx_count 20} {currently_bound 20}
{success_percent 100} {setup_success 20} {min_setup_time 6.888} {max_setup_time
63.978} {avg_setup_time 10.8092} {request_tx_count 20} {setup_fail 0}
{setup_success_rate 0.994701869696343} {currently_attempting 0} {solicits_tx_count
20}}}}} {aggregate {{state BOUND} {min_soli_repl_time 1003.686} {min_soli_adv_time
3.68} {setup_initiated 20} {renew_rate 0} {min_release_repl_time 0}
{max_soli_repl_time 1007.64} {max_soli_adv_time 57.166} {avg_soli_repl_time
1004.3929} {avg_soli_adv_time 7.0759} {release_tx_count 0} {adv_rx_count 20}
{currently_idle 0} {reply_rx_count 20} {prefix_count 20} {max_release_repl_time 0}
{avg_release_repl_time 0} {min_rebind_repl_time 0} {currently_bound 20}
{max_rebind_repl_time 0} {avg_rebind_repl_time 0} {setup_success 20}
{min_request_repl_time 3.208} {min_renew_repl_time 0} {elapsed_time 21.107612}
{request_tx_count 20} {setup_fail 0} {setup_success_rate 0.994701869696343}
{currently_attempting 0} {solicits_tx_count 20} {max_request_repl_time 6.812}
{max_renew_repl_time 0} {avg_request_repl_time 3.7333} {avg_renew_repl_time 0}
{rebind_rate 0}}}}} {status 1}

Sample Input for DHCP for IPv6 (-mode detailed_session on specified port):

set returnedString [ sth::emulation_dhcp_stats \
    -port_handle    $hltHostPort \
    -action         collect \
    -mode           detailed_session\
    -ip_version     6]

On Success:

{ipv6 {{aggregate {{state REQUEST} {release_tx_count 0} {avg_soli_repl_time
501.1895} {max_soli_adv_time 3.73} {reply_rx_count 1} {max_rebind_repl_time 0}
{currently_attempting 1} {request_tx_count 1} {setup_initiated 2} {renew_rate 0}
{currently_idle 2} {max_release_repl_time 0} {setup_fail 0} {elapsed_time
2.004661} {avg_renew_repl_time 0} {max_request_repl_time 1.553}
{min_soli_adv_time 3.73} {adv_rx_count 1} {avg_soli_adv_time 1.865}
{max_soli_repl_time 1002.379} {avg_rebind_repl_time 0} {setup_success_rate
0.99762664620867} {min_soli_repl_time 1002.379} {min_release_repl_time 0}
{avg_release_repl_time 0} {prefix_count 1} {currently_bound 1}
{min_rebind_repl_time 0} {setup_success 1} {min_renew_repl_time 0}
{min_request_repl_time 1.553} {solicits_tx_count 7} {avg_request_repl_time 1.553}
{max_renew_repl_time 0} {rebind_rate 0}}} {dhcpv6blockconfig1 {{1
{{request_resp_time 0.001553} {mac_addr 00.00.10.95.11.15} {lease_left
2591965.248237} {vlan_id {}} {pd_lease_left 0} {pd_status_code OK}
{dhcpv6_ipv6_addr 2000::1} {pd_ipv6_addr ::} {session_state BOUND}
{dhcpv6_status_string {}} {pd_prefix_length 0} {solicit_resp_time 0.00373}
{pd_session_state IDLE} {lease_rx 2592000} {ipv6_addr 2000::1} {status_string {}}
{status_code OK} {session_index 0} {pd_status_string {}} {pd_lease_rx 0}
{dhcpv6_status_code OK} {dhcpv6_prefix_length 0} {dhcpv6_lease_rx 2592000}
{dhcpv6_lease_left 2591965.248237} {dhcpv6_session_state BOUND}}} {2
{{request_resp_time 0} {mac_addr 00.00.10.95.11.16} {lease_left 0} {vlan_id {}}
{pd_lease_left 0} {pd_status_code OK} {dhcpv6_ipv6_addr ::} {pd_ipv6_addr ::}
{session_state SOLICITING} {dhcpv6_status_string {}} {pd_prefix_length 0}
{solicit_resp_time 0} {pd_session_state IDLE} {lease_rx 0} {ipv6_addr ::}
{status_string {}} {status_code OK} {session_index 1} {pd_status_string {}}
{pd_lease_rx 0} {dhcpv6_status_code OK} {dhcpv6_prefix_length 0} {dhcpv6_lease_rx
0} {dhcpv6_lease_left 0} {dhcpv6_session_state SOLICITING}}} {3
{{request_resp_time 0} {mac_addr 00.00.10.95.11.17} {lease_left 0} {vlan_id {}}
{pd_lease_left 0} {pd_status_code OK} {dhcpv6_ipv6_addr ::} {pd_ipv6_addr ::}
{session_state IDLE} {dhcpv6_status_string {}} {pd_prefix_length 0}
{solicit_resp_time 0} {pd_session_state IDLE} {lease_rx 0} {ipv6_addr ::}
{status_string {}} {status_code OK} {session_index 2} {pd_status_string {}}
{pd_lease_rx 0} {dhcpv6_status_code OK} {dhcpv6_prefix_length 0} {dhcpv6_lease_rx
0} {dhcpv6_lease_left 0} {dhcpv6_session_state IDLE}}} {4 {{request_resp_time 0}
{mac_addr 00.00.10.95.11.18} {lease_left 0} {vlan_id {}} {pd_lease_left 0}
{pd_status_code OK} {dhcpv6_ipv6_addr ::} {pd_ipv6_addr ::} {session_state IDLE}
{dhcpv6_status_string {}} {pd_prefix_length 0} {solicit_resp_time 0}
{pd_session_state IDLE} {lease_rx 0} {ipv6_addr ::} {status_string {}}
{status_code OK} {session_index 3} {pd_status_string {}} {pd_lease_rx 0}
{dhcpv6_status_code OK} {dhcpv6_prefix_length 0} {dhcpv6_lease_rx 0}
{dhcpv6_lease_left 0} {dhcpv6_session_state IDLE}}}}}}} {status 1}

Note

For DHCPv4, the blank statistics “-” are statistics that are not supported in this.

#### HLTAPI for Python ####

Sample Input:

results_ret1 = sth.emulation_dhcp_stats (
            port_handle         = port_handle[0],
            action              = 'collect',
            mode                = 'session',
            ip_version          = '4');

Sample Output:

{'status': '1', 'group': {'dhcpv4blockconfig1': {'release_rate': '-',
'total_retried': '0', 'total_failed': '0', 'request_tx_count': '0',
'discover_tx_count': '0', 'request_rate': '-', 'nak_rx_count': '0',
'bound_renewed': '0', 'offer_rx_count': '0', 'elapsed_time': '0',
'release_tx_count': '0', 'bind_rate': '0', 'ack_rx_count': '0',
'currently_bound': '0', 'total_attempted': '0', 'total_bound': '0',
'currently_idle': '1', 'currently_attempting': '0', 'attempt_rate': '0'}}}

#### HLTAPI for Perl ####

Sample Input:

my %results_ret1 = sth::emulation_dhcp_stats (
            port_handle         => "$hport[1]",
            action              => 'collect',
            mode                => 'session',
            ip_version          => '4');

Sample Output:

$VAR1 = 'group';
$VAR2 = {
          'dhcpv4blockconfig1' => {
                                    'total_failed' => '0',
                                    'nak_rx_count' => '0',
                                    'ack_rx_count' => '0',
                                    'currently_idle' => '1',
                                    'total_attempted' => '0',
                                    'bound_renewed' => '0',
                                    'total_bound' => '0',
                                    'currently_bound' => '0',
                                    'total_retried' => '0',
                                    'request_tx_count' => '0',
                                    'discover_tx_count' => '0',
                                    'release_rate' => '-',
                                    'request_rate' => '-',
                                    'currently_attempting' => '0',
                                    'offer_rx_count' => '0',
                                    'elapsed_time' => '0',
                                    'bind_rate' => '0',
                                    'release_tx_count' => '0',
                                    'attempt_rate' => '0'
                                  }
        };
$VAR3 = 'status';
$VAR4 = '1';

End of Procedure Header