[OPNFLWPLUG-82] Flow Entries from Switch and Controller are not same. Might affect Bug375 Created: 12/Mar/14 Updated: 27/Sep/21 Resolved: 16/Aug/16 |
|
| Status: | Resolved |
| Project: | OpenFlowPlugin |
| Component/s: | General |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Improvement | ||
| Reporter: | Praveen Darshanam | Assignee: | Anil Vishnoi |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: Linux |
||
| Description |
|
When I pushed a particular flow entry using "addMDFlow openflow:1 f4" and request the flow using readConfigurationData() API, readOperationalData() API both the Flows are not matching. The fields like Flow id/values, FlowKey, _barrier=false, _cookieMask=10, _flowName=Bar etc. are either malformed or not present. This bug might affect I am using latest openflowplugin and OVSK switch with OF1.3 getAllControllerFlows: tableId= 4 getAllSwitchFlows: tableId= 4 |
| Comments |
| Comment by Praveen Darshanam [ 12/Mar/14 ] |
|
Sorry, it is |
| Comment by Anil Vishnoi [ 12/Mar/14 ] |
|
Investigating |
| Comment by Michal Rehak [ 13/Mar/14 ] |
|
For better flow identification we should use the cookie field. |
| Comment by Anil Vishnoi [ 23/Apr/14 ] |
|
Hi Praveen, When you install flow with above mac address and their respective mask values, switch installs flow with following src and dst mac. src_mac = (ff:ff:ff:ff:ff:ff & ff:ff:ff:00:00:00 = ff:ff:ff:00:00:00) So in actual flow rule gets install to the switch has src_mac = ff:ff:ff:00:00:00 & dst_mac = 00:00:00:00:00:00 because of the mask, and this is what operational data store flow reports. When controller fetch flow details from switch, switch don't send cookie mask value with the details, and that why its missing. FlowName is something thats being used for controller bookkeeping purpose and never goes down to the switch, so its also not there in the details we fetch from switch. When we fetch flow statistics from switch, we compare each flow retrieved from the switch with the flows stored in config data store to find the matching flow, and if we find the matching flow, we augment the statistics respectively in operational data store under the matching flow key. If we don't find any matching flow in config data store, we consider those flow as unaccounted flows and we augment details of those flows to operational data store using specific key value. The key (_value=#UF$TABLE*4*2) you see in the operational data store flow is a key of an unaccounted flow. You can decode this key in following way Matching between the flow fetched from switch and flows stored in config data store is done through custom match functions ( comparison based on each element of the flow construct ), because flow is the only construct in openflow spec that don't have unique ID associated with it. If we can find some alternate mechanism of providing unique id to the flow, we can avoid this custom matching and directly augment the flow stats to the flow associated with that unique key in the operational data store. Now the question is why controller is considering this flow as unaccounted flow given that its respective flow is already there in the config data store? For short term i will try to fix it in the existing implementation and will push patch sometime next week. For the long term solution we are looking at alternate mechanism of assigning unique identifier to the flow using "cookies". Thanks |
| Comment by Andrej Leitner [ 16/Aug/16 ] |
|
Closing bug since the main issue here was the alien flow id which was fixed in |