ovs-ofctl add-group <bridge> group_id=<id>,type=<type>,bucket=<actions>
PicOS OVS supports group tables from Openflow 1.2.
ovs-ofctl add-group <bridge> group_id=<id>,type=all,bucket=<actions>[,bucket=<actions>]
Add a group that group_id=<id>, type=all in <bridge>. The max buckets number can be created is 10.
Example:
Create a group type=all, include two buckets to modify the src-mac and dst-mac.
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=1,type=all,bucket=mod_dl_src=00:00:00:11:11:11,mod_dl_dst=00:00:00:22:22:22,output:2,bucket=mod_dl_src=00:00:00:11:11:11,mod_dl_dst=00:00:00:22:22:22,output:3
ovs-ofctl add-group <bridge> group_id=<id>,type=indirect,bucket=<actions>
Add a group that group_id=<id>, type=indirect in <bridge>.
Example:
Create a group type=indirect, just include one bucket to modify the src-mac and dst-mac.
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=2,type=indirect,bucket=mod_dl_src=00:00:00:99:11:11,mod_dl_dst=00:00:00:99:22:22,output:2
ovs-ofctl add-group <bridge> group_id=<id>,type=select,bucket=<actions>[,bucket=<actions>]
Add a group that group_id=<id>, type=select in <bridge>.
PisOS OVS is not support weighting now, user cannot specify the weight, weight=1.
Because OVS forwards packets by TCAM, the traditional ECMP in the routing table can not be used in OVS mode.
We implement a "dummy ECMP" by splitting the matching fields of a flow. By the group that type=select, the system will choose one match field to split in nw_src, nw_dst, dl_src, dl_dst. The nw_src is the highest priority, if it has no special nw_src or if the mask of nw_src is 32, it will choose nw_dst. The last choose dl_src and dl_dst. The premise is the match fields must have mask except 32 nor ff:ff:ff:ff:ff:ff.
Exception to this use, is other flows involved with the select group will be packet-driven flows.
Example:
Create a group type=select, the actions of multi buckets only have output.
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=3,type=select,bucket=bucket=output:1,output:2,bucket=output:3,bucket=output:4
ovs-ofctl add-group <bridge> group_id=<id>,type=ff,bucket=<actions>[,bucket=<actions>]
Add a group that group_id=<id>, type=ff, in <bridge>. The ff means fast_failover.
Example:
admin@PicOS-OVS$ovs-ofctl add-group br0 group_id=4,type=ff,bucket=watch_port:2,watch_group:2,output:3,watch_port:3,watch_group:3,output:4
Actions supported table:
Chip | Firebolt3 | Triumph2 | Trident-II | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Model | 3290 | 3295 | 3920 | 3922 | 3930 | as5600_52x | 3780 | as4600_54t | 3297 | 5101 | 5401 | as6701_32x |
output<PORT_ID> | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
mod_dl_src | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
mod_dl_dst | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
mod_vlan_vid | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
mod_vlan_pcp | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
mod_nw_tos | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
push_vlan | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
pop_vlan | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
strip_vlan | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
push_pbb | X | X | √ | √ | √ | √ | √ | X | √ | √ | √ | √ |
pop_pbb | X | X | √ | √ | √ | √ | √ | X | √ | √ | √ | √ |
set_queue | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
push_mpls | X | X | √ | √ | √ | √ | √ | X | √ | √ | √ | √ |
pop_mpls | X | X | √ | √ | √ | √ | √ | X | √ | √ | √ | √ |
mod_nw_src | X | X | X | X | X | X | X | X | X | √ | √ | √ |
mod_nw_dst | X | X | X | X | X | X | X | X | X | √ | √ | √ |
mod_tp_src | X | X | X | X | X | X | X | X | X | √ | √ | √ |
mod_tp_dst | X | X | X | X | X | X | X | X | X | √ | √ | √ |
The following actions are not supported.
Different modification for a different bucket
eg.
bucket=mod_dl_src:22:11:11:11:11:11,output:2,bucket=mod_dl_src:22:22:22:22:22:22,output:3
Copyright © 2025 Pica8 Inc. All Rights Reserved.