This page explain how to use the SR cli. The example used in the example uses sr-3node.conf configuration file, which is explained in the Configuration ONOS section <LINK>
Show switch information
The folllowing shows all commands that SR cli supports. Among them, we explain show, watch, and configure, which are mainly used for segment routing application.
onos-vm# <tab> clear configure date enable exit history no show trace watch clearterm connect echo end help logout ping test version
show switch : show the switches connected to the controller (NOTE: any switch not configured in the config file is not shown)
onos-vm# sh link # Src Switch DPID Src Port Dst Switch DPID Dst Port Type -|-----------------------------------|--------|-----------------------------------|--------|------ 1 00:00:00:00:00:00:00:01 (Dallas-R1) 7 00:00:00:00:00:00:00:02 (Dallas-R2) 3 packet 2 00:00:00:00:00:00:00:02 (Dallas-R2) 1 00:00:00:00:00:00:00:01 (Dallas-R1) 6 packet 3 00:00:00:00:00:00:00:03 (Dallas-R3) 2 00:00:00:00:00:00:00:02 (Dallas-R2) 2 packet
show switch <switch DPID> : shows the detail of the switch
onos-vm# sh switch 00:00:00:00:00:00:00:01 # Switch DPID Alias Connected Since Connected At Type Controller -|-----------------------|---------|----------------------------|-----------------|------|---------- 1 00:00:00:00:00:00:00:01 Dallas-R1 Wed Dec 03 16:06:40 PST 2014 192.168.0.3:52922 packet onos-vm
show switch <switch DPID> table <acl/ip/mpls> : shows the specific table of the switch
onos-vm# sh switch 00:00:00:00:00:00:00:01 table acl # Bytes Packets Dur(s) Cookie Priority In Port Src MAC Dst MAC EthType Src IP Dst IP Protocol Src Port Dst Port Instructions -|-----|-------|------|------|--------|-------|-------|-------|-------|------|------|--------|--------|--------|------------ 1 0 0 525 0 0 * * * * * * * * * onos-vm# sh switch 00:00:00:00:00:00:00:01 table ip # Bytes Packets Dur(s) Cookie Priority Dst IP Instructions -|-----|-------|------|------|--------|--------------|----------------------------------------------------- 1 0 0 423 0 65535 192.168.0.2/32 {goto: {tableid: acl}, write: {dec_nw_ttl, group: 1}} 2 0 0 423 0 65535 192.168.0.3/32 {goto: {tableid: acl}, write: {group: 2}} 3 0 0 423 0 49104 7.7.7.0/24 {goto: {tableid: acl}, write: {group: 2}} 4 0 0 444 0 0 * {goto: {tableid: acl}, write: {output: controller}} onos-vm# sh switch 00:00:00:00:00:00:00:01 table mpls # Bytes Packets Dur(s) Priority MPLS Label MPLS BOS MPLS TC Instructions -|-----|-------|------|--------|----------|--------|-------|----------------------------------------------------------------------------------------------------------------------------------------------- 1 0 0 426 65535 102 false * {goto: {tableid: acl}, write: {pop_mpls: 0x8847, copy_ttl_in, group: 1, dec_mpls_ttl}} 2 0 0 426 65535 102 true * {goto: {tableid: acl}, write: {pop_mpls: 0x800, dec_nw_ttl, copy_ttl_in, group: 1}} 3 0 0 426 65535 103 true * {goto: {tableid: acl}, write: {group: 1, dec_mpls_ttl}} 4 0 0 426 65535 103 false * {goto: {tableid: acl}, write: {group: 1, dec_mpls_ttl}} 5 0 0 426 65535 101006 true * {goto: {tableid: acl}, write: {pop_mpls: 0x800, dst_mac: 00:00:02:02:02:80, dec_nw_ttl, src_mac: 00:00:01:01:01:80, output: 6, copy_ttl_in}} 6 0 0 426 65535 101006 false * {goto: {tableid: acl}, write: {dec_mpls_ttl, pop_mpls: 0x8847, dst_mac: 00:00:02:02:02:80, src_mac: 00:00:01:01:01:80, output: 6, copy_ttl_in}} 7 0 0 426 65535 101007 true * {goto: {tableid: acl}, write: {pop_mpls: 0x800, dst_mac: 00:00:02:02:02:80, dec_nw_ttl, src_mac: 00:00:01:01:01:80, output: 7, copy_ttl_in}} 8 0 0 426 65535 101007 false * {goto: {tableid: acl}, write: {dec_mpls_ttl, pop_mpls: 0x8847, dst_mac: 00:00:02:02:02:80, src_mac: 00:00:01:01:01:80, output: 7, copy_ttl_in}} 9 0 0 447 0 * * * {goto: {tableid: acl}, write: {output: controller}}
show switch <switch DPID> port : show the port information of the switch
onos-vm# sh switch 00:00:00:00:00:00:00:01 port # OF Port # Status Rcv Bytes Rcv Pkts Rcv Errs Rcv Dropped Rcv CRC Rcv Overruns Rcv Frame Errs Xmit Bytes Xmit Pkts Xmit Errs Xmit Dropped Collisions -|-------------|------|---------|--------|--------|-----------|-------|------------|--------------|----------|---------|---------|------------|---------- 1 1 (s1-eth1) up 480 6 0 0 0 0 0 2948 44 0 0 0 2 2 (s1-eth2) up 558 7 0 0 0 0 0 2948 44 0 0 0 3 3 (s1-eth3) up 558 7 0 0 0 0 0 2948 44 0 0 0 4 4 (s1-eth4) up 558 7 0 0 0 0 0 2948 44 0 0 0 5 5 (s1-eth5) up 558 7 0 0 0 0 0 2948 44 0 0 0 6 6 (s1-eth6) up 3015 45 0 0 0 0 0 2948 44 0 0 0 7 7 (s1-eth7) up 3015 45 0 0 0 0 0 2948 44 0 0 0 8 8 (s1-eth8) up 3015 45 0 0 0 0 0 2948 44 0 0 0 9 65534 (local) up 0 0 0 0 0 0 0 0 0 0 0 0
show switch <switch DPID> group : show the group information of the switch
onos-vm# sh switch 00:00:00:00:00:00:00:01 group # Group Type Group Id Pkts Bytes Bucket Pkts Bucket Bytes Set Src Mac Set Dst Mac Push Mpls Set Bos COPY TTL Dec Mpls TTL Outport Group -|----------|--------|----|-----|-----------|------------|-----------------|-----------------|---------|-------|--------|------------|-------|----- 1 SELECT 1 0 0 0 0 00:00:01:01:01:80 00:00:02:02:02:80 6 2 SELECT 0 0 0 0 00:00:01:01:01:80 00:00:02:02:02:80 7 3 SELECT 2 0 0 0 0 00:00:01:01:01:80 00:00:02:02:02:80 103 true True True 6 4 SELECT 0 0 0 0 00:00:01:01:01:80 00:00:02:02:02:80 103 true True True 7
show link: show the links discovered by the controller (NOTE: any link not configured in the config file is not shown)
onos-vm# sh link # Src Switch DPID Src Port Dst Switch DPID Dst Port Type -|-----------------------------------|--------|-----------------------------------|--------|------ 1 00:00:00:00:00:00:00:01 (Dallas-R1) 7 00:00:00:00:00:00:00:02 (Dallas-R2) 3 packet 2 00:00:00:00:00:00:00:02 (Dallas-R2) 1 00:00:00:00:00:00:00:01 (Dallas-R1) 6 packet 3 00:00:00:00:00:00:00:03 (Dallas-R3) 2 00:00:00:00:00:00:00:02 (Dallas-R2) 2 packet
watch <any command> : repeats the command every two second. It is useful to see any statistics changes
onos-vm# watch sh switch 00:00:00:00:00:00:00:01 port # OF Port # Status Rcv Bytes Rcv Pkts Rcv Errs Rcv Dropped Rcv CRC Rcv Overruns Rcv Frame Errs Xmit Bytes Xmit Pkts Xmit Errs Xmit Dropped Collisions -|-------------|------|---------|--------|--------|-----------|-------|------------|--------------|----------|---------|---------|------------|---------- 1 1 (s1-eth1) up 1880 22 0 0 0 0 0 5651 80 0 0 0 2 2 (s1-eth2) up 600 8 0 0 0 0 0 4531 68 0 0 0 3 3 (s1-eth3) up 558 7 0 0 0 0 0 4531 68 0 0 0 4 4 (s1-eth4) up 558 7 0 0 0 0 0 4489 67 0 0 0 5 5 (s1-eth5) up 558 7 0 0 0 0 0 4489 67 0 0 0 6 6 (s1-eth6) up 5144 74 0 0 0 0 0 5101 73 0 0 0 7 7 (s1-eth7) up 5046 73 0 0 0 0 0 4999 72 0 0 0 8 8 (s1-eth8) up 4556 68 0 0 0 0 0 4489 67 0 0 0 9 65534 (local) up 0 0 0 0 0 0 0 0 0 0 0 0 Executing sh switch 00:00:00:00:00:00:00:01 port # OF Port # Status Rcv Bytes Rcv Pkts Rcv Errs Rcv Dropped Rcv CRC Rcv Overruns Rcv Frame Errs Xmit Bytes Xmit Pkts Xmit Errs Xmit Dropped Collisions -|-------------|------|---------|--------|--------|-----------|-------|------------|--------------|----------|---------|---------|------------|---------- 1 1 (s1-eth1) up 2076 24 0 0 0 0 0 5847 82 0 0 0 2 2 (s1-eth2) up 600 8 0 0 0 0 0 4531 68 0 0 0 3 3 (s1-eth3) up 558 7 0 0 0 0 0 4531 68 0 0 0 4 4 (s1-eth4) up 558 7 0 0 0 0 0 4489 67 0 0 0 5 5 (s1-eth5) up 558 7 0 0 0 0 0 4489 67 0 0 0 6 6 (s1-eth6) up 5242 75 0 0 0 0 0 5203 74 0 0 0 7 7 (s1-eth7) up 5144 74 0 0 0 0 0 5101 73 0 0 0 8 8 (s1-eth8) up 4556 68 0 0 0 0 0 4489 67 0 0 0 9 65534 (local) up 0 0 0 0 0 0 0 0 0 0 0 0
show policy : show the policy information created by operators (NOTE: Configuring switches section describe how to create a policy)
onos-vm(config)# sh policy # Policy Id Policy Type Priority Dst Mac Src Mac Ether Type Dst IP IP Protocol Src IP Dst TcpPort Src TcpPort Tunnel Used -|---------|-----------|--------|-------|-------|----------|----------|-----------|-----------|-----------|-----------|----------- 1 p1 TUNNEL_FLOW 10000 * * 0x2048 7.7.7.7/32 * 10.0.1.1/32 * * t1
show tunnel : show the tunnel information created by operators (NOTE: Configuring switches section describe how to create a tunnel)
onos-vm(config)# sh tunnel # Id Policies Tunnel Path [Head-->Tail] Label Stack [Outer-->Inner] -|--|--------|-------------------------|--------------------------- 1 t1 [101, 102, 103] [[103]]
Configuring switches
configure: enter configuration mode
onos-vm# configure onos-vm(config)# <tab> clear connect enable feature logout policy tag-mapping tunnel clearterm date end help no show test version configure echo exit history ping tag trace watch
tunnel <tunnel ID> : Create a tunnel for a tunnel policy. Specify the node SID of all routers of the tunnel, following node keyword. end suspends the tunnel creation and exit the configuration mode.
onos-vm(config)# tunnel t1 onos-vm(config-tunnel)# node 101 onos-vm(config-tunnel)# node 102 onos-vm(config-tunnel)# node 103 onos-vm(config-tunnel)# exit
policy <policy ID> policy-type <policy type>: Create a specific type of policy. Only tunnel-flow type is supported now. flow-entry, tunnel, and priority must be specified. IP, TCP, and UDP are supported as the flow-entry type. The first subnet is the source, and the second subnet is the destination.
onos-vm(config)# policy p1 policy-type tunnel-flow onos-vm(config-policy)# flow-entry ip 10.0.1.1/32 7.7.7.7/32 onos-vm(config-policy)# tunnel t1 onos-vm(config-policy)# priority 10000 onos-vm(config-policy)# exit
no policy <policy ID>: remove the policy with the policy ID.
onos-vm(config)# sh policy # Policy Id Policy Type Priority Dst Mac Src Mac Ether Type Dst IP IP Protocol Src IP Dst TcpPort Src TcpPort Tunnel Used -|---------|-----------|--------|-------|-------|----------|----------|-----------|-----------|-----------|-----------|----------- 1 p1 TUNNEL_FLOW 10000 * * 0x2048 7.7.7.7/32 * 10.0.1.1/32 * * t1 onos-vm(config)# no policy p1 onos-vm(config)# sh policy None.
no tunnel <tunnel ID>: remove the tunnel with the tunnel ID. If the tunnel is being used by any policy, then it is not removed.
onos-vm(config)# sh tunnel # Id Policies Tunnel Path [Head-->Tail] Label Stack [Outer-->Inner] -|--|--------|-------------------------|--------------------------- 1 t1 [101, 102, 103] [[103]] onos-vm(config)# no tunnel t` Error: Invalid argument: Invalid Alphabetic character, followed by alphanumerics: t`; Invalid characters in identifier onos-vm(config)# no tunnel t1 onos-vm(config)# sh tunnel None.