PCEP Functions

sth::emulation_pcep_config

Purpose

Spirent Extension (for Spirent HLTAPI only).

This is a Spirent Extension created to configure enable emulated PCEP device, configure, or modify PCEP LSPs or the LSP objects.

Path Computation Element Protocol (PCEP) is used for communications between a Path Computation Client (PCC) and a Path Computation Element (PCE), or between two PCEs. Such interactions include path computation requests and path computation replies, as well as notifications of specific states related to the use of a PCE in the context of Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering.

Stateful PCE is also supported to provide mechanisms to effect LSP state synchronization between PCCs and PCEs, delegation of control over LSPs to PCEs, and PCE control of timing and sequence of path computations within and across PCEP sessions.

See RFC 5440 and PCEP Extensions for Stateful PCE for more information.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_pcep_config
  [-mode {enable|add|modify|delete}  M]

  PCEP Sessions Parameters

  [-custom_dst_port   {true|false}]
  [-ttl <1-255>]
  [-ipv6_traffic_class <0x00-0xFF>]
  [-ip_version {ipv4|ipv6}]
  [-speaker_entity_id <string>]
  [-ipv4_tos <0x00-0xFF>]
  [-is_session_initiator {true|false}]
  [-is_fixed_dst_port {true|false}]
  [-enable_negotiation {true|false}]
  [-open_delay <0-255>]
  [-enable_stateful  {true|false}]
  [-use_custom_message {true|false}]
  [-pcep_capability {lsp_update_capability|lsp_instantiation_capability}]
  [-min_acc_keep_alive_timer <0-255>]
  [-max_acc_keepa_live_timer <0-255>]
  [-min_acc_dead_timer <0-255>]
  [-max_acc_dead_timer <0-255>]
  [-pcep_device_role {PCC|PCE}]
  [-peer_ipv4_addr <a.b.c.d>]
  [-peer_ipv4_addr_step <a.b.c.d>]
  [-peer_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-peer_ipv6_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-pcep_session_ip_address {INTERFACE_IP|ROUTER_ID}]
  [-is_session_initiator {true|false}]
  [-is_fixed_src_port {true|false}]
  [-keep_alive_timer <0 - 65535>]
  [-dead_timer <0 - 65535>]
  [-enable_pc_results {true|false}]
  [-authentication  {NONE|MD5}]
  [-password <string> ]
  [-enable_init_lsp {true|false}]
  [-enable_segment_routing {true|false}]
  [-max_sid_depth < 0-255> ]

  PCEP Global Options

  [-session_out_standing <1-65535>]
  [-session_retry_count <1-65535> ]
  [-session_retry_interval <1-300>]
  [-lsp_per_message  <1-2000>]
  [-tcp_interval <1-1000> ]
  [-packet_align_to_mtu {true|false}]

  PCC LSP Parameters

  [-delegate_with_sync  {true|false}]
  [-path_setup_type {rsvp|sr]
  [-pcc_lspcount <1-65535>]
  [-pcc_characteristic {report|allow_pce_init|enable_synchronization|enable_request}]
  [-enable_delegate {true|false}]
  [-pcc_src_ipv4_addr <a.b.c.d> ]
  [-pcc_src_ipv4_addr_step <a.b.c.d>]
  [-pcc_dst_ipv4_addr <a.b.c.d> ]
  [-pcc_dst_ipv4_addr_step <a.b.c.d>]
  [-pcc_src_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-pcc_src_ipv6_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-pcc_dst_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-pcc_dst_ipv6_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
          PCE LSP Parameters
  [-path_setup_type {rsvp|sr]
  [-pce_lspcount <1-65535>]
  [-pce_symbolic_name <string>]
  [-pce_characteristic {enable_update|enable_init|enable_reply}]
  [-enable_update {true|false}]
  [-pce_src_ipv4_addr <a.b.c.d> ]
  [-pce_src_ipv4_addr_step <a.b.c.d>]
  [-pce_dst_ipv4_addr <a.b.c.d> ]
  [-pce_dst_ipv4_addr_step <a.b.c.d>]
  [-pce_src_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-pce_src_ipv6_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-pce_dst_ipv6_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-pce_dst_ipv6_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-enable_no_path {true|false}]

  PCE SRP Info

  [-srp_auto_gen_id {true|false}]
  [-srp_id <0-4294967295> ]
  [-srp_id_step <0-4294967295>]

  PCC LSP Info

  [-lsp_auto_gen_id {true|false}]
  [-plsp_id <0-1048575>]
  [-plsp_id_step <0-4294967295> ]
  [-aflag {true|false}]
  [-init_lsp_state {down|up|active|goingdown|goingup|reserved1|reserved2|reserved3}]
  [-ipv4_tunnel_addr <a.b.c.d> ]
  [-ipv4_tunnel_addr_step <a.b.c.d> ]
  [-ipv6_tunnel_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-ipv6_tunnel_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-lsp_id <0-65535>]
  [-lsp_id_step <0-65535>]
  [-tunnel_id <0-65535>]
  [-tunnel_id_step <0-65535> ]
  [-ipv4_ex_tunnel_id <a.b.c.d>]
  [-ipv4_ex_tunnel_id_step <a.b.c.d>]
  [-ipv6_ex_tunnel_id <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-ipv6_ex_tunnel_id_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-ipv4_tunnel_end_addr <a.b.c.d> ]
  [-ipv4_tunnel_end_addr_step <a.b.c.d> ]
  [-ipv6_tunnel_end_addr <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-ipv6_tunnel_end_addr_step <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]

  PCE LSP Info

  [-aflag {true|false}]
  [-init_lsp_state {down|up|active|goingdown|goingup|reserved1|reserved2|reserved3}]

  PCC RP Object

  [-rp_pflag {true|false}]
  [-rp_iflag {true|false}]
  [-rp_auto_gen_id {true|false}]
  [-requestid <0-4294967295>]
  [-requestid_step <0-4294967295>]
  [-priority <0-7>]
  [-rp_flags {pcep_rp_flag_bidirectional|pcep_rp_flag_strict_loose|0}]

  PCC Endpoint Object

  [-endpoint_pflag {true|false}]
  [-endpoint_iflag {true|false}]
  [-ni_value {no_satisfying_path|pce_chain_broken}]
  [-nopath_cflag {true|false}]
  [-nopath_included {received|suggested}]
  [-nopath_vector_tlv_flag {none|pce_unavailable|unknown_destination|unknown_source}]

  PCEP Custom TLV

  [-tlv_type  <0-0x3FFF>]
  [-tlv_value   <0x0-0xff>  ]
  [-customtlv_handle  <custom_tlv_handle>]

  PCC/PCE Command Edit Options

  [-included_ero_handle <ero_handle>]
  [-included_rro_handle <rro_handle>]
  [-included_bw_handle <bw_object_handle>]
  [-included_metric_handle <metric_object_handle>]
  [-included_lspa_handle  <lspa_object_handle>]
  [-include_ero {true|false}]
  [-include_rro   {true|false}]
  [-include_bw  {true|false}]
  [-include_metric {true|false}]
  [-include_lspa {true|false}]
  [-include_lsp {true|false}]
  [-include_srp  {true|false}]
  [-include_rp  {true|false}]
  [-include_endpoints  {true|false}]
  [-cmd_use_custom_message {true|false}]
  [-lsp_msg_obj_type {custom|rp|no-path|end-points|bandwidth|metric|ero|rro|lspa|lsp|srp}]
  [-lsp_msg_obj_handle <PCEP custom object handle>]

  PCC ERO Object

  [-ipv4_ero_pflag {true|false}]
  [-ipv4_ero_iflag {true|false}]
  [-ipv6_ero_pflag {true|false}]
  [-ipv6_ero_iflag {true|false}]

  PCC/PCE ERO Update Object

  [-ipv4_update_ero_pflag {true|false}]
  [-ipv4_update_ero_iflag {true|false}]
  [-ipv6_update_ero_pflag {true|false}]
  [-ipv6_update_ero_iflag {true|false}]

  PCC/PCE Explicit Parameters for ERO/ERO Update Object

  [-ipv4_explicit_start_ip_list <a.b.c.d>]
  [-ipv4_explicit_prefix_length <0-255>]
  [-ipv4_explicit_route_type {pcep_ero_route_type_loose|pcep_ero_route_type_strict}]
  [-ipv6_explicit_start_ip_list <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-ipv6_explicit_prefix_length <type:u8> ]
  [-ipv6_explicit_route_type {pcep_ero_route_type_loose|pcep_ero_route_type_strict}]

  SR ERO Subobject

  [-sr_ero_pflag {true|false}]
  [-sr_ero_iflag {true|false}]
  [-sr_route_type {pcep_ero_route_type_loose|pcep_ero_route_type_strict}]
  [-explicit_sid_type {ipv4_node_id|ipv6_node_id|ipv4_adjacency|ipv6_adjacency|
                       unnumbered_adjacency_ipv4_node_ids}]
  [-explicit_mflag {true|false}]
  [-explicit_cflag {true|false}]
  [-explicit_sflag {true|false}]
  [-explicit_fflag {true|false}]
  [-explicit_sid_label  <16-1048575>]
  [-explicit_sid_tc <0-7>]
  [-explicit_sid_sflag {true|false}]
  [-explicit_sid_ttl <0-255> ]
  [-explicit_ipv4_address <a.b.c.d> ]
  [-explicit_ipv6_address <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-explicit_local_ipv4_address <a.b.c.d> ]
  [-explicit_remote_ipv4_address <a.b.c.d> ]
  [-explicit_local_ipv6_address <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-explicit_remote_ipv6_address <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-explicit_local_node_id <0-4294967295> ]
  [-explicit_local_interface_id <0-4294967295>]
  [-explicit_remote_node_id <0-4294967295>]
  [-explicit_remote_interface_id <0-4294967295> ]

  PCC RRO Object

  [-rro_flags {pcep_rro_flag_local_protection_available|
              pcep_rro_flag_local_protection_in_use|
              pcep_rro_flag_bandwidth_protection|
              pcep_rro_flag_node_protection|pcep_rro_flag_node_id}]
  [-ipv4_rro_pflag {true|false}]
  [-ipv6_rro_pflag {true|false}]
  [-ipv4_rro_iflag {true|false}]
  [-ipv6_rro_iflag {true|false}]

  PCC Reported Parameters for RRO Object

  [-ipv4_reported_start_ip_list <a.b.c.d> ]
  [-ipv4_reported_prefix_length <0-255> ]
  [-ipv6_reported_start_ip_list <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh> ]
  [-ipv6_reported_prefix_length <0-255>]

  PCC SR RRO Subobject

  [-sr_rro_pflag {true|false}]
  [-sr_rro_iflag {true|false}]
  [-reported_sid_type {ipv4_node_id|ipv6_node_id|ipv4_adjacency|
                       ipv6_adjacency|unnumbered_adjacency_ipv4_node_ids}]
  [-reported_mflag {true|false}]
  [-reported_cflag {true|false}]
  [-reported_sflag {true|false}]
  [-reported_fflag {true|false}]
  [-reported_sid_label <16-1048575>]
  [-reported_sid_tc <0-7> ]
  [-reported_sid_s_flag {true|false}]
  [-reported_sid_ttl <0-255> ]
  [-reported_ipv4_address <a.b.c.d>]
  [-reported_ipv6_address <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-reported_local_ipv4_address <a.b.c.d> ]
  [-reported_remote_ipv4_address <a.b.c.d> ]
  [-reported_local_ipv6_address <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-reported_remote_ipv6_address <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>]
  [-reported_local_node_id <0-4294967295> ]
  [-reported_local_interface_id <0-4294967295> ]
  [-reported_remote_node_id <0-4294967295>]
  [-reported_remote_interface_id <0-4294967295> ]

  PCC BW Object

  [-bw_pflag {true|false}]
  [-bw_iflag {true|false}]
  [-bw_bandwidth <0-4294967295> ]

  PCE BW Object

  [-bw_update_pflag {true|false}]
  [-bw_update_iflag {true|false}]
  [-bw_update_bandwidth <0-4294967295> ]

  PCC/PCE Metric Object

  [-metric_cflag {true|false}]
  [-metric_bflag {true|false}]
  [-metric_type {igp_metric|te_metric|hop_counts}]
  [-metric_value <0-4294967295> ]

  [-metriclist_pflag {true|false}]
  [-metriclist_iflag {true|false}]
  [-metriclist_update_pflag {true|false}]
  [-metriclist_update_iflag {true|false}]

  LSPA Object

  [-lspa_pflag {true|false}]
  [-lspa_iflag {true|false}]
  [-lspa_exclude_any <0-4294967295> ]
  [-lspa_include_any <0-4294967295> ]
  [-lspa_include_all <0-4294967295> ]
  [-lspa_setup_prio  <0-7>]
  [-lspa_holding_prio <0-7>]
  [-lspa_lflag {true|false}]
  [-lspa_affinities_flag {true|false}]

  LSPA Update Object

  [-lspa_update_pflag {true|false}]
  [-lspa_update_iflag {true|false}]
  [-lspa_update_exclude_any <0-4294967295> ]
  [-lspa_update_include_any <0-4294967295> ]
  [-lspa_update_include_all <0-4294967295> ]
  [-lspa_update_setup_prio  <0-7> ]
  [_lspa_update_holding_prio <0-7>]
  [-lspa_update_lflag {true|false}]
  [-lspa_update_affinities_flag {true|false}]

  PCEP Custom Object

  [-object_length <0-65535>]
  [-custom_pflag {true|false}]
  [-custom_iflag  {true|false}]
  [-object_class  <0-255>]
  [-object_data  <0-255>]
  [-reserved_flags <NUMERIC>]
  [-object_class_selector {custom|open|rp|no-path|end-points|bandwidth|
                     metric|ero|rro|lspa|iro|svec|notification|error|
                     load-balancing|close|lsp|srp}]
  [-auto_cal_object_length {true|false}]
  [-custom_obj_type <0-15>]

  PCEP Custom Message

  [-open_msg_obj_type  {custom|open}]
  [-open_msg_obj_handle <PCEP custom object handle> ]
  [-keepalive_msg_obj_type  {custom|open}]
  [-keepalive_msg_obj_handle <PCEP custom object handle>]

  PCEP Custom PDU

   [-custom_pdu <0x0-0xff>]

Arguments

-modify

Specifies the action to perform on the test port. This argument is mandatory. Possible values are:

create      Creates PCC/PCE devices and the related LSPs

modify      Modifies the PECP device or LSP objects configurations based
            on the handles provided. See Return Values for more
            information on the handles returned.

delete      Deletes the specified LSP

PCEP Sessions Parameters

-pcep_device_role

Specifies the role of the device to create. Possible values are PCC and PCE:

PCE     Path Computation Element, an entity (component, application,
        or network node) that is capable of computing a network
        path or route based on a network graph and applying
        computational constraints.

PCC     Path Computation Client, any client application requesting
        a path computation to be performed by a Path Computation
        Element.

The default value is PCE.

-ttl

Specifies the value for the Time-To-Live field in the IP header. Possible values range from 1 to 255. The default value is 64.

-ipv6_traffic_class

Specifies the traffic class value in hex. The default value is 0. This argument is valid when -ip_version is set to ipv6.

-ip_version

Specifies the IP version. Possible values are ipv4 and ipv6. The default value is ipv4.

-speaker_entity_id

Specifies the speaker entity ID used to maintain synchronization for a PCEP session. The value must be a string of 0 to 32 characters. The default is “”(empty string).

-ipv4_tos

Specifies the ToS value for IPv4 in hex. Possible values range from 0x00 to 0xFF. The default value is 0xC0.

-is_session_initiator

Specifies whether the emulated PCE attempts to initiate the session. Possible values are true and false. If it is set to true, the emulated PCE will initiate the session. When both sides try to initiate a session, the one with the higher IP address takes priority. The default value is false.

-custom_dst_port

Specifies the destination TCP port when -is_fixed_dst_port is set to false. The default value is 4189.

-is_fixed_dst_port

Determines whether to use the registered TCP port 4189 for PCEP sessions. Possible values are true and false. If it is set to true, Spirent HLTAPI will use the registered TCP port 4189 for PCEP sessions. The default value is false.

-enable_negotiation

Determines whether to negotiate values for KEEPALIVE timers and dead timers when the PCEP peer includes values that are out of the configured range. Possible values are true and false. If it is set to true, Spirent HLTAPI will negotiate values for the two timers. The default value is true.

-open_delay

Number of seconds to wait before sending OPEN messages for a session. Possible values range from 0 to 255. The default value is 0.

-enable_stateful

Determines whether to to include a Stateful PCE Capability TLV in the OPEN message. Possible values are true and false. If it is set to true, the Stateful PCE Capability TLV will be included in the OPEN message. The default value is true.

-use_custom_message

Enables/disables PCEP custom messages. Possible values are true (enable) and false (disable). The default value is false.

-pcep_capability

Specifies the Stateful PCE Capability values. This argument is available when -enable_stateful is true. Use | to combine multiple values if you want to specify more than one flag. Possible values are described below:

LSP_UPDATE_CAPABILITY           When specified, it indicats that the
                                PCC allows modification of LSP
                                parameters, or the PCE is capable
                                of updating LSP parameters

LSP_INSTANTIATION_CAPABILITY    Enables LSP with initilization
                                capability

The default value is LSP_UPDATE_CAPABILITY.

-min_acc_keep_alive_timer

Specifies the minimum number of seconds for the KEEPALIVE timer. Possible values range from 0 to 255. The default value is 0.

-max_acc_keepa_live_timer

Specifies the maximum number of seconds for the KEEPALIVE timer. Possible values range from 0 to 255. The default value is 255.

-min_acc_dead_timer

Specifies the minimum number of seconds for the dead timer. Possible values range from 0 to 255. The default value is 0.

-max_acc_dead_timer

Specifies the maximum number of seconds for the dead timer. Possible values range from 0 to 255. The default value is 255.

-peer_ipv4_addr

IPv4 address of the PCE peer for the session

-peer_ipv4_addr_step

Specifies the step value to generate subsequent IPv4 addresses for PCE devices on the same port. The value must be in IPv4 format. The default is 0.0.0.1.

-peer_ipv6_addr

IPv6 address of the PCE peer for the session

-peer_ipv6_addr_step

Specifies the step value to generate subsequent IPv6 addresses for PCE devices on the same port. The value must be in IPv6 format. The default is 0000::1.

-pcep_session_ip_address

Specifies the source of the PCE session address. Possible values are INTERFACE_IP and ROUTER_ID. The default is INTERFACE_IP.

-is_session_initiator

Determines whether the emulated PCE will attempt to initiate the session. Possible values are:

true    Emulated PCE initiates the session
false    Emulated PCE listens for the peer to initiate the session

When both sides initiate a session, the one with the higher IP address takes priority. The default value is true.

-is_fixed_src_port

Determines whether to use the registered TCP port 4189 for PCEP sessions. Possible values are true and false. If it is set to true, Spirent HLTAPI will use the registered TCP port 4189 for PCEP sessions. The default value is false.

-keep_alive_timer

Number of seconds between transmissions of KEEPALIVE messages by the emulated PCE, in the absence of transmission of any other PCE packets. Possible values range from 0 to 65535. The default value is 30.

-dead_timer

Number of seconds without traffic the peer should wait before declaring the session dead. Possible values range from 0 to 65535. The default value is 120.

-enable_pc_results

Enables/disables displaying the details of the sending LSPs. Possible values are true (enable) and false (disable). The default value is false.

-authentication

Specifies the type of authentication to be used. Possible values are:

NONE   No authentication
MD5    Use the MD5 key ID for authentication

The default value is NONE.

-password

Specifies the password used in the authentication. The value must be in alphanumeric format. This argument is only valid when -authentication is set to MD5. The default value is Spirent.

-enable_init_lsp

Enables/disables I-flag in the Stateful Capability TLV. Possible values are true (enable) and false (disable). The default value is true.

-enable_segment_routing

Enables/disables the Segment Routing extension to PCEP. If it is set to true, the SR PCE Capability TLV is included in the OPEN message and the PATH-SETUP-TYPE TLV is included in the Stateful PCE Request Parameters (SRP) object.

-max_sid_depth

Maximum number of nested segment IDs. This argument is only valid when -enable_segment_routing is set to true. Possible values range from 0 to 255. The default value is 0. When this value is changed, upon applying, the PCEP session is closed and re-established.

PCEP Global Options

-session_out_standing

Maximum number of sessions simultaneously started by the Spirent TestCenter port. Possible values range from 1 to 65535. The default value is 100.

-session_retry_count

Maximum number of times the system tries to establish a TCP connection using the PCEP-registered TCP port before going back to the IDLE state. Possible values range from 1 to 65535. The default value is 100.

-session_retry_interval

Number of seconds to wait before resending a TCP message. Possible values range from 1 to 300. The default value is 5.

-lsp_per_message

Maximum number of Label Switched Paths (LSPs) in one TCP message. Possible values range from 1 to 2000. The default value is 100.

-tcp_interval

Number of seconds to wait before sending another LSP TCP message. Possible values range from 1 to 1000. The default value is 500.

-packet_align_to_mtu

Determines whether to combine as many LSPs as will fit in the MTU. Possible values are true and false. The default value is false.

The following examples configure and enable PCEP (PCE and PCC) on the created raw devices:

set dev_handle1 [keylget device_ret1 handle]
set dev_handle2 [keylget device_ret2 handle]

set device_ret_pcep1 [::sth::emulation_pcep_config \
            -mode                         create \
            -handle                       $dev_handle1 \
            -pcep_device_role             PCE \
            -state                        NONE \
            -pcep_mode                    ACTIVE \
            -ip_version                   IPV4 \
            -peer_ipv4_addr               null \
            -peer_ipv4_addr_step          0.0.0.1 \
            -peer_ipv6_addr               null \
            -peer_ipv6_addr_step          0000::1 \
            -pcep_session_ip_address      INTERFACE_IP \
            -is_session_initiator         true \
            -is_fixed_src_port            false \
            -keep_alive_timer             40 \
            -dead_timer                   150 \
            -enable_pc_results            false \
            -authentication               MD5 \
            -password                     Spirent \
            -enable_init_lsp              true \
            -enable_segment_routing       true \
            -session_out_standing         500 \
            -session_retry_count          50 \
            -session_retry_interval       50 \
            -lsp_per_message              500 \
            -tcp_interval                 600 \
            -packet_align_to_mtu          true \
          ]

Sample Output:

# This will return a PCE handle.
{pcep_handle pcepprotocolconfig1} {status 1}
       keylget device_ret_pcep1 pcep_handle pcep_hnd1

To modify the PCE configurations:

set device_ret_pcep1 [::sth::emulation_pcep_config \
          -mode                         modify \
          -handle                        $pcep_hnd1 \
          -pcep_session_ip_address       ROUTER_ID \
          -keep_alive_timer              40 \
          -dead_timer                    150 \
          -enable_pc_results             false \
          -authentication                NONE \
          -enable_init_lsp               false \
          -enable_segment_routing        false\
          -session_out_standing          500 \
          -session_retry_count           50 \
          -session_retry_interval        50 \
          -lsp_per_message               500 \
          -tcp_interval                 600 \
          -packet_align_to_mtu          false \
          ]

To enable the PCC device:

set device_ret_pcep2 [::sth::emulation_pcep_config \
          -mode                         create \
          -handle                        $dev_handle2 \
          -pcep_device_role              PCC \
          -state                         NONE \
          -pcep_mode                     ACTIVE \
          -ip_version                    IPV4 \
          -peer_ipv4_addr                null \
          -peer_ipv4_addr_step           0.0.0.1 \
          -peer_ipv6_addr                null \
          -peer_ipv6_addr_step           0000::1 \
          -pcep_session_ip_address       INTERFACE_IP \
          -is_session_initiator         true \
          -is_fixed_src_port             false \
          -keep_alive_timer              30 \
          -dead_timer                    130 \
          -enable_pc_results             false \
          -authentication                MD5 \
          -password                      Spirent \
          -sync_timer                    60 \
          -enable_init_lsp               true \
          -enable_segment_routing        true \
          -max_sid_depth                 1 \
          -session_out_standing          400 \
          -session_retry_count           20 \
          -session_retry_interval        20 \
          -lsp_per_message               200 \
          -tcp_interval                 300 \
          -packet_align_to_mtu          true \
          ]

Sample Output:

# This will return a PCC handle (pcep_handle).
{pcep_handle pcepprotocolconfig2} {status 1}

keylget device_ret_pcep2 pcep_handle pcep_hnd2

PCC LSP Parameters (Use this group of arguments to configure PCC Label Switched Paths (LSPs). Multiple blocks of LSPs can be configured in the PCC LSP configuration.)

-delegate_with_sync

When enabled, Spirent HLTAPI will automatically delegate and synchronize control of the LSP to the PCE when the related session is up. Possible values are true (enable) and false (disable). The default value is false. This argument is valid when -enable_delegate is true and -pcc_characteristic is ENABLE_SYNCHRONIZATION.

-path_setup_type

Specifies the path setup type. Possible values are:

rsvp        RSVP
sr          Segment Routing

The default value is rsvp.

-pcc_lspcount

Number of PCC LSPs to create. Possible values range from 1 to 65535. The default value is 1.

-pcc_symbolic_name

Specifies a symbolic name or a wildcard pattern for creating a list of symbolic names. The value must be a string of 1 to 32 characters. The default value is PLSP_@b.

-pcc_characteristic

Specifies the method to initiate a PCC LSP. Possible values are described below:

Report                  The LSPs are reserved at startup but are
                        not involved in synchronization

ALLOW_PCE_INIT          The LSPs are not reserved, but will
                        wait for the PCE to initiate them at
                        startup

ENABLE_SYNCHRONIZATION  The LSPs are reserved at startup and
                        participate in synchronization after the
                        session is established

ENABLE_REQUEST          The LSPs are not reserved at startup, but
                        the PCE participates in synchronization
                        after the session is established and can
                        delegate LSPs via the report message

The default value is Report.

-enable_delegate

Determines whether to automatically delegate control of the LSP to the PCE when the related session is up. This argument is available when -pcc_characteristic is set to Report, ENABLE_SYNCHRONIZATION, or ENABLE_REQUEST. Possible values are true and false. The default is true.

-pcc_src_ipv4_addr

Specifies the starting IPv4 source address for the PCC. The default value is 192.85.1.1.

-pcc_src_ipv4_addr_step

Specifies the step value to create additional IPv4 source addresses for PCCs. The value must be in IPv4 format. The default is 0.0.0.1.

-pcc_dst_ipv4_addr

Specifies the starting IPv4 destination address for the PCC. The default value is 193.85.1.1.

-pcc_dst_ipv4_addr_step

Specifies the step value to create additional IPv4 destination addresses for PCCs. The value must be in IPv4 format. The default is 0.0.0.1.

-pcc_src_ipv6_addr

Specifies the starting IPv6 source address for the PCC. The default value is 2000::1.

-pcc_src_ipv6_addr_step

Specifies the step value to create additional IPv6 source addresses for PCCs. The value must be in IPv6 format. The default is ::1.

-pcc_dst_ipv6_addr

Specifies the starting IPv6 destination address for the PCC. The default value is 2000::1.

-pcc_dst_ipv6_addr_step

Specifies the step value to create additional IPv6 destination addresses for PCCs. The value must be in IPv6 format. The default is ::1.

PCE LSP Parameters (Use this group of arguments to configure PCE LSPs. Multiple blocks of LSPs can be configured in the PCE LSP configuration.)

-path_setup_type

Specifies the path setup type. Possible values are:

rsvp        RSVP
sr          Segment Routing

The default value is rsvp.

-pce_lspcount

Number of PCE LSPs to create. Possible values range from 1 to 65535. The default value is 1.

-pce_symbolic_name

Specifies a symbolic name or a wildcard pattern to create a list of symbolic names for PCEs. The value must be a string of 1 to 32 characters. The default value is PLSP_@s.

-pce_characteristic

Specifies the method to initiate a PCC LSP. Possible values are described below:

ENABLE_UPDATE       LSPs are not reserved at startup, but wait for
                    the PCC to delegate them

ENABLE_INIT         LSPs are not reserved. After a session is
                    established and the synchronization completes,
                    the PCE can initiate LSPs by issuing a
                    PCInitiate message.

ENABLE_REPL         LSPs are not reserved. After a session is
                    established and the synchronization completes,
                    the PCC can request LSPs.

The default value is ENABLE_UPDATE.

-enable_update

Determines whether to automatically update control of the LSP to the PCE when the related session is up. Possible values are true and false. The default is true.

-pce_src_ipv4_addr

Specifies the starting IPv4 source address for the PCE. The default value is 192.85.1.1.

-pce_src_ipv4_addr_step

Specifies the step value to create additional IPv4 source addresses for PCEs. The value must be in IPv4 format. The default is 0.0.0.1.

-pce_dst_ipv4_addr

Specifies the starting IPv4 destination address for the PCE. The default value is 193.85.1.1.

-pce_dst_ipv4_addr_step

Specifies the step value to create additional IPv4 destination addresses for PCEs. The value must be in IPv4 format. The default is 0.0.0.1.

-pce_src_ipv6_addr

Specifies the starting IPv6 source address for the PCE. The default value is 2000::1.

-pce_src_ipv6_addr_step

Specifies the step value to create additional IPv6 source addresses for PCEs. The value must be in IPv6 format. The default is ::1.

-pce_dst_ipv6_addr

Specifies the starting IPv6 destination address for the PCE. The default value is 2001::1.

-pce_dst_ipv6_addr_step

Specifies the step value to create additional IPv6 destination addresses for PCEs. The value must be in IPv6 format. The default is ::1.

-enable_no_path

Determines whether to specify possible reasons for why no path could be found. This argument is available when -pce_characteristic is set to ENABLE_REPLY. Possible values are true and false. The default is false.

The following example adds an LSP on the PCE device specified by the PCE handle:

set pce_lsp [::sth::emulation_pcep_config \
          -mode                         create \
          -handle                     $pcep_hnd1 \   # PCE handle
          -pce_lspcount               1  \
          -pce_symbolic_name          PLSP_@b  \
          -pce_characteristic         ENABLE_REPLY  \
          -enable_update              true  \
          -pce_src_ipv4_addr          1.1.1.1  \
          -pce_src_ipv4_addr_step     0.0.0.1  \
          -pce_dst_ipv4_addr          2.2.2.2  \
          -pce_dst_ipv4_addr_step     0.0.0.1  \
          -enable_no_path             false  \
          ]

Sample Output:

# This will return the PCE LSP handle, Stateful PCE Request Parameters
(SRP) handle, and Command Edit handles.

{srp_hnd pcepsrpobject1} {pce_lsp_hnd pcelspconfig1} {startcommand_hnd
{startdeviceupdatecommandconfig1 startdevicereplycommandconfig1}} {status 1}

keylget pce_lsp pce_lsp_hnd lsp_handle_pce

The following example modifies the LSP configuration specified by lsp_handle_pce:

set pce_lsp [::sth::emulation_pcep_config \
        -mode                        modify \
        -handle                     $lsp_handle_pce \
        -pce_lspcount               1  \
        -pce_symbolic_name          PLSP_@b22  \
        -enable_update              false  \
        -pce_src_ipv4_addr          4.4.4.4  \
        -pce_src_ipv4_addr_step     0.0.0.1  \
        -pce_dst_ipv4_addr          3.3.3.3  \
        -pce_dst_ipv4_addr_step     0.0.0.1  \
        -pce_dst_ipv6_addr_step     ::1  \
        -enable_no_path             true  \
        ]

The following example adds an LSP on the PCC device specified by pcep_hnd1:

set pcc_lsp [::sth::emulation_pcep_config \
        -mode                         create \
        -handle                     $pcep_hnd1 \ #PCC handle
        -pcep_device_role            PCC \
        -pcc_lspcount                1 \
        -pcc_symbolic_name           PLSP_@b \
        -pcc_characteristic          ENABLE_REQUEST \
        -enable_delegate             true \
        -pcc_src_ipv4_addr           1.1.1.1 \
        -pcc_src_ipv4_addr_step      0.0.0.1 \
        -pcc_dst_ipv4_addr           2.2.2.2 \
        -pcc_dst_ipv4_addr_step      0.0.0.1 \
        -pcc_src_ipv6_addr           2000::1 \
        -pcc_src_ipv6_addr_step      ::1 \
        -pcc_dst_ipv6_addr           2001::1 \
        -pcc_dst_ipv6_addr_step      ::1 \
        ]

Sample Output:

# This will return PCC related object handles and startcommand_hnd handles.
{startcommand_hnd {startdevicerequestcommandconfig1
startdevicedelegatecommandconfig1}} {rp_hnd pceprpobject1} {lsp_hnd
pceplspobject1} {pcc_lsp_hnd pcclspconfig1} {status 1}

PCE SRP Info (Use this group of arguments to configure SRP)

-srp_auto_gen_id

Determines whether to configure SRP IDs automatically. Possible values are true and false. If it is set to false, you must configure SRP IDs manually. The default is true.

-srp_id

Specifies the starting SRP ID. This argument is available when -srp_auto_gen_id is set to false. The default value is 1.

-srp_id_step

Specifies the step value to generate subsequent SRP IDs. This argument is available when -srp_auto_gen_id is false. The default value is 1.

The following example configures PCE SRP:

set pce_srp_info [::sth::emulation_pcep_config \
                -mode                create \
                -handle             $lsp_handle_pce \
                -srp_auto_gen_id    false \
                -srp_id             10 \
                -srp_id_step        2 \
        ]

Sample Output:

{srp_hnd pcepsrpobject1} {status 1}

PCC LSP Info (Use this group of arguments to configure the LSP object and the LSP Identifiers TLV.)

-lsp_auto_gen_id

Determines whether to configure PCEP-specific identifiers for the LSP (PLSP-IDs) automatically. Possible values are true and false. If it is set to false, you must configure PLSP-IDs manually. The default is true.

-plsp_id

Specifies the starting PLSP-ID. This argument is available when -srp_auto_gen_id is set to false. Possible values range from 0 to 1048575. The default value is 1.

-plsp_id_step

The step value to generate subsequent PLSP-IDs. This argument is available when -lsp_auto_gen_id is false. Possible values range from 0 to 4294967295. The default value is 1.

-aflag

Determines whether to mark the LSP as an administrative LSP. Possible values are true and false. If it is set to true, the LSP will be marked as administrative.

-init_lsp_state

Initial state of the LSP. Possible values are described below:

DOWN        LSP is down
UP          LSP is up
ACTIVE      LSP is active
GOINGDOWN   LSP is in the process of going down
GOINGUP     LSP is in the process of going up
RESERVED1   Reserved state value
RESERVED2   Reserved state value
RESERVED3   Reserved state value

The default value is GOINGUP.

-ipv4_tunnel_addr

IPv4 source address for the tunnel. The default value is 192.85.1.1.

-ipv4_tunnel_addr_step

IPv4 step value to create the next IP tunnel sender address. The default value is 0.0.0.1.

-ipv6_tunnel_addr

IPv6 source address for the tunnel. The default value is 2000::1.

-ipv6_tunnel_addr_step

Step value to create the next IPv6 tunnel sender address. The value must be in IPv6 format. The default value is ::1.

-lsp_id

ID of the first LSP. Possible values range from 0 to 65535. The default value is 1.

-lsp_id_step

Step value to create the next LSP ID. Possible values range from 0 to 65535. The default value is 1.

-tunnel_id

ID of the first tunnel. Possible values range from 0 to 65535. The default value is 1.

-tunnel_id_step

Step value to create the next tunnel ID. Possible values range from 0 to 65535. The default value is 1.

-ipv4_ex_tunnel_id

IPv4 extended tunnel ID. The value must be in IPv4 format. The default value is 10.0.0.1.

-ipv4_ex_tunnel_id_step

Step value to create the next extended tunnel ID. The value must be in IPv4 format. The default value is 0.0.0.1.

-ipv6_ex_tunnel_id

Ipv6 extended tunnel ID. The value must be in IPv6 format. The default value is 2000:1::1.

-ipv6_ex_tunnel_id_step

Step value to create the next extended tunnel ID. The value must be in IPv6 format. The default value is ::1.

-ipv4_tunnel_end_addr

IPv4 destination address for the tunnel endpoint. The default value is 193.85.1.1.

-ipv4_tunnel_end_addr_step

Step value to create the next IP tunnel endpoint address. The value must be in IPv4 format. The default value is 0.0.0.1.

-ipv6_tunnel_end_addr

Ipv6 destination address for the tunnel endpoint. The value must be in IPv6 format. The default value is 2001::1.

-ipv6_tunnel_end_addr_step

Step value to create the next IPv6 tunnel endpoint address. The value must be in IPv6 format. The default value is ::1.

The following example configures the LSP object on the specified LSP handle:

set pcc_lsp_info [::sth::emulation_pcep_config \
           -mode                           create \
           -handle                         $lsp_handle_pcc \
           -lsp_auto_gen_id                true \
           -plsp_id                        1 \
           -plsp_id_step                   1 \
           -aflag                          true \
           -init_lsp_state                 UP \
           -ipv4_tunnel_addr               1.1.1.1 \
           -ipv4_tunnel_addr_step          0.0.0.1 \
           -ipv6_tunnel_addr               2000::1 \
           -ipv6_tunnel_addr_step          ::1 \
           -lsp_id                         1 \
           -lsp_id_step                    1 \
           -tunnel_id                      1 \
           -tunnel_id_step                 1 \
           -ipv4_ex_tunnel_id              10.0.0.1 \
           -ipv4_ex_tunnel_id_step         0.0.0.1 \
           -ipv4_tunnel_end_addr           2.2.2.2 \
           -ipv4_tunnel_end_addr_step      0.0.0.1 \
           ]

Sample Output:

{lsp_hnd pceplspobject1} {status 1}

PCE LSP Info

-aflag

Determines whether to mark the LSP as an administrative LSP. Possible values are true and false. If it is set to true, the LSP will be marked as administrative.

-init_lsp_state

Initial state of the LSP. Possible values are described below:

DOWN        LSP is down
UP          LSP is up
ACTIVE      LSP is active
GOINGDOWN   LSP is in the process of going down
GOINGUP     LSP is in the process of going up
RESERVED1   Reserved state value
RESERVED2   Reserved state value
RESERVED3   Reserved state value

The default value is GOINGUP.

PCC RP Object (Use this group of arguments to configure the Request Parameters object of PCC. You must set -pcc_characteristic to ENABLE_REQUEST.)

-rp_pflag

Specifies the value of the Processing-Rule (P) flag for the RP object. The P flag allows a PCC to specify in a PC Request (PCReq) message sent to a PCE whether the object must be taken into account by the PCE during path computation or is just optional. Possible values are true and false. The default value is true.

-rp_iflag

Specifies the value of the Ignore flag for the RP object. The I flag is used by a PCE in a PC Reply (PCRep) message to indicate to a PCC whether an optional object was processed. Possible values are true and false. The default value is false.

-rp_auto_gen_id

Determines whether to automatically configure the RP ID. Possible values are true and false. If it is set to false, you must configure RP IDs manually. The default value is true.

-requestid

Specifies the starting RP ID. This argument is available when -rp_auto_gen_id is set to false. The default value is 1.

-requestid_step

Specifies the step value to generate subsequent request IDs. The default value is 1.

-priority

Specifies the value of the Priority flag for the RP object. This flag is used by the requesting PCC to specify to the PCE the request’s priority. Possible values range from 0 to 7. The default value is 0.

-rp_flags

Specifies flag options for the RP object. Use | to combine multiple values if you want to specify more than one flag. Possible values are described below:

PCEP_RP_FLAG_BIDIRECTIONAL      Bi-directional (B) flag

PCEP_RP_FLAG_STRICT_LOOSE       Strict/Loose (O) flag

0                               No flag specified

The default value is 0.

PCC End-Points Object (Use this group of arguments to configure the PCC End-Points object. You must set -pcc_characteristic to ENABLE_REQUEST).

-endpoint_pflag

Specifies the value of the Processing-Rule flag for the End-Points object. Possible values are true and false. The default value is true.

-endpoint_iflag

Specifies the value of the Ignore flag for the End-Points object. Possible values are true and false. The default value is false.

PCE No-Path Object (Use this group of arguments to configure the PCE No-Path object. You must set -pcc_characteristic to ENABLE_REPLY).

-ni_value

Specifies the Nature of Issue (NI) field for the No-Path object. Possible values are:

NO_SATISFYING_PATH   No path satisfying the set of constraints
                     could be found

PCE_CHAIN_BROKEN     PCE chain broken

The default value is NO_SATISFYING_PATH.

-nopath_cflag

Specifies the Constraints (C) flag of the No-Path object. Possible values are true and false. When set to true, the PCE indicates the set of unsatisfied constraints (reasons why a path could not be found) in the PCRep message by including the relevant PCEP objects. When set to false, no failing constraints are specified. The default value is false.

-nopath_included

Specifies the method to include the unsatisfied PCEP objects. This argument is only valid when -nopath_cflag is set to true. Possible values are RECEIVED and SUGGESTED. The default value is RECEIVED.

-nopath_vector_tlv_flag

Specifies the value of the No-Path-Vector TLV for the No-Path object. Possible values are described below:

PCE_UNAVILABLE           PCE currently unavailable
UNKNOWN_DESTINATION      Unknown destination
UNKNOWN_SOURCE           Unknown source
NONE                     None

The default value is NONE.

PCC ERO Object (Use this group of arguments to configure the Explicit Route Object.)

-ipv4_ero_pflag

Specifies the value of the Processing-Rule flag for the IPv4 ERO object. Possible values are true and false. The default value is true.

-ipv4_ero_iflag

Specifies the value of the Ignore flag for the IPv4 ERO object. Possible values are true and false. The default value is false.

-ipv6_ero_pflag

Specifies the value of the Processing-Rule flag for the IPv6 ERO object. Possible values are true and false. The default value is true.

-ipv6_ero_iflag

Specifies the value of the Ignore flag for the IPv6 ERO object. Possible values are true and false. The default value is false.

PCC/PCE ERO Update Object (Use this group of arguments to configure the ERO update object.)

-ipv4_update_ero_pflag

Specifies the value of the Processing-Rule flag for the IPv4 ERO update object. Possible values are true and false. The default value is true.

-ipv4_update_ero_iflag

Specifies the value of the Ignore flag for the IPv4 ERO update object. Possible values are true and false. The default value is true.

-ipv6_update_ero_pflag

Specifies the value of the Processing-Rule flag for the IPv6 ERO update object. Possible values are true and false. The default value is true.

-ipv6_update_ero_iflag

Specifies the value of the Ignore flag for the IPv6 ERO object. Possible values are true and false. The default value is false.

PCC/PCE ERO Explicit Parameters (Use this group of arguments to configure the explicit parameters of ERO/ERO update object.)

-ipv4_explicit_start_ip_list

Specifies the IP address of the next hop for the IPv4 ERO/ERO update object. The value must be in IPv4 format. The default value is 192.0.1.0.

-ipv4_explicit_prefix_length

Specifies the prefix length of the IP routes in the block of IPv4 ERO/ERO update objects. Possible values range from 0 to 255. The default value is 24.

-ipv4_explicit_route_type

Specifies the type of explicit routes to be included in the IPv4 ERO/ERO update object. Possible values are:

PCEP_ERO_ROUTE_TYPE_LOOSE
Two nodes need not be adjacent. IGP can be used to determine the best path to the loose hop.
PCEP_ERO_ROUTE_TYPE_STRICT
Two nodes must be adjacent to one another with no intermediate hops separating them.

The default value is PCEP_ERO_ROUTE_TYPE_STRICT.

-ipv6_explicit_start_ip_list

Specifies the IP address of the next hop for the IPv6 ERO/ERO update object. The value must be in IPv6 format. The default value is 2000::1.

-ipv6_explicit_prefix_length

Specifies the prefix length of the IP routes in the block of IPv6 ERO/ERO update objects. The default value is 64.

-ipv6_explicit_route_type

Specifies the type of explicit routes to be included in the IPv6 ERO/ERO update object. Possible values are:

PCEP_ERO_ROUTE_TYPE_LOOSE   Two nodes need not be adjacent.
                            IGP can be used to determine the best
                            path to the loose hop.

PCEP_ERO_ROUTE_TYPE_STRICT  Two nodes must be adjacent to one
                            another with no intermediate hops
                            separating them.

The default value is PCEP_ERO_ROUTE_TYPE_STRICT.

SR ERO Subobject (Use this group of arguments to configure the Segment Routing ERO object, which is a subobject of ERO.)

-sr_ero_pflag

Specifies the value of the Processing-Rule flag for the SR ERO object. Possible values are true and false. The default value is true.

-sr_ero_iflag

Specifies the value of the Ignore flag for the SR ERO object. Possible values are true and false. The default value is false.

-sr_route_type

Specifies the type of explicit routes to be included in the SR ERO object. Possible values are:

PCEP_ERO_ROUTE_TYPE_LOOSE
Two nodes need not be adjacent. IGP can be used to determine the best path to the loose hop.
PCEP_ERO_ROUTE_TYPE_STRICT
Two nodes must be adjacent to one another with no intermediate hops separating them.

The default value is PCEP_ERO_ROUTE_TYPE_STRICT.

-explicit_sid_type

Specifies the type of the segment ID. Possible values are described below:

IPV4_NODE_ID       IPv4 Network Access Identifier (NAI) node ID
IPV6_NODE_ID       IPv6 NAI node ID
IPV4_ADJACENCY     NAI local IPv4 address
IPV6_ADJACENCY     NAI local IPv6 address
UNNUMBERED_ADJACENCY_IPV4_NODE_IDS  NAI local node ID

The default value is IPV4_NODE_ID.

-explicit_mflag

Specifies the M bit to indicate whether the Segment ID (SID) is an MPLS label stack entry with only the label value specified. Possible values are true and false. The default value is true.

-explicit_cflag

Specifies the C bit in conjunction with the M flag to indicate whether the SID is an MPLS label stack entry with all the fields specified. Possible values are true and false. The default value is false.

-explicit_sflag

Specifies the S bit to indicate whether the SID value in the subobject body is null and whether the PCC is responsible for choosing the SID value. Possible values are true and false. The default value is false.

-explicit_fflag

Specifies the F bit for the SR ERO object. Possible values are true and false. The default value is false.

-explicit_sid_label

Specifies the segment ID for the SR ERO object. This argument is valid when -explicit_sflag is set to false. Possible values range from 16 to 1048575. The default value is 16.

-explicit_sid_tc

Specifies the value of the traffic class field for the SR ERO object. This argument is valid when -explicit_sflag is false. Possible values range from 0 to 7. The default value is 0.

-explicit_sid_sflag

Specifies the value of the MPLS Bottom Of Stack (BOS) flag to indicate whether the label is the last in the stack. This argument is valid when -explicit_sflag is false. Possible values are true and false. The default value is false.

-explicit_sid_ttl

Specifies the value of the TTL field for the SR ERO object. Possible values range from 0 to 255. The default value is 255.

-explicit_ipv4_address

Specifies the value of the IPv4 NAI node ID for the SR ERO object. This argument is valid when -explicit_sid_type is set to IPV4_NODE_ID. The value must be in IPv4 format. The default value is 192.85.1.1.

-explicit_ipv6_address

Specifies the value of the IPv6 NAI node ID for the SR ERO object. This argument is valid when -explicit_sid_type is set to IPV6_NODE_ID. The value must be in IPv6 format. The default value is 2000::1.

-explicit_local_ipv4_address

Specifies the value of the NAI local IPv4 address for the SR ERO object. This argument is valid when -explicit_sid_type is set to IPV4_ADJACENCY. The default value is 192.85.1.1.

-explicit_remote_ipv4_address

Specifies the value of the NAI remote IPv4 address for the SR ERO object. The default value is 192.85.1.1.

-explicit_local_ipv6_address

Specifies the value of the NAI local IPv6 address for the SR ERO object. This argument is valid when -explicit_sid_type is set to IPV6_ADJACENCY. The default value is 2000::1.

-explicit_remote_ipv6_address

Specifies the value of the NAI remote IPv6 address for the SR ERO object. The default value is 2001::1.

-explicit_local_node_id

Specifies the value of the NAI local node ID. This argument is valid when -explicit_sid_type is set to UNNUMBERED_ADJACENCY_IPV4_NODE_IDS. Possible values range from 0 to 4294967295. The default value is 0.

-explicit_local_interface_id

Specifies the value of the NAI local interface node ID for the SR ERO object. This argument is valid when -explicit_sid_type is set to UNNUMBERED_ADJACENCY_IPV4_NODE_IDS. Possible values range from 0 to 4294967295. The default value is 0.

-explicit_remote_node_id

Specifies the value of the NAI remote node ID for the SR ERO object. This argument is valid when -explicit_sid_type is set to UNNUMBERED_ADJACENCY_IPV4_NODE_IDS. Possible values range from 0 to 4294967295. The default value is 0.

-explicit_remote_interface_id

Specifies the value of the NAI remote interface node ID for the SR ERO object. This argument is valid when -explicit_sid_type is set to UNNUMBERED_ADJACENCY_IPV4_NODE_IDS. Possible values range from 0 to 4294967295. The default value is 0.

The following example adds a PCC ERO and its subobjects to the specified LSP:

set pcc_ero_obj [::sth::emulation_pcep_config \
        -mode                                 create \
        -handle                             $lsp_handle_pcc \
        -ipv4_ero_pflag                       true  \
        -ipv4_ero_iflag                        true  \
        -ipv4_explicit_start_ip_list        192.0.1.0 \
        -ipv4_explicit_prefix_length         24 \
        -ipv4_explicit_route_type           PCEP_ERO_ROUTE_TYPE_LOOSE \
        -sr_ero_pflag                        true \
        -sr_ero_iflag                         true \
        -sr_route_type                        PCEP_ERO_ROUTE_TYPE_LOOSE \
        -explicit_sid_type                  IPV4_ADJACENCY \
        -explicit_mflag                     true \
        -explicit_cflag                     true \
        -explicit_sflag                     true \
        -explicit_fflag                     true \
        -explicit_sid_label                 16 \
        -explicit_sid_tc                    0 \
        -explicit_sid_sflag                 true \
        -explicit_sid_ttl                   255 \
        -explicit_ipv4_address              192.85.1.1 \
        -explicit_local_ipv4_address        192.85.1.1 \
        -explicit_remote_ipv4_address       193.85.1.1 \
        -explicit_local_node_id             0 \
        -explicit_local_interface_id        0 \
        -explicit_remote_node_id            0 \
        -explicit_remote_interface_id       0 \
            ]

Sample Output:

#This will return the PCC ERO and its subobjects handles.
{ero_hnd {pcepipv4eroobject1 pcepsreroobject1}} {status 1}

The following example adds a PCE ERO and its subobjects to the specified LSP:

set pce_ero_update [::sth::emulation_pcep_config \
        -mode                                 create \
        -handle                             $lsp_handle_pce \
        -ipv4_update_ero_pflag                "false false"\
        -ipv4_update_ero_iflag                "false true"\
        -ipv4_explicit_start_ip_list         "{192.85.0.1 192.85.1.1} 192.85.2.1"\
        -ipv4_explicit_prefix_length         "{16 24} 32" \
        -sr_ero_pflag                       true \
        -sr_ero_iflag                       true \
        -sr_route_type                      PCEP_ERO_ROUTE_TYPE_STRICT \
        -explicit_sid_type                  IPV4_ADJACENCY \
        -explicit_mflag                     true \
        -explicit_cflag                     true \
        -explicit_sflag                     true \
        -explicit_fflag                     true \
        -explicit_sid_label                 16 \
        -explicit_sid_tc                    0 \
        -explicit_sid_sflag                 true \
        -explicit_sid_ttl                   255 \
        -explicit_ipv4_address              1.1.1.1 \
        -explicit_local_ipv4_address        1.1.1.1 \
        -explicit_remote_ipv4_address       2.2.2.2 \
        -explicit_local_node_id             0 \
        -explicit_local_interface_id        0 \
        -explicit_remote_node_id            0 \
        -explicit_remote_interface_id       0 \
        ]

Sample Output:

#This will return PCE ERO and its sub objects handles.
{ero_hnd pcepsreroobject1} {status 1}

PCC RRO object (Use this group of arguments to configure the Reported Route Object).

-rro_flags

Specifies RRO flags. Use | to combine multiple values if you want to specify more than one flag. Possible values are listed below:

0                              No flag specified
pcep_rro_flag_local_protection_available
                                Local Protection Available
pcep_rro_flag_local_protection_in_use
                                Local Protection in Use
pcep_rro_flag_bandwidth_protection
                                Bandwidth Protection
pcep_rro_flag_node_protection
                                Node Protection
pcep_rro_flag_node_id
                                Node ID

The default value is 0.

-ipv4_rro_pflag

Specifies the value of the Processing-Rule flag for the IPv4 RRO object. Possible values are true and false. The default value is true.

-ipv6_rro_pflag

Specifies the value of the Processing-Rule flag for the IPv6 RRO object. Possible values are true and false. The default value is true.

-ipv4_rro_iflag

Specifies the value of the Ignore flag for the IPv4 RRO object. Possible values are true and false. The default value is false.

-ipv6_rro_iflag
Specifies the value of the Ignore flag for the IPv6 RRO object. Possible values are true and false. The default value is false.

PCC Reported Parameters for RRO Object (Use this group of arguments to configure reported parameters of the RRO.)

-ipv4_reported_start_ip_list

Specifies the IP address for the next hop of the IPv4 RRO object. The default value is 192.0.1.0.

-ipv4_reported_prefix_length

Specifies the prefix length of the IP routes in the block of IPv4 RRO objects. Possible values range from 0 to 255. The default value is 24.

-ipv6_reported_start_ip_list

Specifies the IPv6 address for the next hop of the IPv6 RRO object. The default value is 2000::1.

-ipv6_reported_prefix_length

Specifies the prefix length of the IP routes in the block of IPv6 RRO objects. Possible values range from 0 to 255. The default value is 64.

PCC SR RRO Subobject (Use this group of arguments to configure the SR RRO object, which is a subobject of ERO.)

-sr_rro_pflag

Specifies the value of the Processing-Rule flag for the SR RRO object. Possible values are true and false. The default value is true.

-sr_rro_iflag

Specifies the value of the Ignore flag for the SR RRO object. Possible values are true and false. The default value is false.

-reported_mflag

Specifies the M bit to indicate that the SID value represents an MPLS label stack entry with only the label value specified. Possible values are true and false. The default value is true.

-reported_cflag

Specifies the C bit to indicate that the SID value represents an MPLS label stack entry with all fields specified. Possible values are true and false. The default value is false.

-reported_sid_type

Specifies the type of the segment ID for the SR RRO object. Possible values are:

IPV4_NODE_ID       IPv4 Network Access Identifier (NAI) node ID
IPV6_NODE_ID       IPv6 NAI node ID
IPV4_ADJACENCY     NAI local IPv4 address
IPV6_ADJACENCY     NAI local IPv6 address
UNNUMBERED_ADJACENCY_IPV4_NODE_IDS  NAI local node ID

The default value is IPV4_NODE_ID.

-reported_mflag

Specifies the M bit to indicate that the SID value represents an MPLS label stack entry with only the label value specified. Possible values are true and false. The default value is true.

-reported_cflag

Specifies the C bit to indicate that the SID value represents an MPLS label stack entry with all fields specified. Possible values are true and false. The default value is false.

-reported_sflag

Specifies the value of the S flag for the SR RRO object. Possible values are true and false. The default value is false.

-reported_fflag

Specifies the value of the F flag for the SR RRO object. Possible values are true and false. The default value is true.

-reported_sid_label

Specifies the segment ID. This argument is valid when -explicit_sflag is set to false. Possible values range from 16 to 1048575. The default value is 16.

-reported_sid_tc

Specifies the value of the traffic class field for the SR RRO object. This argument is valid when -reported_sflag is false. Possible values range from 0 to 7. The default value is 0.

-reported_sid_s_flag

Specifies the value of the MPLS Bottom Of Stack (BOS) flag to indicate whether the label is the last in the stack. This argument is valid when -reported_sflag is false. Possible values are true and false. The default value is false.

-reported_sid_ttl

Specifies the value of the TTL field for the SR RRO object. Possible values range from 0 to 255. The default value is 255.

-reported_ipv4_address

Specifies the value of the IPv4 NAI node ID for the SR RRO subobject. This argument is valid when -reported_sid_type is set to IPV4_NODE_ID. The value must be in IPv4 format. The default value is 192.85.1.1.

-reported_ipv6_address

Specifies the value of the IPv6 NAI node ID for the SR RRO object. This argument is valid when -reported_sid_type is set to IPV6_NODE_ID. The value must be in IPv6 format. The default value is 2000::1.

-reported_local_ipv4_address

Specifies the value of the NAI local IPv4 address for the SR RRO object. This argument is valid when -reported_sid_type is set to IPV4_ADJACENCY. The default value is 192.85.1.1.

-reported_remote_ipv4_address

Specifies the value of the NAI remote IPv4 address for the SR RRO object. The default value is 192.85.1.1.

-reported_local_ipv6_address

Specifies the value of the NAI local IPv6 address for the SR RRO object. This argument is valid when -reported_sid_type is set to IPV6_ADJACENCY. The default value is 2000::1.

-reported_remote_ipv6_address

Specifies the value of the NAI remote IPv6 address for the SR RRO object. The default value is 2001::1.

-reported_local_node_id

Specifies the value of the NAI local node ID for the SR RRO object. This argument is valid when -reported_sid_type is set to UNNUMBERED_ADJACENCY_IPV4_NODE_IDS. Possible values range from 0 to 4294967295. The default value is 0.

-reported_local_interface_id

Specifies the value of the NAI local interface node ID for the SR RRO object. This argument is valid when -reported_sid_type is set to UNNUMBERED_ADJACENCY_IPV4_NODE_IDS. Possible values range from 0 to 4294967295. The default value is 0.

-reported_remote_node_id

Specifies the value of the NAI remote node ID for the SR RRO object. This argument is valid when -reported_sid_type is set to UNNUMBERED_ADJACENCY_IPV4_NODE_IDS. Possible values range from 0 to 4294967295. The default value is 0.

-reported_remote_interface_id

Specifies the value of the NAI remote interface node ID for the SR RRO object. This argument is valid when -reported_sid_type is set to UNNUMBERED_ADJACENCY_IPV4_NODE_IDS. Possible values range from 0 to 4294967295. The default value is 0.

The following example adds a PCC RRO object and its subobjects to the specified LSP:

    set pcc_rro_obj [::sth::emulation_pcep_config \
            -mode                             create \
            -handle                         $lsp_handle_pcc \
            -rro_flags                      PCEP_RRO_FLAG_LOCAL_PROTECTION_IN_USE  \
            -ipv4_rro_pflag                    true  \
            -ipv4_rro_iflag                    true  \
            -ipv4_reported_start_ip_list       192.0.1.0  \
            -ipv4_reported_prefix_length       24  \
            -sr_rro_pflag                      true  \
            -sr_rro_iflag                      true  \
            -reported_sid_type                 IPV4_ADJACENCY  \
            -reported_sflag                    true  \
            -reported_fflag                    true  \
            -reported_sid_label                16  \
            -reported_sid_tc                   0  \
            -reported_sid_s_flag               true  \
            -reported_sid_ttl                  255  \
            -reported_ipv4_address              1.1.1.1 \
            -reported_local_ipv4_address        1.1.1.1  \
            -reported_remote_ipv4_address       2.2.2.2  \
            -reported_local_node_id             0  \
            -reported_local_interface_id        0  \
            -reported_remote_node_id            0  \
            -reported_remote_interface_id       0  \
            ]

Sample Output::

 #This will return handles for the PCC RRO and its subobjects.
 {rro_hnd {pcepipv4rroobject1 pcepsrrroobject1 pcepipv6rroobject1}} {status 1}

PCC BW Object (Use this group of arguments to configure the PCC Bandwidth object.)

-bw_pflag

Specifies the value of the Processing-Rule flag for the BW object. Possible values are true and false. The default value is true.

-bw_iflag

Specifies the value of the Ignore flag for the BW object. Possible values are true and false. The default value is true.

-bw_bandwidth

Requested bandwidth in bytes per second. Possible values range from 0 to 4294967295. A value of zero indicates the object is optional. The default value is 0.

PCE BW Update Object (Use this group of arguments to configure the BW update object.)

-bw_update_pflag

Specifies the value of the Processing-Rule flag for the BW update object. Possible values are true and false. The default value is true.

-bw_update_iflag

Specifies the value of the Ignore flag for the BW update object. Possible values are true and false. The default value is true.

-bw_update_bandwidth
Requested bandwidth in bytes per second. Possible values range from 0 to 4294967295. Value 0 indicates that the object is optional. The default value is 0.

The following example adds a PCC BW object to the LSP:

set pcc_bw_obj [::sth::emulation_pcep_config \
             -mode                 create \
             -handle             $lsp_handle_pcc \
             -bw_pflag           true \
             -bw_iflag           true \
             -bw_bandwidth       0 \
             ]

Sample Output:

# This will return a PCC BW object handle.
{bw_hnd pcepbwobject1} {status 1}

The following example adds a PCE BW update object:

set pce_bw_obj [::sth::emulation_pcep_config \
               -mode                   create \
               -handle                 $lsp_handle_pce \
               -bw_update_pflag        true \
               -bw_update_iflag        false \
               -bw_update_bandwidth    0 \
               ]

Sample Output:

# This will return a PCE BW update object handle.
{bw_hnd pcepbwtoupdateobject1} {status 1}

PCC/PCE Metric Object (Use this group of arguments to configure the PCC/PCE Metric object.)

-metric_cflag

Value of the Computed Metric (C) Flag. Possible values are true and false. When set to true, it indicates that the PCE must provide the computed path metric value for a valid path in the PCRep message for the corresponding metric. The default value is true.

-metric_bflag

Value of the Bound (B) flag. Possible values are true and false. When set to true, it indicates a bound (a maximum) for the path metric that must not be exceeded for the PCC to consider the computed path as acceptable. The default value is false.

-metric_type

Specifies the type of metric corresponding to the flags. Possible values are described below:

IGP_METRIC      IGP metric
TE_METRIC       TE metric
HOP_COUNTS      Hop counts

The default value is IGP_METRIC.

-metric_value
Maximum value of the metric. Possible values range from 0 to 4294967295. The default value is 10.

PCC Metric List Object (Use this group of arguments to configure the PCC Metric List object, under which METRIC objects are configured.)

-metriclist_pflag

Specifies the value of the Processing-Rule flag for the METRIC List object. Possible values are true and false. The default value is true.

-metriclist_iflag

Specifies the value of the Ignore flag for the METRIC List object. Possible values are true and false. The default value is false.

PCE Metric List Update Object (Use this group of arguments to configure the PCE Metric List update object.)

-metriclist_update_pflag

Specifies the value of the Processing-Rule flag for the Metric List update object. Possible values are true and false. The default value is true.

-metriclist_update_iflag

Specifies the value of the Ignore flag for the Metric List update object. Possible values are true and false. The default value is false.

The following example adds PCC Metric object configurations to the specified LSP handle:

set pcc_metric_obj [::sth::emulation_pcep_config \
               -mode                                create \
               -handle                              $lsp_handle_pcc \
               -metric_cflag                        true \
               -metric_bflag                        true \
               -metric_type                         HOP_COUNTS \
               -metric_value                        10 \
               -metriclist_pflag                    true \
               -metriclist_iflag                    true \
           ]

Sample Output:

{metric_hnd pcepmetriclistobject1} {status 1}

The following example adds PCE Metric object configurations to the specified LSP handle:

set pce_metric_object [::sth::emulation_pcep_config \
                -mode                                create \
                -handle                             $lsp_handle_pce \
                -metric_cflag                       true \
                -metric_bflag                       true  \
                -metric_type                        HOP_COUNTS \
                -metric_value                       10 \
                -metriclist_update_pflag            true  \
                -metriclist_update_iflag            true  \
               ]

Sample Output:

# This will return a PCE Metric object handle.
{metric_hnd pcepmetriclisttoupdateobject1} {status 1}

PCC LSPA Object (Use this group of arguments to configure the LSP Attributes object.)

-lspa_pflag

Specifies the value of the Processing-Rule flag for the LSPA object. Possible values are true and false. The default value is true.

-lspa_iflag

Specifies the value of the Ignore flag for the LSPA object. Possible values are true and false. The default value is false.

-lspa_exclude_any

Specifies a value to exclude a link that matches any attributes in the 32-bit mask, based on the following equation:

(link-attr & exclude-any) == 0

Possible values range from 0 to 4294967295. The default value is 0.

-lspa_include_any

Specifies a value to include a link that matches any attributes in the 32-bit mask, based on the following equation:

(include-any == 0) | ((link-attr & include-any) != 0)

A null mask (all bits set to zero) automatically passes. Possible values range from 0 to 4294967295. The default value is 0.

-lspa_include_all

Specifies a value to include a link that matches all attributes in the 32-bit mask, based on the following equation:

(include-all == 0) | (((link-attr & include-all) ^ include-all) == 0)

A null mask (all bits set to zero) automatically passes. Possible values range from 0 to 4294967295. The default value is 0.

-lspa_setup_prio

Priority of the TE LSP with respect to taking resources. Possible values range from 0 to 7. Value 0 indicates the highest priority. The default value is 0.

-lspa_holding_prio

Priority of the TE LSP with respect to holding resources. Possible values range from 0 to 7. Value 0 indicates the highest priority. The default value is 0.

-lspa_lflag

Specifies the value of the Local Protection Desired (L) flag for the LSPA object. Possible values are true and false. When set to true, it indicates that the computed path must include links protected with Fast Reroute as defined in RFC4090. The default value is false.

-lspa_affinities_flag

Determines whether to set values for including or excluding links based on comparing a 32-bit mask to the session attribute of a link. Possible values are true and false. Set it to true if you want to use -lspa_exclude_any, -lspa_include_any, or -lspa_include_all to exlude or include specified links. The default is false.

PCE LSPA Update Object (Use this group of arguments to configure the LSPA update object.)

-lspa_update_pflag

Specifies the value of the Processing-Rule flag for the LSPA update object. Possible values are true and false. The default value is true.

-lspa_update_iflag

Specifies the value of the Ignore flag for the LSPA update object. Possible values are true and false. The default value is false.

-lspa_update_exclude_any

Specifies a value to exclude a link that matches any attributes in the 32-bit mask, based on the following equation:

(link-attr & exclude-any) == 0

Possible values range from 0 to 4294967295. The default value is 0.

-lspa_update_include_any

Specifies a value to include a link that matches any attributes in the 32-bit mask, based on the following equation:

(include-any == 0) | ((link-attr & include-any) != 0)

A null mask (all bits set to zero) automatically passes. Possible values range from 0 to 4294967295. The default value is 0.

-lspa_update_include_all

Specifies a value to include a link that matches all attributes in the 32-bit mask, based on the following equation:

(include-all == 0) | (((link-attr & include-all) ^ include-all) == 0)

A null mask (all bits set to zero) automatically passes. Possible values range from 0 to 4294967295. The default value is 0.

-lspa_update_setup_prio

Priority of the TE LSP with respect to taking resources. Possible values range from 0 to 7. Value 0 indicates the highest priority. The default value is 0.

-lspa_update_holding_prio

Priority of the TE LSP with respect to holding resources. Possible values range from 0 to 7. Value 0 indicates the highest priority. The default value is 0.

-lspa_update_lflag

Specifies the value of the Local Protection Desired (L) flag for the LSPA update object. Possible values are true and false. The default value is false.

-lspa_update_affinities_flag

Determines whether to set values for including or excluding links based on comparing a 32-bit mask to the session attribute of a link. Possible values are true and false. Set it to true if you want to use -lspa_update_exclude_any, -lspa_update_include_any, or -lspa_update_include_all to exlude or include specified links. The default value is false.

The following example adds PCC LSPA object configurations:

set pcc_lspa_obj [::sth::emulation_pcep_config \
              -mode                                 create \
              -handle                             $lsp_handle_pcc \
              -lspa_pflag                          true \
              -lspa_iflag                          true \
              -lspa_exclude_any                    1 \
              -lspa_include_any                    1 \
              -lspa_include_all                    1 \
              -lspa_setup_prio                     1 \
              -lspa_holding_prio                   1 \
              -lspa_lflag                          true \
              -lspa_affinities_flag                true \
              ]

Sample Output:

 # This will return a PCC LSPA object handle.
 {lspa_hnd pceplspaobject1} {status 1}

The following example configures a PCE LSPA update object::

 set pce_lspa_object [::sth::emulation_pcep_config \
                 -mode                                 create \
                 -handle                             $lsp_handle_pce \
                 -lspa_update_pflag                  true \
                 -lspa_update_iflag                  true \
                 -lspa_update_exclude_any            1 \
                 -lspa_update_include_any            1 \
                 -lspa_update_include_all            1 \
                 -lspa_update_setup_prio             1 \
                 -lspa_update_holding_prio           1 \
                 -lspa_update_lflag                  true \
                 -lspa_update_affinities_flag        true \
                 ]

Sample Output:

# This will return a PCE LSPA update object handle.
{lspa_hnd pceplspatoupdateobject1} {status 1}

PCEP Custom TLV (Use this group of arguments to configure custom TLVs for PCEP.)

-tlv_type

Type of the TLV in hex. Possible values range from 0 to 0x3FFF. The default value is 0.

-tlv_value

Value of the TLV in hex. Possible values range from 0 0x0 to 0xff. The default value is 0.

-customtlv_handle

A list of custom TLV handles

PCC/PCE Command Edit Parameters (Use this group of arguments to modify the created PCC/PCE objects before auto delegation, synchronization (for PCC) or update (for PCE) operations.)

-included_ero_handle

The ERO object handle to be included

-included_rro_handle

The RRO object handle to be included

-included_bw_handle

The BW object handle to be included

-included_metric_handle

The metric object handle to be included

-included_lspa_handle

The LSPA object handle to be included

-include_ero

Determines whether to include the ERO object handle. Possible values are true and false. The default value is true.

-include_rro

Determines whether to include the RRO object handle. Possible values are true and false. The default value is true.

-include_bw

Determines whether to include the BW object handle. Possible values are true and false. The default value is true.

-include_metric

Determines whether to include the metric object handle. Possible values are true and false. The default value is true.

-include_lspa

Determines whether to include the LSPA object. Possible values are true and false. The default value is true.

-include_lsp

Determines whether to include the LSP object. Possible values are true and false. The default value is true.

-include_srp

Determines whether to include the SRP object. Possible values are true and false. The default value is true.

-include_rp

Determines whether to include the RP object. Possible values are true and false. The default value is true.

-include_endpoints

Determines whether to include the End-Points object. Possible values are true and false. The default value is true.

-cmd_use_custom_message

Enables/disables PCEP custom message for PCEP commands. Possible values are true (enable) and false (disable). The default value is false. When set to true, -lsp_msg_obj_type and -lsp_msg_obj_handle are available to add LSP messages (a type of custom message). When set to false, other Command Edit options are valid. The default value is false.

-lsp_msg_obj_type

Specifies the type of custom LSP message object. You must set -cmd_use_custom_message to true. Possible values are described below:

CUSTOM          Custom object
END-POINTS      End-Points object
ERO             ERO object
RRO             RRO object
LSP             LSP object
LSPA            LSPA object
METRIC          METRIC object
NO-PATH         No-Path object
RP              RP object
SRP             SRP object

The default value is CUSTOM.

-lsp_msg_obj_handle

LSP message handle returned from the current function

The following example modifies PCC/PCE objects with Command Edit parameters:

keylget device_ret_pcep1 ero_hnd ero_handle
keylget device_ret_pcep1 startcommand_hnd cmd_handle2

set device_ret_pcep [::sth::emulation_pcep_config \
        -mode modify \
        -handle [lindex $cmd_handle2 0] \ # PCC or PCE start_command handle
        -include_lsp false \
        -include_endpoints false \
        -included_ero_handle [lindex $ero_handle 1]
        ]

Sample Output:

# This returns PCC/PCE startcommand_hnd handle with specified auto parameters.
{startcommand_hnd startdeviceupdatecommandconfig1} {status 1}

PCEP Custom Object (Use this group of arguments to create PCEP custom objects)

-object_length

Length of the message in bytes, including the header. This argument is available when -auto_cal_object_length is set to false. Possible values range from 0 to 65535. The default value is 4.

-custom_pflag

Determines whethet to allow a PCC to specify in the PCReq message sent to a PCE, whether the object is optional (true) or must be taken into account by the PCE (false) during path computation. Possible values are true and false. The default value is true.

-custom_iflag

Determines whethet to allow a PCE to indicate in a PCRep message to a PCC, whether an optional object was processed (true) or ignored (false) during path computation. Possible values are true and false. The default value is false.

-object_class

Value of the object class. This argument is available when -object_class_selector is set to CUSTOM. The default value is 0.

-object_data

Value of the object body. The default value is 0.

-reserved_flags

Specifies the value for reserved flags

-object_class_selector

Specifies the class of the PCEP custom object. Possible values are described below:

BANDWIDTH       BANDWIDTH object
CLOSE           CLOSE object
CUSTOM          Custom object
END-POINTS      End-Points object
ERROR           ERROR object
ERO             ERO object
IRO             Include Route Object (IRO) object
RRO             RRO object
LOAD-BALANCING  Load-Balancing object
LSP             LSP object
LSPA            LSPA object
METRIC          METRIC object
NOTIFICATION    NOTIFICATION object
NO-PATH         No-Path object
RP              RP object
SRP             SRP object
SVEC            Synchronization VECtor (SVEC) object

The default value is CUSTOM.

-auto_cal_object_length

Determines whether to automatically calculate the object length. Possible values are true and false. When it is set to true, the object length will be calculated by Spirent HLTAPI. The default value is true.

-custom_obj_type

Specifies the type of the custom object. Possible values range from 0 to 15. The default value is 0.

The following example configures the custom objects on the PCEP device:

set device_ret_pcep [::sth::emulation_pcep_config \
-object_class_selector "CUSTOM OPEN ERO"\
-object_length "4 4 4"\
-custom_pflag "true false true" \
-custom_iflag "true true true" \
-object_class "12 0 0" \
-object_data "0 0 100" \
-reserved_flags "0 2 1" \
-auto_cal_object_length "true false true" \
-custom_obj_type "0 0 0" \
]
keylget device_ret_pcep customobj_hnd custom_obj

PCEP CUSTOM Message (Use this group of arguments to add OPEN message and KEEPALIVE messages. You must set PCEP Sessions parameter -use_custom_message to true)

-open_msg_obj_type

Specifies the object category for the OPEN message. Possible values are CUSTOM and OPEN. The default value is CUSTOM.

-open_msg_obj_handle

The PCEP custom object handle returned from the current function

-keepalive_msg_obj_category

Specifies the object category for the KEEPALIVE message. Possible values are CUSTOM and OPEN. The default value is CUSTOM.

-keepalive_msg_obj_handle

The PCEP custom object handle returned from the current function

The following example configures custom messages on the PCEP device:

set device_ret_pcep [::sth::emulation_pcep_config \
      -mode create \
      -handle $dev_handle \
      -pcep_device_role PCC \
      -peer_ipv4_addr 192.85.1.3 \
      -keep_alive_timer 5 \
      -dead_timer 10\
      -use_custom_message true \
      -keepalive_msg_obj_type "OPEN" \
      -keepalive_msg_obj_handle [lindex $custom_obj 0]]

PCEP Custom PDU (Use this argument to configure PCEP custom objects)

-custom_pdu

Value of the custom PDU in hex. Possible values range from 0 0x0 to 0xff. The default value is 0.

The following example modifies the specified custom object on the PCEP device:

set device_ret_pcep_2 [::sth::emulation_pcep_config \
      -mode modify \
      -handle [lindex $cmd_hnd 0] \
      -cmd_use_custom_message true \
      -lsp_msg_obj_type CUSTOM \
      -lsp_msg_obj_handle [lindex $custom_obj 0]]

Arguments Unsupported by Save as HLTAPI

This function is currently not supported by Save as HLTAPI.

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

customtlv_hnd              Custom TLV handle
pcep_handle                PCC or PCE handle returned by the function
pcc_lsp_hnd                PCC LSP handle
pce_lsp_hnd                PCE LSP handle
lsp_hnd                    LSP object handle
ero_hnd                    ERO object handle
rro_hnd                    RRO object handle
srp_handle                 SRP handle
lspa_hnd                    LSPA object handle
startcommand_hnd           Handle used to modify the existing PCC/PCE
                           characteristics of the LSP
ipv4_ero_hnd                PCEP IPv4 ERO (Update) object handle
ipv6_ero_hnd                PCEP IPv6 ERO (Update) object handle
sr_ero_hnd                  PCEP SR ERO object handle
ipv4_rro_hnd                PCEP  IPv4 RRO object handle
ipv6_rro_hnd                PCEP IPv6 RRO object handle
metric_hnd                  PCEP Metric List (Update) object handle
bw_hnd                      PCEP BW (Update) object handle
start_initcommand_hnd       StartDeviceInitiateCommand configuration handle
start_replycommand_hnd      StartDeviceReplyCommand configuration handle
start_synccommand_hnd       StartDeviceSyncCommand configuration handle
start_requestcommand_hnd    StartDeviceRequestCommand configuration handle
start_delegatecommand_hnd   StartDeviceDelegateCommand configuration handle
start_updatecommand_hnd     StartDeviceUpdateCommand configuration handle
customtlv_hnd               PCEP custom TLV handle
customobj_hnd               PCEP custom object handle
ipv4_reported_route_hnd     PCEP IPv4 Reported Route Parameters handle
ipv6_reported_route_hnd     PCEP IPv6 Reported Route Parameters handle
ipv4_explicit_route_hnd     PCEP IPv4 Explicit Route Parameters handle
ipv6_explicit_route_hnd     PCEP IPv6 Explicit Route Parameters handle
ipv6network_hnd             IPv6 network block handle
ipv4network_hnd             IPv4 network block handle
custompdu_hnd               PCEP Custom PDU handle
open_msg_hnd                PCEP OPEN message configuration handle
keep_alive_msg_hnd          PCEP KEEPALIVE message configuration handle
lsp_msg_hnd                 PCEP LSP message configuration handle

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

log                     An error message (if the operation failed)

Description

The sth::emulation_pcep_config function enables PCEP (PCC or PCE) on raw devices, adds, modifies, or deletes the PCC or PCE LSP. Use the -mode argument to specify the operation to perform.

When you enable the PCEP on raw devices, the function returns a PCEP handle based The device role (PCC or PCE). Use this handle as the input for further actions specified by -mode. The mode you use determines the set of arguments you use to configure PCEP devices or LSPs.

When you specify -mode create, you must also use the -handle argument to specify the PCEP device handle to create LSPs on that device.

When you specify -mode modify, you must also use the -handle argument to specify the PCEP LSP handle to modify the LSP configurations.

When you specify -mode delete, you must also use the -handle argument to specify the PCEP LSP handle to delete the LSP.

Examples

See the examples under Arguments, or refer to Sample Script in the Release Package folder for full sample scripts of the function.

sth::emulation_pcep_control

Purpose

A Spirent Extension to start, stop PCEP devices and the related LSPs, establish sessions between PCEP devices, or start the LSP on the established PCEP devices.

Synopsis

Note

M indicates that the argument is Mandatory .

sth::emulation_pcep_control
 [-action  {start_sessions|stop_sessions|establish_sessions|
           initiate_lsp|remove_delegate_lsp|remove_initiate_lsp}   M]
 [-handle <pcep_handle_list>  M]

Arguments

-mode

Specifies the action to be performed. This argument is mandatory. Possible values are:

start_sessions      Starts the PCEP devices and the related LSPs

stop_sessions       Stops the PCEP devices and the related LSPs

establish_sessions  Establishes a session between PCEP devices

initiate_lsp        Starts the LSPs on the PCEP devices with
                    session established

remove_initiate_lsp
                   PCE will take back the initiated LSP, and send
                   a deletion request from the selected emulated
                   PCEs to the associated PCCs

remove_delegate_lsp
                   PCC will take back the delegate LSP, and remove
                   all states for the LSPs on the selected devices

The default value is start_sessions.

-handle

Specifies a list of PCEP devices on which to perform the action. This argument is Mandatory .

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_pcep_control function controls the PCEP sessions and the related LSPs. Use the -mode argument to specify the action to perform. (See the -mode argument description for information about the actions.)

If the action performed fails, Spirent HLTAPI returns an error message.

Examples

The following example starts the specified PCEP sessions:

set ret [::sth::emulation_pcep_control \
  -handle "$pcep_hnd1 $pcep_hnd2" -action start_sessions]

Note

Spirent HLTAPI does not provide a protocol specific API for PCEP functions. Instead, you can retrieve PCEP results using the sth::drv_stats function, as shown in the examples below.

To retrieve PCEP results by specified properties:

set drv_stats [::sth::drv_stats    \
    -query_from       "$port1 $port2" \
    -drv_name         drv2\
    -where           PcepProtocolConfig.BlockRole = 0 \
    -properties      "EmulatedDevice.PortName EmulatedDevice.Name
                     PcepProtocolConfig.BlockState
                     PcepProtocolConfig.BlockSessionCount
                     PcepProtocolConfig.BlockSessionUpCount
                     PcepProtocolConfig.BlockSessionIdleCount
                     PcepProtocolConfig.BlockSessionPendingCount
                     PcepProtocolConfig.BlockTxOpenCount
                     PcepProtocolConfig.BlockRxOpenCount
                     PcepProtocolConfig.BlockTxKeepAliveCount
                     PcepProtocolConfig.BlockRxKeepAliveCount
                     PcepProtocolConfig.BlockTxPCRptCount
                     PcepProtocolConfig.BlockRxPCUpdCount
                     PcepProtocolConfig.BlockTxPCReqCount
                     PcepProtocolConfig.BlockRxPCRepCount
                     PcepProtocolConfig.BlockTxNotifyCount
                     PcepProtocolConfig.BlockRxNotifyCount
                     PcepProtocolConfig.BlockTxErrorCount
                     PcepProtocolConfig.BlockRxErrorCount
                     PcepProtocolConfig.BlockTxCloseCount
                     PcepProtocolConfig.BlockRxCloseCount
                     PcepProtocolConfig.BlockRxPCInitCount
                     PcepProtocolConfig.BlockFlapCount
                     PcepProtocolConfig.BlockRole"\
            ]

Sample Output:

{result_count 1} {item0 {{EmulatedDevicePortName {10.62.224.174-1-2 //1/2}}
{EmulatedDeviceName {Host 2}} {PcepProtocolConfigBlockState UP}
{PcepProtocolConfigBlockSessionCount 1} {PcepProtocolConfigBlockSessionUpCount 1}
{PcepProtocolConfigBlockSessionIdleCount 0}
{PcepProtocolConfigBlockSessionPendingCount 0} {PcepProtocolConfigBlockTxOpenCount 1}
{PcepProtocolConfigBlockRxOpenCount 1} {PcepProtocolConfigBlockTxKeepAliveCount 1}
{PcepProtocolConfigBlockRxKeepAliveCount 1} {PcepProtocolConfigBlockTxPCRptCount 2}
{PcepProtocolConfigBlockRxPCUpdCount 0} {PcepProtocolConfigBlockTxPCReqCount 0}
{PcepProtocolConfigBlockRxPCRepCount 0} {PcepProtocolConfigBlockTxNotifyCount 0}
{PcepProtocolConfigBlockRxNotifyCount 0} {PcepProtocolConfigBlockTxErrorCount 0}
{PcepProtocolConfigBlockRxErrorCount 0} {PcepProtocolConfigBlockTxCloseCount 0}
{PcepProtocolConfigBlockRxCloseCount 0} {PcepProtocolConfigBlockRxPCInitCount 0}
{PcepProtocolConfigBlockFlapCount 0} {PcepProtocolConfigBlockRole PCC}}}
{handle dynamicresultview1} {status 1}

To retrieve PCEP and LSP results by using an XML configuration file (saved from the DRV view configured in the GUI):

set drv_stats1 [::sth::drv_stats    \
    -drv_xml "C:/Desktop/pcep/drvxml/pcclsp_results.xml" \
 ]

Sample Output:

{result_count 1} {item0 {{EmulatedDeviceName {Host 2}}
{PcepProtocolConfigSymbolicName PLSP_report_0} {PcepProtocolConfigSrcIpAddr
1.1.1.1} {PcepProtocolConfigDstIpAddr 2.2.2.2} {PcepProtocolConfigLspState UP}
{PcepProtocolConfigPlspState DELEGATED} {PcepProtocolConfigPlspId 1}
{PcepProtocolConfigSrpId 0} {PcepProtocolConfigRpId 0}
{PcepProtocolConfigPCRole PCC}}} {handle dynamicresultview2} {status 1}