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