Versions Compared

Key

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

...

Code Block
languagejava
titleHow to create and use Group
firstline1
linenumberstrue
collapsetrue
{
    Collection<TrafficTreatment>List<GroupBucket> groupBucketsbuckets = new ArrayList<TrafficTreatment>ArrayList<GroupBucket>();
	List<PortNumber> outPorts = getPortsToDevice(srcDevice, neighborDevice);

    for (PortNumber portNumber: outPorts) {
        TrafficTreatment.Builder tBuilder = DefaultTrafficTreatment.builder();
        tBuilder.setOutput(portNumber)
                .setEthDst(getRouterMacAddress(neighborDevice))
                .setEthSrc(getRouterMacAddress(srcDevice))
                .pushMpls()
                .setMpls(getMplsId(finalDstDevice));
        groupBucketsbuckets.add(GroupBucket.createSelectGroupBucket(tBuilder.build()));
    }
    GroupBuckets groupBuckets = new GroupBuckets(buckets);
	GroupKey gorupKeygroupKey = SegmentRoutingGroupKey.build(srcDevice, Collection<NeighborDevice>, dstDevice);
 
	GroupDescription groupDesc =  Future<Group> future = groupService.createGroupnew DefaultGroupDescription(srcDevice, Group.Type.SELECT,
            groupBuckets, groupKey, getAppId());
    Group group = future.get(groupService.addGroup(groupDesc);
}
 
public void SetIpRule() {
....
	GroupKey gorupKey = SegmentRoutingGroupKey.build(srcDevice, Collection<NeighborDevice>, dstDevice);
	Group group = groupService.getGroup(srcDevice, groupKey);
	tbuilder.setGroup(group.id().id());
....
 
}

Group Manager

...

High level flow of events in the Group subsystem is depicted below when an operation like CreateGroup is submitted by the application to non-Master controller instance in a multi-instance environment.

Multi-instance Support

...

Group Provider

  • Provides SB APIs towards core

    • Code Block
      languagejava
      titleGroup Provider SB API
      /**
       * Abstraction of group provider.
       */
      public interface GroupProvider extends Provider {
          /**
           * Perform a group operation in the specified device with the
           * specified parameters.
           *
           * @param deviceId device identifier on which the batch of group
           * operations to be executed
           * @param groupOps immutable list of group operation
           */
          void performGroupOperation(DeviceId deviceId,
                                     GroupOperations groupOps);
      }
      
      
    • Code Block
      languagejava
      titleGroup Provider Notifications to Northbound
      /**
       * Service through which Group providers can inject information into
       * the core.
       */
      public interface GroupProviderService extends ProviderService<GroupProvider> {
          /**
           * Notifies core if any failure from data plane during group operations.
           *
           * @param operation offended group operation
           */
          void groupOperationFailed(GroupOperation operation);
      
      
          /**
           * Pushes the collection of group detected in the data plane along
           * with statistics.
           *
           * @param deviceId device identifier
           * @param groupEntries collection of group entries as seen in data plane
           */
          void pushGroupMetrics(DeviceId deviceId,
                             Collection<Group> groupEntries);
      }
      
      

...