Versions Compared

Key

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

...

  • Provides the following API to applications

    • Future<Group> void CreateGroup(Device, GroupType, Collection<GroupBuckets>, GroupKey, appid)

    • Group GetGroup(Device, GroupKey)

    • void AddBucketsToGroup(Device, OldGroupKey, Collection<GroupBuckets>, NewGroupKey, appid)

    • void RemoveBucketsFromGroup(Device, OldGroupKey, Collection<GroupBuckets>, NewGroupKey, appid)

    • void RemoveGroup(Device, GroupKey, appid)
    • GetAllGroups(Device, appid)
    • GetAllGroupStatistics(Device, appid) 

  • DataModel

    Image RemovedImage Added

    • Group Types to be supported

      • Select

      • Indirect

      • All

      • Failover

    • Key

      • An application specific cookie that supports Hash and Equals method

    • Id

      • The GroupId derived from PortNumber constructInteger

    • Bucket

      • One or more collection of Traffic TreatmentsInstructions

 

Group Manager

...

  • Implements the Group Service

  • Handles the Group create/modify/remove operations for any devices. If the device is not under the current controller instance, Group manager uses the distributed Group store to send GROUP_ADD_REQUEST to the master controller instance of that device.

  • GroupId generation

    • Group ID space is per device. 

    • A monotonically increasing Group ID is maintained per device that will be incremented every time a new group is created.

    • Group Store replicates any changes to per device Group ID to all instances in the cluster, so that any instance in the cluster can generate a Group ID for a device even if it is not master.

  • Creates the groups only if the device doesn’t have those groups populated. If group already exists, the APIs return with the existing group object.

  • Maintains monotonically increasing Group ID number space for each device

  • ONOS Group construct/object:

...