Hello Ali, I can't really thank you enough! I do have a situation I would like some help with.
Given the previous example situation, the fact is that I've tried it in a "real" (mininet) setup and the FLOW_MOD from Alice do arrive at the switch performing the action (SetVlanID(22)) even though its not permitted. To be more precise, if I send a FlowMod matching dl_vlan other than 1 (permitted in our example FlowSpace), it promptly generates an error, indicating that there were no matches. Since it yields an error in the case dl_vlan != 1, and it doesn't for dl_vlan=* (wildcard), I do believe the problem is not in the MATCH mechanism but actually in the "neoMatch.setDataLayerVirtualLan(this.virtualLanIdentifier);", because it seems that the dl_vlan is not being updated to the intended Action's dl_vlan (22 in the example) for the match test. I don't seem to have clear access to both the source for the mentioned method or the match mechanism, so I would like to ask you if you can confirm this behaviour. Thanks again! Victor T. On 12 September 2013 03:17, Ali Al-Shabibi <ali.al-shab...@stanford.edu> wrote: >> Thank you again and I'm sorry for bothering so much. After all this >> time theres one thing that I couldn't really figure out: > > No worries, it's really not a problem. > >> >> Suppose I have only one FlowSpace rule giving WRITE permissions to >> ALICE, and the match of this FlowSpace rule is dl_vlan=1. ALICE then >> tries a FLOW_MOD (with an all-wildcarded match) with >> Action:SetVlanID(22) >> >> Given this piece of code from FVActionVirtualLanId and what I think it does: >> >> 1) FVMatch neoMatch = new FVMatch(match); >> 2) neoMatch.setDataLayerVirtualLan(this.virtualLanIdentifier); >> 3) List<FlowEntry> flowEntries = >> fvClassifier.getSwitchFlowMap().matches(fvClassifier.getDPID(), >> neoMatch); >> >> 1) Create a new match from the match of the FLOW_MOD (which was all >> wildcarded). This means the 'neoMatch' will be exactly the same as >> 'match', right? (in this case, all wildcarded) > > Yup, that's exactly right. > > >> >> 2) The 'neoMatch' created earlier will have its dl_vlan changed from >> whatever it was (wildcard) to the dl_vlan specified by the Action of >> the FlowMod (22), right? > > Correct again. > > >> >> 3) The whole FlowSpace is compared to <dpid , neoMatch> and >> overlapping entries are returned. My worst problem is here: if what I >> said in 2) is correct, is it correct for it to say that neoMatch(with >> dl_vlan=22) and the only FlowSpace rule (with dl_vlan=1) overlap? Can >> it be a Subset or a Superset if the same field has different values in >> them? > > In this case there is no match and the whole flowmod is disallowed. Simply > put, Alice does not have access to vlan 22 and there cannot emit an action > which will rewrite to that vlan. > > Do you have a specific use case in mind? Perhaps I could help you with that. > > >> >> >> Thank you very very very much again! >> >> Victor T. >> >> On 11 September 2013 20:43, Ali Al-Shabibi <ali.al-shab...@stanford.edu> >> wrote: >>>> >>>> 1) When I send a FLOW_MOD with an Action to change de DL_VLAN, we talk >>>> about SwitchFlowMap, which seems to come from the FlowSpaceUtil. Does >>>> this mean that this SwitchFlowMap and the FlowEntries it talks about >>>> are from the configured FlowSpace rules? >>> >>> Yes those are the ones. >>> >>>> 2) If the above is correct, about the entity FlowEntry, what does it >>>> mean by "ActionList"? I'm confused because we only provide permissions >>>> in the FlowSpace, not actions? Would this be a "hook" for adding a >>>> future feature? >>> >>> The action list in FlowEntry is a little confusing sorry. That action list >>> is actually used to store the persmissions a slice has on this flowspace >>> entry. So for example, alice has write permissions and bob only has read >>> permissions. >>> >>> Cheers. >>> >>>> >>>> >>>> Thanks again, I think I'm really getting somewhere! =) >>>> >>>> Victor T. >>>> >>>> On 11 September 2013 00:31, Ali Al-Shabibi <ali.al-shab...@stanford.edu> >>>> wrote: >>>>> Hi Victor, >>>>> >>>>> So what you are saying is correct. When a FlowMod arrives from a >>>>> controller we know which slice/controller it's from. Therefore, the >>>>> flowmod's match struct is matched against the flowspace of that slice. >>>>> Then, for every flowspace rules matching the flowmod's match the original >>>>> flowmod is expanded; ie. a new flowmod, which is the a composition of the >>>>> original flowmod and the flowspace rule, is pushed to the switch. >>>>> >>>>> I don't if you found this page but it could help you understand how >>>>> flowmods are handled -> >>>>> https://github.com/OPENNETWORKINGLAB/flowvisor/wiki/FlowMod-Message >>>>> >>>>> Cheers. >>>>> >>>>> -- >>>>> Ali >>>>> >>>>> On Sep 10, 2013, at 7:46 PM, Victor Torres <vit...@poli.ufrj.br> wrote: >>>>> >>>>>> Hello again Ali, >>>>>> >>>>>> Thank you for all you support so far. I think theres no way for me but >>>>>> to go into FlowVisor's code. So, at first, I have a question and >>>>>> appreciate any direction on how to go on with this: >>>>>> >>>>>> At first, I'm really interested in how FLOW_MOD messages are handled. >>>>>> According to the FV Wiki >>>>>> (https://github.com/OPENNETWORKINGLAB/flowvisor/wiki/IO-Overview), is >>>>>> it correct to say that a FLOW_MOD message from a controller/slice will >>>>>> pass through a SLICER that will match it against the flowspace, >>>>>> rewrite it and push it to the switch? >>>>>> >>>>>> >>>>>> Thanks again, >>>>>> >>>>>> Victor T. >>>>>> >>>>>> On 3 September 2013 13:45, Ali Al-Shabibi <ali.al-shab...@stanford.edu> >>>>>> wrote: >>>>>>>> 1) So FV does update its FlowTable Cache from OF Messages going Switch >>>>>>>> <-> Controller. But when you say "at most every 30s, means that if it >>>>>>>> doesn't get any update it asks the switch for its FlowTable? The >>>>>>>> FlowMod thing means that the FlowVisor asks periodically for the >>>>>>>> switch for modified flows? >>>>>>> >>>>>>> So if no controller or user requests flowtable stats, FV does not store >>>>>>> anything in its cache nor does it make any periodic requests. But if >>>>>>> your controller asks for the flowtable then if it does not have a copy >>>>>>> of the flowtable or if the cache is old, it will fetch the flowtable >>>>>>> from the switch. Otherwise it will return the cached values. The >>>>>>> reasoning behind this is: >>>>>>> >>>>>>> 1. There may be many controllers sitting on top of FV, therefore there >>>>>>> may be many more flow table requests. >>>>>>> 2. On some switch implementations, asking for the flowtable is an >>>>>>> expensive operation (ie. forwarding may be delayed) >>>>>>> >>>>>>> For those two reasons, flowvisor caches the flowtable. Of course, you >>>>>>> can change the refresh rate if you know your switches do not suffer >>>>>>> from those issues. >>>>>>> >>>>>>> >>>>>>>> 2) If a slice controller wants to install a flow that changes the VLAN >>>>>>>> tag from A to B for a given flow, FV only approves it if the slice has >>>>>>>> Read/Write permissions on flowspace with dl_vlan=A and dl_vlan=B? >>>>>>> >>>>>>> That's is correct. >>>>>>> >>>>>>>> If dl_vlan is wildcarded then everything is allowed, right? >>>>>>> >>>>>>> Yup that's right as well. >>>>>>> >>>>>>>> Finally, if its set to NONE it cannot install or mod flows that have >>>>>>>> (to have) actions that change Vlan Tags? >>>>>>> >>>>>>> And correct again ;) >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> Sorry for asking so much but since these particular questions are very >>>>>>>> important for our research I would lilke to understand it as >>>>>>>> accurately as possible. >>>>>>> >>>>>>> No worries, ask as many question as you can. >>>>>>> >>>>>>> >>>>>>>> Thank you very much! >>>>>>>> >>>>>>>> Victor T. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> On 3 September 2013 13:04, Ali Al-Shabibi >>>>>>>> <ali.al-shab...@stanford.edu> wrote: >>>>>>>> Hi Victor, >>>>>>>> >>>>>>>>> 1) Does FlowVisor updates its FlowDB as OF Messages pass through it? >>>>>>>>> Or does it asks directly the switches for their Flow Tables? Reading >>>>>>>>> the source code I'm inclined to think of the first option. >>>>>>>> >>>>>>>> You are mostly right. Flowvisor stores a cache of the flowtable which >>>>>>>> it refreshes at most every 30s (this is configurable in versions 1+ of >>>>>>>> FV). One important note is that flowmods are not stored when they are >>>>>>>> pushed down by a controller, but rather they are periodically read >>>>>>>> from the datapath. >>>>>>>> >>>>>>>>> >>>>>>>>> 2) I would like to be able to keep a certain controller from >>>>>>>>> installing or modding Flows that change the VLAN Tag of a packet, for >>>>>>>>> instance. Can you point out a direction to do this? I was >>>>>>>>> investigating the source code, but I'm not sure if I should try to >>>>>>>>> implement a new Callback type or something like that. >>>>>>>> >>>>>>>> FV will disallow a controller from pushing or modding a vlan tag if >>>>>>>> either that vlan tag is not in the flowspace associated to that >>>>>>>> controller or if dl_vlan is set to none. >>>>>>>> >>>>>>>>> >>>>>>>>> If I get to any results I would gladly pull it in the future. >>>>>>>> >>>>>>>> That would be fantastic. Let me know if you need more help. >>>>>>>> >>>>>>>>> >>>>>>>>> Big thanks! >>>>>>>>> >>>>>>>>> Victor T. >>>>>>>>> >>>>>>>>> >>>>>>>>> On 30 August 2013 18:46, Ali Al-Shabibi <ali.al-shab...@stanford.edu> >>>>>>>>> wrote: >>>>>>>>> Hi Victor, >>>>>>>>> >>>>>>>>> Currently, you cannot specify which openflow actions are allowed on a >>>>>>>>> per flowspace basis. This is clearly a desirable feature but >>>>>>>>> unfortunately we have not addressed it yet. We would welcome any pull >>>>>>>>> requests/contributions in this direction. >>>>>>>>> >>>>>>>>> Cheers. >>>>>>>>> >>>>>>>>> -- >>>>>>>>> Ali >>>>>>>>> >>>>>>>>> On Aug 30, 2013, at 11:58 AM, Victor Torres <vit...@poli.ufrj.br> >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> Hello, >>>>>>>>>> >>>>>>>>>> Does anybody know if it is possible to define allowed/denied actions >>>>>>>>>> for slices in FlowVisor? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Best regards, >>>>>>>>>> >>>>>>>>>> Victor T. >>>>>>>>>> _______________________________________________ >>>>>>>>>> openflow-discuss mailing list >>>>>>>>>> openflow-discuss@lists.stanford.edu >>>>>>>>>> https://mailman.stanford.edu/mailman/listinfo/openflow-discuss >>> _______________________________________________ openflow-discuss mailing list openflow-discuss@lists.stanford.edu https://mailman.stanford.edu/mailman/listinfo/openflow-discuss