blob: d372f93a4c065eab47da02351278876434595a11 [file] [log] [blame]
// Copyright 2018-2024 Open Networking Foundation (ONF) and the ONF Contributors
//
// 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/voltha-protos/v5/go/extension";
option java_package = "org.opencord.voltha.extension";
package extension;
import "voltha_protos/ext_config.proto";
import "google/protobuf/empty.proto";
message ValueSet {
string id = 1;
oneof value{
config.AlarmConfig alarm_config = 2;
}
}
message ValueType {
enum Type {
EMPTY = 0;
DISTANCE = 1;
}
}
message ValueSpecifier {
string id = 1;
ValueType.Type value = 2;
}
message ReturnValues {
uint32 Set = 1; // Specifies what values are
// set/valid in return
uint32 Unsupported = 2; // Specifies requested values not
// supported by the device
uint32 Error = 3; // Specifies requested values not
// fetched because of error
uint32 Distance = 4; // Value of distance Set includes
// DISTANCE
}
message GetDistanceRequest {
string onuDeviceId = 1;
}
message GetDistanceResponse {
uint32 distance = 1; // distance in meters
}
message GetOnuUniInfoRequest {
uint32 uniIndex = 1; // Index of the uni starting from 0
}
message GetOnuUniInfoResponse {
enum ConfigurationInd {
UNKOWN = 0;
TEN_BASE_T_FDX = 1;
HUNDRED_BASE_T_FDX = 2;
GIGABIT_ETHERNET_FDX = 3;
TEN_G_ETHERNET_FDX = 4;
TEN_BASE_T_HDX = 5;
HUNDRED_BASE_T_HDX = 6;
GIGABIT_ETHERNET_HDX = 7;
}
enum AdministrativeState {
ADMSTATE_UNDEFINED = 0;
LOCKED = 1;
UNLOCKED = 2;
}
enum OperationalState {
OPERSTATE_UNDEFINED = 0;
ENABLED = 1;
DISABLED = 2;
}
AdministrativeState admState = 1;
OperationalState operState = 2;
ConfigurationInd configInd = 3;
}
message GetOltPortCounters {
enum PortType {
Port_UNKNOWN = 0;
Port_ETHERNET_NNI = 1;
Port_PON_OLT = 2;
}
uint32 portNo = 1; // Device-unique port number
PortType portType = 2;
}
message GetOltPortCountersResponse {
uint64 txBytes = 1;
uint64 rxBytes = 2;
uint64 txPackets = 3;
uint64 rxPackets = 4;
uint64 txErrorPackets = 5;
uint64 rxErrorPackets = 6;
uint64 txBcastPackets = 7;
uint64 rxBcastPackets = 8;
uint64 txUcastPackets = 9;
uint64 rxUcastPackets = 10;
uint64 txMcastPackets = 11;
uint64 rxMcastPackets = 12;
}
message GetOnuPonOpticalInfo {
google.protobuf.Empty empty = 1;
}
// These values correspond to the Optical Line Supervision Test results
// described in section A3.39.5 of ITU-T G.988 (11/2017) specification.
message GetOnuPonOpticalInfoResponse{
float powerFeedVoltage = 1; // unit of value is voltage
float receivedOpticalPower = 2; // unit of value is dBm
float meanOpticalLaunchPower = 3; // unit of value is dBm
float laserBiasCurrent = 4; // unit of value is milli-amphere (mA)
float temperature = 5; // unit of value is degree celsius
}
message GetOnuEthernetBridgePortHistory {
enum Direction {
UNDEFINED = 0;
UPSTREAM = 1;
DOWNSTREAM = 2;
}
Direction direction = 1;
}
message GetOnuEthernetBridgePortHistoryResponse {
uint32 dropEvents = 1;
uint32 octets = 2;
uint32 packets= 3;
uint32 broadcastPackets = 4;
uint32 multicastPackets = 5;
uint32 crcErroredPackets = 6;
uint32 undersizePackets = 7;
uint32 oversizePackets = 8;
uint32 packets64octets = 9;
uint32 packets65To127octets = 10;
uint32 packets128To255Octets = 11;
uint32 packets256To511octets = 12;
uint32 packets512To1023octets = 13;
uint32 packets1024To1518octets = 14;
}
message GetOnuFecHistory {
google.protobuf.Empty empty = 1;
}
message GetOnuFecHistoryResponse {
uint32 correctedBytes = 1;
uint32 correctedCodeWords = 2;
uint32 fecSeconds = 3;
uint32 totalCodeWords = 4;
uint32 uncorrectableCodeWords = 5;
}
message GetOnuCountersRequest {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
}
message GetOmciEthernetFrameExtendedPmRequest {
string onuDeviceId = 1;
oneof is_uni_index {
uint32 uniIndex = 2; // Index of the uni starting from 0
}
bool reset = 3;
}
// DEPRECATED
message GetRxPowerRequest {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
}
message GetOltRxPowerRequest {
string port_label = 1;
// onu_sn is optional and if onu_sn is an empty string and the label is
// of a PON port then it means that the Rx Power corresponding to all
// the ONUs on that PON port is requested. In case the port_label is not
// of a PON port, the onu_sn does not have any significance
string onu_sn = 2;
}
message GetOnuCountersResponse {
oneof is_intf_id {
fixed32 intf_id = 1;
}
oneof is_onu_id {
fixed32 onu_id = 2;
}
oneof is_positive_drift {
fixed64 positive_drift = 3;
}
oneof is_negative_drift {
fixed64 negative_drift = 4;
}
oneof is_delimiter_miss_detection {
fixed64 delimiter_miss_detection = 5;
}
oneof is_bip_errors {
fixed64 bip_errors = 6;
}
oneof is_bip_units {
fixed64 bip_units = 7;
}
oneof is_fec_corrected_symbols {
fixed64 fec_corrected_symbols = 8;
}
oneof is_fec_codewords_corrected {
fixed64 fec_codewords_corrected = 9;
}
oneof is_fec_codewords_uncorrectable {
fixed64 fec_codewords_uncorrectable = 10;
}
oneof is_fec_codewords {
fixed64 fec_codewords = 11;
}
oneof is_fec_corrected_units {
fixed64 fec_corrected_units = 12;
}
oneof is_xgem_key_errors {
fixed64 xgem_key_errors = 13;
}
oneof is_xgem_loss {
fixed64 xgem_loss = 14;
}
oneof is_rx_ploams_error {
fixed64 rx_ploams_error = 15;
}
oneof is_rx_ploams_non_idle {
fixed64 rx_ploams_non_idle = 16;
}
oneof is_rx_omci {
fixed64 rx_omci = 17;
}
oneof is_tx_omci {
fixed64 tx_omci = 18;
}
oneof is_rx_omci_packets_crc_error {
fixed64 rx_omci_packets_crc_error = 19;
}
oneof is_rx_bytes {
fixed64 rx_bytes = 20;
}
oneof is_rx_packets {
fixed64 rx_packets = 21;
}
oneof is_tx_bytes {
fixed64 tx_bytes = 22;
}
oneof is_tx_packets {
fixed64 tx_packets = 23;
}
oneof is_ber_reported {
fixed64 ber_reported = 24;
}
oneof is_lcdg_errors {
fixed64 lcdg_errors = 25;
}
oneof is_rdi_errors {
fixed64 rdi_errors = 26;
}
oneof is_timestamp {
// reported timestamp in seconds since epoch
fixed32 timestamp = 27;
}
}
message OmciEthernetFrameExtendedPm {
fixed64 drop_events = 1;
fixed64 octets = 2;
fixed64 frames = 3;
fixed64 broadcast_frames = 4;
fixed64 multicast_frames = 5;
fixed64 crc_errored_frames = 6;
fixed64 undersize_frames = 7;
fixed64 oversize_frames = 8;
fixed64 frames_64_octets = 9;
fixed64 frames_65_to_127_octets = 10;
fixed64 frames_128_to_255_octets = 11;
fixed64 frames_256_to_511_octets = 12;
fixed64 frames_512_to_1023_octets = 13;
fixed64 frames_1024_to_1518_octets = 14;
}
message GetOmciEthernetFrameExtendedPmResponse {
enum Format {
THIRTY_TWO_BIT = 0;
SIXTY_FOUR_BIT = 1;
}
OmciEthernetFrameExtendedPm upstream = 1;
OmciEthernetFrameExtendedPm downstream = 2;
Format omci_ethernet_frame_extended_pm_format= 3;
}
message RxPower {
string onu_sn = 1; // if the port on which RxPower is measured is not a PON port this will be empty ("") string
string status = 2;
string fail_reason = 3;
double rx_power = 4;
}
message GetOltRxPowerResponse {
string port_label= 1;
repeated RxPower rx_power = 2;
}
// DEPRECATED
message GetRxPowerResponse {
fixed32 intf_id= 1;
fixed32 onu_id = 2;
string status = 3;
string fail_reason = 4;
double rx_power = 5;
}
message GetOnuOmciTxRxStatsRequest{
google.protobuf.Empty empty = 1;
}
// see ITU-T G.988 clause 11.2.2
message GetOnuOmciTxRxStatsResponse {
// OMCI baseline Tx frames with AR bit set
uint32 base_tx_ar_frames = 1;
// OMCI baseline Rx frames with AK bit set
uint32 base_rx_ak_frames = 2;
// OMCI baseline Tx frames with AR bit unset
uint32 base_tx_no_ar_frames = 3;
// OMCI baseline Rx frames with AK bit unset
uint32 base_rx_no_ak_frames = 4;
// OMCI extended Tx frames with AR bit set
uint32 ext_tx_ar_frames = 5;
// OMCI extended Rx frames with AK bit set
uint32 ext_rx_ak_frames = 6;
// OMCI extended Tx frames with AR bit unset
uint32 ext_tx_no_ar_frames = 7;
// OMCI extended Rx frames with AK bit unset
uint32 ext_rx_no_ak_frames = 8;
// Number of retries of requests (tx) due to not received responses (Rx)
uint32 tx_omci_counter_retries = 9;
// Number of timeouts of requests (tx) due to not received responses (Rx) after configured number of retries
uint32 tx_omci_counter_timeouts = 10;
}
message GetOnuOmciActiveAlarmsRequest{
google.protobuf.Empty empty = 1;
}
message AlarmData{
uint32 class_id = 1;
uint32 instance_id = 2;
string name = 3;
string description = 4;
}
message GetOnuOmciActiveAlarmsResponse{
repeated AlarmData active_alarms = 1;
}
message GetOffloadedAppsStatisticsRequest {
enum OffloadedApp {
UNDEFINED = 0;
PPPoeIA = 1;
DHCPv4RA = 2;
DHCPv6RA = 3;
}
// The offloaded application whose statistics are requested
OffloadedApp statsFor = 1;
}
message GetOffloadedAppsStatisticsResponse {
message DHCPv4RAStats {
// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-l2-dhcpv4-relay.yang
uint32 in_bad_packets_from_client = 1;
uint32 in_bad_packets_from_server = 2;
uint32 in_packets_from_client = 3;
uint32 in_packets_from_server = 4;
uint32 out_packets_to_server = 5;
uint32 out_packets_to_client = 6;
uint32 option_82_inserted_packets_to_server = 7;
uint32 option_82_removed_packets_to_client = 8;
uint32 option_82_not_inserted_to_server = 9;
// Name value pairs that gives the flexibility to report different statistics that implementations may choose
map<string, string> additional_stats = 10;
}
message DHCPv6RAStats {
// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-ldra.yang
uint32 in_bad_packets_from_client = 1;
uint32 in_bad_packets_from_server = 2;
uint32 option_17_inserted_packets_to_server = 3;
uint32 option_17_removed_packets_to_client = 4;
uint32 option_18_inserted_packets_to_server = 5;
uint32 option_18_removed_packets_to_client = 6;
uint32 option_37_inserted_packets_to_server = 7;
uint32 option_37_removed_packets_to_client = 8;
uint32 outgoing_mtu_exceeded_packets_from_client = 9;
// Name value pairs that gives the flexibility to report different statistics that implementations may choose
map<string, string> additional_stats = 10;
}
message PPPoeIAStats {
// From https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent.yang
uint32 in_error_packets_from_client = 1;
uint32 in_error_packets_from_server = 2;
uint32 in_packets_from_client = 3;
uint32 in_packets_from_server = 4;
uint32 out_packets_to_server = 5;
uint32 out_packets_to_client = 6;
uint32 vendor_specific_tag_inserted_packets_to_server = 7;
uint32 vendor_specific_tag_removed_packets_to_client = 8;
uint32 outgoing_mtu_exceeded_packets_from_client = 9;
// Name value pairs that gives the flexibility to report different statistics that implementations may choose
map<string, string> additional_stats = 10;
}
oneof stats {
DHCPv4RAStats dhcpv4RaStats = 1;
DHCPv6RAStats dhcpv6RaStats = 2;
PPPoeIAStats pppoeIaStats = 3;
}
}
message GetValueRequest {
oneof request {
GetDistanceRequest distance = 1;
GetOnuUniInfoRequest uniInfo = 2;
// Corresponds to PmMetricId.PON_PORT_COUNTERS, PmMetricId.NNI_PORT_COUNTERS
GetOltPortCounters oltPortInfo = 3;
// Corresponds to PmMetricId.PON_OPTICAL
GetOnuPonOpticalInfo onuOpticalInfo = 4;
// Corresponds to PmMetricId.ETHERNET_BRIDGE_PORT_HISTORY
GetOnuEthernetBridgePortHistory ethBridgePort = 5;
// Corresponds to PmMetricId.FEC_HISTORY
GetOnuFecHistory fecHistory = 6;
GetOnuCountersRequest onuPonInfo = 7;
GetOmciEthernetFrameExtendedPmRequest onuInfo = 8;
GetRxPowerRequest rxPower = 9; // This is deprecated
GetOnuOmciTxRxStatsRequest onuOmciStats = 10;
GetOltRxPowerRequest oltRxPower = 11;
GetOnuOmciActiveAlarmsRequest onuActiveAlarms = 12;
GetOffloadedAppsStatisticsRequest offloadedAppsStats = 13;
}
}
message GetValueResponse {
enum Status {
STATUS_UNDEFINED = 0;
OK = 1;
ERROR = 2;
}
enum ErrorReason {
REASON_UNDEFINED = 0;
UNSUPPORTED = 1;
INVALID_DEVICE_ID = 2;
INVALID_PORT_TYPE = 3;
TIMEOUT = 4;
INVALID_REQ_TYPE = 5;
INTERNAL_ERROR = 6;
INVALID_DEVICE = 7;
}
Status status = 1;
ErrorReason errReason = 2;
oneof response {
GetDistanceResponse distance = 3;
GetOnuUniInfoResponse uniInfo = 4;
GetOltPortCountersResponse portCoutners = 5;
GetOnuPonOpticalInfoResponse onuOpticalInfo = 6;
GetOnuEthernetBridgePortHistoryResponse ethBridgePortInfo = 7;
GetOnuFecHistoryResponse fecHistory = 8;
GetOnuCountersResponse onuPonCounters = 9;
GetOmciEthernetFrameExtendedPmResponse onuCounters = 10;
GetRxPowerResponse rxPower = 11; // This is DEPRECATED
GetOnuOmciTxRxStatsResponse onuOmciStats = 12;
GetOltRxPowerResponse oltRxPower = 13;
GetOnuOmciActiveAlarmsResponse onuActiveAlarms = 14;
GetOffloadedAppsStatisticsResponse offloadedAppsStats = 15;
}
}
// AppOffloadConfig is the configuration for offloading applications to the OLT and has OLT wide configuration.
message AppOffloadConfig {
bool enableDHCPv4RA = 1;
bool enableDHCPv6RA = 2;
bool enablePPPoEIA = 3;
// Follows the same as the BBF Access Node Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-subscriber-profiles.yang
string accessNodeID = 4;
}
// AppOffloadOnuConfig has Onu specfic configuration which the OLT runs applications which have been offloaded.
message AppOffloadOnuConfig {
string onuDeviceId = 1;
message PerUniConfig {
// As per the BBF Agent Remote Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
string agentRemoteID = 2;
// As per the BBF Agent Circuit Id defined in https://github.com/BroadbandForum/yang/blob/master/standard/networking/bbf-pppoe-intermediate-agent-profile-common.yang
string agentCircuitID = 3;
// The id of the UNI on the Onu for which this configuration is relevant. The UNI ids are numbered from 0 to n depending on the number of UNI ports on the ONU.
uint32 onuUniId = 4;
}
repeated PerUniConfig perUniInfo = 5;
}
message SetValueRequest {
oneof request {
config.AlarmConfig alarm_config = 1;
AppOffloadConfig app_offload_config = 2;
AppOffloadOnuConfig app_offload_onu_config = 3;
}
}
message SetValueResponse {
enum Status {
STATUS_UNDEFINED = 0;
OK = 1;
ERROR = 2;
}
enum ErrorReason {
REASON_UNDEFINED = 0;
UNSUPPORTED = 1;
INVALID_DEVICE_ID = 2;
INVALID_ONU_DEVICE_ID = 3;
INVALID_UNI_ID = 4;
}
Status status = 1;
ErrorReason errReason = 2;
// As of now we don't have any explicit response for the supported SetValueRequests
// to be used later
//oneof response {
//
//}
}
message SingleGetValueRequest {
string targetId = 1;
GetValueRequest request = 2;
}
message SingleGetValueResponse{
GetValueResponse response = 1;
}
message SingleSetValueRequest {
string targetId = 1;
SetValueRequest request = 2;
}
message SingleSetValueResponse {
SetValueResponse response = 1;
}
// Extension is a service to get and set specific attributes
service Extension {
// Get a single attribute
rpc GetExtValue(SingleGetValueRequest) returns (SingleGetValueResponse);
// Set a single attribute
rpc SetExtValue(SingleSetValueRequest) returns (SingleSetValueResponse);
}