Cisco Service Layer API Documentation

SLRouteL2Oper

Service Description

Defines RPC calls for L2 route changes and Bridge-Domain (BD) registration.

This service declares calls for adding, deleting, updating and getting L2 routes.

RPC Calls

rpc SLL2Oper::SLL2GlobalsGet (SLL2GlobalsGetMsg) returns(SLL2GlobalsGetMsgRsp)
 Global L2 route operations. More...
 
rpc SLL2Oper::SLL2RegOp (SLL2RegMsg) returns(SLL2RegMsgRsp)
 L2 Registration Operations. More...
 
rpc SLL2Oper::SLL2BdRegOp (SLL2BdRegMsg) returns(SLL2BdRegMsgRsp)
 L2 Bridge-Domain (BD) Registration Operations. More...
 
rpc SLL2Oper::SLL2RouteOp (SLL2RouteMsg) returns(SLL2RouteMsgRsp)
 L2 Route Operations. More...
 
rpc SLL2Oper::SLL2RouteOpStream (stream SLL2RouteMsg) returns(stream SLL2RouteMsgRsp)
 L2 Stream Route Operations. More...
 
rpc SLL2Oper::SLL2GetNotifStream (stream SLL2GetNotifMsg) returns(stream SLL2Notif)
 L2 Route Redistribution Operations. More...
 

Messages

message  SLL2GlobalsGetMsg
 L2 Route Globals Get Message. More...
 
message  SLL2GlobalsGetMsgRsp
 L2 Route Globals Get Message Response. More...
 
message  SLL2RegMsg
 Global L2 Registration Message. More...
 
message  SLL2RegMsgRsp
 Global L2 Registration message Response. More...
 
message  SLL2BdRegMsg
 L2 Bridge-Domain (BD) Registration Messages. More...
 
message  SLL2BdRegRes
 BD Registration message Result. More...
 
message  SLL2BdRegMsgRsp
 BD Registration message Response. More...
 
message  SLL2RouteEsi
 Ethernet Segment Identifier (ESI) More...
 
message  SLL2RouteNh
 Nexthop info. More...
 
message  SLL2OverlayNh
 Overlay nexthop info. More...
 
message  SLL2MacRouteKey
 MAC route key. More...
 
message  SLL2MacRoute
 Type 2 EVPN MAC route. More...
 
message  SLL2ImetRouteKey
 IMET route key. More...
 
message  SLL2ImetRoute
 Type-3 EVPN IMET Route. More...
 
message  SLL2RouteKey
 L2 route key. More...
 
message  SLL2Route
 L2 route. More...
 
message  SLL2RouteMsg
 Batch of L2 Routes for bulk download. More...
 
message  SLL2RouteRes
 L2 route result, uniquely identified by BD + L2 route key. More...
 
message  SLL2RouteMsgRsp
 L2 bulk download response. More...
 
message  SLL2GetNotifMsg
 L2 Get Notifications message. More...
 
message  SLL2RouteNotif
 L2 Route notification. More...
 
message  SLL2BdStateInfo
 Bridge-Domain (BD) state info. More...
 
message  SLL2NotifStatusMsg
 L2 Notification Status message. More...
 
message  SLL2Notif
 L2 Notification. More...
 

Enumerations

enum  SLL2RouteType { SL_L2_ROUTE_RESERVED = 0x0, SL_L2_ROUTE_MAC = 0x1, SL_L2_ROUTE_IMET = 0x2 }
 L2 Route Types that can be programmed by client. More...
 
enum  SLL2NotifType {
  SL_L2_EVENT_TYPE_RESERVED = 0x0, SL_L2_EVENT_TYPE_ERROR = 0x1, SL_L2_EVENT_TYPE_STATUS = 0x2, SL_L2_EVENT_TYPE_START_MARKER = 0x3,
  SL_L2_EVENT_TYPE_BD_STATE = 0x4, SL_L2_EVENT_TYPE_BD_STATE_END_MARKER = 0x5, SL_L2_EVENT_TYPE_ROUTE = 0x6, SL_L2_EVENT_TYPE_ROUTE_END_MARKER = 0x7
}
 L2 Notification types. More...
 

RPC Documentation

rpc SLL2Oper::SLL2BdRegOp ( SLL2BdRegMsg  )

L2 Bridge-Domain (BD) Registration Operations.

SLL2BdRegMsg.Oper = SL_REGOP_REGISTER: BD registration: Sends a list of BD registration messages and expects a list of registration responses. A client Must Register a BD BEFORE L2 Routes can be added/modified in that BD.

SLL2BdRegMsg.Oper = SL_REGOP_UNREGISTER: BD un-registration: Sends a list of BD un-registration messages and expects a list of un-registration responses. This can be used to convey that the client is no longer interested in programming routes in this BD. All installed L2 routes will be removed.

SLL2BdRegMsg.Oper = SL_REGOP_EOF: BD End Of File message. After Registration, the client is expected to send an EOF message to convey the end of replay of the client's known objects in that BD. This is especially useful under certain restart scenarios when the client and the server are trying to synchronize their routes.

rpc SLL2Oper::SLL2GetNotifStream ( stream  SLL2GetNotifMsg)

L2 Route Redistribution Operations.

This call is used to get a stream of BD state and route notifications. It can be used to get "push" notifications for route adds/updates/deletes. The caller must maintain the GRPC channel as long as there is interest in route notifications.

The call takes 3 types of notification requests:

  1. Request for BD state notifications only (pass only Oper and Correlator).
  2. Request for BD state and Route notifications in all BDs.
  3. Request for Route notifications per-BD. This should be sent after requesting for BD state notifications and after receiving BD-ready notification.

The success/failure of the notification request is relayed in the SLL2NotifStatusMsg followed by a Start marker, any routes if present, and an End Marker.

After all requests are sent, client should send GetNotifEof = TRUE.

rpc SLL2Oper::SLL2GlobalsGet ( SLL2GlobalsGetMsg  )

Global L2 route operations.

Used to retrieve global L2 info from the server.

rpc SLL2Oper::SLL2RegOp ( SLL2RegMsg  )

L2 Registration Operations.

SLL2RegMsg.Oper = SL_REGOP_REGISTER: Global L2 registration. A client Must Register BEFORE sending BD registration messages (to add/update/delete routes) or BEFORE requesting for L2 route notifications.

SLL2RegMsg.Oper = SL_REGOP_UNREGISTER: Global L2 un-registration. This call is used to convey that the client is no longer interested in programming L2 routes and in receiving L2 route notifications. All programmed L2 routes will be deleted on the server and the server will stop sending L2 route notifications.

SLL2RegMsg.Oper = SL_REGOP_EOF: Global L2 End Of File message. After Registration, the client is expected to send an EOF message to convey the end of replay of the client's known objects and to convey the end of requests for L2 route notifications. This is especially useful under certain restart scenarios when the client and the server are trying to synchronize their routes.

rpc SLL2Oper::SLL2RouteOp ( SLL2RouteMsg  )

L2 Route Operations.

SLL2RouteMsg.Oper = SL_OBJOP_ADD: Route add. Fails if the route already exists.

SLL2RouteMsg.Oper = SL_OBJOP_UPDATE: Route update. Creates or updates the route.

SLL2RouteMsg.Oper = SL_OBJOP_DELETE: Route delete. The route path is not necessary to delete the route.

rpc SLL2Oper::SLL2RouteOpStream ( stream  SLL2RouteMsg)

L2 Stream Route Operations.

Stream adds/updates/deletes of L2 Routes.


Message Documentation

message SLL2GlobalsGetMsg

L2 Route Globals Get Message.

message SLL2GlobalsGetMsgRsp

L2 Route Globals Get Message Response.

Attributes

SLErrorStatus ErrStatus = 1
 Corresponding error code.
 
uint32 MaxBdRegPerBdRegmsg = 2
 Max BD registration objects within a single BdRegMsg.
 
uint32 MaxRoutePerRoutemsg = 3
 Max Route objects within a single RouteMsg.
 
message SLL2RegMsg

Global L2 Registration Message.

Attributes

SLRegOp Oper = 1
 Registration Operation.
 
uint32 AdminDistance = 2
 Default Admin distance for routes programmed by this application. More...
 
uint32 PurgeIntervalSeconds = 3
 In case Service Layer -> L2RIB connection is lost, this specifies the timeout period after which L2RIB will automatically purge the installed routes, unless the service layer: More...
 

Member Data Documentation

uint32 SLL2RegMsg::AdminDistance = 2

Default Admin distance for routes programmed by this application.

Range [0-255]. If the client does not need to program routes, set this value to 0.

uint32 SLL2RegMsg::PurgeIntervalSeconds = 3

In case Service Layer -> L2RIB connection is lost, this specifies the timeout period after which L2RIB will automatically purge the installed routes, unless the service layer:

  1. Re-registers.
  2. Replay all routes.
  3. And send EOF, before the purge timeout. If the client does not need to program routes, set this value to 0.
message SLL2RegMsgRsp

Global L2 Registration message Response.

Attributes

SLErrorStatus RegStatus = 1
 Error code.
 
message SLL2BdRegMsg

L2 Bridge-Domain (BD) Registration Messages.

Attributes

SLRegOp Oper = 1
 Registration Operation.
 
repeated string BdRegName = 2
 List of BD names that client wants to register for.
 
message SLL2BdRegRes

BD Registration message Result.

Attributes

SLErrorStatus ErrStatus = 1
 Corresponding error code.
 
string BdName = 2
 BD Name.
 
message SLL2BdRegMsgRsp

BD Registration message Response.

Attributes

SLErrorStatus StatusSummary = 1
 Summary result of the bulk operation (refer to enum SLErrorStatus) In general, the StatusSummary implies one of 3 things: More...
 
repeated SLL2BdRegRes Results = 2
 In case of errors, this field indicates which entry in the bulk was erroneous. More...
 

Member Data Documentation

repeated SLL2BdRegRes SLL2BdRegMsgRsp::Results = 2

In case of errors, this field indicates which entry in the bulk was erroneous.

SLErrorStatus SLL2BdRegMsgRsp::StatusSummary = 1

Summary result of the bulk operation (refer to enum SLErrorStatus) In general, the StatusSummary implies one of 3 things:

  1. SL_SUCCESS: signifies that the entire bulk operation was successful. In this case, the Results list is empty.
  2. SL_SOME_ERR: signifies that the operation failed for one or more entries. In this case, Results holds the result for each individual entry in the bulk.
  3. SL_RPC_XXX: signifies that the entire bulk operation failed. In this case, the Results list is empty.
message SLL2RouteEsi

Ethernet Segment Identifier (ESI)

Attributes

bytes Esi = 1
 10-bytes long ESI value
 
message SLL2RouteNh

Nexthop info.

Public Types

enum  SLL2RouteNhType { SL_L2_NH_RESERVED = 0x0, SL_L2_NH_INTERFACE = 0x1, SL_L2_NH_OVERLAY = 0x2 }
 Next Hop types. More...
 

Attributes

SLL2RouteNhType NhType = 1
 
oneof {
   SLInterface   NhInterface = 2
 case NhType == SL_L2_NH_INTERFACE => This field carries the interface nexthop. More...
 
   SLL2OverlayNh   NhOverlay = 3
 case NhType == SL_L2_NH_OVERLAY => This field carries the overlay nexthop. More...
 
}; 
 Next Hop data based on type.
 

Member Enumeration Documentation

Next Hop types.

Enumerator
SL_L2_NH_RESERVED 

Reserved. 0x0.

SL_L2_NH_INTERFACE 

Interface nexthop. 0x1.

SL_L2_NH_OVERLAY 

Overlay nexthop. 0x2.

Member Data Documentation

SLInterface SLL2RouteNh::NhInterface = 2

case NhType == SL_L2_NH_INTERFACE => This field carries the interface nexthop.

SLL2OverlayNh SLL2RouteNh::NhOverlay = 3

case NhType == SL_L2_NH_OVERLAY => This field carries the overlay nexthop.

message SLL2OverlayNh

Overlay nexthop info.

Attributes

SLIpAddress OverlayNhIp = 1
 IPv4 or IPv6 address.
 
SLEncapType OverlayNhEncap = 2
 Encap type.
 
uint32 OverlayNhLabel = 3
 L2 label for encap type MPLS, this will be remote MPLS label for encap type VXLAN, this will be L2 VNI. More...
 
repeated uint32 OverlayNhL3Label = 4
 L3 label for encap type MPLS, this will be a stack of MPLS labels. More...
 
bytes OverlayNhRouterMac = 5
 Router MAC.
 

Member Data Documentation

repeated uint32 SLL2OverlayNh::OverlayNhL3Label = 4

L3 label for encap type MPLS, this will be a stack of MPLS labels.

for encap type VXLAN, this will be L3 VNI.

uint32 SLL2OverlayNh::OverlayNhLabel = 3

L2 label for encap type MPLS, this will be remote MPLS label for encap type VXLAN, this will be L2 VNI.

message SLL2MacRouteKey

MAC route key.

Attributes

bytes MacAddress = 1
 Mac address.
 
SLIpAddress IpAddress = 2
 IP address.
 
message SLL2MacRoute

Type 2 EVPN MAC route.

Attributes

SLL2MacRouteKey RouteKey = 1
 Mac route key.
 
uint32 SequenceNum = 2
 Sequence number.
 
SLL2RouteEsi MacEsi = 3
 ESI.
 
repeated SLL2RouteNh NextHopList = 4
 List of NHs for this host.
 
message SLL2ImetRouteKey

IMET route key.

Attributes

uint32 EthTagId = 1
 Ethernet Tag ID.
 
SLIpAddress IpAddress = 2
 Ipv4 or Ipv6 address.
 
message SLL2ImetRoute

Type-3 EVPN IMET Route.

Public Types

enum  PMSITunnelType {
  PMSI_NO_TUNNEL = 0, PMSI_RSVPP2MP_TUNNEL = 1, PMSI_MLDPP2MP_TUNNEL = 2, PMSI_PIMSSM_TUNNEL = 3,
  PMSI_PIMSM_TUNNEL = 4, PMSI_PIMBIDIR_TUNNEL = 5, PMSI_INGREP_TUNNEL = 6, PMSI_MLDPMP2MP_TUNNEL = 7
}
 Provider Multicast Service Interface (PMSI) tunnel type. More...
 

Attributes

SLL2ImetRouteKey RouteKey = 1
 IMET Route Key.
 
SLEncapType EncapType = 2
 Encapsulation type (VXLAN or MPLS)
 
uint32 Label = 3
 For ENCAP_VXLAN, this field will specify the L2 Virtual Network Identifier (VNI)
 
PMSITunnelType TunnelType = 4
 
uint32 TunnelIdLength = 5
 
bytes TunnelIdValue = 6
 When the type is set to Ingress Replication the Tunnel Identifier carries the unicast tunnel endpoint IP address of the local PE that is to be this PE's receiving endpoint address for the tunnel. More...
 

Member Enumeration Documentation

Provider Multicast Service Interface (PMSI) tunnel type.

Enumerator
PMSI_NO_TUNNEL 

No tunnel information present. 0x0.

PMSI_RSVPP2MP_TUNNEL 

RSVP-TE P2MP LSP. 0x1.

PMSI_MLDPP2MP_TUNNEL 

mLDP P2MP LSP. 0x2

PMSI_PIMSSM_TUNNEL 

PIM-SSM Tree. 0x3.

PMSI_PIMSM_TUNNEL 

PIM-SM Tree. 0x4.

PMSI_PIMBIDIR_TUNNEL 

BIDIR-PIM Tree. 0x5.

PMSI_INGREP_TUNNEL 

Ingress Replication. 0x6.

PMSI_MLDPMP2MP_TUNNEL 

mLDP MP2MP LSP. 0x7

Member Data Documentation

bytes SLL2ImetRoute::TunnelIdValue = 6

When the type is set to Ingress Replication the Tunnel Identifier carries the unicast tunnel endpoint IP address of the local PE that is to be this PE's receiving endpoint address for the tunnel.

message SLL2RouteKey

L2 route key.

Attributes

string BdName = 1
 BD name.
 
SLL2RouteType Type = 2
 L2 Route Type.
 
oneof {
   SLL2MacRouteKey   MacKey = 3
 case Type == SL_L2_ROUTE_MAC: => Carries the Mac Route Key
 
   SLL2ImetRouteKey   ImetKey = 4
 case Type == SL_L2_ROUTE_IMET: => Carries the IMET Route Key
 
}; 
 Further info based on Route Type.
 
message SLL2Route

L2 route.

Attributes

string BdName = 1
 BD name.
 
SLL2RouteType Type = 2
 L2 Route Type to be programmed.
 
oneof {
   SLL2MacRoute   MacRoute = 3
 case Type == SL_L2_ROUTE_MAC: => Carries the Mac Route details
 
   SLL2ImetRoute   ImetRoute = 4
 case Type == SL_L2_ROUTE_IMET: => Carries the IMET route details
 
}; 
 Further info based on Route Type.
 
message SLL2RouteMsg

Batch of L2 Routes for bulk download.

Attributes

uint64 Correlator = 1
 Correlator. More...
 
SLObjectOp Oper = 2
 Route Object Operations.
 
repeated SLL2Route Routes = 3
 List of L2 Routes The list may contain routes from different BDs. More...
 

Member Data Documentation

uint64 SLL2RouteMsg::Correlator = 1

Correlator.

This can be used to correlate replies with requests. The Server simply reflects this field back in the reply.

repeated SLL2Route SLL2RouteMsg::Routes = 3

List of L2 Routes The list may contain routes from different BDs.

message SLL2RouteRes

L2 route result, uniquely identified by BD + L2 route key.

Attributes

SLErrorStatus ErrStatus = 1
 Corresponding error code.
 
SLL2RouteKey RouteKey = 2
 L2 Route Key.
 
message SLL2RouteMsgRsp

L2 bulk download response.

Attributes

uint64 Correlator = 1
 Correlator. More...
 
SLErrorStatus StatusSummary = 2
 Summary result of the bulk operation (refer to enum SLErrorStatus) In general, the StatusSummary implies one of 3 things: More...
 
repeated SLL2RouteRes Results = 3
 In case of errors, this field indicates which entry in the bulk was erroneous. More...
 

Member Data Documentation

uint64 SLL2RouteMsgRsp::Correlator = 1

Correlator.

This can be used to correlate replies with requests. The Server simply reflects this field back in the reply.

repeated SLL2RouteRes SLL2RouteMsgRsp::Results = 3

In case of errors, this field indicates which entry in the bulk was erroneous.

SLErrorStatus SLL2RouteMsgRsp::StatusSummary = 2

Summary result of the bulk operation (refer to enum SLErrorStatus) In general, the StatusSummary implies one of 3 things:

  1. SL_SUCCESS: signifies that the entire bulk operation was successful. In this case, the Results list is empty.
  2. SL_SOME_ERR: signifies that the operation failed for one or more entries. In this case, Results holds the result for each individual entry in the bulk.
  3. SL_RPC_XXX: signifies that the entire bulk operation failed. In this case, the Results list is empty.
message SLL2GetNotifMsg

L2 Get Notifications message.

Attributes

SLNotifOp Oper = 1
 Oper = SL_NOTIFOP_ENABLE This is to enable route notifications Oper = SL_NOTIFOP_DISABLE This is to disable route notifications.
 
uint64 Correlator = 2
 Correlator. More...
 
bool GetNotifEof = 3
 End of file. More...
 
oneof {
   bool   BdAll = 4
 If the notification request is for routes in all BDs - set to TRUE.
 
   string   BdName = 5
 If the notification request is for routes in a specific BD, pass the name. More...
 
}; 
 

Member Data Documentation

string SLL2GetNotifMsg::BdName = 5

If the notification request is for routes in a specific BD, pass the name.

uint64 SLL2GetNotifMsg::Correlator = 2

Correlator.

This is used to correlate GetNotifMsg with NotifMsgStatus. The server reflects this field in the reply.

bool SLL2GetNotifMsg::GetNotifEof = 3

End of file.

When set to True, it indicates that the client is done with sending requests for notifications.

It is useful when client is sending per-BD notification requests. The client can send this after receiving SL_L2_EVENT_TYPE_BD_STATE_END_MARKER.

message SLL2RouteNotif

L2 Route notification.

Attributes

SLObjectOp Oper = 1
 Route Object Operations.
 
SLL2Route Routes = 2
 L2 route.
 
message SLL2BdStateInfo

Bridge-Domain (BD) state info.

Public Types

enum  SLL2BdState { SL_L2_BD_STATE_RESERVED = 0x0, SL_L2_BD_STATE_ADDED = 0x1, SL_L2_BD_STATE_DELETED = 0x2, SL_L2_BD_STATE_REPLAY_NEEDED = 0x3 }
 BD states. More...
 

Attributes

string BdName = 1
 BD name.
 
SLL2BdState BdState = 2
 

Member Enumeration Documentation

BD states.

Enumerator
SL_L2_BD_STATE_RESERVED 

Reserved. 0x0.

SL_L2_BD_STATE_ADDED 

BD Added State.

Implies BD is ready for programming and notification request. 0x1

SL_L2_BD_STATE_DELETED 

BD Deleted State.

Implies BD has been deleted, all installed routes will be deleted and no further notifications will be sent. 0x2

SL_L2_BD_STATE_REPLAY_NEEDED 

BD Replay Needed.

Implies the routes in this BD could not be recovered and the client has to replay the routes. 0x3

message SLL2NotifStatusMsg

L2 Notification Status message.

Attributes

SLNotifOp Oper = 1
 Notification Operation in the request.
 
uint64 Correlator = 2
 Correlator in the request.
 
string BdName = 3
 BD in the request. More...
 
SLErrorStatus NotifStatus = 4
 The NotifStatus implies one of 2 things: SL_SUCCESS: signifies that the notification request was successful SL_XXX: signifies an error in setting up a notification. More...
 

Member Data Documentation

string SLL2NotifStatusMsg::BdName = 3

BD in the request.

This is not set if the request was for all BDs

SLErrorStatus SLL2NotifStatusMsg::NotifStatus = 4

The NotifStatus implies one of 2 things: SL_SUCCESS: signifies that the notification request was successful SL_XXX: signifies an error in setting up a notification.

If BdName is passed, it implies that notifications for the BD will not be sent.

message SLL2Notif

L2 Notification.

Attributes

SLL2NotifType EventType = 1
 L2 Notification type.
 
oneof {
   SLErrorStatus   ErrStatus = 2
 case EventType == SL_L2_EVENT_TYPE_ERROR: => This field carries error info, if any error occurs during notification subscription. More...
 
   SLL2NotifStatusMsg   NotifStatus = 3
 case EventType == SL_L2_EVENT_TYPE_STATUS: => This field carries the status of the GetNotifMsg request. More...
 
   SLL2BdStateInfo   BdStateInfo = 4
 case EventType == SL_L2_EVENT_TYPE_BD_STATE: => This field carries the BD state notification
 
   SLL2RouteNotif   Route = 5
 case EventType == SL_L2_EVENT_TYPE_ROUTE: => This field carries the L2 route
 
}; 
 Further info based on EventType.
 

Member Data Documentation

SLErrorStatus SLL2Notif::ErrStatus = 2

case EventType == SL_L2_EVENT_TYPE_ERROR: => This field carries error info, if any error occurs during notification subscription.

SLL2NotifStatusMsg SLL2Notif::NotifStatus = 3

case EventType == SL_L2_EVENT_TYPE_STATUS: => This field carries the status of the GetNotifMsg request.

Enumeration Type Documentation

L2 Notification types.

Enumerator
SL_L2_EVENT_TYPE_RESERVED 

Reserved.

SL_L2_EVENT_TYPE_ERROR 

Error - ErrStatus field elaborates on the error.

The client can decide to close the stream based on the error.

SL_L2_EVENT_TYPE_STATUS 

Status of GetNotifMsg.

NotifStatus field elaborates on the result If the GetNotifMsg is per-BD and there was an error, only the notification for the BD in the status message is not setup.

SL_L2_EVENT_TYPE_START_MARKER 

Start marker - sent before any notification is sent.

This is an indication to stale any objects received until now.

SL_L2_EVENT_TYPE_BD_STATE 

BD configuration notification.

SL_L2_EVENT_TYPE_BD_STATE_END_MARKER 

End marker for BD configuration notifications.

This is an indication to sweep any staled BD states if present.

SL_L2_EVENT_TYPE_ROUTE 

L2 route.

SL_L2_EVENT_TYPE_ROUTE_END_MARKER 

End marker for Route notifications.

This is an indication to sweep any staled routes if present.

L2 Route Types that can be programmed by client.

Enumerator
SL_L2_ROUTE_RESERVED 

Reserved. 0x0.

SL_L2_ROUTE_MAC 

Mac-IP route. 0x1.

SL_L2_ROUTE_IMET 

Inclusive Multicast Ethernet Tag (IMET) route. 0x2.