blob: 9fa95663fc6130b044349f4ca5cdbe7633da72ff [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";
package openolt;
import "google/api/annotations.proto";
import "tech_profile.proto";
service Openolt {
rpc DisableOlt(Empty) returns (Empty) {
option (google.api.http) = {
post: "/v1/Disable"
body: "*"
};
}
rpc ReenableOlt(Empty) returns (Empty) {
option (google.api.http) = {
post: "/v1/Reenable"
body: "*"
};
}
rpc ActivateOnu(Onu) returns (Empty) {
option (google.api.http) = {
post: "/v1/EnableOnu"
body: "*"
};
}
rpc DeactivateOnu(Onu) returns (Empty) {
option (google.api.http) = {
post: "/v1/DisableOnu"
body: "*"
};
}
rpc DeleteOnu(Onu) returns (Empty) {
option (google.api.http) = {
post: "/v1/DeleteOnu"
body: "*"
};
}
rpc OmciMsgOut(OmciMsg) returns (Empty) {
option (google.api.http) = {
post: "/v1/OmciMsgOut"
body: "*"
};
}
rpc OnuPacketOut(OnuPacket) returns (Empty) {
option (google.api.http) = {
post: "/v1/OnuPacketOut"
body: "*"
};
}
rpc UplinkPacketOut(UplinkPacket) returns (Empty) {
option (google.api.http) = {
post: "/v1/UplinkPacketOut"
body: "*"
};
}
rpc FlowAdd(Flow) returns (Empty) {
option (google.api.http) = {
post: "/v1/FlowAdd"
body: "*"
};
}
rpc FlowRemove(Flow) returns (Empty) {
option (google.api.http) = {
post: "/v1/FlowRemove"
body: "*"
};
}
rpc HeartbeatCheck(Empty) returns (Heartbeat) {
option (google.api.http) = {
post: "/v1/HeartbeatCheck"
body: "*"
};
}
rpc EnablePonIf(Interface) returns (Empty) {
option (google.api.http) = {
post: "/v1/EnablePonIf"
body: "*"
};
}
rpc DisablePonIf(Interface) returns (Empty) {
option (google.api.http) = {
post: "/v1/DisablePonIf"
body: "*"
};
}
rpc GetDeviceInfo(Empty) returns (DeviceInfo) {
option (google.api.http) = {
post: "/v1/GetDeviceInfo"
body: "*"
};
}
rpc Reboot(Empty) returns (Empty) {
option (google.api.http) = {
post: "/v1/Reboot"
body: "*"
};
}
rpc CollectStatistics(Empty) returns (Empty) {
option (google.api.http) = {
post: "/v1/CollectStatistics"
body: "*"
};
}
rpc CreateTrafficSchedulers(tech_profile.TrafficSchedulers) returns (Empty) {
option (google.api.http) = {
post: "/v1/CreateTrafficSchedulers"
body: "*"
};
}
rpc RemoveTrafficSchedulers(tech_profile.TrafficSchedulers) returns (Empty) {
option (google.api.http) = {
post: "/v1/RemoveTrafficSchedulers"
body: "*"
};
}
rpc CreateTrafficQueues(tech_profile.TrafficQueues) returns (Empty) {
option (google.api.http) = {
post: "/v1/CreateTrafficQueues"
body: "*"
};
}
rpc RemoveTrafficQueues(tech_profile.TrafficQueues) returns (Empty) {
option (google.api.http) = {
post: "/v1/RemoveTrafficQueues"
body: "*"
};
}
rpc EnableIndication(Empty) returns (stream Indication) {}
}
message Indication {
oneof data {
OltIndication olt_ind = 1;
IntfIndication intf_ind = 2;
IntfOperIndication intf_oper_ind = 3;
OnuDiscIndication onu_disc_ind = 4;
OnuIndication onu_ind = 5;
OmciIndication omci_ind = 6;
PacketIndication pkt_ind = 7;
PortStatistics port_stats = 8;
FlowStatistics flow_stats = 9;
AlarmIndication alarm_ind= 10;
}
}
message AlarmIndication {
oneof data {
LosIndication los_ind = 1;
DyingGaspIndication dying_gasp_ind = 2;
OnuAlarmIndication onu_alarm_ind = 3;
OnuStartupFailureIndication onu_startup_fail_ind = 4;
OnuSignalDegradeIndication onu_signal_degrade_ind = 5;
OnuDriftOfWindowIndication onu_drift_of_window_ind = 6;
OnuLossOfOmciChannelIndication onu_loss_omci_ind = 7;
OnuSignalsFailureIndication onu_signals_fail_ind = 8;
OnuTransmissionInterferenceWarning onu_tiwi_ind = 9;
OnuActivationFailureIndication onu_activation_fail_ind = 10;
OnuProcessingErrorIndication onu_processing_error_ind = 11;
}
}
message OltIndication {
string oper_state = 1; // up, down
}
message IntfIndication {
fixed32 intf_id = 1;
string oper_state = 2; // up, down
}
message OnuDiscIndication {
fixed32 intf_id = 1;
SerialNumber serial_number = 2;
}
message OnuIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string oper_state = 3; // up, down
string admin_state = 5; // up, down
SerialNumber serial_number = 4;
}
message IntfOperIndication {
string type = 1; // nni, pon
fixed32 intf_id = 2;
string oper_state = 3; // up, down
}
message OmciIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
bytes pkt = 3;
}
message PacketIndication {
string intf_type = 5; // nni, pon, unknown
fixed32 intf_id = 1;
fixed32 gemport_id = 2;
fixed32 flow_id = 3;
fixed32 port_no = 6;
fixed64 cookie = 7;
bytes pkt = 4;
}
message Interface {
fixed32 intf_id = 1;
}
message Heartbeat {
fixed32 heartbeat_signature = 1;
}
message Onu {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
SerialNumber serial_number = 3;
fixed32 pir = 4; // peak information rate assigned to onu
}
message OmciMsg {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
bytes pkt = 3;
}
message OnuPacket {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
fixed32 port_no = 4;
fixed32 gemport_id = 5;
bytes pkt = 3;
}
message UplinkPacket {
fixed32 intf_id = 1;
bytes pkt = 2;
}
message DeviceInfo {
string vendor = 1;
string model = 2;
string hardware_version = 3;
string firmware_version = 4;
string device_id = 16;
string device_serial_number = 17;
// Total number of pon intf ports on the device
fixed32 pon_ports = 12;
// If using global per-device technology profile. To be deprecated
string technology = 5;
fixed32 onu_id_start = 6;
fixed32 onu_id_end = 7;
fixed32 alloc_id_start = 8;
fixed32 alloc_id_end = 9;
fixed32 gemport_id_start = 10;
fixed32 gemport_id_end = 11;
fixed32 flow_id_start = 13;
fixed32 flow_id_end = 14;
message DeviceResourceRanges {
// List of 0 or more intf_ids that use the same technology and pools.
// If 0 intf_ids supplied, it implies ALL interfaces
repeated fixed32 intf_ids = 1;
// Technology profile for this pool
string technology = 2;
message Pool {
enum PoolType {
ONU_ID = 0;
ALLOC_ID = 1;
GEMPORT_ID = 2;
FLOW_ID = 3;
}
enum SharingType {
DEDICATED_PER_INTF = 0;
SHARED_BY_ALL_INTF_ALL_TECH = 1; // Shared across all interfaces in all technologies in all ranges
SHARED_BY_ALL_INTF_SAME_TECH = 2; // Shared across all interfaces of the same technology used in this range
}
PoolType type = 1;
SharingType sharing = 2;
fixed32 start = 3; // lower bound on IDs allocated from this pool
fixed32 end = 4; // upper bound on IDs allocated from this pool
}
repeated Pool pools = 3;
}
repeated DeviceResourceRanges ranges = 15;
}
message Classifier {
fixed32 o_tpid = 1;
fixed32 o_vid = 2;
fixed32 i_tpid = 3;
fixed32 i_vid = 4;
fixed32 o_pbits = 5;
fixed32 i_pbits = 6;
fixed32 eth_type = 7;
bytes dst_mac = 8;
bytes src_mac = 9;
fixed32 ip_proto = 10;
fixed32 dst_ip = 11;
fixed32 src_ip = 12;
fixed32 src_port = 13;
fixed32 dst_port = 14;
string pkt_tag_type = 15; // untagged, single_tag, double_tag
}
message ActionCmd {
bool add_outer_tag = 1;
bool remove_outer_tag = 2;
bool trap_to_host = 3;
}
message Action {
ActionCmd cmd = 1;
fixed32 o_vid = 2;
fixed32 o_pbits = 3;
fixed32 o_tpid = 4;
fixed32 i_vid = 5;
fixed32 i_pbits = 6;
fixed32 i_tpid = 7;
}
message Flow {
sfixed32 access_intf_id = 1;
sfixed32 onu_id = 2;
sfixed32 uni_id = 11;
fixed32 flow_id = 3;
string flow_type = 4; // upstream, downstream, broadcast, multicast
sfixed32 alloc_id = 10;
sfixed32 network_intf_id = 5;
sfixed32 gemport_id = 6;
Classifier classifier = 7;
Action action = 8;
sfixed32 priority = 9;
fixed64 cookie = 12; // must be provided for any flow with trap_to_host action. Returned in PacketIndication
fixed32 port_no = 13; // must be provided for any flow with trap_to_host action. Returned in PacketIndication
}
message SerialNumber {
bytes vendor_id = 1;
bytes vendor_specific = 2;
}
message PortStatistics {
fixed32 intf_id = 1;
fixed64 rx_bytes = 2;
fixed64 rx_packets = 3;
fixed64 rx_ucast_packets = 4;
fixed64 rx_mcast_packets = 5;
fixed64 rx_bcast_packets = 6;
fixed64 rx_error_packets = 7;
fixed64 tx_bytes = 8;
fixed64 tx_packets = 9;
fixed64 tx_ucast_packets = 10;
fixed64 tx_mcast_packets = 11;
fixed64 tx_bcast_packets = 12;
fixed64 tx_error_packets = 13;
fixed64 rx_crc_errors = 14;
fixed64 bip_errors = 15;
fixed32 timestamp = 16;
}
message FlowStatistics {
fixed32 flow_id = 1;
fixed64 rx_bytes = 2;
fixed64 rx_packets = 3;
fixed64 tx_bytes = 8;
fixed64 tx_packets = 9;
fixed32 timestamp = 16;
}
message LosIndication {
fixed32 intf_id = 1;
string status = 2;
}
message DyingGaspIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string status = 3;
}
message OnuAlarmIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string los_status = 3;
string lob_status = 4;
string lopc_miss_status = 5;
string lopc_mic_error_status = 6;
}
message OnuStartupFailureIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string status = 3;
}
message OnuSignalDegradeIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string status = 3;
fixed32 inverse_bit_error_rate = 4;
}
message OnuDriftOfWindowIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string status = 3;
fixed32 drift = 4;
fixed32 new_eqd = 5;
}
message OnuLossOfOmciChannelIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string status = 3;
}
message OnuSignalsFailureIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string status = 3;
fixed32 inverse_bit_error_rate = 4;
}
message OnuTransmissionInterferenceWarning {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
string status = 3;
fixed32 drift = 4;
}
message OnuActivationFailureIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
}
message OnuProcessingErrorIndication {
fixed32 intf_id = 1;
fixed32 onu_id = 2;
}
message Empty {}