Chris from Integration is also waiting this merge, please prioritize this patch.
toggle quoted message
Show quoted text
On May 20, 2014, at 1:29 PM, Madhu Venugopal <mavenugo@...> wrote: Thanks folks. Shall we get this fix merged ASAP ?
Our Neutron integration is blocked by these issues and we need to get to a stable version sooner. With many moving parts across all the projects, identifying such a stable version is getting challenging :-)
-Madhu
On 5/20/14, 1:15 PM, Hsin-Yi Shen wrote:
HI, I update the openflowplugin and patch the bug fix. This fixes the flow mod issue in testprovider and ovsdb project. I will mark BUG 1020 as duplicate of bug 275. Thanks a lot for your help in debugging.
Hsin-Yi
----- Original Message ----- From: "Luis Gomez" <ecelgp@...> To: "Abhijit Kumbhare" <abhijitkoss@...> Cc: "Kamal Rameshan (kramesha)" <kramesha@...>, "openflowjava-dev" <openflowjava-dev@...>, "Flavio Fernandes" <ffernand@...>, "Madhu Venugopal" <vmadhu@...>, openflowplugin-dev@..., "Hsin-Yi Shen" <hshen@...> Sent: Monday, May 19, 2014 9:31:34 PM Subject: Re: [openflowplugin-dev] [openflowjava-dev] BUG 1020 - Multiple OUPUT actions in the action list of apply-action instruction
I see this one in the bug: https://git.opendaylight.org/gerrit/#/c/7099/
On May 19, 2014, at 5:42 PM, Abhijit Kumbhare <abhijitkoss@...> wrote:
What is the gerrit number?
On May 19, 2014 5:27 PM, "Kamal Rameshan (kramesha)" <kramesha@...> wrote:
This might be related to Bug : 275 : https://bugs.opendaylight.org/show_bug.cgi?id=275
This defect solves flow modify.
A gerrit for this is wating to be reviewed
Thanks Kamal
On 5/19/14 5:20 PM, "Hsin-Yi Shen" <hshen@...> wrote:
Hello all, After debugging, we find the issue is in flow modify and we are able to reproduce same issue in test provider.
The behaviour for test case and ovsdb OF13 is as following: 1. First time we write flow with apply-action instruction. The instruction has actions list: POP_VLAN, OUTPUT=25 2. In second time, we get the action list from original flow, copy and write new action list to: POP_VLAN, OUPUT=25, OUTPUT=26, allocate a new apply-action instruction with new action list, and write flow with new instruction. 3. In third time, we get the action list from original flow, copy and write new action list to: POP_VLAN, OUPUT=25, OUTPUT=26, OUTPUT=27, allocate a new apply-action instruction with new action list, and write flow with new instruction. And so on...
When we apply this to some foo node, the addMDFlow log looks ok: First time we write the flow with action list: POP_VLAN, OUTPUT=25 2014-05-19 20:08:05.114 EDT [pool-13-thread-2] INFO o.o.o.t.OpenflowpluginTestServiceProvider - addFlow - AddFlowInput [_flowRef=FlowRef [_value=KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.table.Flow, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No des, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No de[key=NodeKey [_id=Uri [_value=foo:node:1]]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Flo wCapableNode, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.Table[key=TableKey [_id=2]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.table.Flow[key=FlowKey [_id=Uri [_value=206]]]]}], _flowTable=FlowTableRef [_value=KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.Table, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No des, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No de[key=NodeKey [_id=Uri [_value=foo:node:1]]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Flo wCapableNode, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.Table[key=TableKey [_id=2]]]}], _barrier=false, _cookieMask=FlowCookie [_value=10], _flags=FlowModFlags [_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=true], _flowName=FooXf83, _installHw=false, _instructions=Instructions [_instruction=[Instruction [_order=0, _key=InstructionKey [_order=0], _instruction=ApplyActionsCase [_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey [_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction [augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1, _key=ActionKey [_order=1], _action=OutputActionCase [_outputAction=OutputAction [_outputNodeConnector=Uri [_value=openflow:65500:25], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], _match=Match [_ethernetMatch=EthernetMatch [_ethernetDestination=EthernetDestination [_address=MacAddress [_value=01:00:00:00:00:00], _mask=MacAddress [_value=01:00:00:00:00:00], augmentation=[]], augmentation=[]], _vlanMatch=VlanMatch [_vlanId=VlanId [_vlanId=VlanId [_value=2000], _vlanIdPresent=true, augmentation=[]], augmentation=[]], augmentation=[]], _strict=false, _cookie=FlowCookie [_value=10], _hardTimeout=0, _idleTimeout=0, _priority=2, _tableId=2, _node=NodeRef [_value=KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No de, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No des, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No de[key=NodeKey [_id=Uri [_value=foo:node:1]]]]}], _transactionUri=Uri [_value=DOM-0], augmentation=[]]
Second time we write the flow with action list: POP_VLAN, OUTPUT=25, OUTPUT=26 osgi> addMDFlow foo:node:1 f83 Status of Flow Data Loaded Transaction: COMMITED osgi> 2014-05-19 20:09:16.778 EDT [pool-13-thread-2] INFO o.o.o.t.OpenflowpluginTestServiceProvider - updateFlow - UpdateFlowInput [_flowRef=FlowRef [_value=KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.table.Flow, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No des, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No de[key=NodeKey [_id=Uri [_value=foo:node:1]]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Flo wCapableNode, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.Table[key=TableKey [_id=2]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.table.Flow[key=FlowKey [_id=Uri [_value=206]]]]}], _transactionUri=Uri [_value=DOM-1], _originalFlow=OriginalFlow [_barrier=false, _cookieMask=FlowCookie [_value=10], _flags=FlowModFlags [_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=true], _flowName=FooXf83, _installHw=false, _instructions=Instructions [_instruction=[Instruction [_order=0, _key=InstructionKey [_order=0], _instruction=ApplyActionsCase [_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey [_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction [augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1, _key=ActionKey [_order=1], _action=OutputActionCase [_outputAction=OutputAction [_outputNodeConnector=Uri [_value=openflow:65500:25], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], _match=Match [_ethernetMatch=EthernetMatch [_ethernetDestination=EthernetDestination [_address=MacAddress [_value=01:00:00:00:00:00], _mask=MacAddress [_value=01:00:00:00:00:00], augmentation=[]], augmentation=[]], _vlanMatch=VlanMatch [_vlanId=VlanId [_vlanId=VlanId [_value=2000], _vlanIdPresent=true, augmentation=[]], augmentation=[]], augmentation=[]], _strict=false, _cookie=FlowCookie [_value=10], _hardTimeout=0, _idleTimeout=0, _priority=2, _tableId=2, augmentation=[]], _updatedFlow=UpdatedFlow [_barrier=false, _cookieMask=FlowCookie [_value=10], _flags=FlowModFlags [_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=true], _flowName=FooXf83, _installHw=false, _instructions=Instructions [_instruction=[Instruction [_order=0, _key=InstructionKey [_order=0], _instruction=ApplyActionsCase [_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey [_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction [augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1, _key=ActionKey [_order=1], _action=OutputActionCase [_outputAction=OutputAction [_outputNodeConnector=Uri [_value=openflow:65500:25], augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=2, _key=ActionKey [_order=2], _action=OutputActionCase [_outputAction=OutputAction [_outputNodeConnector=Uri [_value=openflow:65500:26], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], _match=Match [_ethernetMatch=EthernetMatch [_ethernetDestination=EthernetDestination [_address=MacAddress [_value=01:00:00:00:00:00], _mask=MacAddress [_value=01:00:00:00:00:00], augmentation=[]], augmentation=[]], _vlanMatch=VlanMatch [_vlanId=VlanId [_vlanId=VlanId [_value=2000], _vlanIdPresent=true, augmentation=[]], augmentation=[]], augmentation=[]], _strict=false, _cookie=FlowCookie [_value=10], _hardTimeout=0, _idleTimeout=0, _priority=2, _tableId=2, augmentation=[]], _node=NodeRef [_value=KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No de, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No des, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No de[key=NodeKey [_id=Uri [_value=foo:node:1]]]]}], augmentation=[]
But this has issue when we write flow to real ovs node: 1st time we write flow with action list: POP_VLAN, OUTPUT=27 osgi> addMDFlow openflow:266832637728842 f83 Status of Flow Data Loaded Transaction: COMMITED osgi> 2014-05-19 20:12:48.347 EDT [md-sal-binding-notification-12] INFO o.o.o.t.FlowEventListenerLoggingImpl - flow to be added..........................FlowAdded [_flowRef=FlowRef [_value=KeyedInstanceIdentifier{targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.table.Flow, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.No des, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.No de[key=NodeKey [_id=Uri [_value=openflow:266832637728842]]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.Flo wCapableNode, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.Table[key=TableKey [_id=2]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tab les.table.Flow[key=FlowKey [_id=Uri [_value=206]]]]}], _barrier=false, _cookieMask=FlowCookie [_value=10], _flags=FlowModFlags [_cHECKOVERLAP=false, _rESETCOUNTS=false, _nOPKTCOUNTS=false, _nOBYTCOUNTS=false, _sENDFLOWREM=true], _flowName=FooXf83, _installHw=false, _instructions=Instructions [_instruction=[Instruction [_order=0, _key=InstructionKey [_order=0], _instruction=ApplyActionsCase [_applyActions=ApplyActions [_action=[Action [_order=0, _key=ActionKey [_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction [augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1, _key=ActionKey [_order=1], _action=OutputActionCase [_outputAction=OutputAction [_outputNodeConnector=Uri [_value=openflow:65500:27], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]], _match=Match [_ethernetMatch=EthernetMatch [_ethernetDestination=EthernetDestination [_address=MacAddress [_value=01:00:00:00:00:00], _mask=MacAddress [_value=01:00:00:00:00:00], augmentation=[]], augmentation=[]], _vlanMatch=VlanMatch [_vlanId=VlanId [_vlanId=VlanId [_value=2000], _vlanIdPresent=true, augmentation=[]], augmentation=[]], augmentation=[]], _strict=false, _cookie=FlowCookie [_value=10], _hardTimeout=0, _idleTimeout=0, _priority=2, _tableId=2, _transactionId=TransactionId [_value=3], augmentation=[]] And the ovs show command confirms the result: [hshen@hshen logs]$ sudo ovs-ofctl dump-flows br-int -O OpenFlow13 OFPST_FLOW reply (OF1.3) (xid=0x2): cookie=0xa, duration=113.573s, table=2, n_packets=0, n_bytes=0, send_flow_rem priority=2,dl_vlan=2000,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=strip_vlan,output:27
However, the log looks weird in the 2nd time and 3rd time: osgi> addMDFlow openflow:266832637728842 f83 Status of Flow Data Loaded Transaction: COMMITED osgi> addMDFlow openflow:266832637728842 f83 Status of Flow Data Loaded Transaction: COMMITED
We only get one line log for COMMITED status. And flow is not modified at ovs node: [hshen@hshen logs]$ sudo ovs-ofctl dump-flows br-int -O OpenFlow13 OFPST_FLOW reply (OF1.3) (xid=0x2): cookie=0xa, duration=245.054s, table=2, n_packets=0, n_bytes=0, send_flow_rem priority=2,dl_vlan=2000,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=strip_vlan,output:27
It looks like the flow mod message is not even sent to ovs node. Is there any change in Openflowplugin for modifying the flow? Please advise hoe we can solve this issue or debug further.
Thanks a lot for your help.
Hsin-Yi
----- Original Message ----- From: "Flavio Fernandes" <ffernand@...> To: "Hsin-Yi Shen" <hshen@...> Cc: "Michal Polkoráb" <michal.polkorab@...>, "Abhijit Kumbhare" <abhijitkoss@...>, "openflowjava-dev" <openflowjava-dev@...>, "Madhu Venugopal" <vmadhu@...>, openflowplugin-dev@... Sent: Friday, May 16, 2014 8:40:20 PM Subject: Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 - Multiple OUPUT actions in the action list of apply-action instruction
Hi Hsin-Yi,
You are right. This is using the test provider. I don¹t really know how to do it thru openstack-ovsdbŠ. yet. :)
‹ flavio
On May 16, 2014, at 8:37 PM, Hsin-Yi Shen <hshen@...> wrote:
Flavio, Looks like you tried test provider. Do you try wireshark with openstack-ovsdb integreation?
Hsin-Yi
----- Original Message ----- From: "Flavio Fernandes" <ffernand@...> To: "Michal Polkoráb" <michal.polkorab@...> Cc: "Hsin-Yi Shen" <hshen@...>, "Abhijit Kumbhare" <abhijitkoss@...>, "openflowjava-dev" <openflowjava-dev@...>, "Madhu Venugopal" <vmadhu@...>, openflowplugin-dev@... Sent: Friday, May 16, 2014 8:28:38 PM Subject: Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 - Multiple OUPUT actions in the action list of apply-action instruction
Hi folks,
It took me a little playing with, but I did manage to capture the flow mod packet!
https://www.dropbox.com/s/uumgiccue6ksuhi/Screenshot%202014-05-16%2020.25 .48.png
From the capture, it is packet #7. You need wireshark 1.11 to see the of 1.3 packets. From the wireshark output, I see the instruction and the actions as you expected, Hsin-Yi.
‹ flavio
On May 16, 2014, at 3:17 PM, Michal Polkoráb <michal.polkorab@...> wrote:
First I would try using wireshark to check the data written to the wire. This way you will know if there is some problem with the device or with the controller.
I would also try to put a Log message into: - OF13OutputActionSerializer in openflowjava - ActionConvertor in openflowplugin (in output action case) and rebuilding the code. When running the distribution there should be three logs for mentioned ApplyActions Instruction. If there are six log messages, then this should be an issue somewhere out of openflowplugin translation. If there is less than three messages the bug should be in the openflowplugin, 3-5 messages should be a bug in openflowjava.
Michal ________________________________________ From: Hsin-Yi Shen <hshen@...> Sent: 16 May 2014 20:24 To: Michal Polkoráb; Flavio Fernandes Cc: Abhijit Kumbhare; openflowjava-dev; Madhu Venugopal; openflowplugin-dev@... Subject: Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 - Multiple OUPUT actions in the action list of apply-action instruction
Hi Michal, Thanks for testing the openflowjava. After fixing the test provider code, we now see multiple actions of same type in applyActions Instruction.
But we still see same issue in our OVSDB project using OF 1.3. While ovsdb code write flows with multiple actions of OUTPUT type, 2014-05-16 18:04:06.147 EDT [pool-18-thread-1] DEBUG o.o.o.n.p.OF13ProviderManager - createOutputPortInstructions() : applyAction ApplyActions [_action=[Action [_order=0, _key=ActionKey [_order=0], _action=PopVlanActionCase [_popVlanAction=PopVlanAction [augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=1, _key=ActionKey [_order=1], _action=OutputActionCase [_outputAction=OutputAction [_outputNodeConnector=Uri [_value=openflow:112312004696131:1], augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=2, _key=ActionKey [_order=2], _action=OutputActionCase [_outputAction=OutputAction [_outputNodeConnector=Uri [_value=openflow:112312004696131:3], augmentation=[]], augmentation=[]], augmentation=[]], Action [_order=3, _key=ActionKey [_order=3], _action=OutputActionCase [_outputAction=OutputAction [_outputNodeConnector=Uri [_value=openflow:112312004696131:4], augmentation=[]], augmentation=[]], augmentation=[]]], augmentation=[]] We only see one output action is actually installed: [root@control-node logs(keystone_admin)]# ovs-ofctl dump-flows br-int -O OpenFlow13 OFPST_FLOW reply (OF1.3) (xid=0x2): .... cookie=0x0, duration=1246.988s, table=20, n_packets=26, n_bytes=2644, send_flow_rem priority=16384,dl_vlan=2400,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=strip_vlan,output:1
Other output actions just silently disappear. Could you suggest where we should check for debugging? Thanks.
Hsin-Yi
----- Original Message ----- From: "Michal Polkoráb" <michal.polkorab@...> To: "Abhijit Kumbhare" <abhijitkoss@...>, "Hsin-Yi Shen" <hshen@...> Cc: "openflowjava-dev" <openflowjava-dev@...>, "Madhu Venugopal" <vmadhu@...>, openflowplugin-dev@... Sent: Friday, May 16, 2014 3:38:04 AM Subject: RE: [openflowjava-dev] [openflowplugin-dev] BUG 1020 - Multiple OUPUT actions in the action list of apply-action instruction
Hi,
I have tested openflowjava and it supports multiple actions of same type in ApplyActions Instruction. However, it looks like the OpenflowpluginTestServiceProvider receives wrong object - as it already contains only one Output action (judging on the description provided in the bug 1020).
Regards
Michal Polkorab
________________________________ From: Abhijit Kumbhare <abhijitkoss@...> Sent: 15 May 2014 23:16 To: Hsin-Yi Shen Cc: openflowjava-dev; Madhu Venugopal; openflowplugin-dev@... Subject: Re: [openflowjava-dev] [openflowplugin-dev] BUG 1020 - Multiple OUPUT actions in the action list of apply-action instruction
Thanks Hsin-Yi.
On Thu, May 15, 2014 at 1:37 PM, Hsin-Yi Shen <hshen@...<mailto:hshen@...>> wrote: Hi, We work on the ovsdb project and we find in latest build multiple OUPUT actions are no longer allowed in the action list of apply-action instruction in OF 1.3. This breaks the broadcast in ovsdb. Although we are not sure the issue is in openflowplugin or openflowjava, we need this bug to be fixed. We have filed bug 1020 in bugzilla https://bugs.opendaylight.org/show_bug.cgi?id=1020 Could someone in openflowplugin or openflowjava help fix this bug? Thanks.
Hsin-Yi _______________________________________________ openflowplugin-dev mailing list
openflowplugin-dev@...<mailto:openflowplugin-dev@list s.opendaylight.org> https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev
MichalPolkoráb Software Developer
Mlynské Nivy 56 / 821 05 Bratislava / Slovakia +421 918 378 907 / michal.polkorab@... reception: +421 2 206 65 111 / www.pantheon.sk [logo] MichalPolkoráb Software Developer
Mlynské Nivy 56 / 821 05 Bratislava / Slovakia +421 918 378 907 / michal.polkorab@... reception: +421 2 206 65 111 / www.pantheon.sk [logo] _______________________________________________ openflowplugin-dev mailing list openflowplugin-dev@... https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev _______________________________________________ openflowplugin-dev mailing list openflowplugin-dev@... https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev _______________________________________________ openflowplugin-dev mailing list openflowplugin-dev@... https://lists.opendaylight.org/mailman/listinfo/openflowplugin-dev _______________________________________________ openflowjava-dev mailing list openflowjava-dev@... https://lists.opendaylight.org/mailman/listinfo/openflowjava-dev
|