Details
-
Bug
-
Status: Resolved
-
Resolution: Done
-
None
-
None
-
None
-
Operating System: Linux
Platform: PC
-
1152
Description
I run the Virtualization edition with vtn option with the new OF plugin, and I had VTN Manager install flow entries which had a "Strip VLAN header" action for OpenFlow 1.0 switches.
However, the controller didn't set "Strip VLAN header" action into a flow entry.
When I run the Virtualization edition with the old OF plugin and execute the same scenario, the controller sets "Strip VLAN header" action into a flow entry.
Therefore, there is a bug in the new OF plugin or MD-SAL compatibility bundles.
I think the new OF plugin doesn't correctly handle PopVlanActionCase class (in org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action) when creating flow entries for OpenFlow 1.0.
When VTN Manager tried to install a flow entry which had a "Strip VLAN header" action, MDFlowMapping class (in org.opendaylight.controller.sal.compatibility) converted PopVlan (of org.opendaylight.controller.sal.action.ActionType) to PopVlanActionCase class (of org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.PopVlanActionCase).
FlowProgrammerAdapter class (of org.opendaylight.controller.sal.compatibility) class passed PopVlanActionCase to the new OF plugin.
However, it seemed to me that the new OF plugin ignored PopVlanActionCase for OpenFlow 1.0, although the new OF plugin handle PopVlanActionCase as a "Strip VLAN header" action.
[What I used]
The latest version of the Virtualization Edition on 5th June.
$ pwd
/home/odp/work/integration
odc180 $ git log -3 --oneline
90e2f0c INTEGRAT-4: Remove toaster from virt edition
64e608a Adding extra TCs for RESTCONF
3516960 Uploaded working AD-SAL cluster testcases
[How to produce]
1. Start up the Virtualization edition with of13 and vtn option.
$ ./run.sh -of13 -virt vtn
2. Create a virtual bridge using REST API exposed by VTN Manager.
curl --user "admin":"admin" -H "Accept: application/json" -H \
"Content-type: application/json" -X POST \
http://192.168.60.180:8080/controller/nb/v2/vtn/default/vtns/vtn1 \
-d '
'
curl --user "admin":"admin" -H "Accept: application/json" -H \
"Content-type: application/json" -X POST \
http://192.168.60.180:8080/controller/nb/v2/vtn/default/vtns/vtn1/vbridges/vbr1 \
-d '{}'
curl --user "admin":"admin" -H "Accept: application/json" -H \
"Content-type: application/json" -X POST \
http://192.168.60.180:8080/controller/nb/v2/vtn/default/vtns/vtn1/vbridges/vbr1/interfaces/if1 \
-d '{}'
curl --user "admin":"admin" -H "Accept: application/json" -H \
"Content-type: application/json" -X POST \
http://192.168.60.180:8080/controller/nb/v2/vtn/default/vtns/vtn1/vbridges/vbr1/interfaces/if2 \
-d '{}'
curl --user "admin":"admin" -H "Accept: application/json" -H \
"Content-type: application/json" -X PUT \
http://192.168.60.180:8080/controller/nb/v2/vtn/default/vtns/vtn1/vbridges/vbr1/interfaces/if1/portmap \
-d '{"node":
, "port": {"name": "s3-eth1"}}'
curl --user "admin":"admin" -H "Accept: application/json" -H \
"Content-type: application/json" -X PUT \
http://192.168.60.180:8080/controller/nb/v2/vtn/default/vtns/vtn1/vbridges/vbr1/interfaces/if2/portmap \
-d '{"node":
, "port": {"name": "s7-eth2"}}'
3. Run Mininet and run OF1.0 switches.
sudo mn --controller=remote,192.168.60.180 --topo tree,3
4. Send ping packets from h1 to h8.
mininet> h1 ping h8
5. Check flow entires in mininet.
Check that "Strip VLAN header" is not set in flow entries, although the first entry on s3 should have a "Strip VLAN header" action.
mininet> dpctl dump-flows
(snip)
-
-
- s3 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=38.36s, table=0, n_packets=0, n_bytes=0, idle_age=38, priority=10,in_port=3,dl_vlan=0,dl_src=12:b9:e4:17:cb:ef,dl_dst=6e:59:89:b8:2a:6e actions=output:1
cookie=0x0, duration=38.317s, table=0, n_packets=0, n_bytes=0, idle_timeout=300, idle_age=38, priority=10,in_port=1,dl_vlan=0,dl_src=6e:59:89:b8:2a:6e,dl_dst=12:b9:e4:17:cb:ef actions=output:3
- s3 ------------------------------------------------------------------------
-
[The old OF plugin case]
When I run the Virtualization edition with the old OF plugin and executed the same scenario, a flow entry on Mininet was as follows.
The first entry had a "Strip VLAN header" action.
mininet> dpctl dump-flows
(snip)
-
-
- s3 ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=26.164s, table=0, n_packets=5, n_bytes=434, idle_age=21, priority=10,in_port=3,vlan_tci=0x0000,dl_src=3e:70:34:62:4c:5d,dl_dst=f6:57:ab:52:db:f2 actions=strip_vlan,output:1
cookie=0x0, duration=26.152s, table=0, n_packets=5, n_bytes=434, idle_timeout=300, idle_age=21, priority=10,in_port=1,vlan_tci=0x0000,dl_src=f6:57:ab:52:db:f2,dl_dst=3e:70:34:62:4c:5d actions=output:3
- s3 ------------------------------------------------------------------------
-