Due to a ransomware attack, the wiki was reverted to a July 2022 version. . We apologize for the lack of a more recent valid backup.
...
Code Block | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||
{ 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 language java title Group 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 language java title Group 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); }
...