I just reproduced this on a 1.2 FlowVisor and the flowmod is disallowed as expected.
Could you send me you flowspace and perhaps a packet capture of whats going on? Cheers. -- Ali On Sep 12, 2013, at 11:09 AM, Victor Torres <vit...@poli.ufrj.br> wrote: > Hello Ali, > > According to fvctl: > > FlowVisor version : flowvisor-1.2.0 > FlowVisor DB version : 2 > > The bug in the previous version was about this > "setDataLayerVirtualLan()"? Because this behaviour seems to repeat for > nw_src, nw_dst, dl_src, dl_dst, tp_src and tp_dst, and they all seem > to use a similar method. > > > Best regards, > > Victor T. > > On 12 September 2013 14:55, Ali Al-Shabibi <ali.al-shab...@stanford.edu> > wrote: >> Hmm this sounds like a bug that we had in a previous version of FV. Could >> you tell me what version you are running? >> >> Cheers. >> >> -- >> Ali >> >> On Sep 12, 2013, at 4:30 AM, Victor Torres <vit...@poli.ufrj.br> wrote: >> >>> 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