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

Reply via email to