# onos-rsm The xApplication for ONOS-SDRAN (µONOS Architecture) to manage RAN slices ## Overview The `onos-rsm` is the xApplication running over ONOS SD-RAN for `RAN Slice Management (RSM)`. The RAN slice has definitions related with `Quality of Service (QoS)` for associated UEs, such as `time frame rates` and `scheduling algorithms`. In order to manage the RAN slice, this xApplication `creates`, `deletes`, and `updates` RAN slices through CLI. Also, this xApplication associates a specific UE to a RAN slice so that the UE can achieve the QoS that is defined in the associated RAN slice. The `onos-rsm` xApplication subscribes CU E2 nodes as well as DU E2 nodes. CU E2 nodes report the `EPC Mobility Management (EMM) event` to the `onos-rsm` xApp. On the other hands, DU E2 nodes receive control messages for RAN slice management and UE-slice association. The `onos-rsm` xApplication stores all RAN slice information to `onos-topo` and `onos-uenib`. ## Interaction with other ONOS SD-RAN micro-services To begin with, `onos-rsm` subscribes `CUs` and `DUs` through `onos-e2t`. Once `UE` is attached, the `CU` send the indication message to `onos-rsm` to report that the `UE` is connected. Then, `onos-rsm` stores the attached `UE` information to `onos-uenib`. When a user creates/deletes/updates a slice through `onos-cli`, `onos-rsm` sends a control message to `DU`. Likewise, the user associates `UE` with a created slice through `onos-cli`, `onos-rsm` sends a control message to `DU`. After sending the control message successfully, `onos-rsm` updates `onos-topo` and `onos-uenib`, accordingly. ## Command Line Interface Go to `onos-cli` and command below for each purpose * Create slice * DU_E2_NODE_ID: target DU's E2 Node ID (e.g., e2:4/e00/3/c8). * SCHEDULER_TYPE: scheduler type such as round robin (RR) and proportional fair (PF). * SLICE_ID: this slice's ID (e.g., 1). * WEIGHT: time frame rates (e.g., 30). It should be less than 80. * SLICE_TYPE: downlink (DL) or uplink (UL). ```bash onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm create slice --e2NodeID --scheduler --sliceID --weight --sliceType # example: onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm create slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 1 --weight 30 --sliceType DL ``` * Update slice * DU_E2_NODE_ID: target DU's E2 Node ID (e.g., e2:4/e00/3/c8). * SCHEDULER_TYPE: scheduler type such as round robin (RR) and proportional fair (PF). * SLICE_ID: this slice's ID (e.g., 1). * WEIGHT: time frame rates (e.g., 30). It should be less than 80. * SLICE_TYPE: downlink (DL) or uplink (UL). ```bash onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm update slice --e2NodeID --scheduler --sliceID --weight --sliceType # example: onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm update slice --e2NodeID e2:4/e00/3/c8 --scheduler RR --sliceID 1 --weight 50 --sliceType DL ``` * Delete slice * DU_E2_NODE_ID: target DU's E2 Node ID (e.g., e2:4/e00/3/c8). * SLICE_ID: this slice's ID (e.g., 1). * SLICE_TYPE: downlink (DL) or uplink (UL). ```bash onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm delete slice --e2NodeID --sliceID --sliceType # example: onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm delete slice --e2NodeID e2:4/e00/3/c8 --sliceID 1 --sliceType DL ``` * UE-slice association * DU_E2_NODE_ID: target DU's E2 Node ID (e.g., e2:4/e00/3/c8). * SLICE_ID: this slice's ID (e.g., 1). * DRB_ID: DRB-ID for the bearer. It should be in onos-uenib. * DU_UE_F1AP_ID: DU_UE_F1AP_ID. It should be in onos-uenib. ```bash onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm set association --dlSliceID --e2NodeID --drbID --DuUeF1apID # example: onos-cli$ kubectl exec -it deployment/onos-cli -n riab -- onos rsm set association --dlSliceID 1 --e2NodeID e2:4/e00/3/c8 --drbID 5 --DuUeF1apID 1240 ```