5.2. Secondary Commands

Each of secondary processes is managed with sec command. It is for sending sub commands to secondary with specific ID called secondary ID.

sec command takes an secondary ID and a sub command. They must be separated with delimiter ;. Some of sub commands take additional arguments for speicfying resource owned by secondary process.

spp > sec [SEC_ID];[SUB_CMD]

5.2.1. status

Show running status and resources.

spp > sec 1;status
recv:7:{Client ID 1 Idling
1
port id: 0,on,PHY,outport: none
port id: 1,on,PHY,outport: none
}

5.2.2. component

Note

This command is only supported for spp_vf.

Start or stop a component. SPP VF provides three types of components, forwarder, classifier and merger.

component start command creates and starts a component with given options.

spp > sec [SEC_ID];component start [NAME] [CORE_ID] [DIRECTIVE]
  • NAME is used as an identifier of the component.
  • DIRECTIVE is a role of the component and corresponds to three types of components.
    • forward
    • merge
    • classifier_mac

This is an example for starting three types of components.

spp > sec 1;component start forwarder1 2 forward
spp > sec 1;component start merger1 3 merge
spp > sec 1;component start classifier1 4 classifier_mac

component stop command terminates a component with given options same as component start command..

spp > sec [SEC_ID];component stop [NAME] [CORE_ID] [DIRECTIVE]

This is an example for stopping three types of components.

spp > sec 1;component stop forwarder1 2 forward
spp > sec 1;component stop merger1 3 merge
spp > sec 1;component stop classifier1 4 classifier_mac

5.2.3. port

Note

This command is only supported for spp_vf.

Add a port to a component or delete it from. SPP VF is able to treat VLAN tag by adding port with VLAN options.

port add command adds a port to a component with given options.

spp > sec [SEC_ID];port add [RES_ID] [PORT_TYPE] [NAME]
  • RES_ID is a resource ID and defined as a combination of resource type and number separated with delimiter :. There are three types of resources.
    • phy for physical NIC
    • vhost for vhost PMD
    • ring for ring PMD
  • PORT_TYPE is rx or tx.
  • NAME is used as an identifier of the component.

This is an example for adding port phy:0 to classifier1 as rx and to merger1 as tx.

spp > sec 1;port add phy:0 rx classifier1
spp > sec 1;port add phy:0 tx merger1

For VLAN support, you need to add options for port add command. To add VLAN tag, additional option add_vlantag with its options VLAN_ID and PCP are required.

spp > sec [SEC_ID];port add [RES_ID] [PORT_TYPE] [NAME] add_vlantag [VLAN_ID] [PCP]
  • PCP (Priority Code Point) is an attribute for priority defined in IEEE 802.1p standard. It is ranged from 0 to 7 and 7 is the highest priority.

Or to delete VLAN tag, del_vlantag option is required.

spp > sec [SEC_ID];port add [RES_ID] [PORT_TYPE] [NAME] del_vlantag

This is an example for adding a port with add_vlantag or del_vlantag. In this case, add rx port to append VLAN ID 101 with PCP 3 and tx port to append VLAN ID 102 with PCP3.

  1. Add VLAN tag
spp > sec 1;port add phy:0 rx classifier1 add_vlantag 101 3
spp > sec 1;port add phy:0 tx merger1 add_vlantag 102 3
  1. Delete VLAN tag
spp > sec 1;port add phy:0 rx classifier1 del_vlantag
spp > sec 1;port add phy:0 tx merger1 del_vlantag

port del command deletes a port from a component with given options same as port add command..

spp > sec [SEC_ID];port del [RES_ID] [PORT_TYPE] [NAME]

This is an example for deleting port added in previous example.

spp > sec 1;port del phy:0 rx classifier1
spp > sec 1;port del phy:0 tx merger1

5.2.4. classifier_table

Note

This command is only supported for spp_vf.

Register an entry as a combination of MAC address and resource ID to classifier table.

spp > sec [SEC_ID];classifier_table add mac [MAC_ADDRESS] [RES_ID]

This is an example to register an entry for port ring:0.

spp > sec 1;classifier_table add mac 52:54:00:01:00:01 ring:0

Register an entry with a VLAN ID to classifier table.

spp > sec 1;classifier_table add vlan [VLAN_ID] [MAC_ADDRESS] [RES_ID]

This is an example to register an entry with VLAN ID 101 for port ring:0.

spp > sec 0;classifier_table add vlan 101 52:54:00:01:00:01 ring:0

Delete an entry.

spp > sec 1;classifier_table add del [MAC_ADDRESS] [RES_ID]

This is an example to delete an entry for port ring:0.

spp > sec 1;classifier_table del mac 52:54:00:01:00:01 ring:0

Delete an entry with a VLAN ID.

spp > sec 1;classifier_table del vlan [VLAN_ID] [MAC_ADDRESS] [RES_ID]

This is an example to delete an entry with VLAN ID 101.

spp > sec 0;classifier_table del vlan 101 52:54:00:01:00:01 ring:0

5.2.5. flush

Note

This command is only supported for spp_vf.

Activate series of commands for a SPP VF secondary process (component, port or classifier command).

You can cancel commands any time until before running cancel command.

spp > sec 1;flush

5.2.6. cancel

Note

This command is only supported for spp_vf.

Cancel all of commands for a SPP VF secondary process before running flush command.

spp > sec 1;cancel

5.2.7. add

Add a PMD to the secondary with resource ID.

Adding ring 0 by

spp> sec 1;add ring 0
recv:7:{addring0}

Or adding vhost 0 by

spp> sec 1;add vhost 0
recv:7:{addvhost0}

5.2.8. patch

Create a path between two ports, source and destination ports. Port ID is referred by status sub commnad. This command just creates path and does not start forwarding.

spp > sec 1;patch 0 2
recv:7:{patch02}

5.2.9. forward

Start forwarding.

spp > sec 1;forward
recv:7:{start forwarding}

Running status is changed from Idling to Running by executing it.

spp > sec 1;status
recv:7:{Client ID 1 Running
1
port id: 0,on,PHY,outport: none
port id: 1,on,PHY,outport: none
}

5.2.10. stop

Stop forwarding.

spp > sec 1;stop
recv:7:{start forwarding}

Running status is changed from Running to Idling by executing it.

spp > sec 1;status
recv:7:{Client ID 1 Running
1
port id: 0,on,PHY,outport: none
port id: 1,on,PHY,outport: none
}

5.2.11. del

Delete PMD added by add subcommand from the secondary.

spp> sec 1;del ring 0
recv:7:{delring0}

5.2.12. exit

Terminate the secondary. For terminating all secondaries, use bye sec command instead of it.

spp> sec 1;exit
recv:7:{delring0}