Creating a Group Table

Group Tables

Group tables enable Openflow to process forwarding decisions on multiple links. Examples include:  load-balancing, multicast,  and active/standby.  

The above figure illustrates how group-tables can simplify the configuration required to consolidate forwarding decisions for flows in an Openflow pipeline.

An OpenFlow group is an abstraction that facilitates more complex and specialized packet operations that cannot easily be performed through a flow table entry. Each group receives packets as input, and performs any OpenFlow actions on these packets. A group is not capable of performing any OpenFlow instructions, so it cannot send packets to other flow tables or meters. Furthermore, it is expected that packets have been matched appropriately prior to entry to a group, as groups do not support matching on packets. Groups are merely mechanisms to perform advanced actions, or sets of actions.

 

As shown in the above figure, the power of a group is that it contains separate lists of actions, and each individual action list is referred to as an OpenFlow bucket. Thus, it is said that a group contains a bucket list (or a list of lists of actions). Each bucket or list of buckets can be applied to entering packets; the exact behavior depends on the group type. There are certain types of groups that make use of additional parameters within a bucket. The details of these parameters will be discussed with each group type, where applicable.

 

There are four types of groups:  ALLSELECTINDIRECT, and FAST-FAILOVER.

  1. PicOS OVS supports group tables in Openflow 1.2 Openflow 1.3 and Openflow 1.4
  2. The number of buckets supported is dependent on the TCAM size in the ASIC. So there is a possibility that all defined group tables will not be installed in hardware.
  3. Max group number is 512, and max bucket number in one group is 128.

 

The ALL Group

Starting with one of the simplest, the ALL group, illustrated in the following figure, will take any packet received as input, and duplicate it to be operated on independently by each bucket in the bucket list. In this way, an ALL group can be used to replicate and then operate on separate copies of the packet defined by the actions in each bucket. Different and distinct actions can be in each bucket, which allows different operations to be performed on different copies of the packet.

 

Limitation in PicOS switch:

Due to limitation in the ASIC, PicOS OVS switches do not support replicating the packet and then operating by the actions in each bucket. So if user wants to configure type=all group, the actions of different buckets must be same. In other word, all the buckets need be uniform.

Example:

admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=20,type=all,bucket=mod_dl_src=00:00:00:11:11:11,mod_dl_dst=22:22:22:00:00:00,output:13,bucket=mod_dl_src=00:00:00:11:11:11,mod_dl_dst=22:22:22:00:00:00,output:14
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=11,dl_src=22:11:11:11:11:11,dl_dst=22:00:00:00:00:00,dl_type=0x0800,nw_proto=6,nw_src=1.1.2.100,nw_dst=2.2.2.100,actions=group:20
 
admin@PicOS-OVS$ovs-ofctl dump-groups br0 20
OFPST_GROUP_DESC reply (OF1.4) (xid=0x2):
 group_id=20,type=all,bucket=actions=set_field:00:00:00:11:11:11->eth_src,set_field:22:22:22:00:00:00->eth_dst,output:13,bucket=actions=set_field:00:00:00:11:11:11->eth_src,set_field:22:22:22:00:00:00->eth_dst,output:14

admin@PicOS-OVS$ovs-appctl pica/dump-flows
#134 normal permanent recirc_id=0,tcp,in_port=11,dl_src=22:11:11:11:11:11,dl_dst=22:00:00:00:00:00,nw_src=1.1.2.100,nw_dst=2.2.2.100,actions:set(eth(src=00:00:00:11:11:11,dst=22:22:22:00:00:00)),13,14

The INDIRECT Group                                                                                           

The INDIRECT group illustrated in the figure below, can be difficult to comprehend as a “group,” since it contains only a single bucket, where all packets received by the group are sent to this lone bucket. In other words, the INDIRECT group does not contain a list of buckets but a single bucket (or single list of actions) instead. The purpose of the INDIRECT group is to encapsulate a common set of actions used by many flows. For example, if flows A, B, and C match on different packet headers but have a common set or subset of actions, these flows can send packets to the single INDIRECT group as opposed to having to duplicate the list of common actions for each flow. The INDIRECT group is used to simplify an OpenFlow deployment and reduce the memory footprint of a set of similar flows.


admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=30,type=indirect,bucket=mod_dl_src=00:00:00:11:11:11,mod_dl_dst=22:22:22:00:00:00,output:14
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=11,dl_src=22:11:11:11:11:11,dl_dst=22:00:00:00:00:00,dl_type=0x0800,nw_proto=6,nw_src=1.1.2.100,nw_dst=2.2.2.100,actions=group:30
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=11,dl_src=22:11:11:11:11:22,dl_dst=22:00:00:00:00:00,dl_type=0x0800,nw_proto=6,nw_src=1.1.2.200,nw_dst=2.2.2.100,actions=group:30
 
admin@PicOS-OVS$ovs-ofctl dump-flows br0
OFPST_FLOW reply (OF1.4) (xid=0x2):
 cookie=0x0, duration=7.342s, table=0, n_packets=n/a, n_bytes=0, tcp,in_port=11,dl_src=22:11:11:11:11:22,dl_dst=22:00:00:00:00:00,nw_src=1.1.2.200,nw_dst=2.2.2.100 actions=group:30
 cookie=0x0, duration=31.446s, table=0, n_packets=n/a, n_bytes=0, tcp,in_port=11,dl_src=22:11:11:11:11:11,dl_dst=22:00:00:00:00:00,nw_src=1.1.2.100,nw_dst=2.2.2.100 actions=group:30
 
admin@PicOS-OVS$ovs-appctl pica/dump-flows
#136 normal permanent recirc_id=0,tcp,in_port=11,dl_src=22:11:11:11:11:22,dl_dst=22:00:00:00:00:00,nw_src=1.1.2.200,nw_dst=2.2.2.100,actions:set(eth(src=00:00:00:11:11:11,dst=22:22:22:00:00:00)),14
#135 normal permanent recirc_id=0,tcp,in_port=11,dl_src=22:11:11:11:11:11,dl_dst=22:00:00:00:00:00,nw_src=1.1.2.100,nw_dst=2.2.2.100,actions:set(eth(src=00:00:00:11:11:11,dst=22:22:22:00:00:00)),14

The FAST-FAILOVER Group

Lastly, the FAST-FAILOVER group is the topic of conversation for this tutorial and is designed specifically to detect and overcome port failures. Like the SELECT and ALL groups, the FAST-FAILOVER group, as indicated in Figure 5, has a list of buckets. In addition to this list of actions, each bucket has a watch port and/or watch group as a special parameter. The watch port/group will monitor the “liveness” or up/down status of the indicated port/group. If the status is deemed to be down, then the bucket will not be used. If it is determined to be up, then the bucket can be used. Only one bucket can be used at a time, and the bucket in use will not be changed unless the status of the watch port/group transitions from up to down. When such an event occurs, the FAST-FAILOVER group will quickly select the next bucket in the bucket list with a watch port/group that is up.

Actually, watch group is not supported in PicOS.

There is no guarantee on the transition time to select a new bucket when a failure occurs. The transition time is dependent on search time to find a watch port/group that is up and on the switch implementation. However, the motivation behind using a FAST-FAILOVER group is that it is almost guaranteed to be quicker than consulting the control plane to handle the port down event, and inserting a new flow or set of flows. With FAST-FAILOVER groups, link failure detection and recovery takes place entirely in the data plane.

 


admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=fast_failover,bucket=watch_port:1,output:1                                                           
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=2,type=fast_failover,bucket=watch_port:2,output:2  
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=3,type=fast_failover,bucket=watch_port:3,watch_group:1,output:5,bucket=watch_port:4,watch_group:2,output:6      

admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=11,dl_src=22:11:11:11:11:11,dl_dst=22:00:00:00:00:00,dl_type=0x0800,nw_proto=6,nw_src=1.1.2.100,nw_dst=2.2.2.100,actions=group:3

The SELECT Group

Next, there is the SELECT group, which is primarily designed for load balancing. As indicated in the following figure, each bucket in a SELECT group has an assigned weight, and each packet that enters the group is sent to a single bucket. The bucket selection algorithm is undefined and is dependent on the switch’s implementation; however, weighted round robin is perhaps the most obvious and simplest choice of packet distribution to buckets. The weight of a bucket is provided as a special parameter to each bucket. Each bucket in a SELECT group is still a list of actions, so any actions supported by OpenFlow can be used in each bucket, and the buckets need not be uniform.

 

 

PicOS does not support weight. Because OVS forward is based on priority of entries in TCAM, the traditional ECMP in routing table cannot be used. For a typical IP flow, PicOS implements a "dummy ECMP" by splitting the matching fields of a flow. For a group-table with type=select, PicOS support set-select-group-hash-fields and the packets will hash according to the value of set-select-group-hash-fields.

The command added for setting select-group hash fields is:

ovs-vsctl set-select-group-hash-fields [FIELDS]
FIELDS: default or some of [nw_src, nw_dst, dl_src, dl_dst] spliced by ",".
 
In the default mode the order is "nw_src, nw_dst, dl_src, dl_dst", so will check the first filed "nw_src" and find all mask bits of nw_src in flow entry are "1", in order will check the second filed "nw_dst" find the some mask bits are not "1", then the hardware flow entry will hash by "nw_dst".

Description: This command takes at most 1 argument that specifies match fields to do hash for select-group, these match fields should be spliced by “,” with descending priority and must use the constrained fields list above. If there is 0 argument token or 1 argument with string “default”, the default mode will take effect.

The priority for match fields means that when match fields are set, they will be checked in sequence to select one can do hash. If select fails, the first field in the configured match fields will be picked on and only one bucket can be used.

In default mode, the check order is “nw_src, nw_dst, dl_src, dl_dst” with non-zero field mask. If select failed, check the order “nw_src, nw_dst, dl_src, dl_dst” with field mask equals zero again.

If the selected field is an exact value, means all mask bits are “1”, then only one bucket can be used.

When user want the traffic match nw_src or nw_dst to hash, the flow entry match field must include dl_type=0x0800. If not include dl_type=0x0800, the flow entry only hash by dl_src and dl_dst.

ovs-ofctl add-flow br0 in_port=1,dl_type=0x0800,actions=output:2

Example

1. If the match field does not include dl_type=0x0800.
 
set-select-group-hash-fields: dl_src,dl_dst 
admin@PicOS-OVS$ovs-vsctl set-select-group-hash-fields dl_src,dl_dst
admin@PicOS-OVS$ovs-vsctl show-select-group-hash-fields
select_group_hash_fields: dl_src,dl_dst 
 
1> There is no dl_src or dl_dst in flow match field, use dl_src for hashing,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows
#4 normal permanent recirc_id=0,in_port=1,dl_src=00:00:00:00:00:01/00:00:00:00:00:03, actions:25
#5 normal permanent recirc_id=0,in_port=1,dl_src=00:00:00:00:00:00/00:00:00:00:00:03, actions:14
#2 normal permanent recirc_id=0,in_port=1,dl_src=00:00:00:00:00:03/00:00:00:00:00:03, actions:14
#3 normal permanent recirc_id=0,in_port=1,dl_src=00:00:00:00:00:02/00:00:00:00:00:03, actions:38
 
2> dl_src has hashable mask in flow match field, use dl_src for hashing,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_src=22:11:11:00:00:00/ff:ff:ff:00:00:00,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows
#9 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:00:00:00/ff:ff:ff:00:00:03, actions:14
#8 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:00:00:01/ff:ff:ff:00:00:03, actions:25
#7 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:00:00:02/ff:ff:ff:00:00:03, actions:38
#6 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:00:00:03/ff:ff:ff:00:00:03, actions:14
 
3> dl_src has no hashable mask and there is no dl_dst in flow match field, use dl_dst for hashing,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_src=22:11:11:11:11:11,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows
#13 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:11:11:11,dl_dst=00:00:00:00:00:00/00:00:00:00:00:03, actions:14
#12 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:11:11:11,dl_dst=00:00:00:00:00:01/00:00:00:00:00:03, actions:25
#11 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:11:11:11,dl_dst=00:00:00:00:00:02/00:00:00:00:00:03, actions:38
#10 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:11:11:11,dl_dst=00:00:00:00:00:03/00:00:00:00:00:03, actions:14
 
4> There is no dl_src, and dl_dst has hashable mask in flow match field, use dl_src for hashing,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_dst=22:22:22:00:00:00/ff:ff:ff:00:00:00,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows                                     
#83 normal permanent recirc_id=0,in_port=1,dl_src=00:00:00:00:00:01/00:00:00:00:00:03,dl_dst=22:22:22:00:00:00/ff:ff:ff:00:00:00, actions:25
#81 normal permanent recirc_id=0,in_port=1,dl_src=00:00:00:00:00:03/00:00:00:00:00:03,dl_dst=22:22:22:00:00:00/ff:ff:ff:00:00:00, actions:14
#84 normal permanent recirc_id=0,in_port=1,dl_src=00:00:00:00:00:00/00:00:00:00:00:03,dl_dst=22:22:22:00:00:00/ff:ff:ff:00:00:00, actions:14
#82 normal permanent recirc_id=0,in_port=1,dl_src=00:00:00:00:00:02/00:00:00:00:00:03,dl_dst=22:22:22:00:00:00/ff:ff:ff:00:00:00, actions:38
 
5> dl_src and dl_dst have no hashable mask in flow match field, won't hash,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_src=22:11:11:11:11:11,dl_dst=22:22:22:22:22:22,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows
#18 normal permanent recirc_id=0,in_port=1,dl_src=22:11:11:11:11:11,dl_dst=22:22:22:22:22:22, actions:14
 
 
2. If the match field include dl_type=0x0800.

set-select-group-hash-fields: nw_dst,nw_src, 
admin@PicOS-OVS$ovs-vsctl set-select-group-hash-fields nw_dst,nw_src
admin@PicOS-OVS$ovs-vsctl show-select-group-hash-fields
select_group_hash_fields: nw_dst,nw_src

1> There is no nw_dst or nw_src in flow match field, use nw_dst for hashing,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_type=0x0800,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows                          
#28 normal permanent recirc_id=0,ip,in_port=1,nw_dst=0.0.0.2/0.0.0.3, actions:38
#30 normal permanent recirc_id=0,ip,in_port=1,nw_dst=0.0.0.0/0.0.0.3, actions:14
#29 normal permanent recirc_id=0,ip,in_port=1,nw_dst=0.0.0.1/0.0.0.3, actions:25
#27 normal permanent recirc_id=0,ip,in_port=1,nw_dst=0.0.0.3/0.0.0.3, actions:14
2> nw_dst has hashable mask, use nw_dst for hashing,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_type=0x0800,nw_dst=192.168.2.0/24,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows
#35 normal permanent recirc_id=0,ip,in_port=1,nw_dst=192.168.2.3/255.255.255.3, actions:14
#37 normal permanent recirc_id=0,ip,in_port=1,nw_dst=192.168.2.1/255.255.255.3, actions:25
#38 normal permanent recirc_id=0,ip,in_port=1,nw_dst=192.168.2.0/255.255.255.3, actions:14
#36 normal permanent recirc_id=0,ip,in_port=1,nw_dst=192.168.2.2/255.255.255.3, actions:38

3> nw_dst has no hashable mask and there is no nw_src in match field, use nw_src for hashing,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_type=0x0800,nw_dst=192.168.2.100,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows
#40 normal permanent recirc_id=0,ip,in_port=1,nw_src=0.0.0.2/0.0.0.3,nw_dst=192.168.2.100, actions:38
#42 normal permanent recirc_id=0,ip,in_port=1,nw_src=0.0.0.0/0.0.0.3,nw_dst=192.168.2.100, actions:14
#41 normal permanent recirc_id=0,ip,in_port=1,nw_src=0.0.0.1/0.0.0.3,nw_dst=192.168.2.100, actions:25
#39 normal permanent recirc_id=0,ip,in_port=1,nw_src=0.0.0.3/0.0.0.3,nw_dst=192.168.2.100, actions:14

4> There is no nw_dst, and nw_src has hashable mask, use nw_dst for hashing,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_type=0x0800,nw_src=192.168.1.0/24,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows
#46 normal permanent recirc_id=0,ip,in_port=1,nw_src=192.168.1.0/24,nw_dst=0.0.0.1/0.0.0.3, actions:25
#44 normal permanent recirc_id=0,ip,in_port=1,nw_src=192.168.1.0/24,nw_dst=0.0.0.3/0.0.0.3, actions:14
#47 normal permanent recirc_id=0,ip,in_port=1,nw_src=192.168.1.0/24,nw_dst=0.0.0.0/0.0.0.3, actions:14
#45 normal permanent recirc_id=0,ip,in_port=1,nw_src=192.168.1.0/24,nw_dst=0.0.0.2/0.0.0.3, actions:38

5> nw_src and nw_dst have no hashable mask in match field, won't hash,
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:14,bucket=output:25,bucket=output:38
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=1,dl_type=0x0800,nw_src=192.168.1.100,nw_dst=192.168.2.100,actions=group:1
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows              
#48 normal permanent recirc_id=0,ip,in_port=1,nw_src=192.168.1.100,nw_dst=192.168.2.100, actions:14
 

3. set-select-group-hash-fields: nw_src,dl_src
 
admin@PicOS-OVS$ovs-vsctl set-select-group-hash-fields nw_src,dl_src
admin@PicOS-OVS$ovs-vsctl show-select-group-hash-fields
select_group_hash_fields: nw_src,dl_src 

admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:12,bucket=output:13,bucket=output:14
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=11,ip,nw_src=10.10.10.10,nw_dst=10.10.20.0/24,dl_src=00:00:00:11:11:00/ff:ff:ff:ff:ff:00,dl_dst=00:00:00:22:22:22,actions=group:1
 
The order is "nw_src, dl_src", so will check the first filed "nw_src" and find all mask bits of nw_src in flow entry are "1", in order will check the second filed "dl_src" find the some mask bits are not "1", then the hardware flow entry will hash by "dl_src".
admin@PicOS-OVS$
admin@PicOS-OVS$ovs-appctl pica/dump-flows                          
#29 normal permanent recirc_id=0,ip,in_port=11,dl_src=00:00:00:11:11:00/ff:ff:ff:ff:ff:03,dl_dst=00:00:00:22:22:22,nw_src=10.10.10.10,nw_dst=10.10.20.0/24, actions:12
#27 normal permanent recirc_id=0,ip,in_port=11,dl_src=00:00:00:11:11:02/ff:ff:ff:ff:ff:03,dl_dst=00:00:00:22:22:22,nw_src=10.10.10.10,nw_dst=10.10.20.0/24, actions:14
#28 normal permanent recirc_id=0,ip,in_port=11,dl_src=00:00:00:11:11:01/ff:ff:ff:ff:ff:03,dl_dst=00:00:00:22:22:22,nw_src=10.10.10.10,nw_dst=10.10.20.0/24, actions:13
#26 normal permanent recirc_id=0,ip,in_port=11,dl_src=00:00:00:11:11:03/ff:ff:ff:ff:ff:03,dl_dst=00:00:00:22:22:22,nw_src=10.10.10.10,nw_dst=10.10.20.0/24, actions:12


4. set-select-group-hash-fields: nw_src,dl_dst
admin@PicOS-OVS$ovs-vsctl set-select-group-hash-fields nw_src,dl_dst
admin@PicOS-OVS$ovs-vsctl show-select-group-hash-fields
select_group_hash_fields: nw_src,dl_dst

admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=select,bucket=output:12,bucket=output:13,bucket=output:14
admin@PicOS-OVS$ovs-ofctl add-flow br0 in_port=11,ip,nw_src=10.10.10.10,nw_dst=10.10.20.0/24,dl_src=00:00:00:11:11:00/ff:ff:ff:ff:ff:00,dl_dst=00:00:00:22:22:22,actions=group:1
 
The order is "nw_src, dl_dst", so will check the first filed "nw_src" and find all mask bits of nw_src in flow entry are "1", in order will check the second filed "dl_dst" find all the mask bits are "1", selected field in this time then only one bucket can be used.
 
admin@PicOS-OVS$ovs-appctl pica/dump-flows             
#30 normal permanent recirc_id=0,ip,in_port=11,dl_src=00:00:00:11:11:00/ff:ff:ff:ff:ff:00,dl_dst=00:00:00:22:22:22,nw_src=10.10.10.10,nw_dst=10.10.20.0/24, actions:14

Modify Bucket in a Group Table

The following configuration shows modification of buckets in a group table.

admin@PicOS-OVS# ovs-ofctl add-group br0 group_id=2238,type=all,bucket=output:3
admin@PicOS-OVS# ovs-ofctl mod-group br0 group_id=2238,type=all,bucket=output:2,bucket=output:3
admin@PicOS-OVS# ovs-ofctl mod-group br0 group_id=2238,type=all,bucket=mod_dl_src:22:11:11:22:22:22,mod_dl_dst:22:00:00:11:11:11,output:2,bucket=mod_dl_src:22:11:11:22:22:22,mod_dl_dst:22:00:00:11:11:11,output:3


Delete Group Table

In following configuration, users can delete the group table with following CLI.

admin@PicOS-OVS$ovs-ofctl del-groups br0 group_id=2238
admin@PicOS-OVS$ovs-ofctl del-groups br0

Display the Information of Group Table

Users can display the information of all group tables.

 
admin@PicOS-OVS$ovs-ofctl dump-groups br0         
OFPST_GROUP_DESC reply (OF1.4) (xid=0x2):
 group_id=20,type=all,bucket=actions=output:49
 group_id=30,type=all,bucket=actions=output:50
 group_id=10,type=ff,bucket=watch_port:49,watch_group:20,actions=output:49,bucket=watch_port:50,watch_group:30,actions=output:50

admin@PicOS-OVS$ovs-ofctl dump-group-stats br0
OFPST_GROUP reply (OF1.4) (xid=0x2):
 group_id=20,duration=163370.539s,ref_count=0,packet_count=n/a,byte_count=0,bucket0:packet_count=n/a,byte_count=0
 group_id=30,duration=163365.129s,ref_count=0,packet_count=n/a,byte_count=0,bucket0:packet_count=n/a,byte_count=0 group_id=10,duration=163375.513s,ref_count=0,packet_count=n/a,byte_count=13984159200,bucket0:packet_count=n/a,byte_count=8247745704,bucket1:packet_count=n/a,byte_count=5736413496

admin@PicOS-OVS$ovs-ofctl dump-group-features br0 
OFPST_GROUP_FEATURES reply (OF1.4) (xid=0x2):
 Group table:
    Types:  0xf
    Capabilities:  0xe
    all group:
       max_groups=0x64
       actions: output group set_field strip_vlan push_vlan mod_nw_ttl dec_ttl set_mpls_ttl dec_mpls_ttl dec_mpls_ttl dec_mpls_ttl dec_mpls_ttl
    select group:
       max_groups=0x64
       actions: output group set_field strip_vlan push_vlan mod_nw_ttl dec_ttl set_mpls_ttl dec_mpls_ttl dec_mpls_ttl dec_mpls_ttl dec_mpls_ttl
    indirect group:
       max_groups=0x64
       actions: output group set_field strip_vlan push_vlan mod_nw_ttl dec_ttl set_mpls_ttl dec_mpls_ttl dec_mpls_ttl dec_mpls_ttl dec_mpls_ttl
    fast failover group:
       max_groups=0x64
       actions: output group set_field strip_vlan push_vlan mod_nw_ttl dec_ttl set_mpls_ttl dec_mpls_ttl dec_mpls_ttl dec_mpls_ttl dec_mpls_ttl



Copyright © 2024 Pica8 Inc. All Rights Reserved.