OpenFlow Functions

emulation openflow config

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

Purpose:

Spirent Extension (for Spirent HLTAPI only).

Creates or modifies OpenFlow protocol emulation with Spirent HLTAPI. The OpenFlow protocol is based on the softwaredefined networking (SDN) concept, which fosters greater flexibility and extensibility in network switching through open interfaces and increases predictability in network control by separating the control plane from the data plane.

OpenFlow uses two primary components, a controller and a switch, which communicate via a standard open programming interface. Currently Spirent HLTAPI supports the open controller emulation.

Synopsis:

Note: M indicates the argument is `Mandatory`.

     emulation openflow config
        mode= {enable|modify|add|delete}  M
        handle= <handle>
        count= <numeric>
        barrier_request_timeout= <250-6000000>
        connection_type= {passive_tcp|passive_tcp_tls}
        enable_barrier= {0|1}
        add_default_discovery= {0|1}
        add_flows_on_connect= {0|1}
        add_meters_on_connect= {0|1}
        clear_flows_on_connect= {0|1}
        clear_meters_on_connect= {0|1}
        discovery_dstmacaddr= <aa:bb:cc:dd:ee:ff>
        discovery_msg_interval= <5-32768>
        desired_role= {EQUAL|MASTER|SLAVE}
        desired_generation_id= <0-18446744073709551615>
        openflow_version= {VERSION_1_0|VERSION_1_3}
        send_role_connect= {0|1}
        max_flow_rate= <0.0-65535.0>
        tcp_port= <1-65535>
        flow_cmd_type= {add|delete|modify}
        flow_block_type= {bound|custom|flow_table_text}
        flow_switch_handle= <handle>
        flow_table_text= <string >
        stream_ids= <alphanum>
        match_fields=  {ingress_port|eth_src_mac|eth_dst_mac|eth_type|
                    vlan_id|vlan_priority|ipv4_src_addr|ipv4_dst_addr|
                    ipv4_tosipv4_protocol|tcp_udp_src_port|tcp_udp_dst_port|
                    ipv6_src_addr|ipv6_dst_addr|ipv6_flow_label|
                    ipv6_protocol|ipv6_traffic_class}]
        custom_match_field=
                    {arp_op:<integer>}|{arp_sha:<mac_addr/mask>}|
                    {arp_spa:<addr/mask>}|{arp_tha:<mac_addr/mask>}|
                    {arp_tpa:<addr/mask>}|{dl_dst:<mac_addr/mask>}|{dl_src:<mac_addr/mask>}|
                    {dl_type:<hex>}|{dl_vlan:<integer/hex>}|{icmpv4_type:<type>}|
                    {dl_vlan_pcp:<integer>}|{exp:<int/string/string/hex>}|
                    {ext_hdr:<integer/hex>}|icmpv4_code:<integer>}|
                    {icmpv6_code:<integer>}|{icmpv6_type:<type>}|
                    {in_phy_port:<integer>}|{in_port:<integer>}|
                    {ipv6_dst:<ipv6_addr/mask>}|{ipv6_label:<integer/mask>}|
                    {ipv6_src:<ipv6_addr/mask>}|{metadata:<integer/mask>}|
                    {mpls_bos:<integer>}|{mpls_label:<integer>}|{mpls_tc:<integer>}|
                    {nd_sll:<mac_addr>}|{nd_target:<ipv6_addr>}|{nd_tll:<mac_addr>}|
                    {nw_dst:<ipv4_addr/mask>}|{nw_ecn:<integer>}|
                    {nw_proto:<protocol types>}|{nw_src:<ipv4_addr/mask>}|
                    {nw_tos:<integer>}|{pbb_isid:<integer/mask>}|{sctp_dst:<integer>}|
                    {sctp_src:<integer>}|{tcp_dst:<integer>}|{tcp_src:<integer>}|
                    {tp_dst:<integer>}|{tp_src:<integer>}|{tun_id:<integer/mask>}|
                    {udp_dst:<integer>}|{udp_src:<integer>}]
        custom_action_field=  {all}|{controller:<integer>}|{copy_ttl_in}|{copy_ttl_out}|
                    {dec_mpls_ttl}|{dec_ttl}|{flood}|{local}|{group:<integer>}|
                    {in_port:<integer>}|{mod_dl_dst:<mac_addr>}|
                    {mod_dl_src:<mac_addr>}|{mod_icmpv6_code:<integer>}|
                    {mod_icmpv6_type:<type>}|{mod_ipv6_dst:<ipv6_addr>}|
                    {mod_ipv6_label:<integer>}|{mod_ipv6_src:<ipv6_addr>}|
                    {mod_nd_sll:<mac_addr>}|{mod_nd_target:<ipv6_addr>}|
                    {mod_nd_tll:<mac_addr>}|{mod_nw_dst:<ipv4_addr>}|
                    {mod_nw_src:<ipv4_addr>}|{mod_nw_tos:<integer>}|
                    {mod_sctp_dst:<integer>}|{mod_sctp_src:<integer>}|
                    {mod_tcp_dst:<integer>}|{mod_udp_src:<integer>}|
                    {mod_vlan_pcp:<integer>}|{mod_vlan_vid:<integer>}|{normal}|
                    {pop_mpls:<ethernet_type>}|{pop_pbb}|{pop_vlan}|
                    {push_mpls:<ethernet_type>}|{push_pbb:<ethernet_type>}|
                    {push_vlan:<ethernet_type>}|{set_mpls_bos:<integer>}|
                    {set_mpls_label:<integer>}|{set_mpls_tc:<integer>}|
                    {set_mpls_ttl:<integer>}|{set_queue:<integer>}]
        custom_goto_table_field=   {goto_table=<integer>}
        custom_metadata_field=    {write_metadata=<data:mask>}
        custom_write_action_field= {all}|{controller:<integer>}|{copy_ttl_in}|
                    {copy_ttl_out}|{dec_mpls_ttl}|{dec_ttl}|{flood}|{local}|
                    {group:<integer>}|{in_port:<integer>}|{mod_dl_dst:<mac_addr>}|
                    {mod_dl_src:<mac_addr>}|{mod_icmpv6_code:<integer>}|
                    {mod_icmpv6_type:<type>}|{mod_ipv6_dst:<ipv6_addr>}|
                    {mod_ipv6_label:<integer>}|{mod_ipv6_src:<ipv6_addr>}|
                    {mod_nd_sll:<mac_addr>}|{mod_nd_target:<ipv6_addr>}|
                    {mod_nd_tll:<mac_addr>}|{mod_nw_dst:<ipv4_addr>}|
                    {mod_nw_src:<ipv4_addr>}|{mod_nw_tos:<integer>}|
                    {mod_sctp_dst:<integer>}|{mod_sctp_src:<integer>}|
                    {mod_tcp_dst:<integer>}|{mod_udp_src:<integer>}|
                    {mod_vlan_pcp:<integer>}|{mod_vlan_vid:<integer>}|{normal}|
                    {pop_mpls:<ethernet_type>}|{pop_pbb}|{pop_vlan}|
                    {push_mpls:<ethernet_type>}|{push_pbb:<ethernet_type>}|
                    {push_vlan:<ethernet_type>}|{set_mpls_bos:<integer>}|
                    {set_mpls_label:<integer>}|{set_mpls_tc:<integer>}|
                    {set_mpls_ttl:<integer>}|{set_queue:<integer>}]
        custom_clear_action_field=  {clear_actions}
        custom_meter_field=  {meter=<integer>}
        custom_exp_field= {exp_instruction=<data:id>
        hard_timeout= <0-65535>
        idle_timeout= <0-65535>
        transport_type= {<modify_vlanid|flow_forward}
        first_vlan_id= <0-4095>
        action_type= {forward_to_port|drop}
        modify_dst_device= {eth_mac|vlan_id|ipv4_addr|ipv6_addr}
        meter_id= <0-4294967295>
        enable_burst_size= {0|1}
        rate_type= {pktps|kbps}
        meter_switch_handle= <any>
        band_type= {dscp_remark|experimenter|drop}
        burst_size= <numeric>
        rate= <numeric>
        experimenter= <numeric>
        precedence_level= <0-255>

     OpenFlow Device Configurations::

       add_group_entries_on_connect= {0|1|true|false|TRUE|FALSE}
       clear_existing_group_entries_on_connect= {0|1|true|false|TRUE|FALSE}
       controller_certificate= <string>
       controller_private_key= <string>
       dynamic_load= <1-1000000>
       enable_reactive_mode= {0|1|true|false|TRUE|FALSE}
       endpoint_connection_pattern= {pair|backbone_src_first|
                                backbone_dst_first|backbone_interleaved}]
       send_set_async_on_connect= {0|1|true|false|TRUE|FALSE}
       switch_ca_certificates= <string>

     Flow Block Configurations::

      cookie= <NUMERIC>
      cookie_mask= <NUMERIC>
      flags= <HEX>
      strict_match= {0|1|true|false|TRUE|FALSE}

     Async Message Configurations:
      flow_removed_mask_master_equal= <HEX>
      flow_removed_mask_slave= <HEX>
      packet_in_mask_master_equal= <HEX>
      packet_in_mask_slave= <HEX>
      port_status_mask_master_equal= <HEX>
      port_status_mask_slave= <HEX>

     Group Entries/Action Configurations:
      group_id= <NUMERIC>
      group_type= {all|indirect|select|fast_failover}
      watch_group= <HEX>
      watch_port= <HEX>
      weight= <NUMERIC>
      controller_max_length= <NUMERIC>
      decrement_ttl_type= {decrement_mpls_ttl|decrement_ip_ttl}
      group_action_type= {copy_ttl_inwards|pop|push_mpls|
                        push_pbb|push_vlan|copy_ttl_outwards|
                        decrement_ttl|set|qos|group|output }]
      output_group_id= <NUMERIC>
      output_port_action_type= {port_num|all|controller|table|
                              in_port|any|local|normal|flood}]
      output_port_number= <NUMERIC>
      pop_mpls_tag_data_ethertype= <NUMERIC>
      pop_tag= {pop_mpls_header|pop_pbb_header|pop_vlan_header}
      push_mpls_tag_data_ethertype= <NUMERIC>
      push_pbb_tag_data_ethertype= <NUMERIC>
      push_vlan_tag_data_ethertype= <NUMERIC>
      set_arp_dst_hw_addr=  <aa:bb:cc:dd:ee:ff>
      set_arp_dst_ipv4_addr= <a.b.c.d>
      set_arp_opcode= <NUMERIC>
      set_arp_src_hw_addr=  <aa:bb:cc:dd:ee:ff>
      set_arp_src_ipv4_addr= <a.b.c.d>
      set_eth_dst=  <aa:bb:cc:dd:ee:ff>
      set_eth_src=  <aa:bb:cc:dd:ee:ff>
      set_eth_type= <NUMERIC>
      set_icmpv4_code= <NUMERIC>
      set_icmpv4_type= <NUMERIC>
      set_icmpv6_code= <NUMERIC>
      set_icmpv6_type= <NUMERIC>
      set_ip_dscp= <NUMERIC>
      set_ip_ecn= <NUMERIC>
      set_ip_proto= <NUMERIC>
      set_ipv4_dst= <a.b.c.d>
      set_ipv4_fields= {ip_dscp|ip_ecn|ip_proto|ipv4_src|
                    ipv4_dst|tcp_src|tcp_dst|udp_src|udp_dst|
                    sctp_src|sctp_dst|icmpv4_type|icmpv4_code}]
      set_ipv4_src= <a.b.c.d>
      set_ipv6_dst= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
      set_ipv6_fields= {ipv6_src|ipv6_dst|ipv6_flabel|icmpv6_type|
                        icmpv6_code|ipv6_nd_target|ipv6_nd_sll|
                        ipv6_nd_tll}]
      set_ipv6_flabel= <NUMERIC>
      set_ipv6_nd_sll=  <aa:bb:cc:dd:ee:ff>
      set_ipv6_nd_target= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
      set_ipv6_nd_tll=  <aa:bb:cc:dd:ee:ff>
      set_ipv6_src= <aaaa:bbbb:cccc:dddd:eeee:ffff:gggg:hhhh>
      set_l2_fields= {eth_dst|eth_src|eth_type|vlan_vid|vlan_pcp|
                    arp_op|arp_spa|arp_tpa|arp_sha|arp_tha|mpls_label|
                    mpls_tc|mpls_bos|pbb_isid|tunnel_id}]
      set_mpls_bos_bit= {0|1|true|false}
      set_mpls_label= <NUMERIC>
      set_mpls_tc= <NUMERIC>
      set_pbb_isid= <NUMERIC>
      set_queue_id= <NUMERIC>
      set_sctp_dst= <NUMERIC>
      set_sctp_src= <NUMERIC>
      set_tcp_dst= <NUMERIC>
      set_tcp_src= <NUMERIC>
      set_tunnel_id= <NUMERIC>
      set_udp_dst= <NUMERIC>
      set_udp_src= <NUMERIC>
      set_vlan_id= <NUMERIC>
      set_vlan_priority= <NUMERIC>

     Reactive Mode Configurations::

      rm_action_field= {dl_dst=<mac/mask>}|{dl_src=<mac/mask>}|{dl_type=<hex>}|
                    {dl_vlan=<id/mask>}{dl_vlan_pcp=<priority>}|{in_port=<port_number>}|
                    {nw_dst=<ipv4/mask>}|{nw_ecn=<int>}|{nw_proto=<hex>}|
                    {nw_src=<ipv4/mask>}|
                    {nw_tos=<int>}]
      rm_match_field=  {all}|{controller:<integer>}|{copy_ttl_in}|{copy_ttl_out}|
                    {dec_mpls_ttl}|{dec_ttl}|{flood}|{local}|{group:<integer>}|
                    {in_port:<integer>}|{mod_dl_dst:<mac_addr>}|{mod_dl_src:<mac_addr>}|
                    {mod_icmpv6_code:<integer>}|{mod_icmpv6_type:<type>}|
                    {mod_ipv6_dst:<ipv6_addr>}|{mod_ipv6_label:<integer>}|
                    {mod_ipv6_src:<ipv6_addr>}|{mod_nd_sll:<mac_addr>}|
                    {mod_nd_target:<ipv6_addr>}|{mod_nd_tll:<mac_addr>}|
                    {mod_nw_dst:<ipv4_addr>}|{mod_nw_src:<ipv4_addr>}|
                    {mod_nw_tos:<integer>}|{mod_sctp_dst:<integer>}|
                    {mod_sctp_src:<integer>}|{mod_tcp_dst:<integer>}|
                    {mod_udp_src:<integer>}|{mod_vlan_pcp:<integer>}|
                    {mod_vlan_vid:<integer>}|{normal}|{pop_mpls:<ethernet_type>}|
                    {pop_pbb}|{pop_vlan}|{push_mpls:<ethernet_type>}|
                    {push_pbb:<ethernet_type>}|{push_vlan:<ethernet_type>}|
                    {set_mpls_bos:<integer>}|{set_mpls_label:<integer>}|
                    {set_mpls_tc:<integer>}|{set_mpls_ttl:<integer>}|
                    {set_queue:<integer>} ]
      rm_switch_handle_list= <switch handle list>

Arguments:

 handle
                 Specifies the OpenFlow device/host handle when mode is
                 set to enable, modify, or add;
                 Specifies the OpenFlow flow/meter handle when mode is set
                 to modify

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


                  enable   Configures the OpenFlow devices specified by handle

                  modify   Modifies the existing OpenFlow flow blocks or meters

                  add      Adds OpenFlow devices, flows, or meters to the current
                           configuration

                  delete   Deletes OpenFlow devices, flows, or meters from the
                           current configuration

 barrier_request_timeout
                 Maximum number of milliseconds to wait for a Barrier Reply after
                 sending a Barrier Request message before timing out. Possible
                 values range from 250 to 6000000. The default value is 10000.

 connection_type
                 Specifies the TCP connection type. Possible values are::


                  passive_tcp     Controller acts as a TCP server and listens for
                                  incoming switch connections

                  passive_tcp_tls  Passive TCP with Transport Layer Security (TLS)

                 The default value is passive_tcp.

 count


 enable_barrier
                 Determines whether the OpenFlow controller will send out a
                 Barrier Request message after adding flows to the switch.
                 Possible values are 0 and 1. When it is set to 1, the OpenFlow
                 controller will send out a Barrier Request after adding flows to
                 the switch. The default value is 0.

 add_default_discovery
                 Determines whether to add default flows for discovery.
                 Possible values are 0 and 1. When it is set to 1, a default flow
                 to forward LLDP packets to the controller will be added to every
                 switch after discovery is started. These flows will be removed
                 when discovery is stopped. When it is set to 0, no flows will be
                 added when discovery is stopped or started. Discovery will still
                 work on switches that default to forward unknown packets to the
                 controller. The default value is 1.

 add_flows_on_connect
                 Determines whether the flows will be automatically added when the
                 OpenFlow controller is started and the switches are connected.
                 Possible values are 0 and 1. When it is set to 1, flows will be
                 sent when the OpenFlow controller is started and switches are
                 connected. The default value is 1.

 add_meters_on_connect
                 Determines whether the meters will be automatically added when
                 the OpenFlow controller is started and the switches are
                 connected. Possible values are 0 and 1. When it is set to 1,
                 meters will be sent when the OpenFlow controller is started and
                 switches are connected. The default value is 1.

 clear_flows_on_connect
                 Determines whether to clear all existing flows after connecting.
                 Possible values are 0 and 1. When it is set to 1, Spirent HLTAPI
                 will clear all existing flows after connecting. The default value
                 is 1.

 clear_meters_on_connect
                 Determines whether to clear all existing meters after connecting.
                 Possible values are 0 and 1. When it is set to 1, Spirent HLTAPI
                 will clear all existing meters after connecting. The default value
                 is 1.

 discovery_dstmacaddr
                 Specifies the destination MAC address used for LLDP discovery
                 messages. The default value is 01:80:C2:00:00:0E.

 discovery_msg_interval
                 Number of seconds between consecutive LLDP discovery messages
                 that are sent to the connected switches. This argument is only
                 valid when LLDP discovery is running. Possible values range from 5
                 to 32768. The default value is 30.

 desired_role
                 Specified the desired role of the controller for all the switches
                 that connect to it. You must set send_role_connect to 1. Possible
                 values are EQUAL, MASTER and SLAVE.
                 The default value is EQUAL.

 desired_generation_id
                 Specifies the value of the Generation ID field in the Role Request
                 message. Possible values range from 0 to 18446744073709551615. The
                 default value is 0.

 openflow_version
                 Specifies the version of the OpenFlow specification to use for the
                 test. Possible values are version_1_0 and version_1_3.

                  version_1_0      OpenFlow version 1.0

                  version_1_3      OpenFlow version 1.3

                 The default value is version_1_0.

 send_role_connect
                 Determines whether to send the desired role of the controller
                 when a switch connects to this controller. Possible values are 0
                 and 1. The default value is 0.

 max_flow_rate
                 Specifies the maximum flow message rate limit in flows per second.
                 The value must be a float. Possible values range from 0.0 to
                 65535.0. The default value is 0.0.

 tcp_port
                 Specifies the TCP port number used by the OpenFlow controller.
                 Possible values range from 1 to 65535. The default value is 6633.

 flow_cmd_type
                 A list of commands that the flow block will support. Possible
                 values are add, delete and modify. For each flow in the block,
                 any combination of the three values is allowed. Use "|" to
                 combine multiple types. For example, flow_cmd_type "add|delete
                 modify add|modify".

 flow_block_type
                 Specifies the list of types for the flows in the block. Possible
                 values are::


                  bound            Flows created from the specified bound streamblocks

                  flow_table_text  Flows created from flow table texts

                  custom           Custom flow blocks

                 The default value is bound.

 flow_switch_handle
                 Specifies a list of handles for the affiliated OpenFlow switches
                 that are discovered after you run the
                 ``emulation openflow control`` action=
                 start_discovery.

 flow_table_text
                 Specifies a list of flow table texts where each flow is defined by
                 a line of text. This argument is only valid when flow_block_type
                 is set to flow_table_text. The default value is ""(empty string).

 match_fields
                 A list of specified fields to match against the packets
                 for the flow. Fields can be combined to form sublists.
                 Possible values are::


                  ingress_port         Ingress port
                  eth_src_mac          Ethernet source MAC
                  eth_dst_mac          Ethernet destination MAC
                  eth_type             Ethernet type
                  vlan_id              VLAN ID
                  vlan_priority        VLAN priority
                  ipv4_src_addr        IPv4 source address
                  ipv4_dst_addr        IPv4 destination address
                  ipv4_tos             IPv4 TOS
                  ipv4_protocol        IPv4 protocol
                  tcp_udp_src_port     TCP/UDP source port
                  tcp_udp_dst_port     TCP/UDP destination port
                  ipv6_src_addr        IPv6 source address
                  ipv6_dst_addr        IPv6 destination address
                  ipv6_flow_label      IPv6 flow label
                  ipv6_protocol        IPv6 next header protocol
                  ipv6_traffic_class   IPv6 traffic class

                 This example shows a configuration with a single list::


                  match_fields "{{ingress_port eth_type ipv4_src_addr ipv4_dst_addr}}"

                 When there are multiple sublists, the outer braces can be omitted.
                 For example::


                  match_fields  "{ingress_port}{ipv4_dst_addr}
                                {eth_type vlan_id vlan_priority} "

                 The default field is eth_dst_mac.

 custom_match_field
                 Specifies a list of fields to match against the packets
                 for flow blocks of custom type.
                 Possible values are::


                    Field                          Description

                  arp_op:<integer>                 ARP Opcode
                  arp_sha:<mac_addr/mask>          ARP Source MAC
                  arp_spa:<addr/mask>              ARP Source
                  arp_tha:<mac_addr/mask>          ARP Destination MAC
                  arp_tpa:<addr/mask>              ARP Destination
                  dl_dst:<mac_addr/mask>           Ethernet Destination
                  dl_src:<mac_addr/mask>           Ethernet Source
                  dl_type:<hex>                    Ethernet Type
                  dl_vlan:<integer/hex>            VLAN ID
                  dl_vlan_pcp:<integer>            VLAN Priority
                  exp:<int/string/string/hex>      Experimenter
                  ext_hdr:<integer/hex>            IPV6 Ext Header
                  icmpv4_code:<integer>            ICMPv4 Code
                  icmpv4_type:<type>               ICMPv4 Type
                  icmpv6_code:<integer>            ICMPv6 Code
                  icmpv6_type:<type>               ICMPv6 Type
                  in_phy_port:<integer>            Physical port
                  in_port:<integer>                Ingress Port
                  ipv6_dst:<ipv6_addr/mask>        IPv6 Destination
                  ipv6_label:<integer/mask>        IPv6 Label
                  ipv6_src:<ipv6_addr/mask>        IPv6 Source
                  metadata:<integer/mask>          Metadata
                  mpls_bos:<integer>               MPLS BOS
                  mpls_label:<integer>             MPLS Label
                  mpls_tc:<integer>                MPLS Traffic Class
                  nd_sll:<mac_addr>                Nbr Solicit Source MAC
                  nd_target:<ipv6_addr>            Nbr Discovery Target IPV6
                  nd_tll:<mac_addr>                Nbr Advertisement Source Mac
                  nw_dst:<ipv4_addr/mask>          IPv4 Destination
                  nw_ecn:<integer>                 IPv4/IPv6 ECN
                  nw_proto:<protocol types>        IPv4/IPv6 Protocol
                  nw_src:<ipv4_addr/mask>          IPv4 Source
                  nw_tos:<integer>                 IPv4/IPv6 Tos
                  pbb_isid:<integer/mask>          PBBISID
                  sctp_dst:<integer>               SCTP Destination
                  sctp_src:<integer>               SCTP Source
                  tcp_dst:<integer>                TCP Destination
                  tcp_src:<integer>                TCP Source
                  tp_dst:<integer>                 TCP/UDP Destination
                  tp_src:<integer>                 TCP/UDP Destination
                  tun_id:<integer/mask>            Tunnel ID
                  udp_dst:<integer>                UDP Destination
                  udp_src:<integer>                UDP Source

                 The number of values in the list corresponds to the number of flow
                 blocks to create. If the value is empty, use a dash (-) as the
                 placeholder. For example::


                  custom_match_field "{- - - {nw_src=35.35.35.2/255.255.225.222
                                       dl_vlan_pcp=6} {arp_op=1 in_port=2}}"\"

                 The default field is eth_dst_mac.

 custom_action_field
                 Specifies a list of action fields for flow blocks of the custom
                 type. Possible values are::


                  Field                           Description
                  {all}                           Output All
                  {controller:<integer>}          Controller
                  {copy_ttl_in}                   Copy TTL In
                  {copy_ttl_out}                  Copy TTL Out
                  {dec_mpls_ttl}                  Decrement MPLS TTL
                  {dec_ttl}                       Decrement IPv4/IPv6 TTL
                  {flood}                         Output Flood
                  {local}                         Output Local

                  {group:<integer>}               Group
                                                  Default:1

                  {in_port:<integer>}             Output InPort
                                                  Default:100
                  {mod_dl_dst:<mac_addr>}         Modify Ethernet Destination
                                                  Default:00:00:01:00:00:01

                  {mod_dl_src:<mac_addr>}         Modify Ethernet Source
                                                  Default:00:00:01:00:00:01

                  {mod_icmpv6_code:<integer>}     Modify ICMPv6 Code
                                                  Default:0

                  {mod_icmpv6_type:<type>}        Modify ICMPv6 Type
                                                  Possible Values:
                                                  1       Destination Unreachable
                                                  2       Packet Too Big
                                                  3       Time Exceeded
                                                  4       Parameter Problem
                                                  128     Echo Request
                                                  129     Echo Reply
                                                  130     MLDv1 Query
                                                  131     MLDv1 Listener Report
                                                  132     MLDv1 Listener Done
                                                  133     Router Solicitation
                                                  134     Router Advertisement
                                                  135     Neighbor Solicitation
                                                  136     Neighbor Advertisement
                                                  137     Redirect
                                                  143     MLDv2 Listener Report
                                                  Default: 135

                  {mod_ipv6_dst:<ipv6_addr>}      Modify IPv6 Destination
                                                  Default: 2000::1:1

                  {mod_ipv6_label:<integer>}      Modify IPv6 Label
                                                  Default: 1

                  {mod_ipv6_src:<ipv6_addr>}      Modify IPv6 Source
                                                  Default: 2000::2:1

                  {mod_nd_sll:<mac_addr>}         Modify IPv6 ND Solicit Source
                                                  Default: 00:00:01:00:00:01

                  {mod_nd_target:<ipv6_addr>}     Modify IPv6 ND Target
                                                  Default: 2000::1:1

                  {mod_nd_tll:<mac_addr>}         Modify IPv6 Nbr Advertisement Source
                                                  Default: 00:00:01:00:00:01

                  {mod_nw_dst:<ipv4_addr>}        Modify IPv4 Destination
                                                  Default: 192.0.0.1

                  {mod_nw_src:<ipv4_addr>}        Modify IPv4 Source
                                                  Default: 192.0.0.1

                  {mod_nw_tos:<integer>}          Modify IPv4/IPv6 ToS/DSCP
                                                  Default: 0

                  {mod_sctp_dst:<integer>}        Modify SCTP Destination
                                                  Default: 100

                  {mod_sctp_src:<integer>}        Modify SCTP Source
                                                  Default: 100

                  {mod_tcp_dst:<integer>}         Modify TCP Destination
                                                  Default:100

                  {mod_tcp_src:<integer>}         Modify TCP Source
                                                  Default: 100

                  {mod_tun_id:<integer>}          Modify Tunnel ID
                                                  Default: 0

                  {mod_udp_dst:<integer>}         Modify UDP Destination
                                                  Default: 100

                  {mod_udp_src:<integer>}         Modify UDP Source
                                                  Default: 100

                  {mod_vlan_pcp:<integer>}        Modify VLAN Priority
                                                  Default: 0

                  {mod_vlan_vid:<integer>}        Modify VLAN ID
                                                  Default: 100

                  {normal}                        Output Normal

                  {pop_mpls:<ethernet_type>}      Pop MPLS
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 800

                  {pop_pbb}                       Pop PBB
                  {pop_vlan}                      Pop VLAN

                  {push_mpls:<ethernet_type>}     Push MPLS
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 8847

                  {push_pbb:<ethernet_type>}      Push PBB
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 88E7

                  {push_vlan:<ethernet_type>}     Push VLAN
                                                  Value   Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 8100

                  {set_mpls_bos:<integer>}        Set MPLS BoS
                                                  Default: 1

                  {set_mpls_label:<integer>}      Set MPLS Label
                                                  Default:10

                  {set_mpls_tc:<integer>}         Set MPLS TC
                                                  Default: 1

                  {set_mpls_ttl:<integer>}        Set MPLS TTL
                                                  Default: 1

                  {set_queue:<integer>}           Set Queue
                                                  Default: 1

                  drop                            Drop
                  enqueue:<integer/integer>       Enqueue
                  exp_action:<string/string>      Experimenter Action
                  goto_table:<integer>            Goto Table
                  meter:<integer>                 Meter
                  mod_tp_dst:<integer>            TCP/UDP Destination
                  mod_tp_src:<integer>            TCP/UDP Source
                  output:<integer>                Output

                  set_field_experimenter:<fieldinteger/ID-string/Value-string>
                                                 Set Field Experimenter

                  set_field_experimenter_dec:<fieldinteger/ID-string/Decimal
                                           Valueinteger> Set Field Experimenter IP

                  set_field_experimenter_ip:<fieldinteger/ID-string/IP Addressinteger>
                                              Set Field Experimenter Decimal

                 The number of values in the list corresponds to the number of
                 flow blocks to create. If the value is empty, use a dash (-) as
                 the placeholder. For example::


                  custom_action_field "{- - - {all} {group:2 all}}"

 custom_goto_table_field
                 Specifies a list of Goto table fields to be inserted in flow
                 blocks of the custom type. The value must be in the format of
                 {goto_table=<integer>}.

 custom_metadata_field
                 Specifies a list of metadata fields to be inserted in flow blocks
                 of the custom type. The value must be in the format of
                 {write_metadata=<data:mask>}.

 custom_clear_action_field
                 Specifies a list of clear action fields to be inserted in flow
                 blocks of the custom type. The value must be in the format of
                 {clear_actions}.

 custom_meter_field
                 Specifies a list of meter fields to be inserted in flow blocks of
                 the custom type. The value must be in the format of
                 {meter=<integer>}.
 custom_exp_field
                 Specifies a list of experimenter instruction fields to be
                 inserted in flow blocks of the custom type. The value must be in
                 the format of {exp_instruction=<data:id>}.

 custom_write_action_field
                 Specifies a list of write action fields to be
                 inserted in flow blocks of the custom type. The available fields
                 and formats are described below::


                  Field/Format                     Description
                  {all}                           Output All
                  {controller:<integer>}          Controller
                  {copy_ttl_in}                   Copy TTL In
                  {copy_ttl_out}                  Copy TTL Out
                  {dec_mpls_ttl}                  Decrement MPLS TTL
                  {dec_ttl}                       Decrement IPv4/IPv6 TTL
                  {flood}                         Output Flood
                  {local}                         Output Local

                  {group:<integer>}               Group
                                                  Default:1

                  {in_port:<integer>}             Output InPort
                                                  Default:100
                  {mod_dl_dst:<mac_addr>}         Modify Ethernet Destination
                                                  Default:00:00:01:00:00:01

                  {mod_dl_src:<mac_addr>}         Modify Ethernet Source
                                                  Default:00:00:01:00:00:01

                  {mod_icmpv6_code:<integer>}     Modify ICMPv6 Code
                                                  Default:0

                  {mod_icmpv6_type:<type>}        Modify ICMPv6 Type
                                                  Possible Values:
                                                  1       Destination Unreachable
                                                  2       Packet Too Big
                                                  3       Time Exceeded
                                                  4       Parameter Problem
                                                  128     Echo Request
                                                  129     Echo Reply
                                                  130     MLDv1 Query
                                                  131     MLDv1 Listener Report
                                                  132     MLDv1 Listener Done
                                                  133     Router Solicitation
                                                  134     Router Advertisement
                                                  135     Neighbor Solicitation
                                                  136     Neighbor Advertisement
                                                  137     Redirect
                                                  143     MLDv2 Listener Report
                                                  Default: 135

                  {mod_ipv6_dst:<ipv6_addr>}      Modify IPv6 Destination
                                                  Default: 2000::1:1

                  {mod_ipv6_label:<integer>}      Modify IPv6 Label
                                                  Default: 1

                  {mod_ipv6_src:<ipv6_addr>}      Modify IPv6 Source
                                                  Default: 2000::2:1

                  {mod_nd_sll:<mac_addr>}         Modify IPv6 ND Solicit Source
                                                  Default: 00:00:01:00:00:01

                  {mod_nd_target:<ipv6_addr>}     Modify IPv6 ND Target
                                                  Default: 2000::1:1

                  {mod_nd_tll:<mac_addr>}         Modify IPv6 Nbr Advertisement Source
                                                  Default: 00:00:01:00:00:01

                  {mod_nw_dst:<ipv4_addr>}        Modify IPv4 Destination
                                                  Default: 192.0.0.1

                  {mod_nw_src:<ipv4_addr>}        Modify IPv4 Source
                                                  Default: 192.0.0.1

                  {mod_nw_tos:<integer>}          Modify IPv4/IPv6 ToS/DSCP
                                                  Default: 0

                  {mod_sctp_dst:<integer>}        Modify SCTP Destination
                                                  Default: 100

                  {mod_sctp_src:<integer>}        Modify SCTP Source
                                                  Default: 100

                  {mod_tcp_dst:<integer>}         Modify TCP Destination
                                                  Default:100

                  {mod_tcp_src:<integer>}         Modify TCP Source
                                                  Default: 100

                  {mod_tun_id:<integer>}          Modify Tunnel ID
                                                  Default: 0

                  {mod_udp_dst:<integer>}         Modify UDP Destination
                                                  Default: 100

                  {mod_udp_src:<integer>}         Modify UDP Source
                                                  Default: 100

                  {mod_vlan_pcp:<integer>}        Modify VLAN Priority
                                                  Default: 0

                  {mod_vlan_vid:<integer>}        Modify VLAN ID
                                                  Default: 100

                  {normal}                        Output Normal

                  {pop_mpls:<ethernet_type>}      Pop MPLS
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 800

                  {pop_pbb}                       Pop PBB
                  {pop_vlan}                      Pop VLAN

                  {push_mpls:<ethernet_type>}     Push MPLS
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 8847

                  {push_pbb:<ethernet_type>}      Push PBB
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 88E7

                  {push_vlan:<ethernet_type>}     Push VLAN
                                                  Value   Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 8100

                  {set_mpls_bos:<integer>}        Set MPLS BoS
                                                  Default: 1

                  {set_mpls_label:<integer>}      Set MPLS Label
                                                  Default:10

                  {set_mpls_tc:<integer>}         Set MPLS TC
                                                  Default: 1

                  {set_mpls_ttl:<integer>}        Set MPLS TTL
                                                  Default: 1

                  {set_queue:<integer>}           Set Queue
                                                  Default: 1

                  drop                            Drop
                  enqueue:<integer/integer>       Enqueue
                  exp_action:<string/string>      Experimenter Action
                  goto_table:<integer>            Goto Table
                  meter:<integer>                 Meter
                  mod_tp_dst:<integer>            TCP/UDP Destination
                  mod_tp_src:<integer>            TCP/UDP Source


 hard_timeout
                 Number of seconds after which an entry should be removed regardless
                 of any activity. Possible values range from 0 to 65535. The default
                 value is 0.

 idle_timeout
                 Number of seconds after which an entry should be removed due to a
                 lack of activity. Possible values range from 0 to 65535. The
                 default value is 0.

 transport_type
                 Specifies the transport type used for multiple switch
                 configurations. Possible values are::


                  flow_forward      Forward packets unchanged

                  modify_vlanid     Add/remove a transport VLAN for multiple switch
                                    configurations

                 The default value is flow_forward.

 first_vlan_id
                 Specifies the ID of the first VLAN used for transport flows.
                 Possible values range from 0 to 4095. The default value is 0.

 action_type
                 Specifies the flow action to take. Possible values are::


                  forward_to_port      Forward packets that match the flow definitions

                  drop                 Drop packets that match the flow definitions

                 The default value is forward_to_port.

 modify_dst_device
                 A list of fields in the packets to modify to match the
                 destination device. Possible values are::


                  eth_mac    Modify the MAC destination to match the destination device

                  vlan_id     Modify the VLAN ID to match the destination device

                  ipv4_addr   Modify the IPv4 destination address to match the
                              destination device

                  ipv6_addr   Modify the IPv6 destination address to match the
                              destination device

                 The default value is ipv4_addr.

 stream_ids
                 Specifies the streamblock IDs for the flow block

Note: The configuration list of the flowspecific arguments above must be of the
      same length. If the value is empty, use a dash (-) as the placeholder.
      Values are separated by spaces (" "). For example::


        switch_link_list      "$hltSrcPort-dpid0/3 dpid0/2-dpid1/6 dpid1/4-dpid0/5"
        flow_cmd_type         "add|delete modify add|modify add|modify add|delete"
        flow_block_type       "flow_table_text bound bound custom custom"
        flow_table_text       "aaabbbccc - - - -"
        flow_switch_handle    "dpid0 - - dpid0 dpid0"
        match_fields          "{INGRESS_PORT ETH_TYPE IPV4_SRC_ADDR IPV4_DST_ADDR}
                               {IPV4_DST_ADDR} {ETH_TYPE VLAN_ID VLAN_PRIORITY}"
        custom_match_field     "{- - - {nw_src=35.35.35.2/255.255.225.222 dl_vlan_pcp=6}
                               {arp_op=1 in_port=2}}"
        custom_action_field     "{- - - {all} {group:2 all}}"

 meter_id
                 Specifies the meter ID. Possible values range from 0 to
                 4294967295. The default value is 1.

 enable_burst_size
                 Enables/disables burst size. Possible values are 0 (disable) and 1
                 (enable). The default value is 0.

 rate_type
                 Type of rate for the meter block. Possible values are::


                  pktps      Rate value in packet/sec
                  kbps    Rate value in kb/sec

                 The default value is pktps.

 meter_switch_handle
                 The handle for the affiliated OpenFlow switch that is discovered
                 after you run the ``emulation openflow control`` function with
                 action start_discovery.

 band_type
                 Defines how packets are processed for each meter. Possible values
                 are::


                  dscp_remark      Increase the drop precedence of the DSCP field
                                   in the IP header of the packet

                  experimenter     Pass through the value specified by experimenter

                  drop             Drop the packet

                 The default value is drop.

 burst_size
                 Size of the burst based on the units set by rate_type.
                 The default value is 0.

 rate
                 Lowest rate at which the band applies using the unit set by
                 rate_type. The default value is 0.

 experimenter
                 Specifies the value for the experimenter field. This argument is
                 only valid when band_type is set to experimenter. The default
                 value is 0.

 precedence_level
                 Specifies the amount by which to drop the precedence level. This
                 argument is only valid when band_type is set to dscp_remark.
                 Possible values range from 0 to 255. The default value is 0.

Note: The configuration list of the meterspecific arguments above must be of the
      same length. If the value is empty, use a dash (-) as the placeholder. Values
      are separated by spaces (" ").
      For example::


           band_type          "{dscp_remark experimenter drop}"\
           rate               "{70 55 20}" \
           experimenter       "{- - 1}" \
           precedence_level   "{- 3 -}" \
           burst_size         "{15 20 80}"


OpenFlow Device Configuration Arguments

 add_group_entries_on_connect
                 Once enabled, the group entries will be automatically added when
                 the OpenFlow controller is started and the switches are
                 connected. Possible values are true (1) and false (0). The
                 default value is true.

 clear_existing_group_entries_on_connect
                 Once enabled, the group entries will be automatically cleared when
                 the OpenFlow controller is started and the switches are connected.
                 Possible values are true (1) and false (0). The default value is
                 true.

 controller_certificate
                 Specifies the file containing the public key certificate of the
                 controller

 controller_private_key
                 Specifies the Privacy Enhanced Mail (PEM) file containing the
                 private key file of the controller

 dynamic_load
                 Specifies the dynamic load value. Possible values range from 1 to
                 1000000. The default value is 30.

 enable_reactive_mode
                 Enables or disables the reactive mode. Possible values are true
                 (1) and false (0). The default value is false.

 endpoint_connection_pattern
                 Specifies the endpoint connection pattern.
                 Possible values are::


                  pair                       Paired connection
                  backbone_src_first         Backbone source connection first
                  backbone_dst_first            Backbone destination connection first
                  backbone_interleaved       Backbone interleaved connection

                 The default value is pair.

 send_set_async_on_connect
                 Determines whether to send the Set Async message on connection.
                 Set it to true to send the Set Async message on connection.
                 Possible values are true (1) and false (0). The default value is
                 false.

 switch_ca_certificates
                 Specifies the PEM files to authenticate the switch

Flow Block Configurations

 cookie
                 Specifies the cookie value relating to the flow block to match.
                 The default value is 0.

 cookie_mask
                 Specifies the cookie mask value to match. The default value is 0.

 flags
                 Specifies the flag value to match. The default value is 1.

 strict_match
                 Determines whether to enforce strict matching for the FlowMod
                 modify and delete messages. Possible values are true (1) and
                 false (0). When it is set to true, Spirent HLTAPI will send the
                 FlowMod modify and delete messages in a strict manner. The
                 default value is true.

Async Message Configurations

 flow_removed_mask_master_equal
                 Specifies the flow removed mask for the controller role of master
                 or equal, in HEX format. The default value is 0xF.

 flow_removed_mask_slave
                 Specifies the flow removed mask for controller role of slave, in
                 HEX format. The default value is 0.

 packet_in_mask_master_equal
                 Specifies the packetin mask for controller role of master or
                 equal, in HEX format. The default value is 3.

 packet_in_mask_slave
                 Specifies the packetin mask for controller role of slave, in HEX
                 format. The default value is 0.

 port_status_mask_master_equal
                 Specifies the port mask for controller role of master or equal,
                 in HEX format. The default value is 7.

 port_status_mask_slave
                 Specifies the port mask for controller role of slave, in HEX format.
                 The default value is 7.

Group Entries/Action Configurations

 group_id
                 Specifies the unique identifier for the group. The default value
                 is 1.

 group_type
                 Specifies the group type. Possible values are::


                  all          Execute all action buckets in the group. The packet
                               is effectively cloned for each bucket; one packet is
                               processed for each bucket of the group.

                  indirect     Execute the one action bucket in the group. This
                               group type is effectively identical to an All group
                               with one bucket.

                  select       Execute one bucket in the group that is selected based
                               on a switchcomputed selection algorithm.

                  fast_failover   Execute the first action bucket that is associated
                                  with a live port.

                 The default value is all.

 watch_group
                 Specifies the group to check to for liveness to determine whether
                 the bucket is a candidate for forwarding. The value must be in
                 HEX format. The default value is 0xFFFFFFFF.

 watch_port
                 Specifies the port to check to for liveness to determine whether
                 the bucket is a candidate for forwarding. The value must be in
                 HEX format. The default value is 0xFFFFFFFF.

 weight
                 Specifies the relative weight of the bucket.
                 The default value is 0.

 controller_max_length
                 Specifies the length of the packet to be sent to the controller.
                 You must set group_action_type to controller. The default value
                 is 65535.

 decrement_ttl_type
                 Specifies the type of the TTL to decrement. You must set
                 group_action_type to decrement_ttl.
                 Possible values are::


                  decrement_mpls_ttl      Decrement MPLS TTL
                  decrement_ip_ttl        Decrement IP TTL

                 The default value is decrement_ip_ttl.

 group_action_type
                 Specifies the group action type. Each action type has its own set
                 of available options. Possible values are::


                  copy_ttl_inwards        Copy TTL inwards
                  pop                     Pop Tag
                  push_mpls               Push MPLS
                  push_pbb                Push PBB
                  push_vlan               Push VLAN
                  copy_ttl_outwards       Copy TTL outwards
                  decrement_ttl           Decrement TTL
                  set                     Set fields
                  qos                     QoS
                  group                   Output group ID
                  output                  Output port

                 Use "|" to specify multiple actions. The default value is output.

 output_group_id
                 Specifies the output group ID. You must set group_action_type to
                 group. The default value is 1.

 output_port_action_type
                 Specifies the action type of the output port. You must set
                 group_action_type to output.
                 Possible values are::


                  port_num        Output port number
                  all             Output to all standard ports except In ports
                  controller      Output to the controller
                  table           Output to the first table
                  in_port         Output on the in port
                  any             Output on any port
                  local           Output on the local OpenFlow port
                  normal          Forward using a nonOpenflow pipeline
                  flood           Flood using a nonOpenFlow pipeline

                 The default value is port_num.

 output_port_number
                 Specifies the output port where the packets will be sent. You
                 must set group_action_type to port_num.
                 The default value is 1.

 pop_tag
                 Specifies the Pop tag action type. You must set
                 group_action_type to pop.
                 Possible values are::


                  pop_mpls_header    MPLS tag push action
                  pop_pbb_header     Provider Backbone Bridge (PBB) tag push action
                  pop_vlan_header    VLAN tag push action

                 The default value is pop_vlan_header.

 pop_mpls_tag_data_ethertype
                 Sets the Ethertype value for the Pop MPLS header action. You
                 must set group_action_type to pop_mpls_header.
                 The default value is 0x8847.

 push_mpls_tag_data_ethertype
                 Sets the Ethertype value for the Push MPLS header action. You
                 must set group_action_type to push_mpls.
                 The default value is 0x8847.

 push_pbb_tag_data_ethertype
                 Sets the Ethertype value for the Push PBB header action. You
                 must set group_action_type to push_pbb.
                 The default value is 0x88e7.

 push_vlan_tag_data_ethertype
                 Sets the Ethertype value for the Push VLAN header action. You
                 must set group_action_type to push_vlan.
                 The default value is 0x8100.

The following SetAction fields are identified by their field type and modify the
values of respective header fields in the packet. You must set group_action_type
to set.

 set_queue_id
                 Sets the queue ID for the QoS SetAction field. You must set
                 group_action_type to qos. The default value is 1.

 set_ipv4_fields
                 Specifies the IPv4 SetAction fields. You must specify the field
                 to set the corresponding value.
                 Possible values are::


                  ip_dscp         Set IP DSCP (6 bits in the ToS field)
                  ip_ecn          Set IP ECN (2 bits in the ToS field)
                  ip_proto        Set IP Protocol
                  ipv4_src        Set IPv4 source address
                  ipv4_dst        Set IPv4 destination address
                  tcp_src         Set TCP source address
                  tcp_dst         Set TCP destination address
                  udp_src         Set UDP source port
                  udp_dst         Set UDP destination port
                  sctp_src        Set SCTP source port
                  sctp_dst        Set SCTP destination port
                  icmpv4_type     Set ICMPv4 type
                  icmpv4_code     Set ICMPv4 code
                  0               None specified

                 Use "|" to specify multiple fields. The default value is 0.

 set_icmpv4_code
                 Sets the ICMPv4 code. The default value is 0.

 set_icmpv4_type
                 Sets the ICMPv4 type. The default value is 0.

 set_ip_dscp
                 Sets the IP DSCP value. The default value is 0.

 set_ip_ecn
                 Sets the IP ECN value. The default value is 0.

 set_ip_proto
                 Sets the IP protocol value. The default value is 6.

 set_ipv4_dst
                 Sets the IPv4 destination address. The default value is 10.0.0.2.

 set_ipv4_src
                 Sets the IPv4 source address. The default value is 10.0.0.1.

 set_sctp_dst
                 Sets the Stream Control Transmission Protocol (SCTP) destination
                 port. The default value is 100.

 set_sctp_src
                 Sets the SCTP source port. The default value is 100.

 set_tcp_dst
                 Sets the TCP destination port. The default value is 0000.

 set_tcp_src
                 Sets the TCP source port. The default value is 0000.

 set_udp_dst
                 Sets the UDP destination port. The default value is 0000.

 set_udp_src
                 Sets the UDP source port. The default value is 0000.

 set_ipv6_fields
                 Specifies the IPv6 SetAction fields. You must specify the field
                 here to set the corresponding value.
                 Possible values are::


                  icmpv6_type             Set ICMPv6 type
                  icmpv6_code             Set ICMPv6 code
                  ipv6_src                Set IPv6 source address
                  ipv6_dst                Set IPv6 destination address
                  ipv6_flabel             Set IPv6 flow label
                  ipv6_nd_target          Set target address for Neighbor Discovery (ND)
                  ipv6_nd_sll             Set source linklayer for ND
                  ipv6_nd_tll             Set target linklayer for ND
                  0                       None specified

                 Use "|" to specify multiple fields. The default value is 0.

 set_icmpv6_code
                 Sets the ICMPv6 code. The default value is 0.

 set_icmpv6_type
                 Sets the ICMPv6 Type. The default value is 0.

 set_ipv6_dst
                 Sets the IPv6 destination address. The default value is 2000::1.

 set_ipv6_flabel
                 Sets the IPv6 flow label. The default value is 0.

 set_ipv6_nd_sll
                 Sets the IPv6 source linklayer interface address for ND, in MAC format.
                 The default value is 00:00:01:00:00:01.

 set_ipv6_nd_target
                 Sets the IPv6 target address for ND. The default value is 2000::1.

 set_ipv6_nd_tll
                 Sets the IPv6 target linklayer interface for ND, in MAC format.
                 The default value is 00:00:01:00:00:01.

 set_ipv6_src
                 Sets the IPv6 source address. The default value is 2000::10.

 set_l2_fields
                 Specifies the Layer 2 SetAction fields. You must specify the field
                 here to set the corresponding value.
                 Possible values are::


                  arp_op      Set ARP Opcode
                  arp_spa     Set ARP source IPv4 address
                  arp_tpa     Set ARP destination IPv4 address
                  arp_sha     Set ARP source hardware address
                  arp_tha     Set ARP destination hardware address
                  eth_dst     Set Ethernet destination
                  eth_src     Set Ethernet source
                  eth_type    Set Ethernet type
                  mpls_label  Set MPLS label
                  mpls_tc     Set MPLS TC
                  mpls_bos    Set MPLS Bottomof-Stack (BoS) bit
                  pbb_isid    Set PBB ISID
                  tunnel_id   Set Tunnel ID
                  vlan_vid    Set VLAN ID
                  vlan_pcp    Set VLAN priority
                   0          None specified

                 Use "|" to specify multiple fields. The default value is 0.

 set_arp_dst_hw_addr
                 Sets the ARP destination hardware address. The default value is
                 00:10:01:00:00:01.

 set_arp_dst_ipv4_addr
                 Sets the ARP destination IPv4 address. The default value is
                 20.0.0.1.

 set_arp_opcode
                 Sets the ARP operation code (Opcode). The default value is 0.

 set_arp_src_hw_addr
                 Sets the ARP source hardware address, in MAC format. The default
                 value is 00:20:01:00:00:01.

 set_arp_src_ipv4_addr
                 Sets the ARP source IPv4 address. The default value is 10.0.0.1.

 set_eth_dst
                 Sets the Ethernet destination address, in MAC format. The default
                 value is 00:10:01:00:00:01.

 set_eth_src
                 Sets the Ethernet source address, in MAC format. The default
                 value is 00:20:01:00:00:01.

 set_eth_type
                 Sets the Ethernet type. The default value is 0x8100.

 set_mpls_bos_bit
                 Sets the MPLS BoS bit. Possible values are true (1) and false
                 (0). The default value is false.

 set_mpls_label
                 Sets the MPLS label. The default value is 0x8100.

 set_mpls_tc
                 Sets the MPLS TC value. The default value is 0.

 set_pbb_isid
                 Sets the PBB Instantialized Service ID (ISID).
                 The default value is 0.

 set_tunnel_id
                 Sets the tunnel ID. The default value is 0.

 set_vlan_id
                 Sets the VLAN ID. The default value is 100.

 set_vlan_priority
                 Sets the VLAN priority. The default value is 0.

Reactive Mode Configurations

 rm_match_field
                 Configures a list of actions to be performed on the filtered
                 traffic. You must set enable_reactive_mode to true.
                 The following fields are supported::


                  {dl_dst=<mac/mask>}             Ethernet Destination
                                                  Default: 00:00:02:00:00:01
                  {dl_src=<mac/mask>}             Ethernet source
                                                  Default: 00:00:01:00:00:01
                  {dl_type=<hex>}                 Ethernet type
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 800
                  {dl_vlan=<id/mask>}             VLAN ID
                                                  Default: 800
                  {dl_vlan_pcp=<priority>}        VLAN priority
                                                  Default: 1
                  {in_port=<port_number>}         Ingress port
                                                  Default: 1
                  {nw_dst=<ipv4/mask>}            IPv4 destination
                                                  Default: 192.0.0.1
                  {nw_ecn=<int>}                  IPv4/IPv6 ECN
                                                  Default: 0
                  {nw_proto=<hex>}                IPv4/IPv6 protocol
                                                  Value  Description
                                                  0     HOPOPT
                                                  1     ICMP
                                                  2     IGMP
                                                  3     GGP
                                                  4     IP
                                                  5     ST
                                                  6     TCP
                                                  7     CBT
                                                  8     EGP
                                                  9     IGP
                                                  10    BBNRCC-MON
                                                  11    NVPII
                                                  12    PUP
                                                  13    ARGUS
                                                  14    EMCON
                                                  15    XNET
                                                  16    CHAOS
                                                  17    UDP
                                                  18    MUX
                                                  19    DCNMEAS
                                                  20    HMP
                                                  21    PRM
                                                  22    XNSIDP
                                                  23    TRUNK-1
                                                  24    TRUNK-2
                                                  25    LEAF-1
                                                  26    LEAF-2
                                                  27    RDP
                                                  28    IRTP
                                                  29    ISOTP4
                                                  30    NETBLT
                                                  31    MFENSP
                                                  32    MERITINP
                                                  33    SEP
                                                  34    3PC
                                                  35    IDPR
                                                  36    XTP
                                                  37    DDP
                                                  38    IDPRCMTP
                                                  39    TP++
                                                  40    IL
                                                  41    IPv6
                                                  42    SDRP
                                                  43    IPv6Route
                                                  44    IPv6Frag
                                                  45    IDRP
                                                  46    RSVP
                                                  47    GRE
                                                  48    MHRP
                                                  49    BNA
                                                  50    ESP
                                                  51    AH
                                                  52    INLSP
                                                  53    SWIPE
                                                  54    NARP
                                                  55    MOBILE
                                                  56    TLSP
                                                  57    SKIP
                                                  58    IPv6ICMP
                                                  59    IPv6NoNxt
                                                  60    IPv6Opts
                                                  62    CFTP
                                                  64    SATEXPAK
                                                  65    KRYPTOLAN
                                                  66    RVD
                                                  67    IPPC
                                                  69    SATMON
                                                  70    VISA
                                                  71    IPCV
                                                  72    CPNX
                                                  73    CPHB
                                                  74    WSN
                                                  75    PVP
                                                  76    BRSAT-MON
                                                  77    SUNND
                                                  78    WBMON
                                                  79    WBEXPAK
                                                  80    ISOIP
                                                  81    VMTP
                                                  82    SECUREVMTP
                                                  83    VINES
                                                  84    TTP
                                                  85    NSFNETIGP
                                                  86    DGP
                                                  87    TCF
                                                  88    EIGRP
                                                  89    OSPFIGP
                                                  90    SpriteRPC
                                                  91    LARP
                                                  92    MTP
                                                  93    AX.25
                                                  94    IPIP
                                                  95    MICP
                                                  96    SCCSP
                                                  97    ETHERIP
                                                  98    ENCAP
                                                  100    GMTP
                                                  101    IFMP
                                                  102    PNNI
                                                  103    PIM
                                                  104    ARIS
                                                  105    SCPS
                                                  106    QNX
                                                  107    A/N
                                                  108    IPComp
                                                  109    SNP
                                                  110    CompaqPeer
                                                  111    IPXin-IP
                                                  112    VRRP
                                                  113    PGM
                                                  115    L2TP
                                                  116    DDX
                                                  117    IATP
                                                  118    STP
                                                  119    SRP
                                                  120    UTI
                                                  121    SMP
                                                  122    SM
                                                  123    PTP
                                                  124    ISIS over IPv4
                                                  125    FIRE
                                                  126    CRTP
                                                  127    CRUDP
                                                  128    SSCOPMCE
                                                  129    IPLT
                                                  130    SPS
                                                  131    PIPE
                                                  132    SCTP
                                                  133    FC
                                                  134    RSVPE2E-IGNORE
                                                  135    Mobility Header
                                                  136    UDPLite
                                                  137    MPLSin-IP
                                                  253    Experimental
                                                  255    Reserved
                                                  Default: 4
                  {nw_src=<ipv4/mask>}            IPv4 source
                                                  Default: 192.0.0.1
                  {nw_tos=<int>}                  IPv4/IPv6 ToS
                                                  Default: 0

                 Refer to examples for the sample usage.

 rm_action_field
                 Configures one or more matching fields for filtering traffic. You
                 must set enable_reactive_mode to true. The following fields are
                 supported::


                  Field                           Description

                  {all}                           Output All
                  {controller:<integer>}          Controller
                  {copy_ttl_in}                   Copy TTL In
                  {copy_ttl_out}                  Copy TTL Out
                  {dec_mpls_ttl}                  Decrement MPLS TTL
                  {dec_ttl}                       Decrement IPv4/IPv6 TTL
                  {flood}                         Output Flood
                  {local}                         Output Local
                  {group:<integer>}               Group
                                                  Default:1
                  {in_port:<integer>}             Output InPort
                                                  Default:100
                  {mod_dl_dst:<mac_addr>}         Modify Ethernet destination
                                                  Default:00:00:01:00:00:01
                  {mod_dl_src:<mac_addr>}         Modify Ethernet source
                                                  Default:00:00:01:00:00:01
                  {mod_icmpv6_code:<integer>}     Modify ICMPv6 code
                                                  Default:0
                  {mod_icmpv6_type:<type>}        Modify ICMPv6 type
                                                  Possible Values::

                                                  1       Destination Unreachable
                                                  2       Packet Too Big
                                                  3       Time Exceeded
                                                  4       Parameter Problem
                                                  128     Echo Request
                                                  129     Echo Reply
                                                  130     MLDv1 Query
                                                  131     MLDv1 Listener Report
                                                  132     MLDv1 Listener Done
                                                  133     Router Solicitation
                                                  134     Router Advertisement
                                                  135     Neighbor Solicitation
                                                  136    Neighbor Advertisement
                                                  137     Redirect
                                                  143     MLDv2 Listener Report
                                                  Default: 135
                  {mod_ipv6_dst:<ipv6_addr>}      Modify IPv6 destination
                                                  Default: 2000::1:1

                  {mod_ipv6_label:<integer>}      Modify IPv6 label
                                                  Default: 1

                  {mod_ipv6_src:<ipv6_addr>}      Modify IPv6 source
                                                  Default: 2000::2:1

                  {mod_nd_sll:<mac_addr>}         Modify IPv6 ND solicit source
                                                  Default: 00:00:01:00:00:01

                  {mod_nd_target:<ipv6_addr>}     Modify IPv6 ND target
                                                  Default: 2000::1:1

                  {mod_nd_tll:<mac_addr>}         Modify IPv6 Nbr advertisement source
                                                  Default: 00:00:01:00:00:01

                  {mod_nw_dst:<ipv4_addr>}        Modify IPv4 destination
                                                  Default: 192.0.0.1

                  {mod_nw_src:<ipv4_addr>}        Modify IPv4 source
                                                  Default: 192.0.0.1

                  {mod_nw_tos:<integer>}          Modify IPv4/IPv6 ToS/DSCP
                                                  Default: 0

                  {mod_sctp_dst:<integer>}        Modify SCTP destination
                                                  Default: 100

                  {mod_sctp_src:<integer>}        Modify SCTP source
                                                  Default: 100

                  {mod_tcp_dst:<integer>}         Modify TCP destination
                                                  Default:100

                  {mod_tcp_src:<integer>}         Modify TCP source
                                                  Default: 100

                  {mod_tun_id:<integer>}          Modify Tunnel ID
                                                  Default: 0

                  {mod_udp_dst:<integer>}         Modify UDP destination
                                                  Default: 100

                  {mod_udp_src:<integer>}         Modify UDP source
                                                  Default: 100

                  {mod_vlan_pcp:<integer>}        Modify Vlan priority
                                                  Default: 0

                  {mod_vlan_vid:<integer>}        Modify VLAN ID
                                                  Default: 100

                  {normal}                        Output Normal
                  {pop_mpls:<ethernet_type>}      Pop MPLS
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 800

                  {pop_pbb}                       Pop PBB
                  {pop_vlan}                      Pop VLAN
                  {push_mpls:<ethernet_type>}     Push MPLS
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 8847
                  {push_pbb:<ethernet_type>}      Push PBB
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 88E7
                  {push_vlan:<ethernet_type>}     Push Vlan
                                                  Value    Description
                                                  0200    XEROX PUP
                                                  0201    PUP Addr Trans
                                                  0400    Nixdorf
                                                  0600    XEROX NS IDP
                                                  0660    DLOG
                                                  0661    DLOG2
                                                  0800    Internet IP
                                                  0801    X.75 Internet
                                                  0802    NBS Internet
                                                  0803    ECMA Internet
                                                  0804    Chaosnet
                                                  0805    X.25 Level 3
                                                  0806    ARP
                                                  0807    XNS Compatibility
                                                  0808    Frame Relay ARP
                                                  8035    RARP
                                                  86DD    IPv6
                                                  880B    PPP
                                                  8809    Slow Protocol
                                                  8847    MPLS Unicast
                                                  8848    MPLS Multicast
                                                  8863    PPPoE Discovery
                                                  8864    PPPoE Session
                                                  88E7    PBB
                                                  8906    FCoE
                                                  8914    FIP
                                                  Default: 8100
                  {set_mpls_bos:<integer>}        Set MPLS BoS
                                                  Default: 1
                  {set_mpls_label:<integer>}      Set MPLS Label
                                                  Default:10
                  {set_mpls_tc:<integer>}         Set MPLS TC
                                                  Default: 1
                  {set_mpls_ttl:<integer>}        Set MPLS TTL
                                                  Default: 1
                  {set_queue:<integer>}           Set Queue
                                                  Default: 1

                  {output:<integer>}    Output port

                 Refer to examples for the sample usage.

 rm_switch_handle_list
                 Specifies a list of handles for the affiliated OpenFlow switches,
                 which are discovered after you run the
                 ``emulation openflow control`` action=
                 start_discovery.

Arguments Unsupported by Save as HLTAPI:

The  emulation_openflow_config function is currently not supported
by Save to HLTAPI. To test with this function, you must configure it manually in
the generated Spirent HLTAPI scripts.
Description:

The emulation openflow config function configures emulated OpenFlow controller, and modifies or adds flows and meters. Use the mode argument to specify the actions to perform. (See the mode argument description for information about the actions.)

When you configure an OpenFlow controller, use the emulation device config function to create an emulated device, on which you enable the OpenFlow controller with mode enable of the current function.

Return Values:

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

handle          The OpenFlow host/device/flow/meter handle
                returned from the function

group_entry_handles          Group entry handles

action_bucket_handles        Action bucket handles

rm_handle                   Reactive mode handles

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

log                         An error message (if the operation failed)
Examples:

To configure an OpenFlow controller:

set device_port4 [::emulation device config
     port_handle=       $port1
     mode=              create
     count=             1
     router_id=         192.0.0.1
     mac_addr=          00:10:94:00:00:01
     intf_prefix_len=   24
     intf_ip_addr=      192.85.1.3
     gateway_ip_addr=   192.85.1.1
   ]
set dev_handle [keylget device_port4 handle]

set device_ret11 [::emulation openflow config
     mode=                                    enable
     handle=                                  $dev_handle
     openflow_version=                        VERSION_1_3
     discovery_dstmacaddr=                   "01:80:C2:00:00:0E"
     barrier_request_timeout=                10000
     connection_type=                        passive_Tcp
     add_group_entries_on_connect=           false
     clear_existing_group_entries_on_connect=     false
     controller_certificate=                 "cert_sample.pem"
     controller_private_key=                 "privkey_sample.pem"
     dynamic_load=                           35
     enable_reactive_mode=                   true
     endpoint_connection_pattern=            backbone_src_first
     send_set_async_on_connect=              1
     switch_ca_certificates=                 "cacert_sample.pem"
     switch_dpid=                            "0x7F88E760000 0x4"
     switch_link_list=                       "port1dpid0/1"
     flow_removed_mask_master_equal=         "0xF"
     flow_removed_mask_slave=                "0x1"
     packet_in_mask_master_equal=            "0x2"
     packet_in_mask_slave=                   "0x3"
     port_status_mask_master_equal=          "0x4"
     port_status_mask_slave=                 "0xA"
  ]

Sample Output:

{handle openflowcontrollerprotocolconfig1} {switch_handles
{openflowswitchconfig1 openflowswitchconfig2}} {status 1}

To configure bound flows:

set device_ret11 [::emulation openflow config
        mode=               add
        handle=             $dev_handle
        flow_cmd_type=      "add|delete|modify"
        flow_block_type=    bound
        stream_ids=          $stream_handle2
        match_fields=       "{{ingress_port eth_type ipv4_src_addr ipv4_dst_addr}}"
        transport_type=     flow_forward
        flow_switch_handle=  $of_switch_handle
        action_type=        forward_to_port
     ]

Sample Output:

{flow_handles openflowflowblock1} {status 1}

To modify bound flows:

set flow_handle1 [keylget device_ret11 flow_handles]
set device_ret11 [::emulation openflow config
       mode=                   modify
       handle=                 $flow_handle1
       flow_switch_handle=     $of_switch_handle
       action_type=            drop
    ]

Sample Output:

{flow_handles openflowflowblock1} {status 1}

To configure a meter block:

set device_ret12 [::emulation openflow config
       mode=                   add
       handle=                 $dev_handle
       meter_id=               2
       meter_switch_handle=    $of_switch_handle
       enable_burst_size=      TRUE
       rate_type=              kbps
       band_type=              "{drop dscp_remark experimenter}"
       rate=                   "{100 50 10}"
       experimenter=           "{- - 2}"
       precedence_level=       "{- 6 -}"
       burst_size=             "{1 10 10}"
    ]

Sample Output:

{meter_handles openflowmeterconfig1} {status 1}

To modify the specified meter block:

set meter_handle2 [keylget device_ret12 meter_handles]
set device_ret12 [::emulation openflow config
              mode=             modify
              handle=           $meter_handle
              meter_id=          3
              meter_switch_handle= $of_switch_handle
              band_type=        "{dscp_remark experimenter drop}"
              rate=             "{70 55 20}"
              experimenter=     "{- - 1}"
              precedence_level= "{- 3 -}"
              burst_size=       "{15 20 80}"]

Sample Output:

{meter_handles openflowmeterconfig1} {status 1}

To configure group entries:

set device_ret11 [::emulation openflow config
    mode=                     add
    handle=                $dev_handle
    group_id=              "8 9 10"
    group_type=            "indirect select fast_failover"
    group_switch_handle=  $switch_handle
 ]

Sample Output:

{group_entry_handles {openflowgroupentryconfig1 openflowgroupentryconfig2
openflowgroupentryconfig3}} {status 1}

To configure group entries action buckets:

 set device_ret12 [::emulation openflow config
    mode=                             add
    handle=                          $group_entry_handle
    watch_group=                     "0xFFFF0000"
    watch_port=                      "0x0000FFFF"
    weight=                          "5"
    controller_max_length=          200
    decrement_ttl_type=             "decrement_ip_ttl|decrement_mpls_ttl"
    group_action_type=              "pop|push_mpls|push_pbb|push_vlan"
    output_group_id=                2
    output_port_action_type=        all
    output_port_number=             67
    pop_mpls_tag_data_ethertype=    0x8847
    pop_tag=                        "pop_mpls_header|pop_pbb_header"
    push_mpls_tag_data_ethertype=   0x8847
    push_pbb_tag_data_ethertype=    0x88e7
    push_vlan_tag_data_ethertype=   0x8100
    set_arp_dst_hw_addr=            "00:10:01:01:01:01"
    set_arp_dst_ipv4_addr=          "10.10.10.10"
    set_arp_opcode=                 20
    set_arp_src_hw_addr=            "00:10:01:01:11:11"
    set_arp_src_ipv4_addr=          "2.2.2.2"
    set_eth_dst=                    "10:10:01:01:01:01"
    set_eth_src=                    "20:10:01:01:01:01"
    set_eth_type=                   "0x8100"
    set_icmpv4_code=                3
    set_icmpv4_type=                4
    set_icmpv6_code=                5
    set_icmpv6_type=                6
    set_ip_dscp=                    7
    set_ip_ecn=                     8
    set_ip_proto=                   9
    set_ipv4_dst=                   "1.1.1.1"
    set_ipv4_fields=                "ip_dscp|udp_src|udp_dst"
    set_ipv4_src=                   4.4.4.4
    set_ipv6_dst=                   "2002::1"
    set_ipv6_fields=                "ipv6_src|ipv6_dst|"
    set_ipv6_flabel=                34
    set_ipv6_nd_sll=                "20:10:01:01:01:01"
    set_ipv6_nd_target=             "2002::2"
    set_ipv6_nd_tll=                "30:10:01:01:01:01"
    set_ipv6_src=                   "2002::3"
    set_l2_fields=                  "eth_dst|eth_src|eth_type"
    set_mpls_bos_bit=               true
    set_mpls_label=                 100
    set_mpls_tc=                    200
    set_pbb_isid=                   300
    set_queue_id=                   400
    set_sctp_dst=                   500
    set_sctp_src=                   600
    set_tcp_dst=                    700
    set_tcp_src=                    800
    set_tunnel_id=                  900
    set_udp_dst=                    110
    set_udp_src=                    330
    set_vlan_id=                    111
    set_vlan_priority=              7
]

Sample Output:

{action_bucket_handles openflowgroupactionbucketconfig1} {status 1}

To configure the reactive mode:

set device_rm [::emulation openflow config
    mode= add
    handle= $dev_handle
    rm_switch_handle_list= $switch_handle
    rm_action_field= {output:1163,output:1203,output:1218,
                mod_nw_tos:11,mod_tun_id:12,copy_ttl_in,all}
    rm_match_field= {nw_src=35.35.35.2
                    dl_dst=00:00:02:00:00:01/ff:ff:ff:ff:ff:ff
                    dl_vlan_pcp=1 nw_proto=5}
  ]

Sample Output:

{rm_handle openflowreactivemoderuleconfig1} {status 1}

To delete the configured flow:

set device_ret11 [::emulation openflow config
   mode= delete
   handle= $flowHnd
  ]

Sample Output:

{status 1}

emulation openflow control

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

Purpose:

Spirent Extension (for Spirent HLTAPI only).

Starts, stops the OpenFlow emulation, starts, stops sending LLDP discovery messages, or updates switch configurations, flow blocks or meter blocks.

Synopsis:

Note: M indicates the argument is `Mandatory`.

       emulation openflow control
           port_handle= <port_handle_list>
           handle= <handle_list>
           action= {start_controller|stop_controller|start_discovery|
                 stop_discovery|update_switch|add_flows|remove_flows|
                 add_meters|remove_meters|add_group_entries|
                 verify_discovery|modify_flows|modify_group_entries|
                 modify_meters|remove_group_entries|send_barrier_req|
                 send_controller_req|send_feature_req|send_get_async_req|
                 send_set_async_req|view_meter_features|view_table_stats|
                 view_table_features|view_port_stats|view_port_description|
                 view_switch_description|view_individual_flow | view_aggregate_flow |
                 view_group_stats }]

           all_tables= {true|false}
           all_output_ports= {true|false}
           all_output_groups= {true|false}
           all_groups= {true|false}

           cookie= <0-4294967295>
           cookie_mask= <0-4294967295>
           export_stats= {true|false}
           file_prefix= <string>
           group_id= <0-4294967295>
           save_archive= {true|false}
           save_single_file= {true|false}
           max_entries= <1-4294967295>
           output_group= <0-4294967295>
           output_port= <0-4294967295>
           table_id= <0-255>
           timeout= <1-65535>

           gen_id_list=  {equal|master|nochange|slave}
           role= {equal|master|nochange|slave}
           flow_remove_mask_master_list= {delete_flow_mod|group_removed|hard_timeout|idle_timeout}
           flow_remove_mask_slave_list= {delete_flow_mod|group_removed|hard_timeout|idle_timeout}
           packet_in_mask_master_list= {invalid_ttl|no_matching_flow|output_to_controller}
           packet_in_mask_slave_list=  {invalid_ttl|no_matching_flow|output_to_controller}
           port_status_mask_master_list=  {port_added|port_attribute_changed|port_removed}
           port_status_mask_slave_list=  {port_added|port_attribute_changed|port_removed}
           tls_file_action= {upload|remove}
           tls_file_name_list= <file_name>
           tls_file_type= {private_key|certificate|ca_certificate}

Arguments:

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

handle
                Specifies a list of OpenFlow devices/flows/meters/switches on which
                to perform the action. You must specify either port_handle or
                handle, but not both. When action is send_controller_req or
                send_set_async_req, handle must be used as switch_handle.

action
                The action to perform on the specified ports or handles.
                Possible values are::



                 add_flows               Adds flows to flow blocks

                 remove_flows            Removes flows from flow blocks

                 add_meters              Adds meters in meter blocks

                 remove_meters           Removes meters from meter blocks

                 add_group_entries       Adds group entries to switches

                 verify_discovery        Verifies that the switch configuration
                                         matches the results

                 modify_flows            Modifies flows on switches

                 modify_group_entries    Modifies group entries on switches

                 modify_meters           Modifies meter mods on switches

                 remove_group_entries    Removes group entries from the specified
                                         switches

                 send_barrier_req        Sends a Barrier Request to the specified
                                         switches

                 send_controller_req     Sends a Role Request command to the
                                         specified switches.

                 send_feature_req        Sends a Features Request command to the
                                          specified switches

                 send_get_async_req      Sends a Get Async Message Request command
                                          to the specified switches

                 send_set_async_req      Sends a Set Async Message Request command
                                          to the specified switches


                 start_controller        Starts the OpenFlow protocol emulation

                 stop_controller         Stops the OpenFlow protocol emulation

                 start_discovery         Starts sending LLDP discovery messages to the
                                         connected switches

                 stop_discovery          Stops sending LLDP discovery messages

                 update_switch           Updates the switch configuration and port links.
                                         You must use emulation lldp config
                                         before this mode to discover traffic ports.

                 view_meter_features     Views OpenFlow meter features.
                                         You must specify handle and -switch_handle.

                 view_table_stats        Views OpenFlow table statistics.
                                         You must specify handle and -switch_handle.

                 view_table_features     Views OpenFlow table features.
                                         You must specify handle and -switch_handle.

                 view_port_stats         Views OpenFlow port statistics
                                         You must specify handle and -switch_handle.

                 view_port_description   Views OpenFlow port description.
                                         You must specify handle and -switch_handle.

                 view_switch_description  Views Openflow switch description

                 view_individual_flow      Views individual flow statistics

                 view_aggregate_flow       Views aggregate flow statistics

                 view_group_stats            Views group statistics


                The default value is start_controller.

all_groups
                    Determines whether to display statistics for all groups.
                    Possible values are true and false. If it is set to true,
                    statistics for all groups will be displayed. If it is set to
                    false, you can specify a port for which you want results. The
                    default value is true.

group_id
                    Specifies the ID of the group for which you want to view
                    statistics. The default value is 0.

export_stats
                    Determines whether to export statistics to a file or not.
                    Possible values are true and false. The default value is
                    false.

file_prefix
                    Specifies a string to prepend to the name of the file to
                    export. The default value is "OF_".


save_archive
                    Determines whether to save the exported .csv file as a zipped
                    archive file. Possible values are true and false. If it is
                    set to true, the exported .csv will be saved as a zip file.
                    The default value is false.


save_single_file
                    Determines whether to save all results to one single file
                    (true) or to individual files (false). The default value is
                    false.

max_entries
                    Specifies the maximum number of entries to export. The
                    default value is 5000.

all_tables
                    Determines whether to retrieve statistics for all tables
                    (true) or a specified table (false). The default value is
                    true.

all_output_ports
                    Determines whether to retrieve statistics for all output ports
                    (true) or a specified port (false). The default value is
                    true.

all_output_groups
                    Determines whether to retrieve statistics for all output
                    groups (true) or a specified group (false). The default value
                    is true.

table_id
                    Specifies the ID of the table for which you want to retrieve
                    aggregate flow statistics. Possible values range from 0 to
                    255. The default value is 0. This argument is available when
                    all_tables is set to false.

output_port
                    Specifies the port for which you want to retrieve statistics.
                    The default value is 0. This argument is available when
                    all_output_ports is set to false.

output_group
                    Specifies the group for which you want to retrieve statistics.
                    The default value is 0. This argument is available when
                    all_output_groups is set to false.

cookie
                    Specifies the value of the cookie for which you want to
                    retrieve statistics. The default value is 0.

cookie_mask
                    Specifies the mask of the cookie for which you want to retrieve
                    statistics. The default value is 0.

timeout
                    Specifies the statistics request timeout. Possible values
                    range from 1 to 65535. The default value is 30.


file_path
                 Specifies the path to save the .csv file of the exported
                 statistics

gen_id_list
                Specifies the value of the Generation ID field used in Role Request
                messages. This argument is available when action is set to
                send_controller_req. The default value is 0.

role
                Specifies the role for each controller in respect to the switch. This
                argument is available when action is set to send_controller_req.
                Possible values are::


                 equal                Controller is equal to the switch
                 master          Controller is the master
                 nochange            Do not change the role
                 slave              Controller is a slave

                The default value is equal.

flow_remove_mask_master_list
                Specifies one or more flow removed masks for controllers
                operating as a master or equal. Use "|" to specify more than one
                mask. This argument is available when action is set to
                send_set_async_req.
                Possible values are::


                 delete_flow_mod        Evicted by a delete flow mod
                 group_removed            The group was removed
                 hard_timeout          Time exceeded hard_timeout
                 idle_timeout            Flow idle time exceeded idle_timeout
                 0                     No mask specified

                The default value is idle_timeout|hard_timeout|delete_flow_mod|
                group_removed.

flow_remove_mask_slave_list
                Specifies one or more flow removed masks for slave controllers.
                Use "|" to specify more than one mask. This argument is
                available when action is set to send_set_async_req.
                Possible values are::


                 delete_flow_mod         Evicted by a delete flow mod
                 group_removed            The group was removed
                 hard_timeout             Time exceeded hard_timeout
                 idle_timeout             Flow idle time exceeded idle_timeout
                     0                   No mask specified

                The default value is 0 (no mask specified).


packet_in_mask_master_list
                Specifies one or more packetin masks for controllers operating
                as a master or equal. Use "|" to specify more than one mask. This
                argument is available when action is set to send_set_async_req.
                Possible values are::


                 invalid_ttl               The packet has an invalid time to live
                 no_matching_flow          No matching flow was found
                 output_to_controller      The packet was explicitly sent to the
                                           controller
                 0                        No mask specified

                The default value is no_matching_flow|output_to_controller.

packet_in_mask_slave_list
                Specifies one or more Packetin masks for slave controllers. Use
                "|" to specify more than one mask. This argument is available
                when action is set to send_set_async_req.
                Possible values are::


                 invalid_ttl               The packet has an invalid time to live
                 no_matching_flow          No matching flow was found
                 output_to_controller      The packet was explicitly sent to the
                                           controller
                 0                         No mask specified

                The default value is 0 (no mask specified).

port_status_mask_master_list
                Specifies one or more port status masks for controllers operating
                as a master or equal. Use "|" to specify more than one mask. This
                argument is available when action is set to send_set_async_req.
                Possible values are::


                 port_added                   The port was added to the data path
                 port_attribute_changed       A port attribute was changed
                 port_removed                 The port was removed from the data path
                 0                            No mask specified

                The default value is port_added|port_removed|port_attribute_changed.

port_status_mask_slave_list
                Specifies one or more port status masks for slave controllers.
                Use "|" to specify more than one mask. This argument is available
                when action is set to send_set_async_req.
                Possible values are::


                 port_added                 The port was added to the data path
                 port_attribute_changed     A port attribute was changed
                 port_removed               The port was removed from the data path
                 0                         No mask specified

                The default value is port_added|port_removed|port_attribute_changed.

tls_file_action
                Specifies the action to perform on the Transport Layer Security
                (TLS) files. Possible values are::


                 upload    Upload TLS files to the Spirent TestCenter chassis
                 delete    Delete TLS files from the Spirent TestCenter chassis

tls_file_name_list
                Specifies a list of TLS file names. Local files are for
                tls_file_action upload. Remote files are for tls_file_action
                delete.

tls_file_type
                Specifies the type of files to transfer.
                Possible values are::


                 private_key          Private key
                 certificate              Certificate
                 ca_certificate       CA certificate

                The default value is certificate.

switch_handles
                Specifies the switch configuration handles
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 list of handles for the discovered switches when you
            update the switch configurations. Only valid for action update_switch.

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

log         An error message (if the operation failed)
Description:

The emulation openflow control function controls the OpenFlow emulation on the specified devices. See the action argument for more details about the actions.

If the action is performed successfully, Spirent HLTAPI returns status 1. For action update_switch, a switch handle will also be returned. If the action fails, Spirent HLTAPI returns status 0 with an error message.

Examples:

To discover traffic ports:

set device_ret0 [emulation lldp config
    mode=                           create
    tlv_chassis_id_subtype=         intf_alias
    tlv_port_id_subtype=            mac_addr
    tlv_port_id_value=              00:00:00:00:00:00
    tlv_ttl_value=                  0
    tlv_chassis_id_value=           SPIRENT
    port_handle=                    $port1
    tx_delay=                       2
    msg_tx_hold_mutiplier=          4
    msg_tx_interval=                30
    reinitialize_delay=             2
    loopback_ip_addr=               192.0.0.4
    local_mac_addr=                 00:10:94:00:00:04
    intf_ip_prefix_length=          24
    intf_ip_addr=                   192.85.1.6
    gateway_ip_addr=                192.85.1.1
    ]

To start sending LLDP discovery messages:

set ctrl_ret2 [::emulation openflow control
     port_handle=    $port1
     action=         start_discovery
]

Sample Output:

{status 1}

To update the switch configuration:

set ctrl_ret2 [::emulation openflow control
    port_handle= $port1
    action= update_switch
    ]

Sample Output:

{openflowcontrollerprotocolconfig1 {{switch_handles
{openflowswitchconfig1 openflowswitchconfig2 openflowswitchconfig3}}}}
{status 1}

To get Meter feature statistics to be exported in the .csv file:

set ctrl_ret1 [::emulation openflow control
         handle= $dev_handle
         switch_handles= $switch_handle
         action= view_meter_features
         file_path= "C:/Tcl/lib/hltapi/run_scripts/"
]

To get Port statistics to be exported in the .csv file:

set ctrl_ret1 [::emulation openflow control
handle= $dev_handle
switch_handles= $switch_handle
action= view_port_stats
file_path= "C:/Tcl/lib/hltapi/run_scripts/"
]

emulation openflow stats

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

Purpose:

Spirent Extension (for Spirent HLTAPI only).

Retrieves statistics for the OpenFlow devices configured on the specified test port

Synopsis:

Note: M indicates the argument is `Mandatory`.
      emulation openflow stats
           port_handle= <port_handle>
           handle= <device_handle>
           mode= { async_result | controller |reactive_mode_result| switch_result |
                   switchport_result}]

Arguments:

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

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

mode
                Specifies the results mode. Possible values are::


                 async_result          Returns OpenFlow Async results

                 controller            Returns controller related statistics

                 reactive_mode_result  Returns reactive mode results

                 switch_result         Returns switch related statistics

                 switchport_result     Returns switch port related statistics

                The default is controller.
Return Values:

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

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

log            An error message (if the operation failed)

Following are the keys returned by the result mode.

When mode is controller:

Name                           Name of the device

OpenflowVersion                OpenFlow version

ControllerState                 State of the controller

DiscoveryState                 State of the discovery state engine

SwitchUpdateState              State of the OpenFlow controller updating the
                                flows on the switch

ConnectedSwitchCount           Number of switches connected currently

TotalConnectedSwitchCount      Total number of switches connected

DiscoveredPortCount            Number of ports discovered

DefinedFlowCount               Number of flows defined

ActiveFlowCount                Number of active flows

TxPacketOutCount               Number of packet-out messages sent

TxFlowModAddCount              Number of flows added through an add command

TxFlowModModifyCount           Number of flows modified through a modify command

TxFlowModDeleteCount           Number of flows deleted through a remove command

RxPacketInCount                Number of packet-in messages received

RxFlowRemoveCount              Number of flows removed

RxFlowModifyErrors             Number of flow modify errors received

TxBarrierRequestCount          Number of Barrier Requests transmitted to the switch

RxBarrierReplyCount            Number of Barrier Replies received from the switch

BarrierRequestTimeoutCount     Number of Barrier Requests that have timed out
                                after a Barrier Reply was not received

BarrierRemainingCount          Number of outstanding Barrier Requests for which a
                                Barrier Reply has not been received

BarrierResponseTime            Time in microseconds between sending the Barrier
                                Request and receiving the most recent Barrier Reply

TxRoleRequestCount             Number of Role Requests sent

RxRoleReplyCount               Number of Role Requests received

DefinedMeterCount              Number of meters defined

ActiveMeterCount               Number of active meters

TxMeterModAddCount             Number of meters added through an add command

TxMeterModModifyCount          Number of meters modified through a modify command

TxMeterModDeleteCount          Number of meters deleted through a delete command

RxMeterModErrors               Number of meter modify errors received

When mode is switch_result:

Name                           Name of the device

OpenflowVersion                Version of the OpenFlow specification

SwitchName                     Name of the switch

DpidNum                        Data path ID

Dpid                           Data path ID in hexadecimal

SwitchState                    State of the switch

SwitchIp                       IP address of the switch

DefinedFlowCount               Number of defined flows

ActiveFlowCount                Number of active flows

TxPacketOutCount               Number of packet-out messages sent

TxFlowModAddCount              Number of flows added through an add command

TxFlowModModifyCount           Number of flows modified through a modify command

TxFlowModDeleteCount           Number of flows deleted through a remove command

RxPacketInCount                Number of packet-in messages received
RxFlowModifyErrors             Number of flow modify errors message received

RxFlowRemoveCount              Number of flows removed

TxBarrierRequestCount          Number of Barrier Requests transmitted to the switch

RxBarrierReplyCount            Number of Barrier Replies received from the switch

BarrierResponseTime            Time in microseconds between sending the Barrier
                                Request and receiving the most recent Barrier Reply

FlowUpdateAddCount             Number of flows added to the switch for the most
                                recent flow adding operation

FlowUpdateAddTime              Time in microseconds to add the flows
                                to the switch

FlowUpdateAddRate              Number of flows added to the switch per second for
                                the most recent flow adding operation

FlowUpdateAddSetupTime         Time in microseconds between sending the Barrier
                                Request and receiving the most recent Barrier Reply

FlowUpdateModifyCount          Number of flows modified for the most recent
                                flow updating operation

ControllerRole                  Desired role of the controller

GenerationId                    Value of the generation ID field used in
                                Role Request messages

TxRoleRequestCount             Number of Role Requests sent

RxRoleReplyCount               Number of Role Requests received

DefinedMeterCount              Number of meters defined

ActiveMeterCount               Number of active meters

TxMeterModAddCount             Number of meters added through an add command

TxMeterModModifyCount          Number of meters modified through a modify command

TxMeterModDeleteCount          Number of meters deleted through a delete command

RxMeterModErrors               Number of meter modify errors received

When mode is switchport_result:

Name                           Name of the device

SwitchName                     Name of the switch

Dpid                           DPID of the switch on which the port exists

DiscoveredPort                 Name of discovered ports

When mode is async_result:

Name                            Name of the device

Dpid                            Value of the DPID in hex.

PacketInMaskMasterEqual        Value of the packet-in mask for controllers operating as
                                a master or equal.
                                Possible values are::

                                no_matching_flow        No Matching Flow
                                output_to_controller    The packet was explicitly
                                                        sent to the controller
                                invalid_ttl             The packet has an invalid
                                                        time to live.


PacketInMaskSlave              Value of the packet-in mask for controllers
                                operating as a slave.
                                Possible values are::

                                no_matching_flow        No Matching Flow
                                output_to_controller    The packet was explicitly
                                                        sent to the controller
                                invalid_ttl             The packet has an invalid
                                                        time to live.

PortStatusMaskMasterEqual      Value of the port status mask for controllers
                                operating as a master or equal.
                                Possible values are::

                                port_added                  The port was added to
                                                            the data path
                                port_attribute_changed      A port attribute was
                                                            changed
                                port_removed                The port was removed
                                                            from the data path

PortStatusMaskSlave            Value of the port status mask for controllers
                                operating as a slave.
                                Possible values are::

                                port_added                  The port was added to
                                                            the data path
                                port_attribute_changed      A port attribute was
                                                            changed
                                port_removed                The port was removed
                                                            from the data path


FlowRemovedMaskMasterEqual     Value of the flow removed mask for controllers
                                operating as a master or equal.
                                Possible values are::

                                delete_flow_mod     Evicted by a delete flow mod
                                group_removed       The group was removed
                                hard_timeout        Time exceeded hard_timeout
                                idle_timeout        Flow idle time exceeded
                                                    idle_timeout

FlowRemovedMaskSlave           Value of the flow removed mask for controllers
                                operating as a slave.
                                Possible values are::

                                delete_flow_mod     Evicted by a delete flow mod
                                group_removed       The group was removed
                                hard_timeout        Time exceeded hard_timeout
                                idle_timeout        Flow idle time exceeded
                                                    idle_timeout

When mode is reactive_mode_result:

MatchedPacketCount             Number of matched packets
NotMatchedPacketCount          Number of unmatched packets
TxPacketOutCount               Number of Packet Out messages sent
Description:

The emulation openflow stats function retrieves statistics for the OpenFlow devices configured on the specified test port. Use mode to specify the scope of results that you want to retrieve.

This function returns the requested data and a status value (1 for success). If there is an error, the function returns the status value (0) and an error message.(See Return Values for a description of each key.)

Examples:

To get controller statistics:

set stats_ret [::emulation openflow stats
    handle=     $dev_handle
    mode=       controller
    ]

Sample Output:

{status 1} {host1 {{controller_result {{parent= openflowcontrollerprotocolconfig1}
{resultchildSources= {openflowcontrollerprotocolconfig1 resultdataset1}}
{Name {}} {OpenflowVersion VERSION_1_3} {ControllerState= STARTED}
{DiscoveryState RUNNING} {SwitchUpdateState COMPLETED} {ConnectedSwitchCount=
3} {TotalConnectedSwitchCount 3} {DiscoveredPortCount 7} {DefinedFlowCount= 4}
{ActiveFlowCount 4} {TxPacketOutCount 14} {TxFlowModAddCount= 4}
{TxFlowModModifyCount 0} {TxFlowModDeleteCount 0} {RxPacketInCount= 121}
{RxFlowRemoveCount 0} {RxFlowModifyErrors 0} {TxBarrierRequestCount= 0}
{RxBarrierReplyCount 0} {BarrierRequestTimeoutCount 0} {BarrierRemainingCount=
0} { BarrierResponseTime 0} {TxRoleRequestCount 0} {RxRoleReplyCount= 0}
{DefinedMeterCount 1} {ActiveMeterCount 0} {TxMeterModAddCount= 2}
{TxMeterModModifyCount 1} {TxMeterM odDeleteCount 0} {RxMeterModErrors= 3}
{Active= true}}}}}

To retrieve values from the keyed list:

set ctrl_state keylget stats_ret $dev_handle.controller_result.ControllerState
set sw_count keylget stats_ret $dev_handle.controller_result.ConnectedSwitchCount
set flow_count keylget stats_ret $dev_handle.controller_result.ActiveFlowCount
set defined_count keylget stats_ret $dev_handle.controller_result.DefinedFlowCount

To get switch statistics:

set stats_ret [::emulation openflow stats
        handle=     $dev_handle
        mode=       switch_result
    ]

Sample Output:

{status 1} {host1 {{switch_result {{openflowswitchconfig3 {{parent=
openflowcontrollerprotocolconfig1} {resultchildSources=
{openflowcontrollerprotocolconfig1 r esultdataset2}} {Name= {}}
{OpenflowVersion VERSION_1_3} {SwitchName= SwitchDpid_C29AE3B3E}
{DpidNum 52238891838} {Dpid C29AE3B3E} {SwitchState= CONNECTED}
{SwitchIp 192.8 5.1.1} {DefinedFlowCount 2} {ActiveFlowCount= 2}
{TxPacketOutCount 6} {TxFlowModAddCount 2} {TxFlowModModifyCount= 0}
{TxFlowModDeleteCount 0} {RxPacketInCount 39} {RxFl= owModifyErrors 0}
{RxFlowRemoveCount 0} {TxBarrierRequestCount 0} {RxBarrierReplyCount= 0}
{BarrierResponseTime 0} {FlowUpdateAddCount 0} {FlowUpdateAddTime= 0}
{FlowUpdateAddRate 0} {FlowUpdateAddSetupTime 0} {FlowUpdateModifyCount= 0}
{ControllerRole EQUAL} {GenerationId 0} {TxRoleRequestCount= 0}
{RxRoleReplyCount 0} {DefinedMeterCount 0} {ActiveMeterCount= 0}
{TxMeterModAddCount 0} {TxMeterModModifyCount 0} {TxMeterModDeleteCount= 0}
{RxMeterModErrors 0} {Active= true}}} {openflowswitchconfig2
{{parent openflowcontrollerprotocolconfig1} {resultchildSources=
{openflowcontrollerprotocolconfig1 resultdataset2}} {Name= {}}
{OpenflowVersion VERSION_1_3} {SwitchName SwitchDpid_C2976CBE8} {DpidNum=
52235258856} {Dpid C2976CBE8} {SwitchState CONNECTED} {SwitchIp= 192.85.1.12}
{DefinedFlowCount 1} {ActiveFlowCount 1} {TxPacketOutCount 4} {TxFlow=
ModAddCount 1} {TxFlowModModifyCount 0} {TxFlowModDeleteCount= 0}
{RxPacketInCount 31} {RxFlowModifyErrors 0} {RxFlowRemoveCount= 0}
{TxBarrierRequestCount 0} {RxBarrierR eplyCount 0} {BarrierResponseTime= 0}
{FlowUpdateAddCount 0} {FlowUpdateAddTime 0} {FlowUpdateAddRate= 0}
{FlowUpdateAddSetupTime 0} {FlowUpdateModifyCount 0} {Controller= Role EQUAL}
{GenerationId 0} {TxRoleRequestCount 0} {RxRoleReplyCount= 0}
{DefinedMeterCount 0} {ActiveMeterCount 0} {TxMeterModAddCount= 0}
{TxMeterModModifyCount 0} {TxMeterModDeleteCount 0} {RxMeterModErrors= 0}
{Active true}}} {openflowswitchconfig1 {{parent=
openflowcontrollerprotocolconfig1} {resultchildSources= {openflowcontrollerpro
tocolconfig1 resultdataset2}} {Name {}} {OpenflowVersion= VERSION_1_3}
{SwitchName SwitchDpid_C291C8FD8} {DpidNum 52229345240} {Dpid= C291C8FD8}
{SwitchState CONNECTED} { SwitchIp 192.85.1.11} {DefinedFlowCount= 1}
{ActiveFlowCount 1} {TxPacketOutCount 4} {TxFlowModAddCount= 1}
{TxFlowModModifyCount 0} {TxFlowModDeleteCount 0} {RxPacketInC= ount 61}
{RxFlowModifyErrors 0} {RxFlowRemoveCount 0} {TxBarrierRequestCount= 0}
{RxBarrierReplyCount 0} {BarrierResponseTime 0} {FlowUpdateAddCount= 0}
{FlowUpdateAddTim e 0} {FlowUpdateAddRate 0} {FlowUpdateAddSetupTime= 0}
{FlowUpdateModifyCount 0} {ControllerRole EQUAL} {GenerationId= 0}
{TxRoleRequestCount 0} {RxRoleReplyCount 0} {De= finedMeterCount 1}
{ActiveMeterCount 0} {TxMeterModAddCount 2} {TxMeterModModifyCount= 1}
{TxMeterModDeleteCount 0} {RxMeterModErrors 3} {Active= true}}}}}}}

End of Procedure Header

emulation openflow switch config

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

Purpose:

Spirent Extension (for Spirent HLTAPI only).

Configures, modifies, or disables an OpenFlow Switch Emulation (OSE) on the specified devices. Spirent HLTAPI allows you to create complex tests to validate OpenFlow implementations with OSE. Use OpenFlow switch emulation to proactively configure flows on switches to test OpenFlow controller functionality and scalability.

Synopsis:

Note: M indicates the argument is `Mandatory`.

   emulation openflow switch config
       mode= {enable|modify|disable}  M
       handle= <handle>
       count= <integer>
       openflow_version= { version_1_0|version_1_3|version_1_4}
       controller_ip_addr= <a.b.c.d>
       tcp_port= {0-65535}
       connection_type= {tcp|tcp_tls}
       switch_private_key=  <string>
       switch_certificate=  <string>
       controller_ca_certificates=  <string>
       switch_port_num= <1-50000>
       send_port_status_on_connect= {true|false}
       dpid_start= <integer>
       dpid_step=  <integer>
       topo_type= {linear|ring|grid|spine_leaf|full_mash|standalone}
       switch_name= <string>
       topology_port_name= <string>
       grid_row_count= {0-255>
       edge_switches_count= <0-65535>
       edge_switch_name= <string>
       spine_switch_name= <string>
       spine_switches_count= <1-65535>
       leaf_switches_count=  <1-65535>
       leaf_switch_name= <string>
       switch_port_mac_start= <aa:bb:cc:dd:ee:ff>
       configure_hosts= {true|false}
       host_ip_start= <a.b.c.d>
       host_ip_step= <a.b.c.d>
       host_port_count= <1-255>
       host_port_name= <string>
       use_switch_port_mac= {true |false}
       host_mac_start=  <aa:bb:cc:dd:ee:ff>
       configure_additional_switch_ports= {true|false}
       addtional_switch_port_names= <string>
       traffic_enable= {true|false}
       defalute_table_miss_entry= {drop|send_to_controller}
       traffic_type= {packet_in|arp}
       customize_packet_in=  {true|false}
       dst_mac=   <aa:bb:cc:dd:ee:ff>
       vlan_enable= {true|false}
       vlan_id= <0-4095>
       ip_enable= {true|false}
       dst_ip= <a.b.c.d>
       frame_mode= {continuous|burst}
       frame_per_second=  <1 -65535>
       frame_count=  <1-4294967295>
       frame_size=  <64-9014>
       configure_packet_in_param= {true|false}
       packat_in_table_id= <0-255>
       packet_in_reason= {ofpr_no_match|fpr_action|afpr_invalid_ttl}
       end_point_map= {one_to_many|many_to_many|many_to_one}
       arp_rate= <1-100>
       disable_echo_request= {true|false}
       ose_flow_priority=  <1-65535>
       echo_request_time=  <1-65000>
       experimenter_support= {true|false}

Arguments:

mode
                Specifies the action to perform. This argument is `Mandatory`.
                Possible values are::


                 enable      Configures the OpenFlow switch device specified
                             by handle (returned by device config)
                 modify      Modifies the existing OSE configuration
                             specified by handle
                 disable     Disables the existing OSE configuration
                             specified by handle

handle
                Specifies the OpenFlow switch device handle when mode is set to
                enable, or the OSE configuration handle when mode is set to
                modify or disable.

count
                Specifies the number of OSE devices to be created

openflow_version
                Specifies the OpenFlow version to be used. Possible values
                are version_1_0, version_1_3, and version_1_4. The default value
                is version_1_3.

controller_ip_addr
                Specifies the IPv4 address of the controller. The default value
                is 192.85.1.1.

tcp_port
                Specifies the TCP port to be used for communication between
                the OpenFlow switch and the controller. Possible values range
                from 0 to 65535. The default value is 6633.

connection_type
                Specifies the type of connection to establish between OpenFlow
                switches and the controller. Possible values are::


                  tcp          TCP connection

                  tcp_tls    TLS connection

               The default value is tcp.

switch_private_key
                Specifies the name of the PEM file that contains the private key
                file for the switch. This argument is available when
                connection_type is set to tcp_tls.

switch_certificate
                Specifies the name of the PEM file that contains the public
                key certificate file for the switch. This argument is
                available when connection_type is set to tcp_tls.

controller_ca_certificates
                Specifies the PEM files that contain the trusted
                Certification Authority certificate to authenticate the
                controller. This argument is available when connection_type
                is set to tcp_tls.

switch_port_num
                Specifies the base switch port number for topology, host,
                and additional ports. Possible values range from 1 to 50000.
                The default value is 4000.

send_port_status_on_connect
                Determines whether to send a port status to the controller upon
                connecting. Possible values are true and false. When set to true,
                Spirent HLTAPI will send a port status to the controller upon
                connecting. The default value is false.

dpid_start
                Specifies the starting data path ID (DPID) to assign to
                switches. Possible values range from 1 to 65535. The default
                value is 1.

dpid_step
                Specifies the DPID increment between switches. Possible values
                range from 1 to 65535. The default value is 1.

topo_type
                Specifies the type of switch topology to create. Possible
                values are linear, ring, grid, spine_leaf, full_mash, and
                standalone. The default value is linear.

switch_name
                Specifies the name of the switch. The default value is
                br_@b-@s-@x.

topology_port_name
                Specifies the name of the topology port. The default value
                is topo_@b-@s-@x.

grid_row_count
                Specifies the number of rows in the grid topology. Possible values
                range from 0 to 255. The default value is 2.

edge_switches_count
                Specifies the number of edge switches in the topology. Possible
                values range from 1 to 65535. The default value is 2.

edge_switch_name
                Specifies the name of the edge switch. The default value is
                eg_@b-@s-@x.

spine_switches_count
                Specifies the number of spine switches in the topology.
                Possible values range from 1 to 65535. The default value is
                2.

spine_switch_name
                Specifies the name of the spine switch. The default value is
                sp_@b-@s-@x.

leaf_switches_count
                Specifies the number of leaf switches in the topology. Possible
                values range from 1 to 65535. The default value is 4.

leaf_switch_name
                Specifies the name of the leaf switch. The default value is
                lf_@b-@s-@x.

switch_port_mac_start
                Specifies the MAC address of the first port on the switch.
                The default value is 00:00:00:00:00:01.

configure_hosts
                Enable this argument to configure host ports. Possible values
                are true (enable) and false (disable). The default value is
                false.

host_port_count
                Specifies the number of host ports to configure. Possible values
                range from 1 to 255. The default value is 1. This argument is
                available when configure_hosts is set to true.

host_port_name
                Specifies the name of the host port. The default value is
                host_@b-@s-@x. This argument is available when configure_hosts
                is set to true.

host_ip_start
                Specifies the starting IPv4 address for host ports. The default
                value is 0.0.0.1. This argument is available when
                configure_hosts is set to true.

host_ip_step
                Specifies the IPv4 address step between host ports. The default
                value is 0.0.0.1.  This argument is available when
                configure_hosts is set to true.

use_switch_port_mac
                Determines whether to use the MAC address of the switch port
                as the host MAC address. Possible values are true and false.
                Set it to true to use the MAC address of the switch port as
                the host MAC address. Set it to false to configure the host
                MAC address. The default value is false. This argument is
                available when configure_hosts is set to true.

host_mac_start
                Specifies the starting MAC address for host ports. The
                default value is 00:10:00:00:00:01. This argument is
                available when use_switch_port_mac is set to false.

configure_additional_switch_ports
                Enable this argument to configure additional switch ports.
                Possible values are true (enable) and false (disable). The
                default value is false.

addtional_switch_port_names
                Specifies up to three additional nonhost port names. You
                must set configure_additional_switch_ports to true. The
                default value is add1_@b-@s-@x.

traffic_enable
                Enable this argument to configure traffic on the switch
                topology. Possible values are true (enable) and false
                (disable). The default value is false.

traffic_type
                Specifies the type of traffic to configure. You must set
                traffic_enable to true. Possible values are::


                 packet_in         Packetin traffic
                 arp                       ARP traffic

                The default value is packet_in.

customize_packet_in
                When enabled, custom packetin parameters are available when
                hosts are configured on switches. Possible values are true
                (enable) and false (disable). The default value is false.

dst_mac
                Specifies the MAC address of the destination host. The default
                value is 00:00:10:00:00:01.

vlan_enable
                When enabled, a VLAN header will be added to the generated
                traffic frame. Possible values are true (enable) and false
                (disable). The default value is false.

vlan_id
                Specifies the VLAN ID to be used when vlan_enable is set to
                true. Possible values range from 0 to 4095. The default value is
                200.

ip_enable
                When enabled, an IPv4 header will be added to the generated
                traffic frame. Possible values are true (enable) and false
                (disable). The default value is false.

dst_ip
                Specifies the IPv4 address of the destination host. The default
                value is 0.0.0.1.

frame_mode
                Specifies the traffic mode to be generated. Possible values
                are continuous and burst. The default value is continuous.

frame_size
                Specifies the size of the traffic (packetin frames) to be
                generated. Possible values range from 64 to 9014. The
                default value is 1518.

frame_per_second
                Specifies the number of packetin frames generated per
                switch per second. The default value is 1.

frame_count
                Specifies the number of frames to be generated as part of a
                burst. The default value is 1.

configure_packet_in_param
                Enable this argument to configure parameters in the
                packetin message. Possible values are true (enable) and
                false (disable). The default value is false.

packat_in_table_id
                Specifies the table ID. The default value is 0.

packet_in_reason
                Specifies the reason why the packetin message is sent to
                the controller.
                Possible values are::


                 ofpr_no_match        No matching flow (tablemiss flow entry)
                 ofpr_action          Action explicitly output to controller
                 afpr_invalid_ttl     Packet has invalid TTL

                The default value is ofpr_no_match.

end_point_map
                Specifies the host endpoint mapping mode for traffic.
                Possible values are::


                 one_to_many            One to many
                 many_to_many           Many to many
                 many_to_one            Many to one

                The default value is one_to_many.

arp_rate
                Specifies the rate at which ARP frames are sent. Possible
                values range from 1 to 100. The default value is 1.

defalute_table_miss_entry
                Specifies the action to be taken when no flow match occurs.
                Possible values are::


                 drop                   Drop the packet
                 send_to_controller    Forward the packet to the controller

                The default value is send_to_controller.

ose_flow_priority
                Specifies the default flow priority for OSE. Possible value
                range from 1 to 65535. The default value is 65535.

echo_request_time
                Specifies the number of seconds for an Echo Request message
                to time out. Possible values range from 1 to 65500. The
                default value is 5. This argument is available when
                disable_echo_request is set to false.

experimenter_support
                Enables or disables the use of Experimenter. Possible values
                are true (enable) and false (disable). The default value is false.

disable_echo_request
                When enabled, Echo Request messages will be turned off. Possible
                values are true (enable) and false (disable). The default value is
                false.
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)

handle      The OSE configuration handle; required by mode modify or disable
Description:

The emulation openflow switch config function configures, modifies, or disables an OSE on the specified OpenFlow switch. Use the mode argument to specify the actions to perform. (See the mode argument description for information about the actions.)

When you configure an OpenFlow controller, use the emulation device config function to create an emulated device, on which you configure the OpenFlow switch with mode enable of the current function.

Examples:

To configure OSE:

set ose_config_ret1  [emulation openflow switch config
       mode= enable
       handle= $devicehnd1
       openflow_version=  "version_1_0 | version_1_3 "
       controller_ip_addr=  {192.85.1.3 192.85.2.3}
       tcp_port= 6000
       connection_type= tcp_tls
       switch_private_key=  "privkey_sample.pem"
       switch_certificate=  "cert_sample.pem"
       controller_ca_certificates=  "cacert_sample.pem"
       switch_port_num=  1001
       send_port_status_on_connect= true
       dpid_start= 0xa1
       dpid_step=  0x1
       topo_type= spine_leaf
       edge_switches_count= 2
       edge_switch_name= "edge"
       spine_switch_name= "spine"
       spine_switches_count= 4
       leaf_switches_count=  4
       leaf_switch_name=   "leaf"
       switch_port_mac_start= 10:00:10:00:00:11
       configure_hosts= true
       host_count= 3
       host_ip_start= 10.10.10.2
       host_ip_step=  0.0.0.2
       host_name= "localhost1"
       use_switch_port_mac= false
       host_mac_start= 10:00:10:00:10:11
       configure_additional_switch_ports= false
       traffic_enable= true
       customize_packet_in=  true
       dst_mac=   10:12:13:14:54:22
       vlan_enable= true
       vlan_id= 130
       ip_enable= true
       dst_ip= 9.9.9.9
       frame_mode= burst
       frame_per_second=  100
       frame_count=  190
       frame_size=  256
       configure_packet_in_param=  true
       packat_in_table_id= 1
       packet_in_reason=  ofpr_action
       ose_flow_priority= 14
       disable_echo_request= true
       echo_request_time= 2
       experimenter_support= true
       ]

Sample Output:

{handle oseswitchconfig1} {status 1}

End of Procedure Header

emulation openflow switch control

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

Purpose:

Spirent Extension (for Spirent HLTAPI only).

Starts/stops the OSE or the OSE traffic, breaks/restores an OSE switch port link, retrieves OSE flows, or manages TLS files

Synopsis:

Note: M indicates the argument is `Mandatory`.

     emulation openflow switch control
       action= { start_ose|stop_ose|start_ose_traffic|stop_ose_traffic|break_link|
                 restore_link|restore_all_links|get_ose_flows|manage_tls_files}  M]
       port_handle= <port_handle>
       |handle= <handle>
       switch_type= {leaf_switch|spine_switch|edge_switch}
       switch_number= <1-65535>
       port_type= {topology_port|host_port}
       port_number_list= <sting>
       file_path= <string>
       tls_file_action= {upload|remove}
       tls_file_name_list= <file_name>
       tls_file_type= {private_key|certificate|ca_certificate}

Arguments:

port_handle
                The port on which the action will be performed. You must specify
                either port_handle or -handle, but not both.

handle
                Specifies the OpenFlow switch handle on which to perform the
                action. You must specify either port_handle or -handle, but
                not both.

action
                Specifies the action to perform. This argument is `Mandatory`.
                Possible values are::


                 start_ose           Starts the OSE test

                 stop_ose            Stops the OSE test

                 start_ose_traffic   Starts OSE traffic

                 stop_ose_traffic    Stops OSE traffic

                 break_link          Breaks an OSE switch port link.
                                     Only single OpenFlow switch device block
                                     is supported

                 restore_link        Restores an OSE switch port link.
                                     Only single OpenFlow switch device block
                                     is supported

                 restore_all_links   Restores all links

                 get_ose_flows       Retrieves OSE flows

                 manage_tls_files    Uploads TLS files to, or removes them from, the
                                     Spirent TestCenter chassis

file_path
                 Specifies the target path for the file where OSE flows are
                 saved. This argument is required for get_ose_flows.

switch_type
                 Specifies the type of switch on which to break/restore the
                 link. Possible values are leaf_switch, spine_switch, and
                 edge_switch. The default value is leaf_switch.

switch_number
                 Specifies the index of the switch on which to
                 break/restore the link

port_type
                 Specifies the type of switch port for which to
                 break/restore the link. Possible values are topology_port
                 and host_port. The default value is topology_port.


port_number_list
                A commaseparated list of numbers or ranges that identify
                the ports for which to break/restore the link

tls_file_action
                Specifies the action to perform with the Transport Layer
                Security (TLS) files. Possible values are::


                 upload    Upload TLS files to the Spirent TestCenter chassis
                 delete    Delete TLS files from the Spirent TestCenter chassis

tls_file_name_list
                Specifies a list of TLS file names to remove or upload.
                Local files are for tls_file_action upload. Remote files
                are for tls_file_action remove.

tls_file_type
                Specifies the type of files to transfer. Possible values
                are::


                  private_key          Private key
                  certificate          Certificate
                  ca_certificate       CA certificate

                The default value is certificate.
Return Values:

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

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

log         An error message (if the operation failed)
Description:

The emulation openflow switch control function controls the OSE on the specified ports or devices. See the action argument for more details about the actions.

If the action is performed successfully, Spirent HLTAPI returns status 1. If the action fails, Spirent HLTAPI returns status 0 with an error message.

Examples:

To start the OSE configured on the specified ports:

set ose_control_ret1 [emulation openflow switch control
               port_handle= "$port1 $port2"
               action= start_ose
    ]

Sample Output:

{status 1}

To stop the OSE configured on the specified OpenFlow switches:

set ose_control_ret2 [emulation openflow switch control
               handle= "$osehnd1 $osehnd2"
               action= stop_ose
]

Sample Output:

{status 1}

To retrieve saved OSE flows:

set ose_control_ret3 [emulation openflow switch control
               port_handle= $port1
               action= get_ose_flows
               file_path= "d:/work"
]

{status 1}

End of Procedure Header

emulation openflow switch stats

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

Purpose:

Spirent Extension (for Spirent HLTAPI only).

Retrieves statistics for the OSE test

Synopsis:

Note: M indicates the argument is Mandatory.

emulation openflow switch stats
mode= {controller_aggregate|switch_results} M port_handle= <port_handle> handle= <OSE_switch_handle>

Arguments:

port_handle
                Specifies the port handle from which to retrieve statistics

handle
                Specifies the OpenFlow switch handle from which to retrieve
                statistics

mode
                Specifies the results mode. Possible values are::


                 controller_aggregate    OSE controller aggregate results
                 switch_results          OSE switch results

                Note: You can use drv stats to define other results views.
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 or $FAILURE
log           An error message if command returns {status 0}

When mode is controller_aggregate:

parent                        Port handle
ControllerState               State of the controller
ControllerIpAddress           IP address of the controller
ConnectedSwitchCount          Number of connected switches
InitialConnectTime            Milliseconds elapsed during the connect procedure
PacketInCount                 Number of packetin messages
PacketOutCount                Number of packetout messages
FlowModCount                  Number of Flow Mod messages
FlowModAddCount               Number of Flow Mod Add messages
FlowModModifyCount            Number of Flow Mod Modify messages
FlowModDeleteCount            Number of Flow Mod Delete messages
FlowModErrorCount             Number of Flow Mod Error messages
GroupModCount                 Number of Group Mod messages
MeterModCount                 Number of Meter Mod messages
PortModCount                  Number of Port Mod messages
TableModCount                 Number of Table Mod messages
PacketInRate                  Number of packetin messages per second
PacketOutRate                 Number of packetout messages
FlowModRate                   Number of Flow Mod messages per second
NumDroppedConn                Number of dropped connections

When mode is switch_results:

OseSwitchConfigSwitchName                  Name of the switch
OseSwitchConfigSwitchIpAddress             IP address of the switch
OseSwitchConfigState                       State of the switch
OseSwitchConfigDpid                        DPID of the switch
OseSwitchConfigOpenflowVersion             Version of OpenFlow in use
OseSwitchConfigConnectedControllerCount    Number of controllers connected to the switch
OseSwitchConfigPortCount                   Port count
OseSwitchConfigActiveFlowCount             Number of active flows on the switch
Description:

The emulation openflow switch stats function retrieves OSE statistics for the OpenFlow switches configured on the specified test port. Use mode to specify the scope of results that you want to retrieve.

This function returns the requested data and a status value (1 for success). If there is an error, the function returns the status value (0) and an error message. (See Return Values for a description of each key.)

Examples:

To get controller statistics:

set ose_stats_ret1 [emulation openflow switch stats
            handle= $osehnd1
            mode= controller_aggregate
            ]

Sample Output:

{status 1} {controller_aggregate {{Controller1 {{parent port2} {resultchildSources=
{port2 resultdataset2}} {Name {}} {ControllerIpAddress tcp:192.85.1.3:6633}
{ControllerState CONNECTED} {ConnectedSwitchCount 4} {InitialConnectTime 6}
{PacketInCount 18} {PacketOutCount 33} {FlowModCount 10} {FlowModAddCount 6}
{FlowModModifyCount 0} {FlowModDeleteCount 4} {FlowModErrorCount 0} {MeterModCount 4}
{GroupModCount 4} {PortModCount 0} {TableModCount 0} {PacketInRate 0} {PacketOutRate
0} {FlowModRate 0} {NumDroppedConn 0} {Active true}}} {Controller2 {{parent port2}
{resultchildSources= {port2 resultdataset2}} {Name {}} {ControllerIpAddress
tcp:192.85.1.33:6633} {ControllerState CONNECTED} {ConnectedSwitchCount 8}
{InitialConnectTime 6} {PacketInCount 36} {PacketOutCount 66} {FlowModCount 16}
{FlowModAddCount 8} {FlowModModifyCount 0} {FlowModDeleteCount 8} {FlowModErrorCount
0} {MeterModCount 8} {GroupModCount 8} {PortModCount 0} {TableModCount 0}
{PacketInRate 0} {PacketOutRate 0} {FlowModRate 0} {NumDroppedConn 0} {Active
true}}}}}

End of Procedure Header