blob: c84cd770a76b689717418d6e22b713b8c213e0ab [file] [log] [blame]
// Copyright (c) 2018 Open Networking Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at:
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
syntax = "proto3";
option go_package = "github.com/opencord/bbsim/api/bbsim";
package bbsim;
import "voltha_protos/openolt.proto";
import "voltha_protos/tech_profile.proto";
// Models
message PONPort {
int32 ID = 1;
string OperState = 2;
string InternalState = 3;
uint64 PacketCount = 4;
// ONU ID are reported by VOLTHA in the ActivateOnu call
repeated PonAllocatedResources AllocatedOnuIds = 5;
// these are the stored resource IDs as reported via OMCI
repeated PonAllocatedResources AllocatedGemPorts = 6;
repeated PonAllocatedResources AllocatedAllocIds = 7;
}
message PonAllocatedResources {
string SerialNumber = 1;
int32 Id = 2;
}
message NNIPort {
int32 ID = 1;
string OperState = 2;
}
message Olt {
int32 ID = 1;
string SerialNumber = 2;
string OperState = 3;
string InternalState = 4;
string IP = 7;
repeated NNIPort NNIPorts = 5;
repeated PONPort PONPorts = 6;
}
message OltAllocatedResourceType {
enum Type {
UNKNOWN = 0;
ALLOC_ID = 1;
GEM_PORT = 2;
}
Type type = 1;
}
message OltAllocatedResource {
string Type = 1;
uint32 PonPortId = 2;
uint32 OnuId = 3;
uint32 PortNo = 4;
int32 ResourceId = 5;
uint64 FlowId = 6;
}
message OltAllocatedResources {
repeated OltAllocatedResource resources = 1;
}
message ONU {
int32 ID = 1;
string SerialNumber = 2;
string OperState = 3;
string InternalState = 4;
int32 PonPortID = 5;
string HwAddress = 8 [deprecated = true];
int32 PortNo = 9 [deprecated = true];
repeated Service services = 10 [deprecated = true];
int32 ImageSoftwareExpectedSections = 11;
int32 ImageSoftwareReceivedSections = 12;
int32 ActiveImageEntityId = 13;
int32 CommittedImageEntityId = 14;
repeated UNI unis = 15;
}
message UNI {
int32 ID = 1;
int32 OnuID = 2;
string OnuSn = 3;
uint32 MeID = 4;
string OperState = 5;
int32 PortNo = 6;
repeated Service services = 7;
}
message Service {
string Name = 1;
string HwAddress = 2;
string OnuSn = 3;
int32 STag = 4;
int32 CTag = 5;
bool NeedsEapol = 6;
bool NeedsDhcp = 7;
bool NeedsIgmp = 8;
int32 GemPort = 9;
string EapolState = 10;
string DhcpState = 11;
string InternalState = 12;
string IGMPState = 13;
uint32 UniId = 14;
}
message ONUTrafficSchedulers {
tech_profile.TrafficSchedulers traffSchedulers = 1;
}
message ONUs {
repeated ONU items = 1;
}
message Services {
repeated Service items = 1;
}
message UNIs {
repeated UNI items = 1;
}
// Inputs
message ONURequest {
string SerialNumber = 1;
}
message PONRequest {
uint32 PonPortId = 1;
}
message UNIRequest {
string OnuSerialNumber = 1;
string UniID = 2;
}
// Alarms
message AlarmType {
// These types correspond to the messages permitted in the oneof
// in AlarmIndication in the openolt protos
enum Types {
LOS = 0; // LOS is an OLT alarm for an entire PON
DYING_GASP = 1;
ONU_ALARM = 2;
ONU_STARTUP_FAILURE = 3;
ONU_SIGNAL_DEGRADE = 4;
ONU_DRIFT_OF_WINDOW = 5;
ONU_LOSS_OF_OMCI_CHANNEL = 6;
ONU_SIGNALS_FAILURE = 7;
ONU_TRANSMISSION_INTERFERENCE_WARNING = 8;
ONU_ACTIVATION_FAILURE = 9;
ONU_PROCESSING_ERROR = 10;
ONU_LOSS_OF_KEY_SYNC_FAILURE = 11;
ONU_ITU_PON_STATS = 12;
// These break out ONU_ALARM, which is a single message, but
// includes statuses for these six alarms.
ONU_ALARM_LOS = 13;
ONU_ALARM_LOB = 14;
ONU_ALARM_LOPC_MISS = 15;
ONU_ALARM_LOPC_MIC_ERROR = 16;
ONU_ALARM_LOFI = 17;
ONU_ALARM_LOAMI = 18;
}
}
message AlarmParameter {
string Key = 1;
string Value = 2;
}
// ONUAlarmRequest includes fields common to every Onu alarm,
// plus an optional list of AlarmParameter list that can be used
// to set additional fields in alarms that support them.
message ONUAlarmRequest {
string AlarmType = 1; // name of alarm to raise
string SerialNumber = 2; // serial number of ONU
string Status = 3; // status of Alarm
repeated AlarmParameter Parameters = 4; // optional list of additional parameters
}
// OLT alarm request
message OLTAlarmRequest {
uint32 InterfaceID = 1; // Switch Interface Id
string InterfaceType = 2; // PON or NNI Type
string Status = 3; // Interface Operstatus
}
// Utils
message VersionNumber {
string version = 1;
string buildTime = 2;
string commitHash = 3;
string gitStatus = 4;
}
message LogLevel {
string level = 1;
bool caller = 2;
}
message Response {
int32 status_code = 1;
string message = 2;
}
enum SubActionTypes {
JOIN = 0;
LEAVE = 1;
JOINV3 = 2;
}
message IgmpRequest {
ONURequest OnuReq = 1;
SubActionTypes SubActionVal = 2;
string GroupAddress = 3;
}
message Flows {
uint32 flow_count = 1;
repeated openolt.Flow flows = 2;
}
message Timeout {
uint32 delay = 1;
}
message Empty {
}
service BBSim {
// Get BBSim version
rpc Version (Empty) returns (VersionNumber) {
}
// Set BBSim log level
rpc SetLogLevel (LogLevel) returns (LogLevel) {
}
// Get current status of OLT
rpc GetOlt (Empty) returns (Olt) {
}
rpc GetOltAllocatedResources (OltAllocatedResourceType) returns (OltAllocatedResources) {
}
// Poweron OLT
rpc PoweronOlt (Empty) returns (Response) {
}
// Shutdown OLT
rpc ShutdownOlt (Empty) returns (Response) {
}
// Reboot OLT
rpc RebootOlt (Empty) returns (Response) {
}
// Closes the Openolt gRPC server
rpc StopgRPCServer (Empty) returns (Response) {
}
// Start the Openolt gRPC server
rpc StartgRPCServer (Empty) returns (Response) {
}
// Restart the Openolt gRPC server after the given timeout
rpc RestartgRPCServer (Timeout) returns (Response) {
}
// Get status of an ONU by serial number
rpc GetONU (ONURequest) returns (ONU) {
}
// Get status of all ONUs
rpc GetONUs (Empty) returns (ONUs) {
}
// Get all the Services by Uni ID
rpc GetServices (UNIRequest) returns (Services) {
}
// Get all the UNIs of an ONU by serial number
rpc GetOnuUnis (ONURequest) returns (UNIs) {
}
// Shutdown an ONU by serial number
rpc ShutdownONU (ONURequest) returns (Response) {
}
// Shutdown all ONUs in OLT
rpc ShutdownAllONUs (Empty) returns (Response) {
}
// Shutdown all ONUs under a PON by pon-port-ID
rpc ShutdownONUsOnPON (PONRequest) returns (Response) {
}
// Poweron an ONU by serial number
rpc PoweronONU (ONURequest) returns (Response) {
}
// Poweron all ONUs in OLT
rpc PoweronAllONUs (Empty) returns (Response) {
}
// Poweron all ONUs under a PON by pon-port-ID
rpc PoweronONUsOnPON (PONRequest) returns (Response) {
}
// Restart EAPOL for ONU
rpc RestartEapol (UNIRequest) returns (Response) {
}
// Restart DHCP for ONU
rpc RestartDhcp (UNIRequest) returns (Response) {
}
// Send ONU alarm indication
rpc SetOnuAlarmIndication (ONUAlarmRequest) returns (Response) {
}
// Send OLT alarm indication for Interface type NNI or PON
rpc SetOltAlarmIndication (OLTAlarmRequest) returns (Response) {
}
// Get all flows or ONU specific flows
rpc GetFlows (ONURequest) returns (Flows) {
}
// Change IGMP state
rpc ChangeIgmpState (IgmpRequest) returns (Response) {
}
// Get Traffic scheduler information for ONU
rpc GetOnuTrafficSchedulers (ONURequest) returns (ONUTrafficSchedulers) {
}
//Return all the UNIs for all the ONUs
rpc GetUnis (Empty) returns (UNIs) {
}
}