[OPNFLWPLUG-896] Flows are not updated when Remote CIDR rules are applied to the VM(openstack version:ocata) Created: 29/May/17 Updated: 27/Sep/21 Resolved: 04/Jul/17 |
|
| Status: | Resolved |
| Project: | OpenFlowPlugin |
| Component/s: | General |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Bug | ||
| Reporter: | Arthi Bhattacharjee | Assignee: | Arthi Bhattacharjee |
| Resolution: | Done | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Environment: |
Operating System: All |
||
| Attachments: |
|
| External issue ID: | 8561 |
| Description |
|
Steps: 1. Create 2 Security Groups( sg1 and sg2) and apply Remote CIDR rule to the groups. openstack security group rule create --ingress --protocol 1 --dst-port 1:65535 --remote-ip 30.0.0.4/24 sg1 openstack security group rule create --ingress --protocol 1 --dst-port 1:65535 --remote-ip 30.0.0.3/24 sg2 2. Create 2 VMs. Expected: Observed: |
| Comments |
| Comment by Arthi Bhattacharjee [ 29/May/17 ] |
|
Attachment remote-cidr.txt has been added with description: Dump-flows |
| Comment by Arthi Bhattacharjee [ 02/Jun/17 ] |
|
Attachment log.zip has been added with description: Karaf logs |
| Comment by balakrishnan k [ 07/Jun/17 ] |
|
Remote CIDR rule are properly created when we mention the IP prefix as "/32" sample: flows updated in ingress/egress tables in pipeline. cookie=0x6900000, duration=1.825s, table=213, n_packets=0, n_bytes=0, priority=1002,ct_state=+new+trk,icmp,metadata=0x20000000000/0xfffff0000000000,nw_dst=30.0.0.10 actions=ct(commit,zone=5002),resubmit(,17) if we create CIDR with IP prefix "/24" there is no flows updated in ingress/egress tables. compared the same behavior in pure openstack. |
| Comment by balakrishnan k [ 14/Jun/17 ] |
|
Attachment OFplugin_karaf.log has been added with description: OF_plugin logs |
| Comment by balakrishnan k [ 14/Jun/17 ] |
|
Analysed the Bug when we create a rule with "30.0.0.4/24" netvirt added the flow to config datastore the same is not reflected in OVS. To confirm the behavior used openflowplugin alone to reproduce the Bug. if we add the flow with prefix "30.0.0.4/24" flow was added to config data store and the same was not reflected in OVS. steps to reproduce the Bug: 1.start ODL and install features "feature:install odl-openflowplugin-flow-services-rest, odl-restconf,odl-mdsal-apidocs" request body: flow:1_2 (IP prefix "10.0.10.2/32" request body: Note: the sample taken from openflowplugin user guide. config data store: { }, }, ] [root@nic-centos ~]# sudo ovs-ofctl dump-flows br-int Two flows added in config data store only one flow is refelcted. |
| Comment by Tomas Slusny [ 22/Jun/17 ] |
|
Problem is that on newer OVS you need to normalize IP adress based on mask, so OVS will reject 10.0.10.2/24, but will accept 10.0.10.0/24. So I think that OpenFlowPlugin behaves correctly in this case. |
| Comment by balakrishnan k [ 22/Jun/17 ] |
|
(In reply to Tomas Slusny from comment #5) Hi Tomas, added flows manually using below commands flow was created. Flows created in OVS: sudo ovs-ofctl add-flow -O OpenFlow13 br-int "cookie=0x6900000, table=243, n_packets=0, n_bytes=0, flow create in OVS: |
| Comment by Tomas Slusny [ 22/Jun/17 ] |
|
Maybe it works only from CLI, because I am sure we was experiencing very similar issues like this when we tested plugin with newer OVS, and OVS returned error BADMATCH and BADMASK or something like that. Can you test the flow with that wrong IP address and mask again from OpenFlowPlugin and enable DEBUG logs on org.opendaylight.openflowplugin.impl? There should be message 'Flow add failed for flow=' with error why it happened. |
| Comment by balakrishnan k [ 29/Jun/17 ] |
|
(In reply to Tomas Slusny from comment #7) Tomas, 2017-06-23 15:53:57,431 | WARN | ssionScavenger-3 | teInvalidatingHashSessionManager | 247 - org.ops4j.pax.web.pax-web-jetty - 3.2.9 | Timing out for 1 session(s) with id dehtngq76x2c5ct8yted9tw2 ], _flowTable=FlowTableRef [_value=KeyedInstanceIdentifier {targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri [_value=openflow:69225723496521]]], org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode, org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.tables.Table[key=TableKey [_id=0]]]}], _instructions=Instructions{getInstruction=[Instruction{getInstruction=ApplyActionsCase{getApplyActions=ApplyActions{getAction=[Action{getAction=DecNwTtlCase{getDecNwTtl=DecNwTtl{augmentations={}}, augmentations={}}, getOrder=0, augmentations={}}], augmentations={}}, augmentations={}}, getOrder=0, augmentations={}}], augmentations={}}, _match=Match{getEthernetMatch=EthernetMatch{getEthernetType=EthernetType{getType=EtherType [_value=2048], augmentations={}}, augmentations={}}, getLayer3Match=Ipv4Match{getIpv4Destination=Ipv4Prefix [_value=10.0.10.2/24], augmentations={}}, augmentations={}}, _node=NodeRef [_value=KeyedInstanceIdentifier {targetType=interface org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node, path=[org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes, org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node[key=NodeKey [_id=Uri [_value=openflow:69225723496521]]]]}], _priority=2, _tableId=0, _transactionUri=Uri [_value=DOM-1], _strict=false, augmentation=[]], errors=Device reported error type BADMATCH code BADWILDCARDS |
| Comment by Tomas Slusny [ 04/Jul/17 ] |
|
So this then looks like it is working as intended, closing. |