Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • Issues of curent FlowRuleService

    • FlowRuleProvider does not know in which table it needs to put rules.

      • For example, Acl rules need to be put in ACL table and IP rules need to be put in the IP table, but Selector does not have have such information.

    • FlowRuleProvider creates the OF message using FlowModBuilder, but it is not aware of pipeline system of the corresponding switches.

      • It cannot specify the correct table Id or GoToTable instruction.

Image RemovedImage Added

                             [ Modified architecture ]

  • FlowRuleService subsystem 

    • A new type field (DEFAULT, IP, MPLS, ACL) is introduced in FlowRule interface and used to determine in which table the flow rule needs to be set

    • FlowRuleProvider just bypasses the FlowRule to OpenFlowSwitch

    • OFSwitchImplSpringOpenTTP class which extends AbstractOpenFlowSwitch converts the FlowRuleEntry to OFMessage using TTPFlowModBuilder

    • The flow rule type filed is converted to TableType (NONE, IP, MPLS, ACL) of OpenFlowSwitch in the FlowRuleProvider. NONE corresponds to DEFAULT flow rule type and is used for single table switch.

    • sendMsg(OFMsg, TableType) function is newly introduced for multi-table aware switch and needs to be override by the switch driver if multi-table feature needs to be supported.
    • The TableType is converted to the switch vendor specific TableId and set it to the OFMsg in the switch driver.In the same way, FlowModBuilder is moved to the driver level (protocol provider), and each driver creates OF messages using each corresponding FlowModBuilder

    • The figure in below is the more detailed version of the OpenFlowSwitch subsystem

...

                       [ Class Hierarchy of OpenFlowSwitch  and FlowModBuilder classes]

  • Interfaces

    • new classes

    • TTPFlowModBuilder extends FlowModBuilderVer13
      • OFSwitchImplSpringOpenTTP extends AbstractOpenFlowSwitch
    • new methods

      • FlowRuleType type() in FlowRule interface
      • void sendFlowRulesendMsg(OFMessage, TableType) in interface OpenFlowSwitch 
    •  

...