Uploaded image for project: 'OpenFlowPlugin'
  1. OpenFlowPlugin
  2. OPNFLWPLUG-183

The new OF plugin doesn't set "Strip VLAN header" action into OF 1.0 switches

    XMLWordPrintable

Details

    • Bug
    • Status: Resolved
    • Resolution: Done
    • None
    • None
    • General
    • 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 '

      {"description": "Virtual Tenat 1"}

      '

      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":

      {"type":"MD_SAL","id":"openflow:3"}

      , "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":

      {"type":"MD_SAL","id":"openflow:7"}

      , "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

      [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

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            Hideyuki1985 Hideyuki Tai
            Hideyuki1985 Hideyuki Tai
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: