PPPoE Functions

pppox config

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

Purpose:

Configures PPPoE sessions for the specified Spirent HLTAPI port.

The Pointto-Point Protocol (PPP) provides a method of transporting datagrams over pointto-point links between hosts, switches, and routers. Spirent HLTAPI supports Pointto-Point Protocol over Ethernet (PPPoE), Pointto-Point Protocol over ATM (PPPoA), and Pointto-Point Protocol over Ethernet over ATM (PPPoEoA).

Synopsis:

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

     pppox config
        mode= {create|modify|activate|reset} M
        port_handle= <handle>
        handle= <session_block_handle>
        encap= {ethernet_ii|ethernet_ii_vlan|ethernet_ii_mvlan|ethernet_ii_qinq|vc_mux|llcsnap}
        protocol= {pppoe|pppoa|pppoeoa}
        ac_select_mode= <service_name>
        agent_mac_addr= <aa:bb:cc:dd:ee:ff>
        agent_session_id= <session_id>
        agent_type= {2516|dsl}
        attempt_rate= <1-1000>
        auth_mode= {none|pap|chap|pap_or_chap}
         username= <username>
         username_wildcard= {0|1}
         wildcard_pound_start= <0-65535>
         wildcard_pound_fill= <0-9>
         wildcard_pound_end= <0-65535>
         wildcard_question_start= <0-65535>
         wildcard_question_fill= <0-9>
         wildcard_question_end= <0-65535>
         password= <password>
         password_wildcard= {0|1}
         wildcard_pound_start= <0-65535>
         wildcard_pound_fill= <0-9>
         wildcard_pound_end= <0-65535>
         wildcard_question_start= <0-65535>
         wildcard_question_fill= <0-9>
         wildcard_question_end= <0-65535>
         auth_req_timeout= <1-65535>
        auto_retry= {0|1}
        chap_ack_timeout= <1-65535>
         circuit_id_suffix_mode= {none|incr}
         circuit_id_incr_start= <integer>
         circuit_id_incr_step= <integer>
         circuit_id_incr_count= <integer>
         client_traffic_behavior= {all_sessions_connected|ignore_failed_sessions}
        config_req_timeout= <1-65535>
         max_configure_req= <1-65535>
         max_outstanding= <2-65535>
         max_terminate_req= <1-65535>
        device_block_mode= {multi_device_per_block|one_device_per_block}
        disconnect_rate= <1-1000>
        dut_assigned_src_addr= 1
        echo_req= 0
        echo_req_interval= <0-65535>
        fsm_max_naks= <1-65535>
        gateway_ip_addr= <a.b.c.d>
        gateway_ip_step= <a.b.c.d>
        gateway_ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        gateway_ipv6_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        include_id= {0|1}
        intf_ip_addr=  <a.b.c.d>
        intf_ip_addr_step= <a.b.c.d>
        gateway_ipv6_addr= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        gateway_ipv6_step= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
        intermediate_agent= {0|1}
        ip_cp= {ipv4_cp|ipv6_cp|ipv4v6_cp}
        auto_fill_ipv6= {0|1}
        ipcp_req_timeout= <1-65535>
        lcp_mru= <128-65535>
        local_magic= {0|1}
        mac_addr= <aa:bb:cc:dd:ee:ff>
        mac_addr_step= <aa:bb:cc:dd:ee:ff>
        max_auth_req= <1-65535>
        max_auto_retry_count= <1-65535>
        max_configure_req= <1-65535>
        max_echo_acks= <0-65535>
        max_ipcp_req= <1-65535>
        max_padi_req= <1-65535>
        max_padr_req= <1-65535>
        mru_neg_enable= {0|1}
        num_sessions= <1-65535>
        padi_include_tag= {0|1}
        padi_req_timeout= <1-65535>
        padr_include_tag= {0|1}
        padr_req_timeout= <1-65535>
        pppoe_circuit_id= <alphanumeric>
        pppoe_remote_id= <alphanumeric>
        qinq_incr_mode= {inner|outer|both}
        qinq_oneblock= {1|0}
        remote_id_suffix_mode= {none|incr }
        remote_id_incr_start= <integer>
        remote_id_incr_step= <integer>
        remote_id_incr_count= <integer>
        service_name= <name>
        stack_gateway_ip_recycle_count= <0-65535>
        stack_gateway_ip_repeat_count= <0-65535>
        term_req_timeout= <1-65535>
        vci= <0-65535>
        vci_count= <1-65536>
        vci_step= <0-65535>
        vpi= <0-255>
        vpi_count= <1-256>
        vpi_step= <0-255>
        pvc_incr_mode= {vpi|vci|both}
        vlan_id= <0-4095>
         vlan_id_count= <1-4095>
         vlan_id_step= <0-4095>
         vlan_user_priority= <0-7>
         vlan_cfi= {1|0}
         vlan_tpid= <0-65535>
         vlan_id_repeat_count=  <0-65535>
         vlan_id_stack_count=  <1-65535>
        vlan_id_outer= <0-4095>
         vlan_id_outer_count= <1-4096>
         vlan_id_outer_step= <0-4095>
         vlan_outer_user_priority= <0-7>
         vlan_outer_cfi= {1|0}
         vlan_tpid_outer= <0-65535>
        vlan_cfi_list= {1|0}
        vlan_id_count_list= <1-4095>
        vlan_id_list= <0-4095>
        vlan_id_step_list= <0-4095>
        vlan_tpid_list= <0-65535>
        vlan_user_priority_list= <0-7>
        expand= {true|false} S
        ac_name= <ANY>
        emulation_type= {client}
        enable_max_payload_tag= {true|false}
        ipv4_addr_pool_count= <1-65535>
        ipv4_addr_pool_start= <IPV4>
        ipv4_addr_pool_step= <NUMERIC>
        ipv6_addr_pool_count= <1-65535>
        ipv6_addr_pool_int_id_start= <IPV6>
        ipv6_addr_pool_int_id_step= <IPV6>
        ipv6_addr_pool_prefix_step= <IPV6>
        ipv6_addr_pool_prefix_start= <IPV6>
        max_payload_bytes= <0-65535>
        remote_or_session_id= <ANY>

Arguments:

ac_select_list
                Use this option with ac_select_mode only when the specified
                type of service is either ac_mac or ac_name. This option
                specifies the ac mac address and percentage pair as either
                00:11:00:00:00:11|50 or 00:11:00:00:00:12|50 or the ac name
                and percentage pair as either ciscoAC|60 or ciscoAC2|40.

ac_select_mode
                Specifies the type of service (ISP name, class or QoS)
                requested. If blank, (not specified or empty
                string specified), any service is acceptable.
                There are various ways the AC can be selected based on
                the PADO received from AC. The default is an empty
                string.

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

                Enabled for RFC 2516type relay agents only. The Relay Agent
                MAC address is the MAC address of the next hop from the
                subscriber client group to the access concentrator. Its
                format is aa:bb:cc:dd:ee:ff. The default is  "" (empty
                String).

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

                Specifies the session ID of the RFC2516type relay agent
                (see agent_type). Use wildcard characters to make each ID
                unique::


                 @s - Session index associated with the PPPoX client.
                 @b - Block (host/router) index
                 @p - Port name
                 @m - MAC address of the PPPoX client

                You can also include the following customizable substitution
                options::


                 @x - Custom step setup in
                      (start,count,step,zeropadding,stutter) format
                 start - starting value
                 count - number of values to generate
                 step - amount to increment the start value when the start
                     value must be stepped
                 zeropadding - length the value should be padded to by
                     prepending 0's
                 stutter - number of times the session_id value should be repeated
                     before applying the next step

                To include the "@" symbol in a relay agent option, use it
                twice::


                 @@ - This must be used to include the textual "@" symbol in
                      the string

                The default is "remote @m-@p-@g".

                Note: The relay remote ID (agent_remote_id) and relay
                      session ID (agent_session_id) parameters are mutually
                      exclusive.

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

                Specifies the type of relay agent to use. Possible values
                are 2516 (for the RFC 2516type of relay agent) and dsl (for
                the DSLtype of relay agent). The default is 2516.

attempt_rate
                Specifies the PPP attempt rate, in seconds, for all PPP
                session blocks on this port. Possible values range from 1 to
                1000. The default is 100. This is a portwide option. Any
                subsequent use of this option on a port after the initial
                "mode create" will overwrite any previous setting.

auth_mode
                Specifies the authentication mode. During the Link Control
                Protocol (LCP) phase, one peer may send an authentication
                challenge to the other. LCP supports Password Authentication
                Protocol (PAP) and  Challenge Handshake Authentication
                Protocol (CHAP).  Possible values are::


                 none - No authentication.
                 pap  - PAP
                 chap - CHAP MD5
                 pap_or_chap - Automatically negotiated; accepts both PAP and
                         CHAP offered by the DUT.

                The default is none.

auth_req_timeout
                Specifies the timeout wait period for the server to either
                send a CHAP challenge or time between the retransmission of
                a PAP request. Possible values range from 1 to 65525
                seconds. The default is 3 seconds.

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

                Enables or disables an automatic retry to connect failed PPP
                sessions. Possible values are 0 (disable) and 1 (enable).
                The default value is 0.

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

                Specifies the timeout wait period for the server to send an
                ACK to a challenge response. Possible values range from 1 to
                65525 seconds. The default is 3 seconds.

circuit_id_suffix_mode
                Defines the mode of circuit ID suffix that is appended to
                circuit ID name. Possible values are none and incr.
                The default is incr. The modes are described below::


                 none - Indicates there is no circuit ID suffix.
                 incr - Indicates the circuit ID suffix increments in
                        the step specified in the circuit_id_incr_step
                        argument.

                Note: The list mode is not supported by Spirent HLTAPI.

circuit_id_incr_start
                Specifies the starting value of circuit ID suffix. The default
                is 0. You can specify this argument when
                circuit_id_suffix_mode is incr.

circuit_id_incr_step
                Specifies the step size in which the circuit ID suffix
                increments. The default is 1. You can specify
                this argument when circuit_id_suffix_mode is incr.

circuit_id_incr_count
                Defines the circuit ID suffix repeat value. The default
                is 1. You can specify this argument when
                circuit_id_suffix_mode is set to incr.

client_traffic_behavior
                Specifies how traffic should be handled based on the results of
                session connecting. Possible values are::


                 all_sessions_connected - Start traffic only if all
                                          sessions are connected.

                 ignore_failed_sessions - Ignore sessions that failed to connect.

                The default is all_sessions_connected. Note that it is a project
                level argument. If modified, all the PPPox clients will be
                impacted.

config_req_timeout
                Specifies the configuration timeout value in seconds. When
                this expires, another PPP ConfigureRequest packet will be
                sent, until the value defined for the max_configure_req
                argument is reached. After that, the session is terminated.
                This is a portwide option. Any subsequent use of this
                option on a port after the initial "mode create" will
                overwrite any previous setting. Possible values range from 1
                to 65535. The default is 3. See also max_configure_req.

device_block_mode
                Specifies how device blocks are allocated to represent the
                devices that are created. Possible values are described below::


                 multi_device_per_block
                                Creates multiple devices on one device block. If
                                you specify this mode and set num_sessions to
                                10, Spirent HLTAPI creates one device block with
                                a device count of 10.

                 one_device_per_block
                                Creates one device on one device block. If you
                                specify this mode and set num_sessions to 10,
                                Spirent HLTAPI creates 10 device blocks, with a
                                device count of 1 on each device block.

                The default value is multi_device_per_block.

disconnect_rate
                Specifies the PPP disconnect rate for all PPP session blocks
                on this port. Possible values range from 1 to 1000. The
                default is 1000. This is a portwide option. Any subsequent
                use of this option on a port after the initial
                "mode create" will overwrite any previous setting.

dut_assigned_src_addr
                The DUT assigned source address, which is always set to 1.
                The IP address is always assigned by the DUT.

echo_req
                Enables or disables echo requests. Possible values are
                0 (false) and 1 (true).

echo_req_interval
                Specifies the interval (in seconds) between sending out
                consecutive echo requests. Possible values range from 0 to 65525
                seconds. The default is 10 seconds.

encap
                Identifies the type of Layer 2 encapsulation to use.
                Possible values are ethernet_ii, ethernet_ii_vlan,
                ethernet_ii_mvlan, ethernet_ii_qinq, vc_mux and llcsnap.
                ethernet_ii, ethernet_ii_vlan, ethernet_ii_mvlan, and
                ethernet_ii_qinq support Ethernet encapsulation, while vc_mux and
                llcsnap support ATM encapsulation.

                If you use the vlan_* arguments to define a VLAN
                interface with a single tag, you must set the Layer 2 encapsulation
                type to ethernet_ii_vlan.

                If you use the vlan_outer* arguments to define a Q-in-Q
                interface, you must set the L2 encapsulation type to
                ethernet_ii_qinq.

                If you use vlan_*_list or vlan_outer_*_list arguments to define
                a VLAN interface with more than two tags, you must set the Layer
                2 encapsulation type to ethernet_ii_mvlan. ethernet_ii_mvlan
                specifies VLAN from the 3rd tag on. The first two VLAN tags are
                specified with vlan_id, vlan_outer_id, and their related
                arguments.

                If you use the vci_* arguments and vpi_* arguments
                to define a ATM interface, you must set the L2
                encapsulation type to vc_mux or llcsnap

                When the protocol argument is set to pppoeoa, then both
                Ethernet and ATM encapsulation will be set. In this case,
                you can set the L2 encapsulation type to the combination of
                {ethernet_ii|ethernet_ii_vlan|ethernet_ii_qinq}
                and {vc_mux|llcsnap}.

                Note: If you modify the encapsulation value from encap
                      ethernet_ii or ethernet_ii_vlan to ethernet_ii_qinq or vice
                      versa (using "mode modify"), you must resend all
                      parameters. Otherwise, the parameters use their default
                      values. The following example configures PPPoE for QinQ::


                       pppox config port_handle=port1
                             mode create
                             protocol pppoe
                             encap ethernet_ii_qinq
                             auth_mode pap
                             include_id 1
                             num_sessions 15000
                             mac_addr 00.00.12.00.00.02
                             mac_addr_step 00.00.00.00.00.01
                             username spirent
                             password spirent
                             vlan_id 1
                             vlan_id_outer 10
                             vlan_id_count 3000
                             vlan_id_outer_count 5
                             vlan_id_step 1
                             vlan_id_outer_step 1
                             qinq_incr_mode inner

                      The following example configures PPPoEoA for VLAN::


                       pppox config port_handle=port1
                             mode create
                             protocol pppoeoa
                             encap "ethernet_ii_vlan llcsnap ?
                             auth_mode none
                             include_id 1
                             num_sessions 15000
                             mac_addr 00.00.12.00.00.02
                             mac_addr_step 00.00.00.00.00.01
                             vlan_id 1
                             vlan_id_count 3000
                             vlan_id_step 1

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

                Specifies the maximum number of NegativeAcknowledgments
                allowed during LCP and NCP configuration/negotiation.
                Possible values range from 1 to 65535. The default is 5.

handle
                Specifies the handle of the PPPoE session group to use when
                mode is set to "modify" or "reset." This argument is
                `Mandatory` for modify mode only. The handle is returned by the
                ``pppox config`` function.

include_id
                Specifies whether to include the CHAP ID in challenge
                messages. Possible values are::


                 1 - The CHAP ID is included in challenge messages.
                 0 - The CHAP ID is not included.

                The default is 0.

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

                Enables or disables the relay agent. Possible value are 0
                (disable the relay agent) or 1 (enable the relay agent).
                The default is 0.

ip_cp
                The IP Control Protocol (IPCP) version to enable. Possible
                values are::


                 ipv4_cp - Enables IPv4 addressing
                 ipv6_cp - Enables IPv6 addressing
                 ipv4v6_cp - Enables IPv4 and IPv6 addressing.

gateway_ip_addr
                Specifies the starting IPv4 gateway address of the emulated PPPoX
                client. The value must be in IPv4 format. This argument is
                available when ip_cp is set to ipv4_cp or ipv4v6_cp.

gateway_ip_step
                Defines the increment used to generate IPv4 gateway addresses.
                The value must be in IPv4 format. This argument is available when
                ip_cp is set to ipv4_cp or ipv4v6_cp.

gateway_ipv6_addr
                Defines the starting IPv6 gateway address of the emulated PPPoX
                client. The values must be in IPv6 format. This argument is
                available when ip_cp is set to ipv6_cp or ipv4v6_cp.

gateway_ipv6_step
                Defines the increment used to generate gateway IPv6 addresses.
                The values must be in IPv6 format. This argument is
                available when ip_cp is set to ipv6_cp or ipv4v6_cp.

intf_ip_addr
                Defines the starting IPv4 address of the emulated PPPoX client.
                The value must be in IPv4 format. This argument is
                available when ip_cp is set to ipv4_cp.

intf_ip_addr_step
                Defines the increment used to generate IPv4 addresses. The
                value must be in IPv4 format. This argument is available
                when ip_cp is set to ipv4_cp.

intf_ipv6_addr
                Defines the starting IPv6 address of the emulated PPPoX client.
                The value must be in IPv6 format. This argument is
                available when ip_cp is set to ipv6_cp or ipv4v6_cp.

intf_ipv6_addr_step
                Defines the increment used to generate IPv6 addresses. The
                value must be in IPv6 format. This argument is available
                when ip_cp is set to ipv6_cp or ipv4v6_cp.

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

                Enables or disables IPv6 auto filling. Possible value
                are 0 (disable) or 1 (enable). The default is 1.
                This option is available when the ip_cp argument is set to ipv6_cp
                or ipv4v6_cp.

ipcp_req_timeout
                Specifies the timeout value (in seconds) for acknowledgment
                of an NCP ConfigureRequest. Possible values range from 1 to
                65535 seconds. The default value is 3 seconds.

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

                Specifies the local maximum receive unit (MRU) size in
                bytes. Possible values range from 128 to 65535. For PPPoE,
                the MRU size cannot exceed 65535. The default is 1492. This
                is a portwide option. Any subsequent use of this option on
                a port after the initial "mode create" will overwrite any
                previous setting.

local_magic
                Enables or disables the use of the magic number for
                detection of data link layer errors. This argument is used
                for loop back detection. Possible values are 0 (disable
                magic number) and 1 (enable magic number). The default is 1.
                This is a portwide option. Any subsequent use of this
                option on a port after the initial "mode create" will
                overwrite any previous setting.

mac_addr
                Specifies the starting value for the MAC address. The
                default is 00-10-94-01-00-01.

mac_addr_step
                Specifies the step value applied to the base MAC address.
                The default is 00:00:00:00:00:01

max_auth_req
                Specifies the maximum number of authentication requests that
                can be sent without getting an authentication response from
                the DUT. Possible values range from 1 to 65535. The default
                is 5.

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

                Specifies the maximum number of automatic retry attempts.
                Possible values range from 1 to 65535. The default is 65535.

max_configure_req
                Specifies the maximum number of times a PPP Configure-
                Request packet can be sent without a response before a
                session fails. Possible values range from 1 to 65535. The
                default is 5. See also config_req_timeout, This is a
                portwide option. Any subsequent use of this option on a
                port after the initial "mode create" will overwrite
                any previous setting.

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

                Specifies the maximum number of consecutive, unanswered echo
                request to send before failing the subscriber session.
                Possible values range from 0 to 65535. The default is 3. If
                you specify 0 for this argument, echo requests are disabled.
                Specifying any other number enables echo requests on the
                port; this is the same as setting echo_req to 1. See also
                echo_req and -term_req_timeout.

max_ipcp_req
                Specifies the maximum number of NCP ConfigureRequests that
                can be sent without acknowledgement before a session fails.
                Possible values range from 1 to 65535. The default is 10.
                See also term_req_timeout.

max_outstanding
                Specifies the maximum number of sessions that can be
                connecting or disconnecting at one time for all PPP session
                blocks on this port. Possible values range from 2 to 65535.
                The default is 100. This is a portwide option. Any
                subsequent use of this option on a port after the initial
                "mode create" will overwrite any previous setting.

max_padi_req
                Specifies the maximum number of PADI packets that can be
                sent without acknowledgment before a session fails. Possible
                values range from 1 to 65535. The default is 5.

max_padr_req
                Specifies the maximum number of PADR packets that can be
                sent without acknowledgment before a session fails. Possible
                values range from 1 to 65535. The default is 5.

max_terminate_req
                Specifies the maximum number of times a PPP Terminate-
                Request packet can be sent before a session fails. Possible
                values range from 1 to 65535. The default is 10. See also
                term_req_timeout.

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


                 create - Configures the PPPoE sessions on the port specified
                      with the port_handle argument. The first "-mode
                      create" argument also creates the PPPoE port object.

                 modify - Changes the configuration for the PPPoE port and
                     session block identified by the handle argument.

                     pppox config mode=modify handle host2
                      username spirent -password spirent

                     Output:
                     {status 1} {handles host2} {port_handle port1}
                     {pppoe_port pppoxportconfig1} {pppoe_session
                     pppoeclientblockconfig1} {procName pppox config}

                     If you have configured either IGMP over PPPoX and
                     modify pppox config, you must also modify the IGMP
                     handle to accept the new handle as well. (See the usage
                     examples provided for emulation igmp config.)

                 activate - Used for `scaling` scenarios.
                          1. Enables PPPoE devices and configures PPPoE parameters
                             for the devices created via the 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 ``pppox config`` function for more
                             information. For this mode, only the following set of
                             options are valid::


                               ac_name
                               pppoe_circuit_id
                               agent_type
                               auth_mode
                               max_padi_req
                               max_auto_retry_count
                               agent_mac_addr
                               echo_req
                               emulation_type
                               enable_max_payload_tag
                               ipv6_addr_pool_count
                               ipv6_addr_pool_int_id_start
                               padr_req_timeout
                               ipv6_addr_pool_prefix_start
                               ipv4_addr_pool_start
                               include_id
                               password
                               username
                               ipv6_addr_pool_int_id_step
                               max_payload_bytes
                               ipv6_addr_pool_prefix_step
                               ipv4_addr_pool_count
                               service_name
                               auto_retry
                               padi_req_timeout
                               padi_include_tag
                               max_echo_acks
                               ipv4_addr_pool_step
                               remote_or_session_id
                               intermediate_agent
                               echo_req_interval
                               padr_include_tag
                               ip_cp
                               lower_encap
                               max_padr_req

                        2. Creates devices and enables PPPoE 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 - Deletes the session block associated with the handle
                     name. To reconnect and re-start, you must reconfigure
                     your settings.

                Note::

                  1. Before using "pppox config mode=reset", you must
                     first delete all traffic streams with the
                     "traffic config mode=reset" command. Traffic
                     streams must be reset before PPPoX can be reset.

                  2. When modifying PPPoX sessions, only modify
                     pppox config when the aggregate.idle flag
                     returned by pppox stats is 1 and no sessions are
                     connected.


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

                Enables or disables MRU negotiation. Possible value are 0
                (disable) or 1 (enable).  The default is 1.

num_sessions
                The number of PPPoE clients to emulate. Possible values range
                from 1 to 65535. The default is 1.

                Note:
                  1. If the value of encap is set to "ethernet_ii_vlan",
                     then the value of num_sessions must be divided evenly
                     by value of vlan_id_count.

                  2. If the value of encap is set to "ethernet_ii_qinq"
                     then the value of num_sessions must be divided evenly
                     by the least common multiple of vlan_id_count and
                     vlan_id_outer_count.

                     Likewise, if the value of encap is set to " vc_mux"
                     or "llcsnap", then the value of num_sessions must be divided
                     evenly by the least common multiple of vpi_count and
                     vci_count.

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

                Specifies whether to include the relay agent tags in
                transmitted PADI messages. Possible values are 0 (do not
                include relay agent tags in PADI messages) or 1 (include
                relay agent tags in PADI messages). The default is 1.

padi_req_timeout
                Specifies the timeout value (in seconds) for acknowledgment
                of a PADI packet. Possible values range from 1 to 65535. The
                default is 3.

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

                Specifies whether to include the relay agent tags in
                transmitted PADR messages. Possible values are 0 (do not
                include relay agent tags in PADR messages) or 1 (include
                relay agent tags in PADR messages). The default is 1.

padr_req_timeout
                Specifies the timeout value (in seconds) for acknowledgment
                of a PADR packet. Possible values range from 1 to 65535. The
                default is 3.

pppoe_circuit_id
                Defines the circuit ID name. The default is "circuit". The
                value must be in alphanumeric format.

pppoe_remote_id
                Defines the remote ID name. The default is "remote". The
                value must be in alphanumeric format.

password
                Specifies the string base from which the passwords are
                generated (for example, Password#) when the authentication
                mode is pap, chap, or pap_or_chap (see auth_mode). The
                default is "pass". See Notes for information about using
                wildcards in passwords.

password_wildcard
                Enables wildcard substitution in the password argument.
                Possible values are 0 (false) and 1 (true). If the value is
                set to 1, any wildcards used in password are replaced with
                the corresponding values for wildcard_pound_start,
                wildcard_pound_end, wildcard_question_start and
                wildcard_question_end. If the value is 0, wildcards are not
                replaced in the specified password. The default is 0.

port_handle
                Specifies the handle of the port on which to create the
                PPPoE port and session block when mode is set to "create".
                This argument is `Mandatory` for create mode only. Specifies
                the port handle is returned by the connect
                function.

protocol
                Specifies the type of protocol to use.
                The possible values are pppoe, pppoa, and pppoeoa.
                The default value is pppoe.

qinq_incr_mode
                Determines which VLAN ID to increment first. Possible values
                are::


                 inner - increment the inner VLAN ID before the outer VLAN ID
                 outer - increment the outer VLAN ID before the inner VLAN ID
                 both - increment both the inner and outer VLAN ID at the
                         same time

                The default is outer.

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

                Determines whether Spirent TestCenter creates Qin-Q (802.1q
                Tunnel Tags) hosts with one handle returned. When it is set to 1,
                Spirent TestCenter creates multiple Qin-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.

remote_id_suffix_mode
                Defines the mode of remote ID suffix that is appended to
                remote ID name. Possible values are none and incr.
                The default is incr. The modes are described below::


                 none - Indicates there is no remote ID suffix.

                 incr - Indicates the remote ID suffix increments
                        in the step specified in the remote_id_incr_step
                        argument.

                Note: The list mode is not supported by Spirent HLTAPI.

remote_id_incr_start
                Specifies the starting value of remote ID suffix. The default
                is 0. You can specify this argument when
                remote_id_suffix_mode is incr.

remote_id_incr_step
                Specifies the step size in which the remote ID suffix
                increments. The default is 1. You can specify
                this argument when remote_id_suffix_mode is incr.

remote_id_incr_count
                Defines the remote ID suffix repeat value. The default
                is 1. You can specify this argument when
                remote_id_suffix_mode is incr.

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

                Indicates the service (ISP name, class, or QoS) requested.
                If you do not specify a service name or specify an empty
                string, Spirent HLTAPI will accept any service.

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

                Specifies the number of times to increment the IPv4 gateway address
                before returning to the starting value. Possible values range
                from 0 to 65535. The default value is 0.

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

                Specifies the number of times to repeat the same IPv4 gateway
                address before incrementing it. Possible values range from 0 to
                65535. The default value is 0.

term_req_timeout
                The maximum amount of time (in seconds) that the
                termination process can take before another PPP Terminate-
                Request packet is sent. If there is no response, another
                packet is sent until the value defined for the
                max_terminate_req argument is reached, and then the session
                is terminated. Possible values range from 1 to 65535.
                The default is 10.  See also max_terminate_req.

username
                The string base from which the usernames are generated
                (for example, User#) when the authentication mode is
                pap, chap, or pap_or_chap (see auth_mode). The default is
                "anonymous". See Notes for information about using wildcards
                in passwords.

username_wildcard
                Enables wildcard substitution in the username argument.
                Possible values are 0 (false) and 1 (true). If the value
                is set to 1, any wildcards used in username are replaced
                with the corresponding values according to
                willcard_pound_start, wildcard_pound_end,
                wildcard_question_start and wilcard_question_end. If the
                value is 0, wildcards are not replaced. The default is 0.

pvc_incr_mode
                Determines which ID to increment first. Possible
                values are::


                 vci - Increments the VC ID before the Virtual Path (VP) ID
                 vpi - Increments the VP ID before the Virtual Circuit (VC)ID
                 both - Increments both the VP and VC ID at the same time

vci
                Specifies the VCI of the first ATM PVC pool. Possible values
                range from 0 to 65535.

vci_count
                The number of VCI to use when generating PPPoE clients. The
                value must be less than num_sessions.

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

vpi
                Specifies the VPI of the first ATM PVC pool (for an ATM
                connection). Possible values are 0 to 255.

vpi_count
                The number of VPI to use when generating PPPoE clients. The
                value must be less than num_sessions.

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

vlan_id
                The first inner VLAN ID to use when generating PPPoE
                clients. Possible values range from 0 to 4095. The default
                is 1.

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

                Defines the VLAN Canonical Format Indicator (CFI). Possible
                values are 1 and 0. The default value is 0.

vlan_id_count
                The number of inner VLAN IDs to use when generating PPPoE
                clients. Spirent HLTAPI assigns VLAN membership in
                roundrobin fashion. If the value of -encap is set to
                "ethernet_ii_vlan", then the value of num_sessions must be
                divided evenly by the value of vlan_id_count. Possible values
                range from 1 to 4096. The default is 1.

vlan_id_outer
                The first outer VLAN ID to use when generating PPPoE
                clients . This ID only applies to PPPoE w/Stacked VLAN.
                Possible values range from 0 to 4095. The default is 1.

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

                Defines the outer VLAN CFI. The possible values are 1 and 0. The
                default value is 0.

vlan_id_outer_count
                The number of outer VLAN IDs to use when generating PPPoE
                clients. Spirent HLTAPI assigns VLAN membership in
                roundrobin 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_id_outer_step
                The value that Spirent HLTAPI uses to increment the
                outer VLAN ID. Possible step values range from 0 to 4095.
                The default is 0.

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

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

                Specifies the 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_id_stack_count
                `Spirent Extension (for Spirent HLTAPI only).`

                Specifies the number of VLAN objects to be created. Possible
                values range from 1 to 65535. The default value is 1.

vlan_user_priority
                Specifies the inner VLAN priority to assign to the specified
                port. Possible values range from 0 to 7. The default is 0.

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

                Specifies a list of inner VLAN priorities to assign to the
                specified port. Possible values range from 0 to 7. The default
                value is 0.

vlan_outer_user_priority
                Specifies the outer VLAN priority to assign to the specified
                port. Possible values range from 0 to 7. The default is 0.

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

                Specifies the Ethernet type of VLAN for the device interface.
                Possible values range from 0 to 65535. The default value is
                33024.

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

                Specifies the Ethernet type of outer VLAN for the device
                interface. Possible values range from 0 to 65535. The default
                value is 33024.

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

                Specifies a list of VLAN IDs to use when generating
                PPPoE clients using ethernet_ii_mvlan encapsulation. Possible
                values range from 1 to 4095. The default is 100.

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

                Specifies a list of VLAN CFIs to use when generating PPPoE
                clients using ethernet_ii_mvlan encapsulation. Possible values
                are 1 and 0. The default value is 0.

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

                Specifies a list of numbers of VLAN IDs to use when generating
                PPPoE clients using ethernet_ii_mvlan encapsulation. Possible
                values range from 1 to 4096. The default value is 1.

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

                Specifies a list of values to increment inner VLAN IDs using
                ethernet_ii_mvlan encapsulation. Possible step values range from
                1 to 4095. The default value is 1.

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

                Specifies a list of VLAN Tag Protocol IDs for ethernet_ii_mvlan
                encapsulation. Possible values range from 0 to 65535. The default
                value is 33024.

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

                Wildcard fill character for wildcard_pound_start
                and wildcard_pound_end. If 0, the numbers are replaced
                without leading zeroes. Otherwise, leading zeroes are added
                to ensure that the number is at least the specified number
                of digits wide. Possible values range from 0 to 9. The
                default is 0. See Notes for more about using wildcards.

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

                Wildcard fill character for wildcard_question_start and
                wildcard_question_end. If 0, the numbers are replaced
                without leading zeroes. Otherwise, leading zeroes are added
                to ensure that the number is at least the specified number
                of digits wide. Possible values range from 0 to 9. The
                default is 0. See Notes for more about using wildcards.

wildcard_pound_start
                Starting numerical value to replace the wildcard pound (#)
                character in user names and passwords, such as user# or
                pwd#. Possible values range from 0 to 65535. The default is
                1. See Notes for more about using wildcards.

wildcard_pound_end
                Final numerical value to replace the wildcard pound (#)
                character in user names and passwords, such as user# or
                pwd#. Possible values range from 0 to 65535. The default is
                1. See Notes for more about using wildcards.

wildcard_question_start
                Starting numerical value to replace the wildcard question
                mark character in user names and passwords. Possible values
                range from 0 to 65535. The default is 1. See Notes for more
                about using wildcards.

wildcard_question_end
                Final numerical value to replace the wildcard question
                mark character in user names and passwords. Possible values
                range from 0 to 65535. The default is 1. See Notes for more
                about using wildcards.

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

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

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

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

ac_name
                Specifies the Access Concentrator name in the PADO messages.
                The default is spirenttestcenter
                Applicable only in mode activate when -block_mode or -expand is specified.

emulation_type
                Specifies the PPPoX node emulation type.
                The default is client
                Applicable only in mode activate when -block_mode or -expand is specified.

enable_max_payload_tag
                Enables the PPPMax-Payload-Tag (see RFC 4638).
                The default is false

ipv4_addr_pool_count
                Specifies the number of IPv4 addresses in the PPPoX server's pool.
                The default is 1
                Applicable only in mode activate when -block_mode or -expand is specified.

ipv4_addr_pool_step
                Specifies the step IPv4 address for the PPPoX server's pool.
                The default is 1
                Applicable only in mode activate when -block_mode or -expand is specified.

ipv4_addr_pool_start
                Specifies the starting IPv4 address for the PPPoX server's pool.
                The default is 192.0.1.0
                Applicable only in mode activate when -block_mode or -expand is specified.

ipv6_addr_pool_int_id_step
                Specifies the IPv6 address pool Interface ID (lower 64 bits) step.
                The default is ::1
                Applicable only in mode activate when -block_mode or -expand is specified.

ipv6_addr_pool_int_id_start
                Specifies the IPv6 address pool Interface ID (lower 64 bits) start.
                The default is ::2
                Applicable only in mode activate when -block_mode or -expand is specified.

ipv6_addr_pool_prefix_start
                Specifies the IPv6 address pool prefix (upper 64 bits) start.
                The default is 2001:::

                Applicable only in mode activate when -block_mode or -expand is specified.

ipv6_addr_pool_prefix_step
                Specifies the IPv6 address pool prefix (upper 64 bits) step.
                The default is 0:0:0:1:::

                Applicable only in mode activate when -block_mode or -expand is specified.

max_payload_bytes
                Specifies the maximum number of PPP payload bytes the client can transmit and receive.
                The default is 1500
                Applicable only in mode activate when -block_mode or -expand is specified.

remote_or_session_id
                Specifies the remote ID or session ID depending on the relay agent type. Special wildcards allowed.
                The default is remote @m-@p-@b
                Applicable only in mode activate when -block_mode or -expand is specified.

Arguments Unsupported by Save as HLTAPI:

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


  qinq_incr_mode
  qinq_oneblock
  apply
  reset_mode

Vendor Specific Arguments Processed by Spirent HLTAPI Wrapper:

max_negotiation_retrys
Specifies the maximum number of automatic retry attempts. Possible values range from 1 to 65535. The default is 65535.
max_lcp_failure
Specifies the maximum number of times a PPP Configure- Request packet can be sent without a response before a session fails. Possible values range from 1 to 65535. The default is 5.
ppp_local_ip
Defines the starting IPv4 address of the emulated PPPoX client. The value must be in IPv4 format. This argument is available when ip_cp is set to ipv4_cp.

Vendor Specific Arguments Ignored by Spirent HLTAPI Wrapper:

   None.

Note: For more information about Spirent HLTAPI Wrapper, refer to Chapter 4 Spirent
          HLTAPI Wrapper in Spirent HLTAPI Programmer's Reference.
Ciscospecific Arguments:

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

echo_rsp
sessions_per_vc
vlan_user_priority_count
vlan_user_priority_step
circuit_id_suffix_list
remote_id_suffix_list
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 PPPoE session block handle (or group) returned
          by the "``pppox config mode=create"`` function.

handle_list
          A list of emulated devices with PPPoE session configuratin created by
          ``pppox 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 pppox config function creates or modifies an emulated PPPoE session block. Use the mode argument to specify the action to perform. (See the mode argument description for information about the actions.)

Modifying any option during a PPPoE session which currently is a member of a multicast group will sever the PPPoE session, IGMP host, and multicast group relationship. Therefore, do not use pppox config while sessions are connected to prevent aborting the PPPoX engine. To see if sessions are connected, look at the aggregate.idle flag returned by “pppox stats mode=aggregate”. If aggregate.idle is “0”, then do not send pppox config. If the PPPoX engine is aborted, you will need to reconfigure the PPPoX session. If using IGMP over PPPoX, you will also need to reconfigure the IGMP session.

When you create a PPPoE session block, you must use the port_handle argument to specify the Spirent HLTAPI port that the emulated PPPoE session block will use for PPPoE communication. (The port handle value is contained in the keyed list returned by the connect function.)

Use the mode create argument to define the characteristics of a PPPoE session block. You can use a single session block to emulate multiple PPPoE clients.

In addition to specifying the port handle (port_handle), you must also provide one or more of the following arguments when you create a PPPoE session block, or use their default values:

num_sessions (the number of PPPoE clients to emulate)

mac_addr (starting value for the MAC address)

mac_addr_step (increment used to generate additional MAC addresses for
                multiple clients)

auth_mode  (authentication style)

include_id (include or exclude the CHAP ID in challenge messages)

username  (if specifying an authentication style)

password  (if specifying an authentication style)

For a detailed description of PPPoE encapsulation, see “RFC 2516 - A Method for Transmitting PPP Over Ethernet (PPPoE)”.

For an example of how to configure PPPoE traffic, see the documentation for traffic config.

Examples:

The following example configures a PPPoE session:

pppox config port_handle=$p0
     mode= create
     protocol= pppoe
     encap= ethernet_ii
     local_magic=         1
     max_configure_req=   5
     max_terminate_req=   10
     attempt_rate=        100
     disconnect_rate=     100
     max_outstanding=     100
     num_sessions=        1
     mac_addr=            $mac_addr
     username=            $username
     password=            $password

Sample Output for example shown above:

{status 1} {port_handle port1} {handles host2} {pppoe_port
pppoeportconfig1}
{pppoe_host host2}{pppoe_session pppoeclientblkconfig1} {procName
pppox config}

The following example configures multiple PPPoE sessions:

set pppHandles ""
for {set i 1} {$i <= $num_blocks} {incr i} {
     set rL [pppox config port_handle=port1
                                 mode= create
                                 protocol= pppoe
                                 encap= ethernet_ii
                                 num_sessions= $num_sessions
     ]

     #Create a list of PPPoX handles
     keylget rL handles pppHandle
     lappend pppHandles $pppHandle
 }

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

set pppoe_ret [pppox 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_ipv6_prefix_len=                            65
            ipv6_step_per_vlan=                              {"" ::2}
            ipv6_step_per_port=                              ::1
            intf_prefix_len=                                 22
            link_local_ipv6_step_per_port=                   ::4
            link_local_ipv6_step_per_vlan=                   {"" ::5}
            name=                                            DEVICE_BLOCK_PPPOX
            vlan_user_pri=                                   3
            vlan_id_count=                                   2
            vlan_id_repeatmode=                              REPEAT_ACROSS_PORT
            vlan_outer_id_count=                             2
            vlan_outer_user_pri=                             4
            vlan_outer_id_repeatmode=                        REPEAT_ACROSS_PORT
            router_id_ipv6=                                  0101::011
            router_id_ipv6_step=                             ::11
            intf_ip_addr=                                    11.111.11.11
            gateway_ip_addr=                                 11.111.11.1
            expand=                                          true
            ac_name=                                         spirent
            pppoe_circuit_id=                                circuit1
            agent_type=                                      2516
            auth_mode=                                       none
            max_padi_req=                                    11
            max_auto_retry_count=                                2
            agent_mac_addr                                  000000000001=
            echo_req=                                        true
            emulation_type=                                  client
            enable_max_payload_tag=                          true
            ipv6_addr_pool_count=                            1
            ipv6_addr_pool_int_id_start=                     ::2
            padr_req_timeout=                                    4
            ipv6_addr_pool_prefix_start=                     2002::
            ipv4_addr_pool_start=                            10.1.1.1
            include_id=                                      true
            password=                                        spirent
            username=                                        spirent
            ipv6_addr_pool_int_id_step=                      ::2
            max_payload_bytes=                               1400
            ipv6_addr_pool_prefix_step=                     ::
            ipv4_addr_pool_count=                           2
            service_name=                                   spirent
            auto_retry=                              true
            padi_req_timeout=                               20
            padi_include_tag=                               true
            max_echo_acks=                                  10
            ipv4_addr_pool_step=                            1
            remote_or_session_id=                           remote
            intermediate_agent=                             true
            echo_req_interval=                              20
            padr_include_tag=                               true
            ip_cp=                                          ipv4_cp
            lower_encap=                                  pppoe
            max_padr_req=                              3]

Sample Output:

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

To connect all PPPoX handles in list:

set rL pppox control handle=$pppHandles action connect

pppox control

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

Purpose:
Connects, disconnects, pauses, resumes, retries, or resets the PPPoE sessions for the specified session block.

Synopsis:

Note: M indicates the argument is `Mandatory`.

     pppox control
        action= {connect|disconnect|retry|reset|pause|resume|clear} M
        handle= <handle>
        port_handle= <port_handle_list>
        ipcp_mode= {ipv4|ipv6|ipv4v6}

Arguments:

action
                Specifies the action to perform. Possible values are
                connect, disconnect, reset, retry, pause, resume, and clear.
                You must specify one of these values. The modes are
                described below::


                 connect - Establishes all PPPoX sessions on the specified
                     session block.

                 disconnect - Disconnects all established PPPoX sessions from
                     the specified session block.

                 retry - Attempts to connect failed PPPoX sessions on the
                       port. You can only use the retry command after the
                       sessions have finished attempting to connect (that is,
                       the stats show that either aggregate.idle or
                       aggregate.connected is 1).

                 reset - Terminates the port. This action does not reset the
                       defaults nor does it attempt to reconnect. To re-
                       connect to the port, you must reconfigure the session
                       block.

                 pause - Pause all PPPoX sessions that are connecting or
                        disconnecting.

                 resume - Resume PPPoX sessions that were paused with
                        "action pause" while connecting or disconnecting.

                 clear - Clears the PPPoX statistics for the port. You can
                        only use this command after the sessions have been
                        disconnected (that is, aggregate.idle is 1). You
                        cannot clear the PPPoX port statistics while
                        sessions are currently connected (that is,
                        aggregate.connected is 1).

                 abort - Aborts all PPPoX sessions and resets the PPP
                         emulation engine (without bringing the sessions
                         back up) on the specified device.

                Note: Use "pppox control action=clear" and
                      "pppox control action=retry" only while sessions are
                      in the idle state. To see if the PPPoX engine is in the idle
                      state, look at the aggregate.idle flag returned by
                      "pppox stats mode=aggregate".  If aggregate.idle is
                      "0", then do not send this command.

handle
                Identifies a list of session blocks on which to connect,
                disconnect, reset, retry, pause, resume, or clear the PPPoX
                sessions.

port_handle
                Specifies a list of ports to use. When you specify this
                argument, the action (action) will be applied
                to all PPPoX sessions on the port. You must specify
                either handle or -port_handle, but not both.

ipcp_mode
                Specifies the IP version of PPPoX sessions to connect, retry
                or disconnect. Possible values are ipv4, ipv6 and ipv4v6.
                The default mode is ipv4v6.
                You must specify one of these values. The modes are
                described below::


                 ipv4 - Use this mode, to connect, retry or disconnect all IPv4
                        PPPoX sessions under the specified handle or the -port_handle.

                 ipv6 - Use this mode, to connect, retry or disconnect all IPv6
                        PPPoX sessions under the specified handle or the -port_handle.

                 ipv4v6 - Use this mode, to connect, retry or disconnect all IPv4 and IPv6
                        PPPoX sessions under the specified handle or the -port_handle.
Return Values:

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

status    Success (1) or failure (0) of the operation.
log       An error message (if the operation failed).
Description:

The pppox_control function stops or starts PPPoE session blocks. You can use the function to perform the following actions: connecting, disconnecting, resetting, retrying, pausing, resuming, or clearing PPPoE sessions. When you call the pppox_control function, you specify a handle.

You can check the aggregate.idle and aggregate.connected fields returned by “pppox stats mode=aggregate” to see when all sessions have finished connecting or disconnecting. If the aggregate.idle or aggregate.connected values are equal to 1, then you can send the pppox control connect, retry, disconnect, pause, or resume actions again. When the aggregate.connected value is 1, you can disconnect the PPPoX sessions with “pppox control handle=<handle> action disconnect”. If configuring and connecting multiple PPPoX handles, configure all the handles before connecting PPPoE. Do not call pppox config while aggregate.connecting, aggregate.connected, or aggregate.disconnecting are equal to 1.

While in either the aggregate.connecting, aggregate.connected, or aggregate.disconnecting state, the PPPoE engine cannot accept newly configured PPPoE session blocks. Therefore, if you plan to configure and bring up multiple PPPoX groups, configure all the PPPoE session blocks before connecting PPPoE sessions.

Examples:

To connect a PPPoE session:

pppox control handle=host2 action connect

Output for the above example:

{status 1} {procName pppox control} {handles host2}

To connect multiple PPPoX handles:

set rL pppox control handle=$pppHandles action connect

To disconnect a PPPoE session:

pppox control handle=host2 action disconnect

Output for the above example:

{status 1} {procName pppox control} {handles host2}

To connect only IPv4 PPPoX servers:

pppox server control
                action=        connect
                port_handle=   $hltSourcePort
                ipcp_mode=     ipv4

Output for the above example:

{status 1} {procName pppox control} {handles host1}

pppox stats

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

Purpose:
Returns PPPoE port statistics associated with 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 the argument is `Mandatory`.

    pppox stats
        mode= {aggregate | session} M
        handle= <PPPoE_session_block_handle>
        port_handle= <port_handle>

Arguments:

handle
                Specifies the handle of the PPPoE session block for which you
                want to retrieve PPPoE port statistics. You must specify handle
                or port_handle, but not both.

port_handle
                Specifies the port for which you want to retrieve PPPoE
                statistics. You must specify handle or -port_handle, but not
                both.

mode
                Specifies the type of statistics to return in the keyed list. The
                mode argument is `Mandatory`. Possible values are aggregate or
                session::


                 aggregate  Retrieves transmitted and received statistics for all
                            PPPoE sessions associated with the specified port and a
                            status value (1 for success).

                 session    Retrieves transmitted and received statistics for only
                            the PPPoE sessions specified with handle.

                Note: Session statistics are only valid after the PPPoE sessions
                      are established. They will not be returned nor accessible until
                      you are connected.
Ciscospecific Arguments:
Although the retry option is supported by Spirent HLTAPI, we strongly recommend that you use pppox control action=retry instead.
Return Values:

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

status         Retrieves a value indicating the success (1) or failure
               (0) of the operation.

log            Retrieves a message describing the last error that
               occurred during the operation. If the operation was
               successful - {status 1} - the log value is null

Following is a keyed list showing the types of keys returned for mode aggregate:

aggregate.atm_mode              Specifies whether the port is in ATM mode
                                (currently not supported)
aggregate.avg_setup_time........Average time `Mandatory` to bring a session up
aggregate.chap_auth_rsp_tx......Number of CHAP messages sent
aggregate.chap_auth_chal_rx.....The number of CHAP messages received*
aggregate.chap_auth_succ_rx......The number of CHAP messages received*
aggregate.chap_auth_fail_rx......The number of CHAP messages received*

aggregate.connecting............PPPoE clients that are connecting. If
                                aggregate.connecting is 1, then there are
                                sessions connecting on the port.

aggregate.connected.............All sessions that have finished with NCP
                                negotiation. If aggregate.connected is 1,
                                then PPPoX has finished attempting all
                                configured PPPoX sessions.

aggregate.idle..................The sessions have been disconnected or
                                terminated. If aggregate.idle is 1, then
                                the port state is idle.

aggregate.disconnecting.........If aggregate.disconnecting is 1, then PPPoX
                                sessions are disconnecting.

aggregate.connect_attempts......Number of sessions attempted
aggregate.connect_success.......Number of sessions that connected
                                successfully
aggregate.disconnect_failed.....Number of sessions that failed to
                                disconnect
aggregate.disconnect_success....Number of sessions that disconnected
                                successfully
aggregate.echo_req_rx...........Number of Echo Requests received
aggregate.echo_rsp_tx...........Number of Echo Replies sent

aggregate.ipcp_cfg_ack_rx.......Total number of IPCP messages received*
aggregate.ipcp_cfg_ack_tx.......Total number of IPCP messages sent*
aggregate.ipcp_cfg_nak_rx.......Total number of IPCP messages received*
aggregate.ipcp_cfg_nak_tx.......Total number of IPCP messages sent*
aggregate.ipcp_cfg_rej_rx.......Total number of IPCP messages received*
aggregate.ipcp_cfg_rej_tx.......Total number of IPCP messages sent*
aggregate.ipcp_cfg_req_rx.......Total number of IPCP messages received*
aggregate.lcp_cfg_req_rx........Number of LCP ConfigureRequest messages
                                received
aggregate.lcp_cfg_req_tx........Number of LCP ConfigureRequest messages
                                sent
aggregate.lcp_cfg_rej_rx........Number of LCP ConfigureReject messages
                                received
aggregate.lcp_cfg_rej_tx........Number of LCP ConfigureReject messages
                                sent
aggregate.lcp_cfg_ack_rx........Number of LCP ConfigureACK messages
                                received
aggregate.lcp_cfg_ack_tx........Number of LCP ConfigureACK messages
                                sent
aggregate.lcp_cfg_nak_rx........Number of LCP ConfigureNAK messages
                                received
aggregate.lcp_cfg_nak_tx........Number of LCP ConfigureNAK messages sent
aggregate.max_setup_time........Maximum time `Mandatory` to bring a session
                                                               up
aggregate.min_setup_time........Minimum time `Mandatory` to bring a session up
aggregate.num_sessions..........Number of sessions configured
aggregate.padi_rx...............Number of PADI messages received
aggregate.padi_tx...............Number of PADI messages sent
aggregate.pado_rx...............Number of PADO messages received
aggregate.padr_tx...............Number of PADR messages sent
aggregate.pads_rx...............Number of PADS messages received
aggregate.padt_tx...............Number of PADT messages sent
aggregate.padt_rx...............Number of PADT messages received
aggregate.pap_auth_ack_rx.......Number of PAP ACK messages received
aggregate.pap_auth_nak_rx.......Number of PAP NAK messages received
aggregate.pap_auth_req_tx.......Number of PAP Request messages sent
aggregate.retry_count...........Number of sessions that have been retried
                                using the Retry function
aggregate.sessions_up...........Number of sessions currently active
aggregate.sessions_down.........Number of sessions that failed to connect
aggregate.success_setup_rate....Number of sessions per second that have
                                been established
aggregate.term_ack_rx...........Number of LCP TerminateACK messages
                                received
aggregate.term_ack_tx...........Number of LCP TerminateACK messages
                                sent
aggregate.term_req_rx...........Number of LCP TerminateRequest messages
                                received
aggregate.term_req_tx...........Number of LCP TerminateRequest messages
                                sent

Following is a keyed list showing the types of keys returned for mode session:

session.<session ID>.agg
                                The aggregate statistics of all sessions on that
                                particular host

session.<session ID>.attempted
                                Number of times this session was attempted
session.<session ID>.chap_auth_chal_rx
                                Total number of CHAP responses received*
session.<session ID>.chap_auth_fail_rx
                                Total number of CHAP responses received *
session.<session ID>.chap_auth_rsp_tx
                                Total number of CHAP responses sent*
session.<session ID>.chap_auth_succ_rx
                                Total number of CHAP responses received *
session.<session ID>.completed
                                Number of times this session was
                                successfully connected and disconnected
session.<session ID>.connect_success
                                Number of times this session was
                                successfully connected and disconnected
session.<session ID>.echo_req_rx
                                Total number of EchoRequest packets
                                received
session.<session ID>.echo_rsp_tx
                                Total number of EchoReply packets sent

session.<session ID>.failed_connect
                                Number of times this session failed to
                                connect
session.<session ID>.failed_disconnect
                                Number of times this session failed to
                                disconnect
session.<session ID>.ip_addr
                                IPv4 address assigned by the DUT to the
                                subscriber
session.<session ID>.ipv6_addr
                                IPv6 address assigned by the DUT to the
                                subscriber
session.<session ID>.ipv6_global_addr
                                IPv6 global address
session.<session ID>.ipcp_cfg_ack_rx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_ack_tx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_nak_rx
                                Total number of IPCP responses receive
                                (IPv4)*
session.<session ID>.ipcp_cfg_nak_tx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_rej_rx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_rej_tx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_req_rx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.ipcp_cfg_req_tx
                                Total number of IPCP responses received
                                (IPv4)*
session.<session ID>.lcp_cfg_ack_rx
                                Total number of ConfigureAcknowledge
                                packets received
session.<session ID>.lcp_cfg_ack_tx
                                Total number of ConfigureAcknowledge
                                packets sent
session.<session ID>.lcp_cfg_nak_rx
                                Total number of ConfigureNegative-
                                Acknowledge packets received
session.<session ID>.lcp_cfg_nak_tx
                                Total number of ConfigureNegative-
                                Acknowledge packets sent
session.<session ID>.lcp_cfg_rej_rx
                                Total number of ConfigureReject packets
                                received
session.<session ID>.lcp_cfg_rej_tx
                                Total number of ConfigureReject packets
                                sent
session.<session ID>.lcp_cfg_req_rx
                                Total number of ConfigureRequest packets
                                received
session.<session ID>.lcp_cfg_req_tx
                                Total number of ConfigureRequest packets
                                sent
session.<session ID>.padi_rx
                                Total number of PPPoE Active Discovery
                                Initialized packets received
session.<session ID>.padi_tx
                                Total number of PPPoE Active Discovery
                                Initialized packets sent
session.<session ID>.pado_rx
                                Total number of PPPoE Active Discovery
                                Offer packets received
session.<session ID>.pado_tx
                                Total number of PPPoE Active Discovery
                                Offer packets sent
session.<session ID>.padr_rx
                                Total number of PPPoE Active Discovery
                                Request packets received
session.<session ID>.padr_tx
                                Total number of PPPoE Active Discovery
                                Request packets sent
session.<session ID>.pads_rx
                                Total number of PPPoE Active Discovery
                                Sessionconfirmation packets received
session.<session ID>.pads_tx
                                Total number of PPPoE Active Discovery
                                Sessionconfirmation packets sent
session.<session ID>.padt_rx
                                Total number of PPPoE Active Discovery
                                Terminate packets received
session.<session ID>.padt_tx
                                Total number of PPPoE Active Discovery
                                Terminate packets sent
session.<session ID>.pap_auth_ack_rx
                                Total number of PAP responses received*
session.<session ID>.pap_auth_nak_rx
                                Total number of PAP responses sent*
session.<session ID>.pap_auth_req_tx
                                Total number of PAP responses received*
session.<session ID>.setup_time
                                Amount of time taken to bring up the
                                session
session.<session ID>.term_ack_rx
                                Total number of TerminateAcknowledge
                                packets received
session.<session ID>.term_ack_tx
                                Total number of TerminateAcknowledge
                                packets sent
session.<session ID>.term_req_rx
                                Total number of TerminateRequest packets
                                received
session.<session ID>.term_req_tx
                                Total number of TerminateRequest packets
                                sent
Note: “*” indicates the statistic is not fully supported and only provides the aggregate
count.
Description:
The pppox stats function retrieves a list of aggregate statistics for the PPPoE session configured on the specified port.

Examples:

To retrieve statistics when mode= is aggregate:

pppox stats handle=host2 mode aggregate

Sample Output:

{status 1} {aggregate {{term_req_rx 0} {term_ack_tx 0} {ipcp_cfg_rej_tx 6}
{lcp_cfg_rej_tx 0} {padt_tx 1} {pap_auth_ack_rx 0} {term_req_tx
1} {ipcp_cfg_ack_rx 6} {connect_success 2} {lcp_cfg_ack_rx 2} {num_sessions
1} {echo_req_rx 0} {chap_auth_fail_rx 0} {padr_tx 2} {max_setup_time 156}
{disconnect_success 1} {chap_auth_chal_rx 0} {echo_rsp_tx 0}
{pads_rx 2} {chap_auth_succ_rx 0} {ipcp_cfg_req_rx 6} {sessions_up 1}
{pap_auth_nak_rx 0} {ipcp_cfg_ack_tx 6} {ipcp_cfg_nak_rx 6}
{disconnect_failed 0} {lcp_cfg_req_rx 2} {padi_rx 0} {lcp_cfg_ack_tx 2}
{lcp_cfg_nak_rx 0} {min_setup_time 149} {success_setup_rate 6}
{chap_auth_rsp_tx 0} {term_ack_rx 0} {pads_tx 0} {pap_auth_req_tx 0}
{ipcp_cfg_rej_rx 6} {ipcp_cfg_req_tx 6} {sessions_down 0} {lcp_cfg_rej_rx 0}
{ipcp_cfg_nak_tx 6} {lcp_cfg_req_tx 2} {padi_tx 2} {padt_rx 0}
{lcp_cfg_nak_tx 0} {connect_attempts 2} {avg_setup_time 152} {pado_rx 2}
{connecting 0} {connected 1} {disconnecting 0} {idle 0} {atm_mode
0}}} {procName pppox stats} {handles host2}

To retrieve statistics when mode= is session:

set results_ret3 [pppox stats
    handle=                                           $device
    mode=                                             session\
]

Sample Output:

{status 1} {session {{1 {{term_req_rx 0} {term_ack_tx 0} {ipcp_cfg_rej_tx 0}
{ipv6_global_addr 2001::2} {padr_rx 0} {lcp_cfg_rej_tx 0} {padt_tx 0}
{failed_disconnect 0} {pado_tx 0} {pap_auth_ack_rx 0} {ipcp_cfg_ack_rx 0}
{term_req_tx 0} {connect_success 1} {lcp_cfg_ack_rx 1} {completed 0}
{echo_req_rx 0} {chap_auth_fail_rx 0} {padr_tx 1} {ip_addr 0.0.0.0}
{chap_auth_chal_rx 0} {echo_rsp_tx 0} {setup_time 33} {pads_rx 1}
{chap_auth_succ_rx 0} {ipcp_cfg_req_rx 0} {ipcp_cfg_ack_tx 0} {pap_auth_nak_rx
0} {ipcp_cfg_nak_rx 0} {lcp_cfg_req_rx 1} {failed_connect 0} {lcp_cfg_ack_tx 1}
{ipv6_addr fe80::2} {padi_rx 0} {lcp_cfg_nak_rx 0} {chap_auth_rsp_tx 0}
{term_ack_rx 0} {pads_tx 0} {ipcp_cfg_rej_rx 0} {pap_auth_req_tx 0}
{ipcp_cfg_req_tx 0} {ipcp_cfg_nak_tx 0} {lcp_cfg_rej_rx 0} {lcp_cfg_req_tx 1}
{attempted 1} {padi_tx 1} {lcp_cfg_nak_tx 0} {padt_rx 0} {pado_rx 1}}} {2
{{term_req_rx 0} {term_ack_tx 0} {ipcp_cfg_rej_tx 0} {ipv6_global_addr
2001:0:0:1::3} {padr_rx 0} {lcp_cfg_rej_tx 0} {padt_tx 0} {failed_disconnect 0}
{pado_tx 0} {pap_auth_ack_rx 0} {ipcp_cfg_ack_rx 0} {term_req_tx 0}
{connect_success 1} {lcp_cfg_ack_rx 1} {completed 0} {echo_req_rx 0}
{chap_auth_fail_rx 0} {padr_tx 1} {ip_addr 0.0.0.0} {chap_auth_chal_rx 0}
{echo_rsp_tx 0} {setup_time 23} {pads_rx 1} {chap_auth_succ_rx 0}
{ipcp_cfg_req_rx 0} {ipcp_cfg_ack_tx 0} {pap_auth_nak_rx 0} {ipcp_cfg_nak_rx 0}
{lcp_cfg_req_rx 1} {failed_connect 0} {lcp_cfg_ack_tx 1} {ipv6_addr fe80::3}
{padi_rx 0} {lcp_cfg_nak_rx 0} {chap_auth_rsp_tx 0} {term_ack_rx 0} {pads_tx 0}
{ipcp_cfg_rej_rx 0} {pap_auth_req_tx 0} {ipcp_cfg_req_tx 0} {ipcp_cfg_nak_tx 0}
{lcp_cfg_rej_rx 0} {lcp_cfg_req_tx 1} {attempted 1} {padi_tx 1} {lcp_cfg_nak_tx
0} {padt_rx 0} {pado_rx 1}}}}} {procName pppox stats} {handles host3} {agg
{{term_req_rx 0} {term_ack_tx 0} {ipcp_cfg_rej_tx 0} {ipv6_global_addr {2001::2
2001:0:0:1::3}} {padr_rx 0} {lcp_cfg_rej_tx 0} {padt_tx 0} {failed_disconnect 0}
{pado_tx 0} {pap_auth_ack_rx 0} {ipcp_cfg_ack_rx 0} {term_req_tx 0}
{connect_success 2} {lcp_cfg_ack_rx 2} {completed 0} {echo_req_rx 0}
{chap_auth_fail_rx 0} {padr_tx 2} {ip_addr {0.0.0.0 0.0.0.0}} {chap_auth_chal_rx
0} {echo_rsp_tx 0} {setup_time 56} {pads_rx 2} {chap_auth_succ_rx 0}
{ipcp_cfg_req_rx 0} {ipcp_cfg_ack_tx 0} {pap_auth_nak_rx 0} {ipcp_cfg_nak_rx 0}
{lcp_cfg_req_rx 2} {failed_connect 0} {lcp_cfg_ack_tx 2} {ipv6_addr {fe80::2
fe80::3}} {padi_rx 0} {lcp_cfg_nak_rx 0} {chap_auth_rsp_tx 0} {term_ack_rx 0}
{pads_tx 0} {ipcp_cfg_rej_rx 0} {pap_auth_req_tx 0} {ipcp_cfg_req_tx 0}
{ipcp_cfg_nak_tx 0} {lcp_cfg_rej_rx 0} {lcp_cfg_req_tx 2} {attempted 2} {padi_tx
2} {lcp_cfg_nak_tx 0} {padt_rx 0} {pado_rx 2}}}

End of Procedure Header