Flows automatically removed from simple_switch_grpc by ONOS

121 views
Skip to first unread message

Vikas Kumar

unread,
Jul 28, 2018, 1:52:46 PM7/28/18
to ONOS Developers
Hi all,

I have an ONOS app to install and remove equal number of flows from simple_switch_grpc. I have a linear topology running inside mininet with 3 switches and a host connected to each switch.  A load generator(LG) is running on host h1 connected to s1 inside mininet and all the packets from LG are sent to ONOS App which installs and removes flows accordingly. Ideally all the flows should be removed from the switch but what I find is that some flows are not  deleted from switch and I get some errors in ONOS controller as shown below. I am unable to comprehend them. Is it because the flow installation is taking longer on simple_switch_grpc that when the request for flow deletion comes the flow is not found in the switch?(I am not sure though)

2018-07-27 14:19:22,174 | WARN  | -single-executor | P4RuntimeFlowRuleProgrammable    | 184 - org.onosproject.onos-drivers-p4runtime - 1.13.2.SNAPSHOT | Found 2 entries from device:bmv2:s2 not on translation store, removing them...
2018-07-27 14:19:22,185 | WARN  | device:bmv2:s2-9 | P4RuntimeClientImpl              | 181 - org.onosproject.onos-protocols-p4runtime-ctl - 1.13.2.SNAPSHOT | Unable to DELETE 1 table entry(s) on device:bmv2:s2: UNKNOWN (detailed errors might be logged below)
2018-07-27 14:19:22,187 | WARN  | -single-executor | P4RuntimeFlowRuleProgrammable    | 184 - org.onosproject.onos-drivers-p4runtime - 1.13.2.SNAPSHOT | Unable to DELETE table entry in device:bmv2:s2: PiTableEntry{tableId=c_ingress.ip_op_tun_s2_uplink, matchKey={hdr.vlan.vid=00:01}, tableAction=c_ingress.populate_ip_op_tun_s2_uplink(egress_port_s2=00:03, op_tunnel_s2=0f:a0), priority=0, timeout=PERMANENT}
2018-07-27 14:19:22,195 | WARN  | device:bmv2:s2-1 | P4RuntimeClientImpl              | 181 - org.onosproject.onos-protocols-p4runtime-ctl - 1.13.2.SNAPSHOT | Unable to DELETE 1 table entry(s) on device:bmv2:s2: UNKNOWN (detailed errors might be logged below)
2018-07-27 14:19:22,196 | WARN  | -single-executor | P4RuntimeFlowRuleProgrammable    | 184 - org.onosproject.onos-drivers-p4runtime - 1.13.2.SNAPSHOT | Unable to DELETE table entry in device:bmv2:s2: PiTableEntry{tableId=c_ingress.ip_op_tun_s2_downlink, matchKey={hdr.vlan.vid=00:02}, tableAction=c_ingress.populate_ip_op_tun_s2_downlink(egress_port_s2=00:02, op_tunnel_s2=04:02), priority=0, timeout=PERMANENT} 


I get to see non deterministic behavior from simple_switch_grpc with above errors while installing and removing flows though I have added all the table names to Pipeline Interpreter. 

How do I resolve this isse?


Thanks
Regards
Vikas Kumar
Department of Computer Sceince
IIT Bombay

Carmelo Cascone

unread,
Aug 2, 2018, 10:53:01 PM8/2/18
to Vikas Kumar, ONOS Developers
Hi Vikas,

You diagnosis is probably right, i.e. flow installation is taking longer. This is a common problem also with HW switches where writing to a TCAM can take up to tens of milliseconds. In general ONOS is robust against these errors, as it keeps trying removing/adding flow rules until the device state is the expected one maintend by ONOS in the flow rule store. This process is called flow rule reconciliation.

If you need flow rules to be deleted sooner, you can increase the frequency ONOS performs the reconciliation process. In the ONOS CLI, type:

onos> cfg set org.onosproject.net.flow.impl.FlowRuleManager fallbackFlowPollFrequency 5

This sets the reconciliation interval to 5 seconds (default is 30).

If you need such rules to be deleted immediately after a given packet is received, and if you want this to happen at increasing packet rates, then i’m afraid your use of ONOS is not right. Controller packet-in/out mechanisms are designed to handle few packets per second, ONOS (as most SDN control planes) is not designed to perform data plane processing. So sending all packets received from the switch (and expecting a flow rule operation as a consequence) is not a good approach.

Can you give us more details on your application? Perhaps there’s a way of achieving the same without putting so much load on the controller.

Carmelo 

On Sat, Jul 28, 2018 at 10:52 AM Vikas Kumar <mailvi...@gmail.com> wrote:
Hi all,

I have an ONOS app to install and remove equal number of flows from simple_switch_grpc. I have a linear topology running inside mininet with 3 switches and a host connected to each switch.  A load generator(LG) is running on host h1 connected to s1 inside mininet and all the packets from LG are sent to ONOS App which installs and removes flows accordingly. Ideally all the flows should be removed from the switch but what I find is that some flows are not  deleted from switch and I get some errors in ONOS controller as shown below. I am unable to comprehend them. Is it because the flow installation is taking longer on simple_switch_grpc that when the request for flow deletion comes the flow is not found in the switch? (I am not sure though)

2018-07-27 14:19:22,174 | WARN  | -single-executor | P4RuntimeFlowRuleProgrammable    | 184 - org.onosproject.onos-drivers-p4runtime - 1.13.2.SNAPSHOT | Found 2 entries from device:bmv2:s2 not on translation store, removing them...
2018-07-27 14:19:22,185 | WARN  | device:bmv2:s2-9 | P4RuntimeClientImpl              | 181 - org.onosproject.onos-protocols-p4runtime-ctl - 1.13.2.SNAPSHOT | Unable to DELETE 1 table entry(s) on device:bmv2:s2: UNKNOWN (detailed errors might be logged below)
2018-07-27 14:19:22,187 | WARN  | -single-executor | P4RuntimeFlowRuleProgrammable    | 184 - org.onosproject.onos-drivers-p4runtime - 1.13.2.SNAPSHOT | Unable to DELETE table entry in device:bmv2:s2: PiTableEntry{tableId=c_ingress.ip_op_tun_s2_uplink, matchKey={hdr.vlan.vid=00:01}, tableAction=c_ingress.populate_ip_op_tun_s2_uplink(egress_port_s2=00:03, op_tunnel_s2=0f:a0), priority=0, timeout=PERMANENT}
2018-07-27 14:19:22,195 | WARN  | device:bmv2:s2-1 | P4RuntimeClientImpl              | 181 - org.onosproject.onos-protocols-p4runtime-ctl - 1.13.2.SNAPSHOT | Unable to DELETE 1 table entry(s) on device:bmv2:s2: UNKNOWN (detailed errors might be logged below)
2018-07-27 14:19:22,196 | WARN  | -single-executor | P4RuntimeFlowRuleProgrammable    | 184 - org.onosproject.onos-drivers-p4runtime - 1.13.2.SNAPSHOT | Unable to DELETE table entry in device:bmv2:s2: PiTableEntry{tableId=c_ingress.ip_op_tun_s2_downlink, matchKey={hdr.vlan.vid=00:02}, tableAction=c_ingress.populate_ip_op_tun_s2_downlink(egress_port_s2=00:02, op_tunnel_s2=04:02), priority=0, timeout=PERMANENT} 


I get to see non deterministic behavior from simple_switch_grpc with above errors while installing and removing flows though I have added all the table names to Pipeline Interpreter. 

How do I resolve this isse?


Thanks
Regards
Vikas Kumar
Department of Computer Sceince
IIT Bombay

--
You received this message because you are subscribed to the Google Groups "ONOS Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to onos-dev+u...@onosproject.org.
To post to this group, send email to onos...@onosproject.org.
Visit this group at https://groups.google.com/a/onosproject.org/group/onos-dev/.
To view this discussion on the web visit https://groups.google.com/a/onosproject.org/d/msgid/onos-dev/833a6cf3-bd2c-4c4b-8995-9d7ceb838829%40onosproject.org.
Reply all
Reply to author
Forward
0 new messages