Hello Ali,

I'm sorry for not supporting my statement before. I've prepared some
logs of what I did, which I hope will help you to understand better:

1)  This is the FlowSpace: http://pastebin.com/FMNzVNaF
It contains only one rule, and its match is only dl_vlan = 1.

2) This is the POX code I'm using to send the FlowMod:
http://pastebin.com/m8tnqfP8
Worth noticing that dl_vlan is Wildcarded, and the Action tries to
change de dl_vlan to 22.

3) This is the FlowVisor log: http://pastebin.com/xS8kdTUq
I've shut it down as soon as the flow was installed so as to not
generate too much text. I've tried signaling in the file where the
test Flow_Mod begins processing.

4) This is the switches' Flow Table, as reported by Mininet:
http://pastebin.com/x8M32QrJ
The wildcarded dl_vlan was rewritten to the allowed value (1), the
dl_src and dl_dst were maintained from the original Flow_Mod and the
Action is still changing dl_vlan to 22.

I hope this is helpful, is there anything else I can provide that can help more?

By the way, if I may ask, is it possible to get sources for OFMatch
and the other structures that don't seem to be included in the
FlowVisor java source? With that I could investigate the problem
further.


Best regards,

Victor T.

On 12 September 2013 15:50, Ali Al-Shabibi <ali.al-shab...@stanford.edu> wrote:
> 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

Reply via email to