RFC 4837
Managed Objects of Ethernet Passive Optical Networks (EPON)
RFC 4837: Managed Objects of Ethernet Passive Optical Networks (EPON) ๐ฆ
Part 1 of 18 ๐ธ
okay bestie, the title block is giving very "official standards doc" energy ๐ so here's the tea. This one came out of the Network Working Group, written by L. Khermosh from PMC-SIERRA ๐. It's a Standards Track doc, dated July 2007 โจ. Its title block has no "Obsoletes" or "Updates" line, so it doesn't replace or update any other RFC ๐ซถ.
Status of This Memo โจ
Okay so this doc is an Internet standards track protocol for the Internet community ๐. It's also asking everyone for discussion and suggestions for improvements, so bring your ideas ๐ . If you want to know where this protocol sits in standardization, check the current edition of the "Internet Official Protocol Standards" (STD 1) ๐. And the distribution of this memo is unlimited, so share it with everyone ๐ฆ.
Copyright Notice ๐
Copyright (C) The IETF Trust (2007). ๐
Abstract ๐ง
Bestie, this part is the main event ๐. This doc defines a chunk of the Management Information Base (MIB), which is the info store that network management protocols use in TCP/IP based Internets ๐ธ. Specifically, it defines objects for managing interfaces that follow the Ethernet Passive Optical Networks (EPON) standard from IEEE Std 802.3ah-2004 โญ. Those interfaces are extended capabilities of Ethernet-like interfaces, so it's an upgrade with main character energy ๐ฅ.
Table of Contents ๐
1. The Internet-Standard Management Framework . . . . . . . . . . 3
2. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Terminology and Abbreviations . . . . . . . . . . . . . . 3
2.2. EPON Architecture Highlights . . . . . . . . . . . . . . . 5
2.2.1. Introduction . . . . . . . . . . . . . . . . . . . . . 5
2.2.2. Principles of Operation . . . . . . . . . . . . . . . 6
2.2.3. The Physical Media . . . . . . . . . . . . . . . . . . 7
2.2.4. PMD Specifications . . . . . . . . . . . . . . . . . . 8
2.2.5. Point-to-Point Emulation . . . . . . . . . . . . . . . 8
2.2.6. Principles of the MPCP . . . . . . . . . . . . . . . . 10
2.2.7. Forward Error Correction (FEC) . . . . . . . . . . . . 12
2.3. Management Architecture . . . . . . . . . . . . . . . . . 13
3. MIB Structure . . . . . . . . . . . . . . . . . . . . . . . . 17
4. Relation to Other MIB Modules . . . . . . . . . . . . . . . . 22
4.1. Relation to the Interfaces MIB and Ethernet-like
Interfaces MIB . . . . . . . . . . . . . . . . . . . . . . 22
4.2. Relation to the IEEE 802.3 MAU MIBs . . . . . . . . . . . 29
4.3. Relation to the EFM OAM MIB . . . . . . . . . . . . . . . 29
4.4. Relation to the Bridge MIB . . . . . . . . . . . . . . . . 30
5. Mapping of IEEE 802.3ah Managed Objects . . . . . . . . . . . 31
6. Definitions - The DOT3 EPON MIB Module . . . . . . . . . . . . 33
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 85
8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 86
9. Security Considerations . . . . . . . . . . . . . . . . . . . 86
10. References . . . . . . . . . . . . . . . . . . . . . . . . . . 88
10.1. Normative References . . . . . . . . . . . . . . . . . . . 88
10.2. Informative References . . . . . . . . . . . . . . . . . . 90
1. The Internet-Standard Management Framework โจ
Okay so if you want the full overview of the docs that describe the current Internet-Standard Management Framework, go read Section 7 of RFC 3410 [RFC3410] ๐. Managed objects live in a virtual info store called the Management Information Base, or MIB ๐ . You usually reach MIB objects through the Simple Network Management Protocol (SNMP) ๐ซถ. The objects get defined using the rules in the Structure of Management Information (SMI) ๐. This memo's MIB module follows SMIv2, which is described in STD 58, RFC 2578 [RFC2578]; STD 58, RFC 2579 [RFC2579]; and STD 58, RFC 2580 [RFC2580] ๐.
2. Overview ๐ธ
Bestie, this section is basically the recap ๐. Again, this doc defines a portion of the MIB for network management protocols in TCP/IP based Internets ๐ฆ. It covers objects for managing interfaces that conform to the Ethernet Passive Optical Networks (EPON) standard in [802.3ah], which are extended capabilities of Ethernet-like interfaces โญ. The doc has a list of management objects based on the attributes in the relevant parts of [802.3ah] Annex 30A that refer to EPON ๐.
2.1. Terminology and Abbreviations ๐
Okay, the big rule here: the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" are interpreted as described in [RFC2119] ๐ ๐ฅ. Those caps words are the whole point, so don't skip them ๐.
Here's the abbreviation list, copied exactly so nothing gets lost ๐:
ACK - Acknowledge
BER - Bit Error Rate
BW - Bandwidth
CO - Central Office
CPE - Customer Premises Equipment
CRC - Cyclic Redundancy Check
EFM - Ethernet First Mile
EPON - Ethernet Passive Optical Network
FCS - Frame Check Sequence
FEC - Forward Error Correction
GMII - Gigabit Media Independent Interface
LAN - Local Area Network
LLID - Logical Link Identifier
MAC - Media Access Control
Mbps - Megabit per second
MDI - Medium Dependent Interface
MDIO - Management Data Input/Output
MPCP - Multi-Point Control Protocol
MP2PE - Multi-Point to Point Emulation
OAM - Operation Administration Maintenance
OLT - Optical Line Terminal (Server unit of the EPON)
OMP - Optical Multi-Point
ONU - Optical Network Unit (Client unit of the EPON)
P2MP - Point-to-Multipoint
P2PE - Point-to-Point Emulation
PCS - Physical Coding Sublayer
PHY - Physical Layer
PMA - Physical Medium Attachment
PMD - Physical Medium Dependent
PON - Passive Optical Network
RS - Reconciliation Sublayer
RTT - Round Trip Time
SLA - Service Level Agreement
SLD - Start of LLID Delimiter
TDM - Time Division Multiplexing
TQ - Time Quanta
2.2. EPON Architecture Highlights ๐ง
2.2.1. Introduction ๐
Okay so the EPON standard in [802.3ah] defines the physical media (Layer 1) and the media access (Layer 2) of the EPON interface ๐ฆ. Honestly, the EPON is a variant of the Gigabit Ethernet protocol for Optical Access โจ. That optical access topology is based on passive optical splitting, and the link of a Passive Optical Network (PON) runs over a single shared optical fiber. Passive optical splitters divide that single fiber out to separate subscribers ๐.
The Optical Line Terminal (OLT) is the server unit of the network, and it lives at the Central Office (CO) ๐. The Optical Network Unit (ONU) is the client unit, and it lives at the Customer Premises Equipment (CPE) ๐.
Here's the PON topology diagram, copied exactly ๐ธ:
Device with
one or more P2MP
interfaces such as OLT
for EPON An EPON IP host
------- OLT ONU "modem" --------
Other IEEE | | interface | interface ------ Other IEEE| |
interface | |-------\----------------| | interface | |
===========| | \ | |===========| |
| | \ ------ --------
| | \ ------ --------
. . \------------| | | |
| |------\ | |===========| |
| | \ ------ --------
------- \ etc
The IEEE layering architecture of an EPON interface is defined in the diagram of Figure 56.2 [802.3ah]. The following clauses in [802.3ah] define the corresponding layers of an EPON interface ๐ฅ:
- clause 30 - Management
- clause 60 - PMD for EPON media (Burst PMD)
- clause 64 - MPCP (Multi-Point Control Protocol) - defines the Multi- Point architecture, and control protocol for the media access of EPON.
- clause 65 -
- a) Virtual links definition for the EPON
- b) FEC
- c) PMA for the EPON.
2.2.2. Principles of Operation ๐
Okay bestie, the EPON interface spec is built on the gigabit Ethernet interface from [802.3], clauses 35 and 36 ๐ . The Ethernet MAC works at gigabit rate โญ. The media interface to the MAC goes through the GMII interface, as described in clause 35 ๐ฆ. The PCS layer is based on the gigabit Ethernet PCS from clause 36 ๐ซถ. The special EPON layers get added to the Ethernet layering in these places ๐:
The MPCP sits in the MAC control layer, and it provides the EPON control protocol ๐. The Emulation layer sits at the RS (Reconciliation Sublayer) and creates a virtual private path to each ONU ๐ง. The FEC layer sits between the PCS and PMA layers, and it enhances the reach and split performance of the optical link ๐ฅ.
Here's the layering model diagram, copied exactly ๐:
+==========================================+
| Higher layers |
+==========================================+
| 802.1D Bridge |
+==========================================+
| MAC client| ... |MAC client|
+==========================================+
| MAC Control - (MPCP) | *NEW*
+==========================================+
| MAC | ... | MAC |
+==========================================+
| P2P Emulation (P2PE) | *NEW*
+==========================================+
| |
| GMII |
| |
+==========================================+
| PCS |
+==========================================+
| FEC | *NEW*
+==========================================+
| PMA | *Enhanced parameters
+==========================================+ for EPON*
| PMD | *Enhanced parameters
+==========================================+ for EPON*
| |
| MDI |
| |
/===================/
/ Media /
/===================/
2.2.3. The Physical Media ๐ฆ
Bestie, the physical link is a fiber optical link โจ. The OLT and ONUs are connected through passive optical splitters ๐ธ. Downlink means transmission from the OLT to the ONUs, and uplink means transmission from the ONUs to the OLT ๐. Uplink and downlink are multiplexed on the same fiber using separated wavelengths ๐.
The downlink is a broadcast medium, so the OLT sends data to all ONUs at once ๐ก. The uplink is a shared transmission medium for all of the ONUs ๐. The uplink access is based on time division multiplexing (TDM), and the Multi-Point Control Protocol (MPCP) manages that TDM media access ๐ฅ. The MPCP is a control protocol based on inband packet messaging ๐ง.
The OLT sends control messages called GATE messages, which let ONUs transmit. They define when the transmission happens and how long it lasts ๐. These messages set the transmission order and the amount of BW for each ONU ๐. A scheduling algorithm at the OLT is responsible for allocating the BW and controlling each ONU's delay according to its SLA โญ. That scheduling algorithm is not defined in [802.3ah], so it's the OLT implementer's call ๐ซถ๐ .
2.2.4. PMD Specifications โจ
okay so the PMD specs pick the same optical wavelength plan as [ITU-T.G.983] ๐ the transceivers are basically glow-ups of existing Ethernet optical transceivers ๐ they do dual wavelength on a single fiber and get extended burst capabilities for the uplink โจ the uplink burst capability means ONUs can transmit in bursts and the OLT can receive in bursts ๐ซถ and [802.3ah] went with very relaxed burst parameters so the devices stay cheap to make ๐ it's giving budget-friendly but make it work ๐
2.2.5. Point-to-Point Emulation
bestie, this one is lowkey the main character of the whole thing ๐ฆ the downstream is a broadcast link, which means the OLT's transmission is shared by every ONU ๐ธ that sharing has some privacy problems, so it should only be used for broadcast traffic ๐ the traffic meant for each ONU should not be shared with the others ๐
the fix from [802.3ah] is to split the EPON link into virtual pieces, one per ONU โจ each ONU gets its own dedicated virtual link to the OLT, and there's also an extra link for broadcast ๐ so the medium turns into an aggregation of point-to-point tunnels ๐ง the OLT can't keep its EPON interface as one single interface hooked up to N devices like the physical layer would suggest ๐ญ instead the EPON interface is split into separate virtual interfaces, one for each virtual link ๐ so the OLT acts like a device with N virtual ports, plus one more port for broadcast ๐
there's also a single-copy-broadcast channel, tagged as all one LLID ๐ it lets broadcast go out as one copy to all ONUs, which keeps the bandwidth efficiency that comes from the PON being a shared medium ๐ฅ the ONUs filter out downlink traffic that isn't meant for them, using the virtual link marking ๐ซถ each Ethernet packet gets an LLID tag at the preamble that says which virtual link it belongs to ๐ in the downstream the LLID marks the destination port, and in the upstream it marks the source port โจ
the virtual links also dodge a violation of the [802.1d] bridging rules for peer-to-peer traffic in the PON ๐ peer-to-peer traffic just means traffic between ONUs in the same PON ๐ without the split, the OLT couldn't keep one interface connected to N devices and still let those devices talk to each other without breaking the bridging rules ๐ญ the source and destination addresses would both sit behind the same port, so the traffic should be discarded ๐ซ separating the ONUs into virtual links fixes that ๐ the OLT has N virtual ports for the one physical EPON port, and a bridge sees a single MAC Client for every link pair ๐
the private paths concept solves the networking problems and gives subscriber isolation ๐ ๐ซถ
since the tunneling is only virtual, there's still a single physical interface and a single physical layer for the device, so some attributes end up shared ๐ for example, the interface has a single local MAC address ๐ฆ
here's the virtual tunneling for an OLT with 3 ONUs ๐
Trunk Line
|
|
|
\|/
+===============================================+
| 802.1D Bridge |
+===============================================+
| MAC client1| ... |MAC client3|
+===============================================+
| MP2PE |
+===============================================+
| PHY |
=================================================
| | |
| | |
\|/ \|/ \|/
+============+ +============+ +============+
| PHY | | PHY | | PHY |
+============+ +============+ +============+
| MP2PE | | MP2PE | | MP2PE |
+============+ +============+ +============+
| MAC client | | MAC client | | MAC client |
+============+ +============+ +============+
| PHY | | PHY | | PHY |
+============+ +============+ +============+
/|\ /|\ /|\
| | |
| | |
| | |
Subscriber1 Subscriber2 Subscriber3
2.2.6. Principles of the MPCP
okay the EPON standard defines the media access control of an optical Access network ๐ธ and the Access network is really different from the legacy LAN that Ethernet was originally built for ๐ญ the big differences are in how the network gets provisioned ๐ an Access network is an administrated environment, with an operator providing the service and subscribers consuming it ๐ผ the operator controls the network and manages its traffic, so BW is controlled and subscribers get billed for services ๐ธ the MPCP divides the Ethernet interfaces into two unequal types of network units ๐ the first is an OLT interface, which is the server unit that controls the network ๐ซก the second is an ONU interface, which is a client unit that participates in the network ๐ง
the OLT is the server unit that manages the network ๐ the MPCP controls the TDM transmission of the uplink ๐ the MPCP is implemented at the MAC control layer, and its messages are MAC control messages using the 0x8808 Ethertype ๐ฅ these messages are not forwarded out of the MAC ๐
the protocol needs a concept of time so it can schedule the uplink transmission โฐ a timestamp gets set by the OLT, stays synchronized between the network units, and gets passed along in the MPCP messages โจ that timestamp is also used to measure the RTT of each ONU ๐ฆ the OLT compensates for RTT when it generates grants for the uplink, and it works out the RTT by taking the difference between the incoming timestamp and local time ๐งฎ RTT compensation is needed because the RTT in an Access network can be pretty significant ๐ญ the standard lets the network reach a 20 km distance, which is equivalent to a 200 usec RTT (25 Kbytes of data) ๐
the TDM control happens with GATE messages ๐๏ธ these define, for each ONU, the time for transmission and the length of transmission โจ the RTT gets subtracted from the transmission time in the GATE message so the ONU's transmission time gets shifted in the opposite direction ๐
a scheduling algorithm at the OLT handles dividing the BW and controlling the transmission delay of each ONU according to its SLA ๐ that algorithm isn't defined in the [802.3ah] though, so it's up to the OLT ๐ซถ the MPCP defines a closed loop operation so the algorithm can actually be efficient ๐ ONUs can report how much BW they need using a special REPORT message ๐ฃ this means BW only gets allocated when it's requested, which works because traffic is statistically bursty ๐ฅ it also lets different ONUs have different peak BW at different times, so BW can be oversubscribed ๐ the REPORT message reports the amount of data waiting in the ONU queues ๐ฆ
the MPCP also defines a protocol for auto-discovery and registration of ONUs ๐
the registration process goes like this ๐
OLT ONU
| |
| Discovery Gate message \|
|--------------------------------------------|
| /|
| |
|/ Register Request message |
|--------------------------------------------|
|\ |
| |
| Register message |
| (assigning LLID) \|
|--------------------------------------------|
| /|
| |
| Gate message \|
|--------------------------------------------|
| /|
| |
|/ Register ACK message |
|--------------------------------------------|
|\ |
| |
| |
a new ONU requests to register by sending a REG_REQUEST message during a special discovery grant that the OLT allocates for exactly that ๐ซ more than one ONU might try during that window ๐ฌ collisions can happen because the RTT of the new ONUs isn't known yet ๐ so a random backoff mechanism gets used to schedule later registration requests and avoid those collisions ๐ฒ when the OLT gets a REG_REQUEST from an ONU and approves it, it sends a REGISTER message to that ONU that defines its LLID ๐ท๏ธ from then on, the ONU's transmission is scheduled by its LLID, and since the RTT is known, no collision can occur ๐ the ONU replies with a REGISTER_ACK message and the MPCP registration process ends ๐ฌ higher layer protocols may be needed to authenticate the ONU and let it participate in the network ๐
2.2.7. Forward Error Correction (FEC)
the FEC is defined to enhance the link budget of the PON ๐ก๏ธ every splitter attenuates the optical signal, so the number of splits and the distance are limited by the link budget ๐ that makes an FEC that improves the link budget really valuable ๐ the FEC code used is RS(239,255,8), similar to the FEC code in [ITU-T.G.975], and it improves the BER from 1E-4 to 1E-12 ๐
the FEC parity encapsulation is based on the framing of the Ethernet packet ๐ the Ethernet packets get spaced out by MAC rate adaptation, and the parity bytes get inserted after the packet in that provided space โจ
the start and end of packet codewords also define the FEC boundaries, and since they sit outside the FEC protection, they get replaced by a series of symbols to make them less vulnerable to errors ๐ก๏ธ
here's an FEC-protected frame ๐
+-------------------------------------------------------------------+
| | | | | | | |
| S_FEC | Preamble/SFD | Frame | FCS | T_FEC | Parity | T_FEC |
| | | | | | | |
+-------------------------------------------------------------------+
the FEC is added in a separate layer between the PCS and PMA layers of the [802.3] ๐งฑ
the FEC layer introduces a fixed delay in both the receive path and the transmit path โฑ๏ธ
and the FEC layer is optional ๐ซถ
2.3. Management Architecture ๐
okay bestie, so every single layer of EPON comes with its own management interface ๐ and you control it through clause 30 of the [802.3ah]. The [802.3ah] spec can be used for lots of different apps, and some clauses can be used on their own, so the IEEE management clause gives each one its own package ๐ฆ. The MIB document follows that same split โจ
Here's how the MIB groups line up with the [802.3ah] layers ๐
+===========================+
| Higher layers |
+===========================+
| 802.1D Bridge |
+===========================+
|MAC client| ... |MAC client|
+===========================+ \ +=============================+
| MAC Control - (MPCP) |----- |MpcpObjects| ... |MpcpObjects|
+===========================+ / +=============================+
| MAC | ... | MAC |
+===========================+ \ +=============================+
| P2P Emulation (P2PE) |----- |OmpEmulat | |OmpEmulat |
+===========================+ / |ionObjects | ... |ionObjects |
| | +=============================+
| GMII |
| |
+===========================+
| PCS |
+===========================+ \ +=============================+
| FEC |----- |FecObjects | ... |FecObjects |
+===========================+ / +=============================+
| PMA |
+===========================+
| PMD |
+===========================+
| |
| MDI |
| |
/===============/
/ Media /
/===============/
The ONU side is the easy one ๐ There's one logical interface and one physical interface, and each layer that the OLT can query remotely has exactly one copy โจ
The OLT is more of a main character situation ๐ It has a single physical interface plus N virtual interfaces, one for each ONU's virtual link, and one more virtual interface for the broadcast virtual link ๐ Looking at the layering diagram, the MAC layer is basically duplicated, so this document treats managing a virtual interface just like managing a physical one ๐ Each virtual link gets its own interface index, and the OLT gets one extra interface index on top of that ๐ซถ
Let's walk through it with two devices ๐ฆ The first one has two physical interfaces, usually sits at a consumer's site, and is called an "ONU modem" ๐
An "ONU modem" looks like this:
--------
ONU interface | ONU | 10 megabit interface
--------------| modem |--------------------
---------
This device ends up with 3 entries in the IF table and one IF stack entry. For example:
ifIndex=1 - interface for 10 megabit interface
ifIndex=2 - interface for the optical interface
ifIndex=200 - interface for the ONU interface
And then in the IF stack table:
ifStackHigherLayer=200, ifStackLowerLayer=2 - map between the
physical and the ONU
The second device has three physical interfaces, usually sits at the provider's site, and may be called a "headend" ๐
A "headend" looks like this:
---------
1st OLT interface | Head | gigE interface
------------------| end |--------------------
| |
------------------| |
2nd OLT interface | |
---------
With no ONUs attached, this device has 5 entries in the IF table. For example:
ifIndex=1 - interface for gigE interface
ifIndex=2 - interface for 1st optical interface
ifIndex=3 - interface for 2nd optical interface
ifIndex=265535 - interface for the 1st OLT broadcast interface
ifIndex=365535 - interface for the 2nd OLT broadcast interface
And then in the IF stack table:
ifStackHigherLayer=265535, ifStackLowerLayer=2 - map between the 1st
physical and its broadcast interface
ifStackHigherLayer=365535, ifStackLowerLayer=3 - map between the 2nd
physical and its broadcast interface
Now if two ONUs hook up to the first OLT interface, the IF table gets new entries too ๐ง For example:
ifIndex=200001 - interface for the 1st ONU of 1st OLT
ifIndex=200002 - interface for the 2nd ONU of 1st OLT
And in the IF stack table:
ifStackHigherLayer=200001, ifStackLowerLayer=2 - map between the 1st
physical and 1st ONU
ifStackHigherLayer=200002, ifStackLowerLayer=2 - map between the 1st
physical and 2nd ONU
Every physical interface gets an entry (ifIndex) in the tables of the interface MIB module [RFC2863], the MAU MIB module [RFC4836], and the Etherlike MIB module [RFC3635] ๐ On top of that, the OLT's virtual interfaces get their own entries (ifIndexes) too ๐ธ Why? The virtual interfaces are pretty distinct, since they connect to different physical ONUs from the OLT side โจ For example, a separate bad frames counter or bad octets counter for each virtual link actually means something, because ONUs can sit at different distances ๐ Honestly, it's basically like having separate physical interfaces ๐ญ
The same split shows up in this document's MIB module ๐ Every row in the tables is indexed by ifIndex, so there's one row for each virtual link ๐ฆ Some control objects are shared, so they have to hold the same value for every virtual interface (same value for each ifIndex) ๐ But most objects can be different across the N+1 logical interfaces at the OLT ๐ Every MIB group works this way ๐ซถ This is a bit different from the [802.3ah] layering diagram, which shows the P2MP layer as one single layer while duplicating the MAC and MAC client layers (see the diagram above) ๐ Still, from a management point of view, partitioning the layers per virtual link is way more convenient and neat, because the atomic managed entity is the virtual link ๐ And using the virtual link's interface index for that is super handy, since the Interface, MAU, and etherLike interfaces MIBs already use it to index the virtual link rows ๐
3. MIB Structure โจ
okay so this section is basically the map of the whole MIB ๐บ๏ธ the DOT3 EPON MIB module defines the objects used for managing the [802.3ah] Point-to-Multipoint (P2MP) interfaces, and they're sorted into four groups ๐
i) The Multi-Point Control Protocol (MPCP) MIB objects ๐ these are related to [802.3ah], clause 64, Multi-Point Control Protocol attributes. this group has two tables:
The dot3MpcpControlTable is the one for configuration and status indication, per logical link, of MPCP compliant interfaces ๐ฅ
The dot3MpcpStatTable holds the statistics objects, also per logical link, of MPCP compliant interfaces ๐
the operational mode of an OLT/ONU for these tables gets set by the dot3MpcpMode object in the dot3MpcpControlTable ๐ง
ii) The OMPEmulation MIB objects ๐ฆ these are related to [802.3ah], clause 65, point-to-point emulation attributes. also two tables:
The dot3OmpEmulationTable is for configuration and status indication, per logical links, of OMPEmulation compliant interfaces โญ
The dot3OmpEmulationStatTable is the statistics one, per logical link, of OMPEmulation compliant interfaces ๐ธ
the operational mode of an OLT/ONU here is defined by the dot3OmpEmulationType object in the dot3OmpEmulationTable ๐
iii) The FEC MIB objects ๐ these are related to [802.3ah], clause 60 and clause 65, EPON FEC attributes. just one table in this group:
The dot3EponFecTable defines the objects used for the configuration and status indication, per logical link, of FEC EPON compliant interfaces ๐ซถ
iv) The EPON extended package MIB objects ๐ these are used for configuration and status indication with extended capabilities of the EPON interfaces. this group is the biggest, with four tables:
The dot3ExtPkgControlTable defines the objects, per logical link, used for the configuration and status indication of EPON compliant interfaces ๐ฅ
The dot3ExtPkgQueueTable defines the objects, per logical link and per queue, used for the configuration and status indication of the ONU queues reported in the MPCP REPORT message, of EPON compliant interfaces ๐
The dot3ExtPkgQueueSetsTable defines the objects, per logical link, per queue, and per queue_set, used for the configuration and status indication of the ONU queue_sets reported in the MPCP REPORT message, of EPON compliant interfaces ๐
The dot3ExtPkgOptIfTable defines the objects, per logical link, used for the control and status indication of the optical interface of EPON compliant interfaces โจ
okay now the indexing, which is the part that matters for not getting confused later ๐ as the architecture section described, every row in the tables is indexed by ifIndex. specifically, there's a row for each virtual link. a few control objects are shared and have the same value across the virtual interfaces (and they should have the same value for each ifIndex), but most objects have different values for N+1 logical interfaces at the OLT. this happens for each MIB group ๐
it's a bit different from the [802.3ah] layering diagram, which shows the P2MP layer as one single layer while duplicating the MAC and MAC client layers. but from a management point of view, it's way more convenient and neat to split up the management of the layers for the virtual links, since the atomic managed entity is the virtual link โจ it's also handy to use the interface index of the virtual link for that, because it's already used to index the rows of the virtual links in the Interface, MAU, and etherLike interfaces MIBs ๐ฆ
here's an example of the MPCP control table of an OLT with 3 registered ONUs ๐ง
the table below shows the MPCP control table of ONU1 in working mode. one single row exists in the table ๐
+---------------------------+-----------------+
| MPCP control MIB object | Value |
+---------------------------+-----------------+
| ifIndex | 100 |
| dot3MpcpOperStatus | true |
| dot3MpcpAdminState | true |
| dot3MpcpMode | onu |
| dot3MpcpSyncTime | 25 |
| dot3MpcpLinkID | 1 |
| dot3MpcpRemoteMACAddress | OLT_MAC_Address |
| dot3MpcpRegistrationState | registered |
| dot3MpcpTransmitElapsed | 10 |
| dot3MpcpReceiveElapsed | 10 |
| dot3MpcpRoundTripTime | 100 |
+---------------------------+-----------------+
Table 1
OLT_MAC_Address is the MAC address of the OLT EPON interface ๐ซถ
the creation of the rows of the ONU interface happens at initialization ๐ธ
next up, the ONU's MPCP control table after initialization and before registration ๐
the table below shows the MPCP control table of ONU1 after initialization. one single row exists ๐
+---------------------------+-------------------+
| MPCP control MIB object | Value |
+---------------------------+-------------------+
| ifIndex | 100 |
| dot3MpcpOperStatus | true |
| dot3MpcpAdminState | true |
| dot3MpcpMode | onu |
| dot3MpcpSyncTime | 0 |
| dot3MpcpLinkID | 0 |
| dot3MpcpRemoteMACAddress | 00:00:00:00:00:00 |
| dot3MpcpRegistrationState | unregistered |
| dot3MpcpTransmitElapsed | 0 |
| dot3MpcpReceiveElapsed | 0 |
| dot3MpcpRoundTripTime | 0 |
+---------------------------+-------------------+
Table 2
now the OLT side ๐ the table below shows the MPCP control table of the OLT in working mode. four rows exist, all tied to the virtual links ๐
+----------------+-----------+------------+------------+------------+
| MPCP control | Value | Value | Value | Value |
| MIB object | | | | |
+----------------+-----------+------------+------------+------------+
| ifIndex | 100001 | 100002 | 100003 | 165535 |
| dot3MpcpOperSt | true | true | true | true |
| atus | | | | |
| dot3MpcpAdminS | true | true | true | true |
| tate | | | | |
| dot3MpcpMode | olt | olt | olt | olt |
| dot3MpcpSyncTi | 25 | 25 | 25 | 25 |
| me | | | | |
| dot3MpcpLinkID | 1 | 2 | 3 | 65535 |
| dot3MpcpRemote | ONU1_MAC_ | ONU2_MAC_A | ONU3_MAC_A | BRCT_MAC_A |
| MACAddress | Address | ddress | ddress | ddress |
| dot3MpcpRegist | registere | registered | registered | registered |
| rationState | d | | | |
| dot3MpcpTransm | 10 | 10 | 10 | 10 |
| itElapsed | | | | |
| dot3MpcpReceiv | 10 | 10 | 10 | 10 |
| eElapsed | | | | |
| dot3MpcpRoundT | 100 | 60 | 20 | 0 |
| ripTime | | | | |
+----------------+-----------+------------+------------+------------+
Table 3
ONU1_MAC_Address is the MAC address of ONU1 EPON interface ๐
ONU2_MAC_Address is the MAC address of ONU2 EPON interface ๐
ONU3_MAC_Address is the MAC address of ONU3 EPON interface ๐
BRCT_MAC_Address is the MAC address of the broadcast EPON interface, which is the OLT MAC address ๐
the creation of the rows of the OLT interface and the broadcast virtual interface happens at initialization โจ
the creation of rows for the virtual interfaces at the OLT happens when the link is established (ONU registers), and the deletion happens when the link is deleted (ONU deregisters) ๐ฆ
last example in this section: the MPCP control table of the OLT after initialization, before the ONUs register ๐ง
the table below shows the MPCP control table of the OLT after initialization. a single row exists here, tied to the virtual broadcast link ๐
+---------------------------+------------------+
| MPCP control MIB object | Value |
+---------------------------+------------------+
| ifIndex | 165535 |
| dot3MpcpOperStatus | true |
| dot3MpcpAdminState | true |
| dot3MpcpMode | olt |
| dot3MpcpSyncTime | 25 |
| dot3MpcpLinkID | 65535 |
| dot3MpcpRemoteMACAddress | BRCT_MAC_Address |
| dot3MpcpRegistrationState | registered |
| dot3MpcpTransmitElapsed | 10 |
| dot3MpcpReceiveElapsed | 100000 |
| dot3MpcpRoundTripTime | 0 |
+---------------------------+------------------+
Table 4
BRCT_MAC_Address is the MAC address of the broadcast EPON interface, which is the OLT MAC address ๐
4. Relation to Other MIB Modules ๐ธ
4.1. Relation to the Interfaces MIB and Ethernet-like Interfaces MIB ๐
okay so an EPON interface is a kind of Ether-like interface ๐ง this MIB module extends the objects of the Interface MIB and the Ether-like Interfaces MIB for an EPON type interface โจ
implementing this module therefore MUST require implementation of the Interfaces MIB module [RFC2863] and the Ethernet-like Interfaces MIB module [RFC3635] ๐ฅ
so each managed EPON interface gets a corresponding entry in the mandatory tables of the Ether-like MIB module found in [RFC3635], and likewise in the tables of the Interface MIB module found in [RFC2863]. each managed virtual EPON interface also gets a corresponding entry in the mandatory tables of the Ether-like MIB module found in [RFC3635], and likewise in the tables of the Interface MIB module found in [RFC2863], with a dedicated ifIndex for that interface ๐
and here's the vibe check: this document doesn't replicate any objects from those MIBs ๐ so for instance, it only defines dot3MpcpRemoteMACAddress, while assuming the local MAC address object is already defined in [RFC3635] ๐ซถ
The interface MIB module [RFC2863] defines the interface index (ifIndex) ๐. The EPON MIB tables use this ifIndex as an index, and it's how we name both the physical interface and the virtual link interfaces at the OLT โจ. The OLT interface and its virtual link interfaces are stacked together using the ifStack table from [RFC2863] and the ifInvStack table from [RFC2864] ๐ฆ. The OLT interface sits underneath every other interface attached to the virtual links, so it's the lower layer, full stop ๐.
This document defines the EPON-specific objects for an ONU interface and an OLT interface ๐. Everything in the tables is tracked per LLID, and the rows that refer to LLIDs are labelled with the ifIndex of the matching virtual link interface ๐ธ.
Now, quick heads up: each virtual interface does not get its own physical MAC address at the OLT, since they all share the same physical interface ๐. This is spelled out in [802.3ah], Section 64.1.2. So the matching object from the Ethernet-like interface MIB gets duplicated across all the virtual interfaces ๐ .
Okay, let's look at an example, an OLT with 3 registered ONUs ๐ง. First, the Interface MIB objects for an ONU in working mode:
+----------------------+--------------------------------+
| Interface MIB object | Value |
+----------------------+--------------------------------+
| ifIndex | 1 |
| ifDescr | "interface description" |
| ifType | ethernetCsmacd (6) 1000base-Px |
| ifMtu | MTU size (1522) |
| ifSpeed | 1000000000 |
| ifPhysAddress | ONU_MAC_Address |
| ifAdminStatus | up |
| ifOperStatus | Up |
| ifLastChange | ONUup_time |
| ifInOctets | ONU_octets_number |
| ifInUcastPkts | ONU_unicast_frame_number |
| ifInNUcastPkts | ONU_non_unicast_frame_number |
| ifInDiscards | ONU_discard_frame_number |
| ifInErrors | ONU_error_frame_number |
| ifInUnknownProtos | ONU_unknown_frame_number |
| ifOutOctets | ONU_octets_number |
| ifOutUcastPkts | ONU_unicast_frame_number |
| ifOutNUcastPkts | ONU_non_unicast_frame_number |
| ifOutDiscards | ONU_discard_frame_number |
| ifOutErrors | ONU_error_frame_number |
| ifOutQLen | ONU_queue_frame_number |
+----------------------+--------------------------------+
Table 5
ONU_MAC_Address is the MAC address of the ONU EPON interface ๐.
Next up, the Interface MIB objects for the ONU interface itself ๐:
+----------------------+--------------------------------+
| Interface MIB object | Value |
+----------------------+--------------------------------+
| ifIndex | 100 |
| ifDescr | "interface description" |
| ifType | ethernetCsmacd (6) 1000base-Px |
| ifMtu | MTU size (1522) |
| ifSpeed | 1000000000 |
| ifPhysAddress | ONU_MAC_Address |
| ifAdminStatus | up |
| ifOperStatus | Up |
| ifLastChange | up_time |
| ifInOctets | ONU1_octets_number |
| ifInUcastPkts | ONU1_unicast_frame_number |
| ifInNUcastPkts | ONU1_non_unicast_frame_number |
| ifInDiscards | ONU1_discard_frame_number |
| ifInErrors | ONU1_error_frame_number |
| ifInUnknownProtos | ONU1_unknown_frame_number |
| ifOutOctets | ONU1_octets_number |
| ifOutUcastPkts | ONU1_unicast_frame_number |
| ifOutNUcastPkts | ONU1_non_unicast_frame_number |
| ifOutDiscards | ONU1_discard_frame_number |
| ifOutErrors | ONU1_error_frame_number |
| ifOutQLen | ONU1_queue_frame_number |
+----------------------+--------------------------------+
Table 6
ONU_MAC_Address is the MAC address of the ONU EPON interface ๐ซถ.
Here's what gets set in the ifStack and ifInvStack tables for this example ๐ฅ.
ifStackTable:
ifStackHigherLayer=100, ifStackLowerLayer=1 - map between the
physical interface and the ONU
ifInvStackTable:
ifStackLowerLayer=1, ifStackHigherLayer=100,- map between the ONU and
the physical interface
Last but not least, the Interface MIB objects for the OLT interface ๐:
+----------------------+--------------------------------+
| Interface MIB object | Value |
+----------------------+--------------------------------+
| ifIndex | 2 |
| ifDescr | "interface description" |
| ifType | ethernetCsmacd (6) 1000base-Px |
| ifMtu | MTU size (1522) |
| ifSpeed | 1000000000 |
| ifPhysAddress | OLT_MAC_Address |
| ifAdminStatus | up |
| ifOperStatus | Up |
| ifLastChange | OLTup_time |
| ifInOctets | OLT_octets_number |
| ifInUcastPkts | OLT_unicast_frame_number |
| ifInNUcastPkts | OLT_non_unicast_frame_number |
| ifInDiscards | OLT_discard_frame_number |
| ifInErrors | OLT_error_frame_number |
| ifInUnknownProtos | OLT_unknown_frame_number |
| ifOutOctets | OLT_octets_number |
| ifOutUcastPkts | OLT_unicast_frame_number |
| ifOutNUcastPkts | OLT_non_unicast_frame_number |
| ifOutDiscards | OLT_discard_frame_number |
| ifOutErrors | OLT_error_frame_number |
| ifOutQLen | OLT_queue_frame_number |
+----------------------+--------------------------------+
Table 7
OLT_MAC_Address is the MAC address of the OLT EPON interface โจ.
Then there's the OLT interface's Interface MIB objects, tied to the virtual link interfaces ๐ฆ. This one's a big table, so buckle up ๐ง:
+----------+-------------+-------------+-------------+--------------+
| Interfac | Value | Value | Value | Value |
| eMIB | | | | |
| object | | | | |
+----------+-------------+-------------+-------------+--------------+
| ifIndex | 200001 | 200002 | 200003 | 265535 |
| ifDescr | "interface | "interface | "interface | "interface |
| | description | description | description | description" |
| | " | " | " | |
| ifType | ethernetCsm | ethernetCsm | ethernetCsm | ethernetCsma |
| | acd (6) | acd (6) | acd (6) | cd (6) |
| ifMtu | MTUsize(152 | MTUsize(152 | MTUsize(152 | MTUsize(1522 |
| | 2) | 2) | 2) | ) |
| ifSpeed | 1000000000 | 1000000000 | 1000000000 | 1000000000 |
| ifPhysAd | OLT_MAC_Add | OLT_MAC_Add | OLT_MAC_Add | OLT_MAC_Addr |
| dress | ress | ress | ress | ess |
| ifAdminS | up | up | up | up |
| tatus | | | | |
| ifOperSt | Up | Up | Up | Up |
| atus | | | | |
| ifLastCh | ONU1_up_tim | ONU2_up_tim | ONU3_up_tim | up_time |
| ange | e | e | e | |
| ifInOcte | ONU1_octets | ONU2_octets | ONU3_octets | BRCT_octets_ |
| ts | _number | _number | _number | number |
| ifInUcas | ONU1_unic_f | ONU2_unic_f | ONU3_unic_f | BRCT_unic_fr |
| tPkts | rame_num | rame_num | rame_num | ame_num |
| ifInNUca | ONU1_non_un | ONU2_non_un | ONU3_non_un | BRCT_non_uni |
| stPkts | ic_frame_nu | ic_frame_nu | ic_frame_nu | c_frame_num |
| | m | m | m | |
| ifInDisc | ONU1_disc_f | ONU2_disc_f | ONU3_disc_f | BRCT_disc_fr |
| ards | rame_num | rame_num | rame_num | ame_numr |
| ifInErro | ONU1_err_fr | ONU2_err_fr | ONU3_err_fr | BRCT_err_fra |
| rs | ame_num | ame_num | ame_num | me_num |
| ifInUnkn | ONU1_unknw_ | ONU2_unknw_ | ONU3_unknw_ | BRCT_unknw_f |
| ownProto | frame_num | frame_num | frame_num | rame_num |
| s | | | | |
| ifOutOct | ONU1_octets | ONU2_octets | ONU3_octets | BRCT_octets_ |
| ets | _number | _number | _number | number |
| ifOutUca | ONU1_unic_f | ONU2_unic_f | ONU3_unic_f | BRCT_unic_fr |
| stPkts | rame_num | rame_num | rame_num | ame_num |
| ifOutNUc | ONU1_non_un | ONU2_non_un | ONU3_non_un | BRCT_non_uni |
| astPkts | ic_frame_nu | ic_frame_nu | ic_frame_nu | c_frame_num |
| | m | m | m | |
+----------+-------------+-------------+-------------+--------------+
| Interfac | Value | Value | Value | Value |
| eMIB | | | | |
| object | | | | |
+----------+-------------+-------------+-------------+--------------+
| ifOutDis | ONU1_disc_f | ONU2_disc_f | ONU3_disc_f | BRCT_disc_fr |
| cards | rame_num | rame_num | rame_num | ame_num |
| ifOutErr | ONU1_err_fr | ONU2_err_fr | ONU3_err_fr | BRCT_err_fra |
| ors | ame_num | ame_num | ame_num | me_num |
| ifOutQLe | ONU1_queue_ | ONU2_queue_ | ONU3_queue_ | BRCt_queue_f |
| n | frame_num | frame_num | frame_num | rame_num |
+----------+-------------+-------------+-------------+--------------+
Table 8
OLT_MAC_Address is the MAC address of the OLT EPON interface ๐.
Finally, the values that get set in the ifStack and ifInvStack tables for this example ๐ธ:
ifStackTable:
ifStackHigherLayer=265535, ifStackLowerLayer=2 - map between the OLT
physical interface and its broadcast virtual interface
ifStackHigherLayer=200001, ifStackLowerLayer=2 - map between the OLT
physical interface and its virtual interface of the 1st ONU
ifStackHigherLayer=200002, ifStackLowerLayer=2 - map between the OLT
physical interface and its virtual interface of the 2nd ONU
ifStackHigherLayer=200003, ifStackLowerLayer=2 - map between the OLT
physical interface and its virtual interface of the 3rd ONU
ifInvStackTable:
ifStackLowerLayer=2, ifStackHigherLayer=265535, - map between the
broadcast interface of the OLT and the OLT physical interface
ifStackLowerLayer=2, ifStackHigherLayer=200001 - map between the OLT
virtual interface of the 1st ONU and the OLT physical interface
ifStackLowerLayer=2, ifStackHigherLayer=200002 - map between the OLT
virtual interface of the 2nd ONU and the OLT physical interface
ifStackLowerLayer=2, ifStackHigherLayer=200003 - map between the OLT
virtual interface of the 3rd ONU and the OLT physical interface
okay so the rows for the ONU interface, the OLT interface, and the OLT broadcast interface all get created during initialization ๐ง
A row for a virtual link shows up when that link gets established, which is when an ONU registers ๐ฆ And when the ONU deregisters and the virtual link is deleted, its row goes too ๐ซถ
The EPON MIB also extends the Interface MIB with its own set of counters that are specific to the EPON interface ๐ It handles those counters the same way the interface starts or stops. The interface MIB doc explains how counters can act when an interface gets re-initialized, using the ifCounterDiscontinuityTime indicator to flag that the counters have a discontinuity. For the full details, check out [RFC2863], Section 3.1.5, page 11 โจ The EPON counters should be handled in a similar manner, so bestie, keep them consistent ๐
4.2. Relation to the IEEE 802.3 MAU MIBs
The MAU types for the EPON Interface live in the amended MAU MIB document ๐ธ This doc assumes you're implementing the MAU MIB for that purpose and doesn't repeat the EPON MAU types. So implementing this module MUST require implementation of the MAU-MIB module [RFC4836]. No skipping it, periodt ๐
The ifMAU tables for EPON work a lot like what we covered in the earlier section for the Interface and Ether-like interface MIBs โจ There's a single row for the ONU in the ifMauTable. Then the OLT gets a row for each virtual link (N+1 rows total), and each one has its own ifMauIfIndex value ๐
Same as above, the rows for the ONU interface, the OLT interface, and the OLT broadcast interface are created during initialization ๐ง
Virtual link rows get created when the link is established (that's when an ONU registers) and deleted when the link is deleted (when an ONU deregisters) ๐
4.3. Relation to the EFM OAM MIB
EPON interfaces are aimed at optical access networks, and they'll most probably come with the OAM section of [802.3ah] implemented too ๐ So the EFM OAM MIB module [RFC4878] MAY be implemented when this MIB module is implemented, and it defines managed objects for the OAM layer that complement the EFM EPON MIB module โจ OAM is defined for a point-to-point link, so here it runs on the virtual links that are defined for the P2MP network. That means there's an instance for each Logical Link Identifier (LLID) of the EPON ๐ฆ And for this purpose, the ifIndex of the virtual link gets used as the ifIndex in the tables of the OAM MIB module ๐
4.4. Relation to the Bridge MIB
It's very probable that an EPON OLT will implement a bridging function above the EPON interface layer, bridging between the EPON users and the network ๐ธ Bridge functionality is specified in [802.1d]. In this setup, the virtual ports of the EPON correspond to the virtual bridge ports, and there's a direct mapping between the bridge ports and the LLIDs (the virtual EPON channels) ๐
So the bridge MIB modules ([RFC4188] and [RFC1525]) MAY be implemented when the EFM EPON MIB module is implemented for an EPON OLT, which defines managed objects for the bridge layer ๐
The values of dot1dBasePortIfIndex would correspond to the ifIndex of the virtual port (1 for LLID1, 2 for LLID2, etc.) โจ
The broadcast virtual EPON interface of the OLT has no direct mapping to a virtual bridge port, since it isn't port specific and is used for broadcast traffic ๐ซถ
5. Mapping of IEEE 802.3ah Managed Objects
This section is the mapping between the managed objects defined in this document and the attributes defined in [802.3ah], clause 30 ๐ The tables are split up into relevant groups, so you can find your way around easily ๐บ๏ธ
oMPCP managed object class (30.3.5)
+----------------------------+-------------------------+------------+
| dot3EPON MIB module object | IEEE802.3ah attribute | Reference |
+----------------------------+-------------------------+------------+
| ifIndex | aMPCPID | 30.3.5.1.1 |
| dot3MpcpOperStatus | aMPCPAdminState | 30.3.5.1.2 |
| dot3MpcpMode | aMPCPMode | 30.3.5.1.3 |
| dot3MpcpLinkID | aMPCPLinkID | 30.3.5.1.4 |
| dot3MpcpRemoteMACAddress | aMPCPRemoteMACAddress | 30.3.5.1.5 |
| dot3MpcpRegistrationState | aMPCPRegistrationState | 30.3.5.1.6 |
| dot3MpcpMACCtrlFramesTrans | aMPCPMACCtrlFramesTrans | 30.3.5.1.7 |
| mitted | mitted | |
| dot3MpcpMACCtrlFramesRecei | aMPCPMACCtrlFramesRecei | 30.3.5.1.8 |
| ved | ved | |
| dot3MpcpTxGate | aMPCPTxGate | 30.3.5.1.9 |
| dot3MpcpTxRegAck | aMPCPTxRegAck | 30.3.5.1.1 |
| | | 0 |
| dot3MpcpTxRegister | aMPCPTxRegister | 30.3.5.1.1 |
| | | 1 |
| dot3MpcpTxRegRequest | aMPCPTxRegRequest | 30.3.5.1.1 |
| | | 2 |
| dot3MpcpTxReport | aMPCPTxReport | 30.3.5.1.1 |
| | | 3 |
| dot3MpcpRxGate | aMPCPRxGate | 30.3.5.1.1 |
| | | 4 |
| dot3MpcpRxRegAck | aMPCPRxRegAck | 30.3.5.1.1 |
| | | 5 |
| dot3MpcpRxRegister | aMPCPRxRegister | 30.3.5.1.1 |
| | | 6 |
| dot3MpcpRxRegRequest | aMPCPRxRegRequest | 30.3.5.1.1 |
| | | 7 |
| dot3MpcpRxReport | aMPCPRxReport | 30.3.5.1.1 |
| | | 8 |
| dot3MpcpTransmitElapsed | aMPCPTransmitElapsed | 30.3.5.1.1 |
| | | 9 |
| dot3MpcpReceiveElapsed | aMPCPReceiveElapsed | 30.3.5.1.2 |
| | | 0 |
| dot3MpcpRoundTripTime | aMPCPRoundTripTime | 30.3.5.1.2 |
| | | 1 |
| dot3MpcpDiscoveryWindowsSe | aMPCPDiscoveryWindowsSe | 30.3.5.1.2 |
| nt | nt | 2 |
+----------------------------+-------------------------+------------+
| dot3EPON MIB module object | IEEE802.3ah attribute | Reference |
+----------------------------+-------------------------+------------+
| dot3MpcpDiscoveryTimeout | aMPCPDiscoveryTimeout | 30.3.5.1.2 |
| | | 3 |
| dot3MpcpMaximumPendingGran | aMPCPMaximumPendingGran | 30.3.5.1.2 |
| ts | ts | 4 |
| dot3MpcpAdminState | aMPCPAdminControl | 30.3.5.2.1 |
| dot3MpcpSyncTime | SyncTime | 64.3.3.2 |
+----------------------------+-------------------------+------------+
Table 9
oOMPEmulation managed object class (30.3.7)
+-------------------------------------+-----------------+-----------+
| dot3EPON MIB module object | IEEE802.3ah | Reference |
| | attribute | |
+-------------------------------------+-----------------+-----------+
| ifIndex | aOMPEmulationID | 30.3.7.1. |
| | | 1 |
| dot3OmpEmulationType | aOMPEmulationTy | 30.3.7.1. |
| | pe | 2 |
| dot3OmpEmulationSLDErrors | aSLDErrors | 30.3.7.1. |
| | | 3 |
| dot3OmpEmulationCRC8Errors | aCRC8Errors | 30.3.7.1. |
| | | 4 |
| dot3OmpEmulationGoodLLID | aGoodLLID | 30.3.7.1. |
| | | 5 |
| dot3OmpEmulationOnuPonCastLLID | aONUPONcastLLID | 30.3.7.1. |
| | | 6 |
| dot3OmpEmulationOltPonCastLLID | aOLTPONcastLLID | 30.3.7.1. |
| | | 7 |
| dot3OmpEmulationBadLLID | aBadLLID | 30.3.7.1. |
| | | 8 |
| dot3OmpEmulationBroadcastBitNotOnuL | | |
| Lid | | |
| dot3OmpEmulationOnuLLIDNotBroadcast | | |
| dot3OmpEmulationBroadcastBitPlusOnu | | |
| Llid | | |
| dot3OmpEmulationNotBroadcastBitNotO | | |
| nuLlid | | |
+-------------------------------------+-----------------+-----------+
Table 10
oMAU managed object class (30.5.1)
+--------------------------------+---------------------+------------+
| dot3EPON MIB module object | IEEE802.3ah | Reference |
| | attribute | |
+--------------------------------+---------------------+------------+
| dot3EponFecPCSCodingViolation | aPCSCodingViolation | 30.5.1.1.1 |
| | | 2 |
| dot3EponFecAbility | aFECAbility | 30.5.1.1.1 |
| | | 3 |
| dot3EponFecMode | aFECmode | 30.5.1.1.1 |
| | | 4 |
| dot3EponFecCorrectedBlocks | aFECCorrectedBlocks | 30.5.1.1.1 |
| | | 5 |
| dot3EponFecUncorrectableBlocks | aFECUncorrectableBl | 30.5.1.1.1 |
| | ocks | 6 |
| dot3EponFecBufferHeadCodingVio | | |
| lation | | |
+--------------------------------+---------------------+------------+
Table 11
6. Definitions - The DOT3 EPON MIB Module โจ
Okay bestie, the MIB module itself is up next ๐ง Here's the header, imports, and the first chunk of the module identity, which tells you who wrote it, what it's for, and what the abbreviations mean ๐
DOT3-EPON-MIB DEFINITIONS ::= BEGIN
IMPORTS
MODULE-IDENTITY, mib-2, OBJECT-TYPE, Counter32,
Integer32, Unsigned32, Counter64
FROM SNMPv2-SMI
TruthValue, MacAddress
FROM SNMPv2-TC
ifIndex
FROM IF-MIB
MODULE-COMPLIANCE, OBJECT-GROUP
FROM SNMPv2-CONF
;
dot3EponMIB MODULE-IDENTITY
LAST-UPDATED "200703290000Z" -- March 29, 2007
ORGANIZATION "IETF Ethernet Interfaces and Hub MIB Working
Group"
CONTACT-INFO
"WG charter:
http://www.ietf.org/html.charters/hubmib-charter.html
Mailing Lists:
General Discussion: hubmib@ietf.org
To Subscribe: hubmib-request@ietf.org
In Body: subscribe your_email_address
Chair: Bert Wijnen
Postal: Lucent Technologies
Schagen 33
3461 GL Linschoten
Netherlands
Tel: +31-348-407-775
E-mail: bwijnen@lucent.com
Editor: Lior Khermosh
Postal: PMC-SIERRA
Kohav Hertzelia bldg,
4 Hasadnaot St.
Hertzliya Pituach 46120,
ISRAEL
P.O.Box 2089 Hertzliya Pituach 46120 Israel
Tel: +972-9-9628000 Ext: 302
E-mail: lior_khermosh@pmc-sierra.com"
DESCRIPTION
"The objects in this MIB module are used to manage the
Ethernet in the First Mile (EFM) Ethernet Passive Optical
Network (EPON) Interfaces as defined in IEEE P802.3ah
clauses 60, 64, and 65.
The following reference is used throughout this MIB module:
[802.3ah] refers to:
Information technology - Telecommunications and
information exchange between systems - Local and
metropolitan area networks - Specific requirements -
Part 3: Carrier sense multiple access with collision
detection (CSMA/CD) access method and physical layer
specifications - Media Access Control Parameters,
Physical Layers and Management Parameters for subscriber
access networks. IEEE Std 802.3ah-2004, October 2004.
Of particular interest are clause 64 (Multi-Point Control
Protocol - MPCP), clause 65 (Point-to-Multipoint
Reconciliation Sublayer - P2MP RS), clause 60 (Ethernet
Passive Optical Network Physical Medium Dependent - EPON
PMDs), clause 30, 'Management', and clause 45, 'Management
Data Input/Output (MDIO) Interface'.
Copyright (C) The IETF Trust (2007). This version
of this MIB module is part of 4837; see the RFC itself for
full legal notices.
Key abbreviations:
BER - Bit Error Rate
BW - bandwidth
CRC - Cyclic Redundancy Check
EFM - Ethernet First Mile
EPON - Ethernet Passive Optical Network
FEC - Forward Error Correction
LLID - Logical Link Identifier
MAC - Media Access Control
Mbps - Megabit per second
MDIO - Management Data Input/Output
MPCP - Multi-Point Control Protocol
OLT - Optical Line Terminal (Server unit of the EPON)
OMP - Optical Multi-Point
ONU - Optical Network Unit (Client unit of the EPON)
P2MP - Point-to-Multipoint
PHY - Physical Layer
PMD - Physical Medium Dependent
PON - Passive Optical Network
RTT - Round Trip Time
SLD - Start of LLID Delimiter
TQ - Time Quanta
"
REVISION "200703290000Z" -- March 29, 2007
DESCRIPTION "Initial version, published as RFC 4837."
::= { mib-2 155 }
Next up are the object identifier roots: the Objects branch, the Conformance branch, and the MPCP objects branch, which is where all the MPCP stuff lives ๐ฆ
dot3EponObjects OBJECT IDENTIFIER ::= { dot3EponMIB 1}
dot3EponConformance OBJECT IDENTIFIER ::= { dot3EponMIB 2}
-- MPCP MIB modules definitions ([802.3ah], clause 30.3.5)
dot3EponMpcpObjects
OBJECT IDENTIFIER ::= { dot3EponObjects 1 }
dot3MpcpControlTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3MpcpControlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A Table of dot3 Multi-Point Control Protocol (MPCP)
MIB objects. The entries in the table are control and
status objects of the MPCP.
Each object has a row for every virtual link denoted by
the corresponding ifIndex.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff)."
::= { dot3EponMpcpObjects 1 }
dot3MpcpControlEntry OBJECT-TYPE
SYNTAX Dot3MpcpControlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the dot3 MPCP Control table.
Rows exist for an OLT interface and an ONU interface.
A row in the table is denoted by the ifIndex of the link
and it is created when the ifIndex is created.
The rows in the table for an ONU interface are created
at system initialization.
The row in the table corresponding to the OLT ifIndex
and the row corresponding to the broadcast virtual link
are created at system initialization.
A row in the table corresponding to the ifIndex of a
virtual links is created when a virtual link is
established (ONU registers) and deleted when the virtual
link is deleted (ONU deregisters)."
INDEX { ifIndex }
::= { dot3MpcpControlTable 1}
Dot3MpcpControlEntry ::=
SEQUENCE {
dot3MpcpOperStatus TruthValue,
dot3MpcpAdminState TruthValue,
dot3MpcpMode INTEGER,
dot3MpcpSyncTime Unsigned32,
dot3MpcpLinkID Unsigned32,
dot3MpcpRemoteMACAddress MacAddress,
dot3MpcpRegistrationState INTEGER,
dot3MpcpTransmitElapsed Unsigned32,
dot3MpcpReceiveElapsed Unsigned32,
dot3MpcpRoundTripTime Unsigned32,
dot3MpcpMaximumPendingGrants Unsigned32
}
The next bit is the per-object stuff for the control table: the operational status, admin state, mode, sync time, and link ID. Each one has its own little description, so read them all, they're important โจ
dot3MpcpOperStatus OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object reflects the operational state of the
Multi-Point MAC Control sublayer as defined in
[802.3ah], clause 64. When the value is true(1), the
interface will act as if the Multi-Point Control Protocol
is enabled. When the value is false(2), the interface
will act as if the Multi-Point Control Protocol is
disabled. The operational state can be changed using the
dot3MpcpAdminState object.
This object is applicable for an OLT, with the same
value for all virtual interfaces, and for an ONU."
REFERENCE "[802.3ah], 30.3.5.1.2."
::= { dot3MpcpControlEntry 1 }
dot3MpcpAdminState OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This object is used to define the admin state of the
Multi-Point MAC Control sublayer, as defined in
[802.3ah], clause 64, and to reflect its state.
When selecting the value as true(1), the Multi-Point
Control Protocol of the interface is enabled.
When selecting the value as false(2), the Multi-Point
Control Protocol of the interface is disabled.
This object reflects the administrative state of the
Multi-Point Control Protocol of the interface.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3MpcpAdminState state can lead to disabling the
Multi-Point Control Protocol on the respective interface,
leading to the interruption of service for the users
connected to the respective EPON interface.
This object is applicable for an OLT, with the same
value for all virtual interfaces, and for an ONU."
REFERENCE "[802.3ah], 30.3.5.2.1."
DEFVAL { false }
::= { dot3MpcpControlEntry 2 }
dot3MpcpMode OBJECT-TYPE
SYNTAX INTEGER {
olt(1),
onu(2)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object is used to identify the operational
state of the Multi-Point MAC Control sublayer as
defined in [802.3ah], clause 64. Reading olt(1) for an
OLT (server) mode and onu(2) for an ONU (client) mode.
This object is used to identify the operational mode
for the MPCP tables.
This object is applicable for an OLT, with the same
value for all virtual interfaces, and for an ONU."
REFERENCE "[802.3ah], 30.3.5.1.3."
DEFVAL { olt }
::= { dot3MpcpControlEntry 3 }
dot3MpcpSyncTime OBJECT-TYPE
SYNTAX Unsigned32
UNITS "TQ (16nsec)"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that reports the 'sync lock time' of the
OLT receiver in increments of Time Quanta (TQ)-16ns
as defined in [802.3ah], clauses 60, 64, and 65. The
value returned shall be (sync lock time ns)/16. If
this value exceeds (2^32-1), the value (2^32-1) shall
be returned. This object is applicable for an OLT,
with the same value for all virtual interfaces, and
for an ONU."
REFERENCE "[802.3ah], 64.3.3.2."
::= { dot3MpcpControlEntry 4 }
dot3MpcpLinkID OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that identifies the Logical Link
Identifier (LLID) associated with the MAC of the virtual
link as specified in [802.3ah], clause 65.1.3.2.2.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
The ONU and the corresponding virtual MAC of the OLT,
for the same virtual link, have the same value.
Value is assigned when the ONU registers.
Value is freed when the ONU deregisters."
REFERENCE "[802.3ah], 30.3.5.1.4."
::= { dot3MpcpControlEntry 5 }
okay bestie, we're picking up right where we left off ๐ Here's the remote MAC address object, which tells you who's on the other end of the link ๐ฆ
dot3MpcpRemoteMACAddress OBJECT-TYPE
SYNTAX MacAddress
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that identifies the source_address
parameter of the last MPCPDUs passed to the MAC Control.
This value is updated on reception of a valid frame with
1) a destination Field equal to the reserved multicast
address for MAC Control as specified in [802.3], Annex
31A; 2) the lengthOrType field value equal to the reserved
Type for MAC Control as specified in [802.3], Annex
31A; 3) an MPCP subtype value equal to the subtype
reserved for MPCP as specified in [802.3ah], Annex 31A.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
The value reflects the MAC address of the remote entity
and therefore the OLT holds a value for each LLID, which
is the MAC address of the ONU; the ONU has a single
value that is the OLT MAC address."
REFERENCE "[802.3ah], 30.3.5.1.5."
::= { dot3MpcpControlEntry 6 }
ngl this one is a little bit of a checklist ๐ The value only updates when a frame passes three checks: the destination is the reserved multicast address for MAC Control, the lengthOrType field matches the reserved MAC Control Type, and the MPCP subtype is the one reserved for MPCP. The OLT keeps one of these per LLID, and each ONU just holds the OLT's MAC. ๐ซถ
dot3MpcpRegistrationState OBJECT-TYPE
SYNTAX INTEGER {
unregistered(1),
registering(2),
registered(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that identifies the registration state
of the Multi-Point MAC Control sublayer as defined in
[802.3ah], clause 64. When this object has the
enumeration unregistered(1), the interface is
unregistered and may be used for registering a link
partner. When this object has the enumeration
registering(2), the interface is in the process of
registering a link-partner. When this object has the
enumeration registered(3), the interface has an
established link-partner.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
REFERENCE "[802.3ah], 30.3.5.1.6."
::= { dot3MpcpControlEntry 7 }
the registration state is giving friend-making ๐ฅ It has three vibes: unregistered(1) means the interface is free and can take a new link partner, registering(2) means a partner is currently being signed up, and registered(3) means there's already a partner locked in ๐
dot3MpcpTransmitElapsed OBJECT-TYPE
SYNTAX Unsigned32
UNITS "TQ (16nsec)"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that reports the interval from the last
MPCP frame transmission in increments of Time Quanta
(TQ)-16ns. The value returned shall be (interval from
last MPCP frame transmission in ns)/16. If this value
exceeds (2^32-1), the value (2^32-1) shall be returned.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
REFERENCE "[802.3ah], 30.3.5.1.19."
::= { dot3MpcpControlEntry 8 }
dot3MpcpReceiveElapsed OBJECT-TYPE
SYNTAX Unsigned32
UNITS "TQ (16nsec)"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that reports the interval from last MPCP frame
reception in increments of Time Quanta (TQ)-16ns. The
value returned shall be (interval from last MPCP frame
reception in ns)/16. If this value exceeds (2^32-1), the
value (2^32-1) shall be returned.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
REFERENCE "[802.3ah], 30.3.5.1.20."
::= { dot3MpcpControlEntry 9 }
the timers are giving stopwatch energy โฑ๏ธ Both of these count time in Time Quanta, where one TQ is 16ns. The transmit one measures time since the last MPCP frame went out, and the receive one measures time since the last MPCP frame came in. If the number gets too big to fit, it just caps at 2^32-1. no overflow drama here, it's literally just maxed out ๐
dot3MpcpRoundTripTime OBJECT-TYPE
SYNTAX Unsigned32 (0..'ffff'h)
UNITS "TQ (16nsec)"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that reports the MPCP round trip time in
increments of Time Quanta (TQ)-16ns. The value returned
shall be (round trip time in ns)/16. If this value
exceeds (2^16-1), the value (2^16-1) shall be returned.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
REFERENCE "[802.3ah], 30.3.5.1.21."
::= { dot3MpcpControlEntry 10 }
dot3MpcpMaximumPendingGrants OBJECT-TYPE
SYNTAX Unsigned32 (0..255)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that reports the maximum number of grants
that an ONU can store for handling. The maximum number
of grants that an ONU can store for handling has a
range of 0 to 255.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero."
REFERENCE "[802.3ah], 30.3.5.1.24."
::= { dot3MpcpControlEntry 11 }
round trip time is so main character ๐ฌ This one caps at 2^16-1 instead, and the pending grants object tops out at 255 ๐ธ The grants one is an ONU thing, so the OLT is supposed to be at zero there ๐
dot3MpcpStatTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3MpcpStatEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table defines the list of statistics counters of
an interface implementing the [802.3ah], clause 64 MPCP.
Each object has a row for every virtual link denoted by
the corresponding ifIndex.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff)."
::= { dot3EponMpcpObjects 2 }
dot3MpcpStatEntry OBJECT-TYPE
SYNTAX Dot3MpcpStatEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the table of statistics counters of the
[802.3ah], clause 64, MPCP interface.
Rows exist for an OLT interface and an ONU interface.
A row in the table is denoted by the ifIndex of the link
and it is created when the ifIndex is created.
The rows in the table for an ONU interface are created
at system initialization.
The row in the table corresponding to the OLT ifIndex
and the row corresponding to the broadcast virtual link
are created at system initialization.
A row in the table corresponding to the ifIndex of a
virtual link is created when a virtual link is
established (ONU registers) and deleted when the virtual
link is deleted (ONU deregisters)."
INDEX { ifIndex}
::= { dot3MpcpStatTable 1 }
Dot3MpcpStatEntry ::=
SEQUENCE {
dot3MpcpMACCtrlFramesTransmitted Counter64,
dot3MpcpMACCtrlFramesReceived Counter64,
dot3MpcpDiscoveryWindowsSent Counter32,
dot3MpcpDiscoveryTimeout Counter32,
dot3MpcpTxRegRequest Counter64,
dot3MpcpRxRegRequest Counter64,
dot3MpcpTxRegAck Counter64,
dot3MpcpRxRegAck Counter64,
dot3MpcpTxReport Counter64,
dot3MpcpRxReport Counter64,
dot3MpcpTxGate Counter64,
dot3MpcpRxGate Counter64,
dot3MpcpTxRegister Counter64,
dot3MpcpRxRegister Counter64
}
the stats table is literally a whole diary ๐ There's a row for every virtual link, and the LLID is a 2-byte register, so up to 32768 virtual links, plus a broadcast one at 0xffff. a PON usually has around 32-64 ONUs, so that's the vibe you're planning for ๐ง The entry rows show up at system initialization for the ONU side, the OLT side, and the broadcast link, and any other link's row only exists while it's registered. ok the ifIndex row lifecycle is so iconic ๐โจ
dot3MpcpMACCtrlFramesTransmitted OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of MPCP frames passed to the MAC sublayer for
transmission. This counter is incremented when a
MA_CONTROL.request service primitive is generated within
the MAC control sublayer with an opcode indicating an
MPCP frame.
This object is applicable for an OLT and an ONU. At the
OLT it has a distinct value for each virtual interface.
Discontinuities of this counter can occur at
re-initialization of the management system, and at other
times as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.7."
::= { dot3MpcpStatEntry 1 }
dot3MpcpMACCtrlFramesReceived OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of MPCP frames passed by the MAC sublayer to the
MAC Control sublayer. This counter is incremented when a
ReceiveFrame function call returns a valid frame with
1) a lengthOrType field value equal to the reserved
Type for 802.3_MAC_Control as specified in clause 31.4.1.3,
and
2) an opcode indicating an MPCP frame.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.8."
::= { dot3MpcpStatEntry 2}
dot3MpcpDiscoveryWindowsSent OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of discovery windows generated. The counter is
incremented by one for each generated discovery window.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the ONU, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.22."
::= { dot3MpcpStatEntry 3}
dot3MpcpDiscoveryTimeout OBJECT-TYPE
SYNTAX Counter32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a discovery timeout
occurs. Increment the counter by one for each discovery
processing state-machine reset resulting from timeout
waiting for message arrival.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.23."
::= { dot3MpcpStatEntry 4}
the counters are literally the receipts ๐งพ๐ The frame counters go up each time an MPCP frame is passed down to MAC or handed up to MAC Control, and the discovery counters track discovery windows and discovery timeouts. and the discontinuity thing? that's just the counters being allowed to reset when the management system reinitializes, or whenever the Interface MIB's ifCounterDiscontinuityTime says so ๐ซ
dot3MpcpTxRegRequest OBJECT-TYPE
Okay bestie, this one is a tally counter for every REGISTER_REQ MPCP frame that gets sent ๐คโจ it's giving tally marks but make it iconic ๐
dot3MpcpTxRegRequest OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a REGISTER_REQ MPCP
frame transmission occurs. Increment the counter by one
for each REGISTER_REQ MPCP frame transmitted as defined
in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.12."
::= { dot3MpcpStatEntry 5}
dot3MpcpRxRegRequest OBJECT-TYPE
The receive side of the same story ๐ฆ this one counts REGISTER_REQ frames that actually arrive, so it's the other half of the group chat ๐ฌ
dot3MpcpRxRegRequest OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a REGISTER_REQ MPCP
frame reception occurs.
Increment the counter by one for each REGISTER_REQ MPCP
frame received as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the ONU, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.17."
::= { dot3MpcpStatEntry 6}
dot3MpcpTxRegAck OBJECT-TYPE
REGISTER_ACK is the reply vibe ๐ธ this counter ticks up every time one gets sent out ๐จ
dot3MpcpTxRegAck OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a REGISTER_ACK MPCP
frame transmission occurs. Increment the counter by one
for each REGISTER_ACK MPCP frame transmitted as defined
in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.10."
::= { dot3MpcpStatEntry 7}
dot3MpcpRxRegAck OBJECT-TYPE
Now the receiving end of the REGISTER_ACK โจ same counter energy, just flipped around ๐
dot3MpcpRxRegAck OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a REGISTER_ACK MPCP
frame reception occurs.
Increment the counter by one for each REGISTER_ACK MPCP
frame received as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the ONU, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.15."
::= { dot3MpcpStatEntry 8}
dot3MpcpTxReport OBJECT-TYPE
REPORT frames are giving status update energy ๐ this one counts how many go out ๐
dot3MpcpTxReport OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a REPORT MPCP frame
transmission occurs. Increment the counter by one for
each REPORT MPCP frame transmitted as defined in
[802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.13."
::= { dot3MpcpStatEntry 9}
dot3MpcpRxReport OBJECT-TYPE
And the receive count for REPORT frames ๐ the other side of the convo ๐ซถ
dot3MpcpRxReport OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a REPORT MPCP frame
reception occurs.
Increment the counter by one for each REPORT MPCP frame
received as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the ONU, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.18."
::= { dot3MpcpStatEntry 10}
dot3MpcpTxGate OBJECT-TYPE
GATE frames are the bouncers ๐ชโจ this counter tracks every one that leaves the building ๐
dot3MpcpTxGate OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a GATE MPCP frame
transmission occurs.
Increment the counter by one for each GATE MPCP frame
transmitted as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the ONU, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.9."
::= { dot3MpcpStatEntry 11}
dot3MpcpRxGate OBJECT-TYPE
Incoming GATE frames get counted here ๐ receiving is its own whole era ๐
dot3MpcpRxGate OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a GATE MPCP frame
reception occurs.
Increment the counter by one for each GATE MPCP frame
received as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.14."
::= { dot3MpcpStatEntry 12}
dot3MpcpTxRegister OBJECT-TYPE
REGISTER frames (no _REQ, no _ACK, just vibes) ๐ this counter ticks each time one is transmitted โญ
dot3MpcpTxRegister OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a REGISTER MPCP frame
transmission occurs.
Increment the counter by one for each REGISTER MPCP
frame transmitted as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the ONU, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.11."
::= { dot3MpcpStatEntry 13}
dot3MpcpRxRegister OBJECT-TYPE
And finally the receive side of REGISTER frames ๐ง the last one in this batch, bestie ๐
dot3MpcpRxRegister OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a REGISTER MPCP frame
reception occurs.
Increment the counter by one for each REGISTER MPCP
frame received as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.5.1.16."
::= { dot3MpcpStatEntry 14}
Optical Multi Point Emulation (OMPEmulation) ๐ฆ
Okay now we're entering the OMPEmulation zone ๐ the MIB comment calls it Optical Multi Point Emulation, and this next bit sets up the object identifier and the table for it ๐
-- Optical Multi Point Emulation (OMPEmulation)
-- managed object definitions
dot3OmpEmulationObjects OBJECT IDENTIFIER ::={dot3EponObjects 2}
dot3OmpEmulationTable OBJECT-TYPE
The table is where the rows live, one for every virtual link ๐ the description is giving big "how many ONUs can fit in the PON" energy, and the number 32768 is not a typo ๐ญ
dot3OmpEmulationTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3OmpEmulationEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of dot3 OmpEmulation MIB objects. The table
contain objects for the management of the OMPEmulation
sublayer.
Each object has a row for every virtual link denoted by
the corresponding ifIndex.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff)."
::= { dot3OmpEmulationObjects 1 }
dot3OmpEmulationEntry OBJECT-TYPE
Each row is its own little main character moment ๐ this one explains exactly when rows get created and deleted, so pay attention, it's important ๐
dot3OmpEmulationEntry OBJECT-TYPE
SYNTAX Dot3OmpEmulationEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the dot3 OmpEmulation table.
Rows exist for an OLT interface and an ONU interface.
A row in the table is denoted by the ifIndex of the link
and it is created when the ifIndex is created.
The rows in the table for an ONU interface are created
at system initialization.
The row in the table corresponding to the OLT ifIndex
and the row corresponding to the broadcast virtual link
are created at system initialization.
A row in the table corresponding to the ifIndex of a
virtual links is created when a virtual link is
established (ONU registers) and deleted when the virtual
link is deleted (ONU deregisters)."
INDEX { ifIndex }
::= { dot3OmpEmulationTable 1 }
Dot3OmpEmulationEntry ::=
SEQUENCE {
dot3OmpEmulationType INTEGER
}
dot3OmpEmulationType OBJECT-TYPE
The type object tells you which mode the sublayer is in, and it starts out as unknown until the truth comes out ๐ต๏ธโโ๏ธโจ
dot3OmpEmulationType OBJECT-TYPE
SYNTAX INTEGER {
unknown(1),
olt(2),
onu(3)
}
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object that indicates the mode of operation
of the Reconciliation Sublayer for Point-to-Point
Emulation (see [802.3ah], clause 65.1). unknown(1) value
is assigned in initialization; true state or type is not
yet known. olt(2) value is assigned when the sublayer is
operating in OLT mode. onu(3) value is assigned when the
sublayer is operating in ONU mode.
This object is applicable for an OLT, with the same
value for all virtual interfaces, and for an ONU."
REFERENCE "[802.3ah], 30.3.7.1.2."
::= { dot3OmpEmulationEntry 1}
Okay bestie, the stats table is where the OMPEmulation sublayer gets its receipts ๐โจ Each row lines up with one virtual link, identified by its ifIndex, so you can track every ONU (plus that special broadcast link) in one place ๐ฆ
dot3OmpEmulationStatTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3OmpEmulationStatEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table defines the list of statistics counters of
[802.3ah], clause 65, OMPEmulation sublayer.
Each object has a row for every virtual link denoted by
the corresponding ifIndex.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff)."
::= { dot3OmpEmulationObjects 2}
Okay so the LLID is a 2-byte register ๐
with a 15-bit field plus a broadcast bit, which caps things at 32768 virtual links. In a PON you usually expect about as many links as ONUs (so roughly 32-64), plus one extra entry for the broadcast LLID, which is 0xffff ๐ง
dot3OmpEmulationStatEntry OBJECT-TYPE
SYNTAX Dot3OmpEmulationStatEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the table of statistics counters of
[802.3ah], clause 65, OMPEmulation sublayer.
Rows exist for an OLT interface and an ONU interface.
A row in the table is denoted by the ifIndex of the link
and it is created when the ifIndex is created.
The rows in the table for an ONU interface are created
at system initialization.
The row in the table corresponding to the OLT ifIndex
and the row corresponding to the broadcast virtual link
are created at system initialization.
A row in the table corresponding to the ifIndex of a
virtual links is created when a virtual link is
established (ONU registers) and deleted when the virtual
link is deleted (ONU deregisters)."
INDEX { ifIndex}
::= { dot3OmpEmulationStatTable 1 }
Rows are keyed by ifIndex ๐ ONU rows get made at system initialization, and so do the OLT row and the broadcast row. Any other virtual link row only shows up once that link is established (when the ONU registers), and it disappears when the link is deleted (when the ONU deregisters) ๐ธ
Dot3OmpEmulationStatEntry::=
SEQUENCE {
dot3OmpEmulationSLDErrors Counter64,
dot3OmpEmulationCRC8Errors Counter64,
dot3OmpEmulationBadLLID Counter64,
dot3OmpEmulationGoodLLID Counter64,
dot3OmpEmulationOnuPonCastLLID Counter64,
dot3OmpEmulationOltPonCastLLID Counter64,
dot3OmpEmulationBroadcastBitNotOnuLlid Counter64,
dot3OmpEmulationOnuLLIDNotBroadcast Counter64,
dot3OmpEmulationBroadcastBitPlusOnuLlid Counter64,
dot3OmpEmulationNotBroadcastBitNotOnuLlid Counter64
}
So that's the full cast of ten counters ๐ Now let's meet them one by one ๐
Okay first up is the SLD error counter ๐ It counts frames that don't have a valid SLD field. The counter works on both the OLT and ONU sides, and on the OLT it keeps a separate value per virtual interface. It can also reset at management system re-initialization or at other times, which you can check through ifCounterDiscontinuityTime in the Interface MIB module ๐ฆ
dot3OmpEmulationSLDErrors OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that do not contain a valid
SLD field as defined in [802.3ah], clause 65.1.3.3.1.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.7.1.3."
::= { dot3OmpEmulationStatEntry 1}
Next is the CRC-8 error counter ๐ This one is for frames that DO have a valid SLD field but fail the CRC-8 check. Same deal for who it applies to and how it can reset.
dot3OmpEmulationCRC8Errors OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that contain a valid SLD
field, as defined in [802.3ah], clause 65.1.3.3.1, but do
not pass the CRC-8 check as defined in [802.3ah], clause
65.1.3.3.3.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.7.1.4."
::= { dot3OmpEmulationStatEntry 2}
Now the BadLLID counter ๐ It counts frames that have a valid SLD field and pass CRC-8, but still get discarded because of the LLID check.
dot3OmpEmulationBadLLID OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that contain a valid SLD
field, as defined in [802.3ah], clause 65.1.3.3.1, and
pass the CRC-8 check, as defined in [802.3ah], clause
65.1.3.3.3, but are discarded due to the LLID check as
defined in [802.3ah], clause 65.1.3.3.2.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.7.1.8."
::= { dot3OmpEmulationStatEntry 3}
GoodLLID is the happy one ๐ซถ It counts frames with a valid SLD field that pass CRC-8. Nothing about the LLID check is mentioned here, so it's just the "good frames" tally.
dot3OmpEmulationGoodLLID OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that contain a valid SLD
field, as defined in [802.3ah], clause 65.1.3.3.1, and
pass the CRC-8 check as defined in [802.3ah], clause
65.1.3.3.3.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.7.1.5."
::= { dot3OmpEmulationStatEntry 4}
Next is the ONU PON-cast LLID counter ๐ This one counts frames that pass everything and also meet the ONU acceptance rules from the LLID check. Heads up, though: on the OLT, this value should be zero ๐
dot3OmpEmulationOnuPonCastLLID OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that contain a valid SLD
field, as defined in [802.3ah], clause 65.1.3.3.1,
pass the CRC-8 check, as defined in [802.3ah], clause
65.1.3.3.3, and meet the rules of acceptance for an
ONU defined in [802.3ah], clause 65.1.3.3.2.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.7.1.6."
::= { dot3OmpEmulationStatEntry 5}
The OLT PON-cast LLID counter ๐ธ It's the mirror image: same checks, but judged against the OLT's acceptance rules. On the ONU, its value should be zero.
dot3OmpEmulationOltPonCastLLID OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that contain a valid SLD
field, as defined in [802.3ah], clause 65.1.3.3.1,
pass the CRC-8 check, as defined in [802.3ah], clause
65.1.3.3.3, and meet the rules of acceptance for an
OLT defined in [802.3ah], 65.1.3.3.2.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the ONU, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
REFERENCE "[802.3ah], 30.3.7.1.7."
::= { dot3OmpEmulationStatEntry 6}
Next up is the broadcast-bit-but-not-ONU-LLID counter ๐ These are frames with the broadcast bit set in the LLID that do NOT match the ONU's LLID, and they get accepted. Also, on the OLT the value should be zero.
dot3OmpEmulationBroadcastBitNotOnuLlid OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that contain a valid SLD
field, as defined in [802.3ah], clause
65.1.3.3.1, pass the CRC-8 check, as defined in
[802.3ah], clause 65.1.3.3.3, and contain the broadcast
bit in the LLID and not the ONU's LLID (frame accepted)
as defined in [802.3ah], clause 65.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
::= { dot3OmpEmulationStatEntry 7}
Next is the ONU-LLID-but-not-broadcast counter ๐ฆ It counts frames that contain the ONU's LLID without the broadcast bit. Yep, OLT value should be zero here too.
dot3OmpEmulationOnuLLIDNotBroadcast OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that contain a valid SLD
field, as defined in [802.3ah], clause
65.1.3.3.1, pass the CRC-8 check, as defined in
[802.3ah], clause 65.1.3.3.3, and contain the ONU's LLID
as defined in [802.3ah], clause 65.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
::= { dot3OmpEmulationStatEntry 8}
BroadcastBitPlusOnuLlid is the "reflected" one ๐ It counts frames with the broadcast bit set that also match the ONU's LLID (the RFC calls this a "frame reflected"). OLT value should be zero again.
dot3OmpEmulationBroadcastBitPlusOnuLlid OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of frames received that contain a valid SLD
field, as defined in [802.3ah], clause
65.1.3.3.1, pass the CRC-8 check, as defined in
[802.3ah], clause 65.1.3.3.3, and contain the broadcast
bit in the LLID and match the ONU's LLID (frame
reflected) as defined in [802.3ah], clause 65.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
::= { dot3OmpEmulationStatEntry 9}
dot3OmpEmulationNotBroadcastBitNotOnuLlid OBJECT-TYPE SYNTAX Counter64 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "A count of frames received that contain a valid SLD field, as defined in [802.3ah], clause 65.1.3.3.1, pass the CRC-8 check, as defined in [802.3ah], clause 65.1.3.3.3, and do not contain the ONU's LLID as defined in [802.3ah], clause 65. This object is applicable for an OLT and an ONU. At the OLT, it has a distinct value for each virtual interface. At the OLT, the value should be zero. Discontinuities of this counter can occur at re-initialization of the management system and at other times, as indicated by the value of the ifCounterDiscontinuityTime object of the Interface MIB module." ::= { dot3OmpEmulationStatEntry 10}
-- FEC managed object definitions (30.5.1)
dot3EponFecObjects OBJECT IDENTIFIER ::={dot3EponObjects 3}
dot3EponFecTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot3EponFecEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table of dot3 EPON FEC management objects. The entries in the table are control and status objects and statistic counters for the FEC layer. Each object has a row for every virtual link denoted by the corresponding ifIndex. The LLID field, as defined in the [802.3ah], is a 2-byte register (15-bit field and a broadcast bit) limiting the number of virtual links to 32768. Typically the number of expected virtual links in a PON is like the number of ONUs, which is 32-64, plus an additional entry for broadcast LLID (with a value of 0xffff)." ::= { dot3EponFecObjects 1 }
dot3EponFecEntry OBJECT-TYPE SYNTAX Dot3EponFecEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry in the dot3 EPON FEC table. Rows exist for an OLT interface and an ONU interface. A row in the table is denoted by the ifIndex of the link and it is created when the ifIndex is created. The rows in the table for an ONU interface are created at system initialization. The row in the table corresponding to the OLT ifIndex and the row corresponding to the broadcast virtual link are created at system initialization. A row in the table corresponding to the ifIndex of a virtual links is created when a virtual link is established (ONU registers) and deleted when the virtual link is deleted (ONU deregisters)." INDEX { ifIndex} ::= { dot3EponFecTable 1 }
Dot3EponFecEntry ::= SEQUENCE { dot3EponFecPCSCodingViolation Counter64, dot3EponFecAbility INTEGER, dot3EponFecMode INTEGER, dot3EponFecCorrectedBlocks Counter64, dot3EponFecUncorrectableBlocks Counter64, dot3EponFecBufferHeadCodingViolation Counter64 }
dot3EponFecPCSCodingViolation OBJECT-TYPE SYNTAX Counter64 UNITS "octets" MAX-ACCESS read-only STATUS current DESCRIPTION "For a 100 Mbps operation, it is a count of the number of times an invalid code-group is received, other than the /H/ code-group. For a 1000 Mbps operation, it is a count of the number of times an invalid codegroup is received, other than the /V/ code-group. /H/ denotes a special 4b5b codeword of [802.3] 100 Mbps PCS layer (clause 24), and /V/ denotes a special 8b10b codeword of the [802.3] 1000 Mbps PCS layer (clause 36). This object is applicable for an OLT and an ONU. At the OLT, it has a distinct value for each virtual interface. Discontinuities of this counter can occur at re-initialization of the management system and at other times, as indicated by the value of the ifCounterDiscontinuityTime object of the Interface MIB module." REFERENCE "[802.3ah], 30.5.1.1.12." ::= { dot3EponFecEntry 1}
dot3EponFecAbility OBJECT-TYPE SYNTAX INTEGER { unknown(1), supported(2), unsupported(3) } MAX-ACCESS read-only STATUS current DESCRIPTION "An object that indicates the support of operation of the optional FEC sublayer of the 1000BASE-PX PHY specified in [802.3ah], clause 65.2. unknown(1) value is assigned in the initialization, for non FEC support state or type not yet known. unsupported(3) value is assigned when the sublayer is not supported. supported(2) value is assigned when the sublayer is supported. This object is applicable for an OLT, with the same value for all virtual interfaces, and for an ONU. The FEC counters will have a zero value when the interface is not supporting FEC. The counters: dot3EponFecPCSCodingViolation - not affected by FEC ability. dot3EponFecCorrectedBlocks - has a zero value when dot3EponFecAbility is unknown(1) and unsupported(3). dot3EponFecUncorrectableBlocks - has a zero value when dot3EponFecAbility is unknown(1) and unsupported(3). dot3EponFecBufferHeadCodingViolation - has a zero value when dot3EponFecAbility is unknown(1) and unsupported(3)." REFERENCE "[802.3ah], 30.5.1.1.13." ::= { dot3EponFecEntry 2}
dot3EponFecMode OBJECT-TYPE SYNTAX INTEGER { unknown(1), disabled(2), enabled(3) } MAX-ACCESS read-write STATUS current DESCRIPTION "An object that defines the mode of operation of the optional FEC sublayer of the 1000BASE-PX PHY, specified in [802.3ah], clause 65.2, and reflects its state. A GET operation returns the current mode of operation of the PHY. A SET operation changes the mode of operation of the PHY to the indicated value. unknown(1) value is assigned in the initialization for non FEC support state or type not yet known.
disabled(2) value is assigned when the FEC sublayer is operating in disabled mode. enabled(3) value is assigned when the FEC sublayer is operating in FEC mode. The write operation is not restricted in this document and can be done at any time. Changing dot3EponFecMode state can lead to disabling the Forward Error Correction on the respective interface, which can lead to a degradation of the optical link, and therefore may lead to an interruption of service for the users connected to the respective EPON interface. This object is applicable for an OLT and an ONU. At the OLT, it has a distinct value for each virtual interface. The counting of the FEC counters will stop when the FEC of the interface is disabled. The counters: dot3EponFecPCSCodingViolation - not affected by FEC mode. dot3EponFecCorrectedBlocks - stops counting when Rx_FEC is not enabled. (unknown(1) and disabled(2)). dot3EponFecUncorrectableBlocks - stops counting when Rx_FEC is not enabled (unknown(1) and disabled(2)). dot3EponFecBufferHeadCodingViolation - stops counting when Rx_FEC is not enabled (unknown(1) and disabled(2)). The object: dot3EponFecAbility - indicates the FEC ability and is not affected by the dot3EponFecMode object." REFERENCE "[802.3ah], 30.5.1.1.14." DEFVAL { unknown } ::= { dot3EponFecEntry 3}
dot3EponFecCorrectedBlocks OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "For 10PASS-TS, 2BASE-TL, and 1000BASE-PX PHYs, it is a count of corrected FEC blocks. This counter will not increment for other PHY Types. Increment the counter by one for each received block that is corrected by the FEC function in the PHY. This object is applicable for an OLT and an ONU. At the OLT, it has a distinct value for each virtual interface. Discontinuities of this counter can occur at re-initialization of the management system and at other times, as indicated by the value of the ifCounterDiscontinuityTime object of the Interface MIB module." REFERENCE "[802.3ah], 30.5.1.1.15." ::= { dot3EponFecEntry 4}
dot3EponFecUncorrectableBlocks OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "For 10PASS-TS, 2BASE-TL, and 1000BASE-PX PHYs, it is a count of uncorrectable FEC blocks. This counter will not increment for other PHY Types. Increment the counter by one for each FEC block that is determined to be uncorrectable by the FEC function in the PHY. This object is applicable for an OLT and an ONU. At the OLT, it has a distinct value for each virtual interface. Discontinuities of this counter can occur at re-initialization of the management system and at other times, as indicated by the value of the ifCounterDiscontinuityTime object of the Interface MIB module." REFERENCE "[802.3ah], 30.5.1.1.16." ::= { dot3EponFecEntry 5}
dot3EponFecBufferHeadCodingViolation OBJECT-TYPE SYNTAX Counter64 UNITS "octets" MAX-ACCESS read-only STATUS current DESCRIPTION "For a 1000 Mbps operation, it is a count of the number of invalid code-group received directly from the link. The value has a meaning only in 1000 Mbps mode and it is zero otherwise. This object is applicable for an OLT and an ONU. At the OLT, it has a distinct value for each virtual interface. Discontinuities of this counter can occur at re-initialization of the management system and at other times, as indicated by the value of the ifCounterDiscontinuityTime object of the Interface MIB module." ::= { dot3EponFecEntry 6}
-- ExtendedPackage managed object definitions
dot3ExtPkgObjects OBJECT IDENTIFIER ::={dot3EponObjects 4} dot3ExtPkgControlObjects OBJECT IDENTIFIER ::= { dot3ExtPkgObjects 1}
okay bestie, we're officially in the Extended Package era ๐ ๐ this part is all about the control table, which is where the EPON interface gets its knobs and switches. let's go ๐ฆ
dot3ExtPkgControlTable
so the control table is basically a table of control and status objects for an EPON interface, and they're bundled into an extended package on top of the clause 30 stuff from [802.3ah] ๐ง every virtual link gets its own row, keyed by its ifIndex. the LLID field is a 2-byte register (15 bits plus a broadcast bit), so you can have up to 32768 virtual links, but a PON usually only has like 32 to 64 ONUs, plus one extra row for the broadcast LLID (0xffff) ๐
dot3ExtPkgControlTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3ExtPkgControlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of Extended package Control management
objects. Entries in the table are control and status
indication objects of an EPON interface, which are
gathered in an extended package as an addition to the
objects based on the [802.3ah], clause 30, attributes.
Each object has a row for every virtual link denoted by
the corresponding ifIndex.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff)."
::= { dot3ExtPkgControlObjects 1 }
dot3ExtPkgControlEntry
this is the row itself ๐ธ there are rows for both the OLT and the ONU interface. the row's ifIndex is created with the ifIndex, and the ONU rows and the OLT and broadcast rows show up at system initialization. a virtual link's row only appears when an ONU registers, and it's deleted when that ONU deregisters, so it's giving dynamic ๐
dot3ExtPkgControlEntry OBJECT-TYPE
SYNTAX Dot3ExtPkgControlEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the Extended package Control table.
Rows exist for an OLT interface and an ONU interface.
A row in the table is denoted by the ifIndex of the link
and it is created when the ifIndex is created.
The rows in the table for an ONU interface are created
at system initialization.
The row in the table corresponding to the OLT ifIndex
and the row corresponding to the broadcast virtual link
are created at system initialization.
A row in the table corresponding to the ifIndex of a
virtual links is created when a virtual link is
established (ONU registers) and deleted when the virtual
link is deleted (ONU deregisters)."
INDEX { ifIndex}
::= { dot3ExtPkgControlTable 1 }
Dot3ExtPkgControlEntry
and here's the sequence that lists every column in a row, so you can see the whole cast at once โจ
Dot3ExtPkgControlEntry ::=
SEQUENCE {
dot3ExtPkgObjectReset INTEGER,
dot3ExtPkgObjectPowerDown TruthValue,
dot3ExtPkgObjectNumberOfLLIDs Unsigned32,
dot3ExtPkgObjectFecEnabled INTEGER,
dot3ExtPkgObjectReportMaximumNumQueues Unsigned32,
dot3ExtPkgObjectRegisterAction INTEGER
}
dot3ExtPkgObjectReset
this one is the reset button ๐ writing running(1) puts the interface into running mode, and reset(2) sends it into reset mode. heads up though: the interface can be unavailable during a reset and data can get lost, and the write isn't restricted by this document, so it can happen any time. the good news is that at the OLT, each virtual interface has its own value, so resetting one malfunctioning virtual link won't touch the other virtual interfaces or the physical interface ๐ซถ counters can get discontinuities, similar to reinitializing the management system, and that should be flagged with ifCounterDiscontinuityTime from the Interface MIB module.
dot3ExtPkgObjectReset OBJECT-TYPE
SYNTAX INTEGER {
running(1),
reset(2)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This object is used to reset the EPON interface. The
interface may be unavailable while the reset occurs and
data may be lost.
Setting this object to running(1) will cause the
interface to enter into running mode. Setting this
object to reset(2) will cause the interface to go into
reset mode. When getting running(1), the interface is in
running mode. When getting reset(2), the interface is in
reset mode.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgObjectReset state can lead to a reset of the
respective interface, leading to an interruption of
service for the users connected to the respective EPON
interface.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
A reset for a specific virtual interface resets only
this virtual interface and not the physical interface.
Thus, a virtual link that is malfunctioning can be
reset without affecting the operation of other virtual
interfaces.
The reset can cause Discontinuities in the values of the
counters of the interface, similar to re-initialization
of the management system. Discontinuity should be
indicated by the ifCounterDiscontinuityTime object of
the Interface MIB module."
DEFVAL { running }
::= { dot3ExtPkgControlEntry 1 }
dot3ExtPkgObjectPowerDown
this is the power switch ๐ true(1) powers the interface down and false(2) brings it back out of power down. same deal as reset: the interface can be unavailable and data may be lost, and writes aren't restricted. it's per virtual interface at the OLT too, so you can power a single virtual link down and back up without disrupting the others ๐ and it only matters when the admin state is active, as set by dot3MpcpAdminState.
dot3ExtPkgObjectPowerDown OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"This object is used to power down the EPON interface.
The interface may be unavailable while the power down
occurs and data may be lost.
Setting this object to true(1) will cause the interface
to enter into power down mode. Setting this object to
false(2) will cause the interface to go out of power
down mode. When getting true(1), the interface is in
power down mode. When getting false(2), the interface is
not in power down mode.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgObjectPowerDown state can lead to a power down
of the respective interface, leading to an interruption
of service of the users connected to the respective EPON
interface.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
A power down/up of a specific virtual interface affects
only the virtual interface and not the physical
interface. Hence a virtual link, which needs a certain
handling, can be powered down and then powered up without
disrupting the operation of other virtual interfaces.
The object is relevant when the admin state of the
interface is active as set by the dot3MpcpAdminState."
DEFVAL { false }
::= { dot3ExtPkgControlEntry 2 }
dot3ExtPkgObjectNumberOfLLIDs
this one is read-only, and it's just a head count ๐งฎ it tells you how many LLIDs are registered, starting at 0. at the OLT it's the same value across all virtual interfaces, and at an ONU it's always one. the LLID math is the same as before, so no surprises there โจ
dot3ExtPkgObjectNumberOfLLIDs OBJECT-TYPE
SYNTAX Unsigned32
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A read only object that indicates the number of
registered LLIDs. The initialization value is 0.
This object is applicable for an OLT with the same
value for all virtual interfaces and for an ONU.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff). At the ONU the
number of LLIDs for an interface is one."
::= { dot3ExtPkgControlEntry 3 }
dot3ExtPkgObjectFecEnabled
okay this is the FEC mode switch and it is a whole vibe ๐ฅ it has four settings: noFecEnabled(1), fecTxEnabled(2), fecRxEnabled(3), and fecTxRxEnabled(4). these extend the modes already defined in dot3EponFecMode. the FEC counters all look at the receive path, so they stop when FEC receive mode is off (that's the fecRxEnabled(3) and fecTxRxEnabled(4) values being the "on" ones, so mind the wording). here's the breakdown:
dot3EponFecPCSCodingViolationis not affected by FEC mode at all ๐dot3EponFecCorrectedBlocks,dot3EponFecUncorrectableBlocks, anddot3EponFecBufferHeadCodingViolationstop counting when Rx_FEC isn't enabled, which isnoFecEnabled(1)andfecTxEnabled(2)
and the objects that are not affected by the mode are:
dot3EponFecAbility, which shows the FEC ability and ignores the modedot3EponFecMode, which shows the FEC mode for RX and TX combined
warning bestie ๐จ writing this object is not restricted by this document and can happen any time. turning FEC off can degrade the optical link, which can interrupt service for users on that EPON interface. so don't just flip it for fun ๐ญ
dot3ExtPkgObjectFecEnabled OBJECT-TYPE
SYNTAX INTEGER {
noFecEnabled(1),
fecTxEnabled(2),
fecRxEnabled(3),
fecTxRxEnabled(4)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"An object defining the FEC mode of operation of the
interface, and indicating its state. The modes defined in
this object are extensions to the FEC modes defined in
the dot3EponFecMode object.
When noFECEnabled(1), the interface does not enable FEC
mode.
When fecTxEnabled(2), the interface enables the FEC
transmit mode.
When fecRxEnabled(3), the interface enables the FEC
receive mode.
When fecTxRxEnabled(4), the interface enables the FEC
transmit and receive mode.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
The FEC counters are referring to the receive path. The
FEC counters will stop when the FEC receive mode of the
interface is disabled, as defined by fecRxEnabled(3)
and fecTxRxEnabled(4) values.
The counters:
dot3EponFecPCSCodingViolation - not affected by FEC
mode.
dot3EponFecCorrectedBlocks - stops counting when
Rx_FEC is not enabled (noFecEnabled(1) and
fecTxEnabled(2)).
dot3EponFecUncorrectableBlocks - stops counting when
Rx_FEC is not enabled (noFecEnabled(1) and
fecTxEnabled(2)).
dot3EponFecBufferHeadCodingViolation - stops counting
when Rx_FEC is not enabled (noFecEnabled(1) and
fecTxEnabled(2)).
The objects:
dot3EponFecAbility - indicates the FEC ability and is
not affected by the FEC mode.
dot3EponFecMode - indicates the FEC mode for combined RX
and TX.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgObjectFecEnabled state can lead to disabling
the Forward Error Correction on the respective interface,
which can lead to a degradation of the optical link, and
therefore may lead to an interruption of service for the
users connected to the respective EPON interface."
DEFVAL { noFecEnabled }
::= { dot3ExtPkgControlEntry 4 }
dot3ExtPkgObjectReportMaximumNumQueues
this one caps how many queues can show up in a REPORT message, as defined in [802.3ah] clause 64 ๐ฌ it's read-only, the default is 0, and it's set per virtual interface on the OLT. the valid range is 0 to 7, so it's a tiny little number ๐ check the queue table if you want the deets.
dot3ExtPkgObjectReportMaximumNumQueues OBJECT-TYPE
SYNTAX Unsigned32 (0..7)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object, that defines the maximal number of queues in
the REPORT message as defined in [802.3ah], clause 64. For
further information please see the description of the
queue table.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
DEFVAL { 0 }
::= { dot3ExtPkgControlEntry 5 }
dot3ExtPkgObjectRegisterAction
last but not least, this is the registration control ๐ฏ writing to it changes the registration state, and reading it gives you the current state. it's reflected here and also in dot3MpcpRegistrationState. the values are none(1) for an unknown state, register(2) for a registered LLID, deregister(3) for a deregistered LLID, and reregister(4) for an LLID that's reregistering. when you write, the interface follows [802.3ah]: none(1) does nothing, register(2) registers an LLID that was requested to register (it goes into registering mode, which is registering(2) in dot3MpcpRegistrationState), and deregister(3) deregisters an LLID that's currently registered (registered(3) in dot3MpcpRegistrationState). this part of the description is where the excerpt stops for now, so the rest comes in the next part ๐ซถ
dot3ExtPkgObjectRegisterAction OBJECT-TYPE
SYNTAX INTEGER {
none(1),
register(2),
deregister(3),
reregister(4)
}
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"An object configuring the registration state of an
interface, and indicating its registration state.
Write operation changes the registration state to its new
value.
Read operation returns the value of the state.
The registration state is reflected in this object and in
the dot3MpcpRegistrationState object.
none(1) indicates an unknown state,
register(2) indicates a registered LLID,
deregister(3) indicates a deregistered LLID,
reregister(4) indicates an LLID that is reregistering.
The following list describes the operation of the
interface, as specified in the [802.3ah], when a write
operation is setting a value.
none(1) - not doing any action.
register(2) - registering an LLID that has been requested
for registration (The LLID is in registering mode.
dot3MpcpRegistrationState - registering(2) ).
deregister(3) - deregisters an LLID that is registered
(dot3MpcpRegistrationState - registered(3) ).
reregister(4) - reregister an LLID that is registered
(dot3MpcpRegistrationState - registered(3) ).
The behavior of an ONU and OLT interfaces, at each one
of the detailed operation at each state, is described in
the registration state machine of figure 64-22,
[802.3ah].
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgObjectRegisterAction state can lead to a change
in the registration state of the respective interface
leading to a deregistration and an interruption of
service of the users connected to the respective EPON
interface."
DEFVAL { none }
::= { dot3ExtPkgControlEntry 6 }
Okay, so the last bit of dot3ExtPkgObjectRegisterAction is the reregister(4) option ๐. Reregistering an LLID that's already registered is a whole thing, and the object says the ONU and OLT behaviour at each state lives in the registration state machine of figure 64-22 in [802.3ah] ๐ง. Also, changing this object can knock the interface out of registration, which means deregistration and users losing service on that EPON interface. So be careful with the write access, bestie ๐ญ. It's applicable to both OLT and ONU, and at the OLT every virtual interface gets its own value ๐.
Next up is the queue table, which is giving report-message energy โจ.
dot3ExtPkgQueueTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3ExtPkgQueueEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of the extended package objects for queue
management. The [802.3ah] MPCP defines a report message
of the occupancy of the transmit queues for the feedback
BW request from the ONUs. These queues serve the uplink
transmission of the ONU and data is gathered there until
the ONU is granted for transmission.
The management table of the queues is added here mainly
to control the reporting and to gather some statistics
of their operation. This table is not duplicating
existing management objects of bridging queues,
specified in [802.1d], since the existence of a
dedicated transmit queuing mechanism is implied in the
[802.3ah], and the ONU may be a device that is not a
bridge with embedded bridging queues.
The format of the REPORT message, as specified
in [802.3], is presented below:
+-----------------------------------+
| Destination Address |
+-----------------------------------+
| Source Address |
+-----------------------------------+
| Length/Type |
+-----------------------------------+
| OpCode |
+-----------------------------------+
| TimeStamp |
+-----------------------------------+
| Number of queue Sets |
+-----------------------------------+ /|\
| Report bitmap | |
+-----------------------------------+ |
| Queue 0 report | |
+-----------------------------------+ | repeated for
| Queue 1 report | | every
+-----------------------------------+ | queue_set
| Queue 2 report | |
+-----------------------------------+ |
| Queue 3 report | |
+-----------------------------------+ |
| Queue 4 report | |
+-----------------------------------+ |
| Queue 5 report | |
+-----------------------------------+ |
| Queue 6 report | |
+-----------------------------------+ |
| Queue 7 report | |
+-----------------------------------+ \|/
| Pad/reserved |
+-----------------------------------+
| FCS |
+-----------------------------------+
The 'Queue report' field reports the occupancy of each
uplink transmission queue.
The number of queue sets defines the number of the
reported sets, as would be explained in the description
of the dot3ExtPkgQueueSetsTable table. For each set the
report bitmap defines which queue is present in the
report, meaning that although the MPCP REPORT message
can report up to 8 queues in a REPORT message, the
actual number is flexible. The Queue table has a
variable size that is limited by the
dot3ExtPkgObjectReportMaximumNumQueues object, as an
ONU can have fewer queues to report.
The entries in the table are control and status
indication objects for managing the queues of an EPON
interface that are gathered in an extended package as
an addition to the objects that are based on the
[802.3ah] attributes.
Each object has a row for every virtual link and for
every queue in the report.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff).
The number of queues is between 0 and 7 and limited by
dot3ExtPkgObjectReportMaximumNumQueues."
::= { dot3ExtPkgControlObjects 2 }
The dot3ExtPkgQueueTable is the queue management table ๐ธ. The MPCP REPORT message lets ONUs tell the OLT how full their uplink transmit queues are, so they can ask for bandwidth, and this table is for controlling that reporting and tracking a few stats ๐. It isn't duplicating the bridge queue objects from [802.1d], because the ONU might not be a bridge at all ๐. The diagram shows the REPORT frame layout, with the queue report repeated for every queue set. The number of queues is between 0 and 7, and it's capped by dot3ExtPkgObjectReportMaximumNumQueues. The table gets a row for every virtual link and every queue in the report ๐ . The LLID is a 2-byte field, a 15-bit value plus a broadcast bit, so you can have up to 32768 virtual links. In a typical PON you'd expect around 32 to 64 of them, plus one extra entry for the broadcast LLID, which is 0xffff ๐ฆ.
Now the entry itself, which is the main character of the table ๐.
dot3ExtPkgQueueEntry OBJECT-TYPE
SYNTAX Dot3ExtPkgQueueEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the Extended package Queue table. At the
OLT, the rows exist for each ifIndex and dot3QueueIndex.
At the ONU, rows exist for the single ifIndex for each
dot3QueueIndex.
Rows in the table are created when the ifIndex of the
link is created. A set of rows per queue are added for
each ifIndex, denoted by the dot3QueueIndex.
A set of rows per queue in the table, for an ONU
interface, are created at the system initialization.
A set of rows per queue in the table, corresponding to
the OLT ifIndex and a set of rows per queue
corresponding to the broadcast virtual link, are
created at the system initialization.
A set of rows per queue in the table, corresponding to
the ifIndex of a virtual link, are created when the
virtual link is established (ONU registers), and deleted
when the virtual link is deleted (ONU deregisters)."
INDEX { ifIndex, dot3QueueIndex }
::= { dot3ExtPkgQueueTable 1 }
The dot3ExtPkgQueueEntry is indexed by ifIndex and dot3QueueIndex โจ. At the OLT you get rows for each ifIndex and each queue, and at the ONU you get rows for its single ifIndex, one per queue ๐ง. At the OLT, the rows for the OLT ifIndex and for the broadcast virtual link are made at system initialization. Rows for a virtual link get created when that link is established, meaning when the ONU registers, and deleted when the ONU deregisters ๐ญ. So the rows follow the registration lifecycle, which is sooo iconic ๐.
Next is the SEQUENCE that lists the columns of each row ๐.
Dot3ExtPkgQueueEntry ::=
SEQUENCE {
dot3QueueIndex Unsigned32,
dot3ExtPkgObjectReportNumThreshold Unsigned32,
dot3ExtPkgObjectReportMaximumNumThreshold Unsigned32,
dot3ExtPkgStatTxFramesQueue Counter64,
dot3ExtPkgStatRxFramesQueue Counter64,
dot3ExtPkgStatDroppedFramesQueue Counter64
}
Here's the column list: the queue index, the reporting threshold numbers, and three frame counters: transmitted, received, and dropped ๐.
Now the index column, dot3QueueIndex ๐ฆ.
dot3QueueIndex OBJECT-TYPE
SYNTAX Unsigned32 (0..7)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An object that identifies an index for the queue table
reflecting the queue index of the queues that are
reported in the MPCP REPORT message as defined in
[802.3ah], clause 64.
The number of queues is between 0 and 7, and limited by
dot3ExtPkgObjectReportMaximumNumQueues."
::= { dot3ExtPkgQueueEntry 1 }
dot3QueueIndex is the index for the queue table, and its values run from 0 to 7 ๐. It matches the queues reported in the MPCP REPORT message from [802.3ah] clause 64, and it's still capped by dot3ExtPkgObjectReportMaximumNumQueues ๐ .
Next is the threshold count, which you can read and write ๐ฅ.
dot3ExtPkgObjectReportNumThreshold OBJECT-TYPE
SYNTAX Unsigned32 (0..7)
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"An object that defines the number of thresholds for each
queue in the REPORT message as defined in [802.3ah],
clause 64.
Each queue_set reporting will provide information on the
queue occupancy of frames below the matching Threshold.
Read operation reflects the number of thresholds.
Write operation sets the number of thresholds for each
queue.
The write operation is not restricted in this document
and can be done at any time. Value cannot exceed the
maximal value defined by the
dot3ExtPkgObjectReportMaximumNumThreshold object.
Changing dot3ExtPkgObjectReportNumThreshold can lead to
a change in the reporting of the ONU interface and
therefore to a change in the bandwidth allocation of the
respective interface. This change may lead a degradation
or an interruption of service of the users connected to
the respective EPON interface.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface
and for each queue. At the ONU, it has a distinct value
for each queue."
DEFVAL { 0 }
::= { dot3ExtPkgQueueEntry 2 }
dot3ExtPkgObjectReportNumThreshold sets how many thresholds each queue gets in the REPORT message ๐. Each queue set reports how much of the queue holds frames below its matching threshold. You can read it or write it at any time in this document, but it can't go above dot3ExtPkgObjectReportMaximumNumThreshold ๐ฌ. Changing it can shift the ONU's reporting, and that can change bandwidth allocation, which might cause degradation or even an interruption for the users on that EPON interface. Handle with care, bestie ๐ซถ. It's for both OLT and ONU, with a value per virtual interface and per queue at the OLT, and per queue at the ONU ๐.
Now the read-only maximum ๐ธ.
dot3ExtPkgObjectReportMaximumNumThreshold OBJECT-TYPE
SYNTAX Unsigned32 (0..7)
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"An object, that defines the maximal number of thresholds
for each queue in the REPORT message as defined in
[802.3ah], clause 64. Each queue_set reporting will
provide information on the queue occupancy of frames
below the matching Threshold.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface
and for each queue. At the ONU, it has a distinct value
for each queue."
DEFVAL { 0 }
::= { dot3ExtPkgQueueEntry 3 }
dot3ExtPkgObjectReportMaximumNumThreshold is the read-only ceiling for that threshold count ๐ฆ. It's the maximum number of thresholds per queue in the REPORT message, and it has the same per-interface and per-queue setup for OLT and ONU ๐.
Last but definitely not least, the transmitted frame counter ๐.
dot3ExtPkgStatTxFramesQueue OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a frame transmission
occurs from the corresponding 'Queue'.
Increment the counter by one for each frame transmitted,
which is an output of the 'Queue'.
The 'Queue' marking matches the REPORT MPCP message
Queue field as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface
and for each queue. At the ONU, it has a distinct value
for each queue.
At the OLT the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
::= { dot3ExtPkgQueueEntry 4}
dot3ExtPkgStatTxFramesQueue is a Counter64 in frames that goes up by one each time a frame comes out of its queue ๐. Its queue marking matches the Queue field in the REPORT message from [802.3ah] clause 64. It has a value per virtual interface and per queue at the OLT, and per queue at the ONU. At the OLT, the value is supposed to be zero, which is giving very specific energy ๐. Discontinuities can happen when the management system re-initializes and at other times, and you can check ifCounterDiscontinuityTime in the Interface MIB module to see when that happened ๐ง.
okay bestie, we're picking right back up with the queue stats ๐โจ
Here's the receive counter for each queue. It's giving precision ๐
dot3ExtPkgStatRxFramesQueue OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a frame reception
occurs from the corresponding 'Queue'.
Increment the counter by one for each frame received,
which is an input to the corresponding 'Queue'.
The 'Queue' marking matches the REPORT MPCP message
Queue field as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface
and for each queue. At the ONU, it has a distinct value
for each queue.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
::= { dot3ExtPkgQueueEntry 5}
dot3ExtPkgStatDroppedFramesQueue OBJECT-TYPE
SYNTAX Counter64
UNITS "frames"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"A count of the number of times a frame drop
occurs from the corresponding 'Queue'.
Increment the counter by one for each frame dropped
from the corresponding 'Queue'.
The 'Queue' marking matches the REPORT MPCP message
Queue field as defined in [802.3ah], clause 64.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface
and for each queue. At the ONU, it has a distinct value
for each queue.
At the OLT, the value should be zero.
Discontinuities of this counter can occur at
re-initialization of the management system and at other
times, as indicated by the value of the
ifCounterDiscontinuityTime object of the Interface MIB
module."
::= { dot3ExtPkgQueueEntry 6}
dot3ExtPkgQueueSetsTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3ExtPkgQueueSetsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"A table of Extended package objects used for the
management of the queue_sets. Entries are control and
status indication objects of an EPON interface, which
are gathered in an extended package as an addition to
the objects based on the [802.3ah] attributes. The
objects in this table are specific for the queue_sets,
which are reported in the MPCP REPORT message as defined
in [802.3ah], clause 64.
The [802.3ah] MPCP defines a report message of the
occupancy of the transmit queues for the feedback BW
request from the ONUs. These queues serve the uplink
transmission of the ONU and data is gathered there until
the ONU is granted for transmission.
The management table of the queues_sets is added here
mainly to control the reporting and to gather some
statistics of their operation. This table is not
duplicating existing management objects of bridging
queues, specified in [802.1d], since the existence of a
dedicated transmit queuing mechanism is implied in the
[802.3ah], and the ONU may be a device that is not a
bridge with embedded bridging queues.
The format of the REPORT message, as specified
in [802.3], is presented below:
+-----------------------------------+
| Destination Address |
+-----------------------------------+
| Source Address |
+-----------------------------------+
| Length/Type |
+-----------------------------------+
| OpCode |
+-----------------------------------+
| TimeStamp |
+-----------------------------------+
| Number of queue Sets |
+-----------------------------------+ /|\
| Report bitmap | |
+-----------------------------------+ |
| Queue 0 report | |
+-----------------------------------+ | repeated for
| Queue 1 report | | every
+-----------------------------------+ | queue_set
| Queue 2 report | |
+-----------------------------------+ |
| Queue 3 report | |
+-----------------------------------+ |
| Queue 4 report | |
+-----------------------------------+ |
| Queue 5 report | |
+-----------------------------------+ |
| Queue 6 report | |
+-----------------------------------+ |
| Queue 7 report | |
+-----------------------------------+ \|/
| Pad/reserved |
+-----------------------------------+
| FCS |
+-----------------------------------+
As can be seen from the message format, the ONU
interface reports of the status of up to 8 queues
and it can report in a single MPCP REPORT message
of a few sets of queues.
The number of queue_sets defines the number of the
reported sets, and it can reach a value of up to 8.
It means that an ONU can hold a variable number of
sets between 0 and 7.
The dot3ExtPkgQueueSetsTable table has a variable
queue_set size that is limited by the
dot3ExtPkgObjectReportMaximumNumThreshold object as an
ONU can have fewer queue_sets to report.
The 'Queue report' field reports the occupancy of each
uplink transmission queue. The queue_sets can be used to
report the occupancy of the queues in a few levels as to
allow granting, in an accurate manner, of only part of
the data available in the queues. A Threshold is
defined for each queue_set to define the level of the
queue that is counted for the report of the occupancy.
The threshold is reflected in the queue_set table by the
dot3ExtPkgObjectReportThreshold object.
For each queue set, the report bitmap defines which
queues are present in the report, meaning that
although the MPCP REPORT message can report of up to 8
queues in a REPORT message, the actual number is
flexible.
The dot3ExtPkgQueueSetsTable table has a variable queue
size that is limited by the
dot3ExtPkgObjectReportMaximumNumQueues object as an ONU
can have fewer queues to report.
Each object has a row for every virtual link, for each
queue in the report and for each queue_set in the queue.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff).
The number of queues is between 0 and 7 and limited by
dot3ExtPkgObjectReportMaximumNumQueues.
The number of queues_sets is between 0 and 7 and limited
by dot3ExtPkgObjectReportMaximumNumThreshold."
::= { dot3ExtPkgControlObjects 3 }
dot3ExtPkgQueueSetsEntry OBJECT-TYPE
SYNTAX Dot3ExtPkgQueueSetsEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the Extended package queue_set table. At
the OLT, the rows exist for each ifIndex,
dot3QueueSetQueueIndex and dot3QueueSetIndex. At the
ONU, rows exist for the single ifIndex, for each
dot3QueueSetQueueIndex and dot3QueueSetIndex.
Rows in the table are created when the ifIndex of the
link is created. A set of rows per queue and per
queue_set are added for each ifIndex, denoted by
dot3QueueSetIndex and dot3QueueSetQueueIndex.
A set of rows per queue and per queue_set in the table,
for an ONU interface are created at system
initialization.
A set of rows per queue and per queue_Set in the table,
corresponding to the OLT ifIndex and a set of rows per
queue and per queue_set, corresponding to the broadcast
virtual link, are created at system initialization.
A set of rows per queue and per queue_set in the table,
corresponding to the ifIndex of a virtual link are
created when the virtual link is established (ONU
registers) and deleted when the virtual link is deleted
(ONU deregisters)."
INDEX { ifIndex,
dot3QueueSetQueueIndex,dot3QueueSetIndex}
::= { dot3ExtPkgQueueSetsTable 1 }
Dot3ExtPkgQueueSetsEntry ::=
SEQUENCE {
dot3QueueSetQueueIndex Unsigned32,
dot3QueueSetIndex Unsigned32,
dot3ExtPkgObjectReportThreshold Unsigned32
}
dot3QueueSetQueueIndex OBJECT-TYPE
SYNTAX Unsigned32 (0..7)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An object that identifies the queue index for the
dot3ExtPkgQueueSetsTable table. The queues are reported
in the MPCP REPORT message as defined in [802.3ah],
clause 64.
The number of queues is between 0 and 7, and limited by
dot3ExtPkgObjectReportMaximumNumQueues.
Value corresponds to the dot3QueueIndex of the queue
table."
::= { dot3ExtPkgQueueSetsEntry 1 }
dot3QueueSetIndex OBJECT-TYPE
SYNTAX Unsigned32 (0..7)
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An object that identifies the queue_set index for the
dot3ExtPkgQueueSetsTable table. The queues are reported
in the MPCP REPORT message as defined in [802.3ah],
clause 64.
The number of queues_sets is between 0 and 7, and
limited by dot3ExtPkgObjectReportMaximumNumThreshold."
::= { dot3ExtPkgQueueSetsEntry 2 }
that's the queue stats and the queue sets table, all lined up ๐๐ธ
dot3ExtPkgObjectReportThreshold OBJECT-TYPE
SYNTAX Unsigned32
UNITS "TQ (16nsec)"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"An object that defines the value of a threshold report
for each queue_set in the REPORT message as defined in
[802.3ah], clause 64. The number of sets for each queue
is dot3ExtPkgObjectReportNumThreshold.
In the REPORT message, each queue_set reporting will
provide information on the occupancy of the queues for
frames below the matching Threshold.
The value returned shall be in Time quanta (TQ), which
is 16nsec or 2 octets increments.
Read operation provides the threshold value. Write
operation sets the value of the threshold.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgObjectReportThreshold can lead to a change in
the reporting of the ONU interface and therefore to a
change in the bandwidth allocation of the respective
interface. This change may lead a degradation or an
interruption of service for the users connected to the
respective EPON interface.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface,
for each queue and for each queue_set. At the ONU, it has
a distinct value for each queue and for each queue_set."
DEFVAL { 0 }
::= { dot3ExtPkgQueueSetsEntry 3 }
Okay so this one is the threshold object for the REPORT message, and it's giving main character energy ๐โจ Next up are the optical interface status tables, which are lowkey where the OLT gets to keep tabs on every single ONU ๐ฆ
--Optical Interface status tables
dot3ExtPkgOptIfTable OBJECT-TYPE
SYNTAX SEQUENCE OF Dot3ExtPkgOptIfEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"This table defines the control and status indication
objects for the optical interface of the EPON interface.
Each object has a row for every virtual link denoted by
the corresponding ifIndex.
The LLID field, as defined in the [802.3ah], is a 2-byte
register (15-bit field and a broadcast bit) limiting the
number of virtual links to 32768. Typically the number
of expected virtual links in a PON is like the number of
ONUs, which is 32-64, plus an additional entry for
broadcast LLID (with a value of 0xffff).
Although the optical interface is a physical interface,
there is a row in the table for each virtual interface.
The reason for having a separate row for each virtual
link is that the OLT has a separate link for each one of
the ONUs. For instance, ONUs could be in different
distances with different link budgets and different
receive powers, therefore having different power alarms.
It is quite similar to a case of different physical
interfaces."
::= { dot3ExtPkgControlObjects 5}
dot3ExtPkgOptIfEntry OBJECT-TYPE
SYNTAX Dot3ExtPkgOptIfEntry
MAX-ACCESS not-accessible
STATUS current
DESCRIPTION
"An entry in the optical interface table of the EPON
interface.
Rows exist for an OLT interface and an ONU interface.
A row in the table is denoted by the ifIndex of the link
and it is created when the ifIndex is created.
The rows in the table for an ONU interface are created
at system initialization.
The row in the table corresponding to the OLT ifIndex
and the row corresponding to the broadcast virtual link
are created at system initialization.
A row in the table corresponding to the ifIndex of a
virtual links is created when a virtual link is
established (ONU registers) and deleted when the virtual
link is deleted (ONU deregisters)."
INDEX { ifIndex }
::= { dot3ExtPkgOptIfTable 1 }
Dot3ExtPkgOptIfEntry ::=
SEQUENCE {
dot3ExtPkgOptIfSuspectedFlag TruthValue,
dot3ExtPkgOptIfInputPower Integer32,
dot3ExtPkgOptIfLowInputPower Integer32,
dot3ExtPkgOptIfHighInputPower Integer32,
dot3ExtPkgOptIfLowerInputPowerThreshold Integer32,
dot3ExtPkgOptIfUpperInputPowerThreshold Integer32,
dot3ExtPkgOptIfOutputPower Integer32,
dot3ExtPkgOptIfLowOutputPower Integer32,
dot3ExtPkgOptIfHighOutputPower Integer32,
dot3ExtPkgOptIfLowerOutputPowerThreshold Integer32,
dot3ExtPkgOptIfUpperOutputPowerThreshold Integer32,
dot3ExtPkgOptIfSignalDetect TruthValue,
dot3ExtPkgOptIfTransmitAlarm TruthValue,
dot3ExtPkgOptIfTransmitEnable TruthValue
}
The table rows are basically one per virtual link, so every ONU gets its own little spotlight ๐
dot3ExtPkgOptIfSuspectedFlag OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"This object is a reliability indication.
If true, the data in this entry may be unreliable.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 1 }
dot3ExtPkgOptIfInputPower OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The optical power monitored at the input.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 2 }
dot3ExtPkgOptIfLowInputPower OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The lowest optical power monitored at the input during the
current 15-minute interval.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 3 }
dot3ExtPkgOptIfHighInputPower OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The highest optical power monitored at the input during the
current 15-minute interval.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 4 }
dot3ExtPkgOptIfLowerInputPowerThreshold OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The lower limit threshold on input power. If
dot3ExtPkgOptIfInputPower drops to this value or below,
a Threshold Crossing Alert (TCA) should be sent.
Reading will present the threshold value. Writing will
set the value of the threshold.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgOptIfLowerInputPowerThreshold can lead to a Threshold
Crossing Alert (TCA) being sent for the respective interface.
This alert may be leading to an interruption of service for the
users connected to the respective EPON interface, depending on
the system action on such an alert.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 5 }
dot3ExtPkgOptIfUpperInputPowerThreshold OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The upper limit threshold on input power. If
dot3ExtPkgOptIfInputPower reaches or exceeds this value,
a Threshold Crossing Alert (TCA) should be sent.
Reading will present the threshold value. Writing will
set the value of the threshold.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgOptIfUpperInputPowerThreshold can lead to a Threshold
Crossing Alert (TCA) being sent for the respective interface.
This alert may be leading to an interruption of service for the
users connected to the respective EPON interface, depending on
the system action on such an alert.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 6 }
dot3ExtPkgOptIfOutputPower OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The optical power monitored at the output.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 7 }
dot3ExtPkgOptIfLowOutputPower OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The lowest optical power monitored at the output during the
current 15-minute interval.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 8 }
dot3ExtPkgOptIfHighOutputPower OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"The highest optical power monitored at the output during the
current 15-minute interval.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 9 }
dot3ExtPkgOptIfLowerOutputPowerThreshold OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The lower limit threshold on output power. If
dot3ExtPkgOptIfOutputPower drops to this value or below,
a Threshold Crossing Alert (TCA) should be sent.
Reading will present the threshold value. Writing will
set the value of the threshold.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgOptIfLowerOutputPowerThreshold can lead to a Threshold
Crossing Alert (TCA) being sent for the respective interface.
This alert may be leading to an interruption of service for the
users connected to the respective EPON interface, depending on
the system action on such an alert.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 10 }
dot3ExtPkgOptIfUpperOutputPowerThreshold OBJECT-TYPE
SYNTAX Integer32
UNITS "0.1 dbm"
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"The upper limit threshold on output power. If
dot3ExtPkgOptIfOutputPower reaches or exceeds this value,
a Threshold Crossing Alert (TCA) should be sent.
Reading will present the threshold value. Writing will
set the value of the threshold.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgOptIfUpperOutputPowerThreshold can lead to a Threshold
Crossing Alert (TCA) being sent for the respective interface.
This alert may be leading to an interruption of service of the
users connected to the respective EPON interface, depending on
the system action on such an alert.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
::= { dot3ExtPkgOptIfEntry 11 }
dot3ExtPkgOptIfSignalDetect OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"When getting true(1), there is a valid optical signal at
the receive that is above the optical power level for
signal detection. When getting false(2) the optical
signal at the receive is below the optical power level
for signal detection.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
DEFVAL { false }
::= { dot3ExtPkgOptIfEntry 12 }
dot3ExtPkgOptIfTransmitAlarm OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-only
STATUS current
DESCRIPTION
"When getting true(1) there is a non-valid optical signal
at the transmit of the interface, either a higher level
or lower level than expected. When getting false(2) the
optical signal at the transmit is valid and in the
required range.
This object is applicable for an OLT and an ONU. At the
OLT, it has a distinct value for each virtual interface."
DEFVAL { false }
::= { dot3ExtPkgOptIfEntry 13 }
dot3ExtPkgOptIfTransmitEnable OBJECT-TYPE
SYNTAX TruthValue
MAX-ACCESS read-write
STATUS current
DESCRIPTION
"Setting this object to true(1) will cause the optical
interface to start transmission (according to the
control protocol specified for the logical interface).
Setting this object to false(2) will cause the
interface to stop the optical transmission.
When getting true(1), the optical interface is in
transmitting mode (obeying to the logical control
protocol).
When getting false(2), the optical interface is not in
transmitting mode.
The write operation is not restricted in this document
and can be done at any time. Changing
dot3ExtPkgOptIfTransmitEnable state can lead to a halt
in the optical transmission of the respective interface
leading to an interruption of service of the users
connected to the respective EPON interface.
The object is relevant when the admin state of the
interface is active as set by the dot3MpcpAdminState.
This object is applicable for an OLT and an ONU. At the
OLT it, has a distinct value for each virtual interface."
DEFVAL { false }
::= { dot3ExtPkgOptIfEntry 14 }
-- Conformance Statements
-- Conformance Groups
dot3EponGroups OBJECT IDENTIFIER ::= { dot3EponConformance 1 }
dot3MpcpGroupBase OBJECT-GROUP
OBJECTS {
dot3MpcpOperStatus,
dot3MpcpAdminState,
dot3MpcpMode,
dot3MpcpSyncTime,
dot3MpcpLinkID,
dot3MpcpRemoteMACAddress,
dot3MpcpRegistrationState,
dot3MpcpMaximumPendingGrants,
dot3MpcpTransmitElapsed,
dot3MpcpReceiveElapsed,
dot3MpcpRoundTripTime
}
STATUS current
DESCRIPTION
"A collection of objects of dot3 Mpcp Control entity state
definition. Objects are per LLID."
::= { dot3EponGroups 1 }
dot3MpcpGroupStat OBJECT-GROUP
OBJECTS {
dot3MpcpMACCtrlFramesTransmitted,
dot3MpcpMACCtrlFramesReceived,
dot3MpcpDiscoveryWindowsSent,
dot3MpcpDiscoveryTimeout,
dot3MpcpTxRegRequest,
dot3MpcpRxRegRequest,
dot3MpcpTxRegAck,
dot3MpcpRxRegAck,
dot3MpcpTxReport,
dot3MpcpRxReport,
dot3MpcpTxGate,
dot3MpcpRxGate,
dot3MpcpTxRegister,
dot3MpcpRxRegister
}
STATUS current
DESCRIPTION
"A collection of objects of dot3 Mpcp Statistics.
Objects are per LLID."
::= { dot3EponGroups 2 }
dot3OmpeGroupID OBJECT-GROUP
OBJECTS {
dot3OmpEmulationType
}
STATUS current
DESCRIPTION
"A collection of objects of dot3 OMP emulation entity
state definition. Objects are per LLID."
::= { dot3EponGroups 3 }
dot3OmpeGroupStat OBJECT-GROUP
OBJECTS {
dot3OmpEmulationSLDErrors,
dot3OmpEmulationCRC8Errors,
dot3OmpEmulationBadLLID,
dot3OmpEmulationGoodLLID,
dot3OmpEmulationOnuPonCastLLID,
dot3OmpEmulationOltPonCastLLID,
dot3OmpEmulationBroadcastBitNotOnuLlid,
dot3OmpEmulationOnuLLIDNotBroadcast,
dot3OmpEmulationBroadcastBitPlusOnuLlid,
dot3OmpEmulationNotBroadcastBitNotOnuLlid
}
STATUS current
DESCRIPTION
"A collection of objects of dot3 OMP emulation
Statistics. Objects are per LLID."
::= { dot3EponGroups 4 }
dot3EponFecGroupAll OBJECT-GROUP
OBJECTS {
dot3EponFecPCSCodingViolation,
dot3EponFecAbility,
dot3EponFecMode,
dot3EponFecCorrectedBlocks,
dot3EponFecUncorrectableBlocks,
dot3EponFecBufferHeadCodingViolation
}
STATUS current
DESCRIPTION
"A collection of objects of dot3 FEC group control and
statistics. Objects are per LLID."
::= { dot3EponGroups 5 }
dot3ExtPkgGroupControl OBJECT-GROUP
OBJECTS {
dot3ExtPkgObjectReset,
dot3ExtPkgObjectPowerDown,
dot3ExtPkgObjectNumberOfLLIDs,
dot3ExtPkgObjectFecEnabled,
dot3ExtPkgObjectReportMaximumNumQueues,
dot3ExtPkgObjectRegisterAction
}
STATUS current
DESCRIPTION
"A collection of objects of dot3ExtPkg control
definition. Objects are per LLID."
::= { dot3EponGroups 6 }
dot3ExtPkgGroupQueue OBJECT-GROUP
OBJECTS {
dot3ExtPkgObjectReportNumThreshold,
dot3ExtPkgObjectReportMaximumNumThreshold,
dot3ExtPkgStatTxFramesQueue,
dot3ExtPkgStatRxFramesQueue,
dot3ExtPkgStatDroppedFramesQueue
}
STATUS current
DESCRIPTION
"A collection of objects of dot3ExtPkg Queue
control. Objects are per LLID, per queue."
::= { dot3EponGroups 7 }
dot3ExtPkgGroupQueueSets OBJECT-GROUP
OBJECTS {
dot3ExtPkgObjectReportThreshold
}
STATUS current
DESCRIPTION
"A collection of objects of dot3ExtPkg queue_set
control. Objects are per LLID, per queue, per
queue_set."
::= { dot3EponGroups 8 }
dot3ExtPkgGroupOptIf OBJECT-GROUP
OBJECTS {
dot3ExtPkgOptIfSuspectedFlag,
dot3ExtPkgOptIfInputPower,
dot3ExtPkgOptIfLowInputPower,
dot3ExtPkgOptIfHighInputPower,
dot3ExtPkgOptIfLowerInputPowerThreshold,
dot3ExtPkgOptIfUpperInputPowerThreshold,
dot3ExtPkgOptIfOutputPower,
dot3ExtPkgOptIfLowOutputPower,
dot3ExtPkgOptIfHighOutputPower,
dot3ExtPkgOptIfLowerOutputPowerThreshold,
dot3ExtPkgOptIfUpperOutputPowerThreshold,
dot3ExtPkgOptIfSignalDetect,
dot3ExtPkgOptIfTransmitAlarm,
dot3ExtPkgOptIfTransmitEnable
}
STATUS current
DESCRIPTION
"A collection of objects of control and status indication
of the optical interface.
Objects are per LLID."
::= { dot3EponGroups 9 }
-- Compliance
dot3EponCompliances
OBJECT IDENTIFIER ::= { dot3EponConformance 2 }
dot3MPCPCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION "The compliance statement for Multi-Point
Control Protocol interfaces."
MODULE -- this module
MANDATORY-GROUPS { dot3MpcpGroupBase}
GROUP dot3MpcpGroupStat
DESCRIPTION "This group is mandatory for all MPCP supporting
interfaces for statistics collection."
::= { dot3EponCompliances 1}
dot3OmpeCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION "The compliance statement for OMPEmulation
interfaces."
MODULE -- this module
MANDATORY-GROUPS { dot3OmpeGroupID}
GROUP dot3OmpeGroupStat
DESCRIPTION "This group is mandatory for all OMPemulation
supporting interfaces for statistics collection."
::= { dot3EponCompliances 2}
dot3EponFecCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION "The compliance statement for FEC EPON interfaces.
This group is mandatory for all FEC supporting
interfaces for control and statistics collection."
MODULE -- this module
MANDATORY-GROUPS { dot3EponFecGroupAll }
::= { dot3EponCompliances 3}
dot3ExtPkgCompliance MODULE-COMPLIANCE
STATUS current
DESCRIPTION "The compliance statement for EPON Interfaces
using the extended package."
MODULE -- this module
MANDATORY-GROUPS { dot3ExtPkgGroupControl }
GROUP dot3ExtPkgGroupQueue
DESCRIPTION " This group is mandatory for all EPON interfaces
supporting REPORT queue management of the extended
package."
GROUP dot3ExtPkgGroupQueueSets
DESCRIPTION " This group is mandatory for all EPON interfaces
supporting REPORT queue_sets management of the
extended package."
GROUP dot3ExtPkgGroupOptIf
DESCRIPTION "This group is mandatory for all EPON interfaces
supporting optical interfaces management,
of the extended package."
::= { dot3EponCompliances 4}
END
7. IANA Considerations โจ
Okay, IANA's part is short and sweet ๐ They gave the DOT3-EPON-MIB module just one object identifier for its MODULE-IDENTITY, and it lives under the MIB-2 tree ๐ธ
The MIB module also uses some IANA-assigned OBJECT IDENTIFIER values that are recorded in the SMI Numbers registry. The one that matters here is:
Descriptor OBJECT IDENTIFIER value
---------- -----------------------
dot3EponMIB { mib-2 155 }
Bestie, that's the whole thing! ๐ IANA just needed to lock in that one number so everyone's MIB lines up ๐ฆ
8. Acknowledgements ๐
This document is the result of the efforts of the HUBMIB Working Group, and the group is honestly iconic ๐. Huge thanks to Dan Romascanu, who was WG chair for most of the development and carefully reviewed and commented on the initial versions. Special thanks also go to Bert Wijnen, the current WG chair, for his review and comments on the final stages. ๐ซถ
Special thanks to David Perkins for his detailed and helpful MIB Doctor review. ๐ง
Also, a big shoutout to some of the IEEE802.3ah Working Group people for their contribution and extra reviews of the document. They absolutely showed up ๐
9. Security Considerations ๐
Okay, this section is serious, bestie, so pay attention ๐ There are a number of managed objects defined in this MIB module that have a MAX-ACCESS clause of read-write or read-create. Writing to these objects can have potentially disruptive effects on network operation, including:
- Changing
dot3MpcpAdminStatestate can lead to disabling the Multi-Point Control Protocol on the respective interface, leading to the interruption of service for the users connected to the respective EPON interface. ๐ - Changing
dot3EponFecModestate can lead to disabling the Forward Error Correction on the respective interface, which can lead to a degradation of the optical link, and therefore may lead to an interruption of service for the users connected to the respective EPON interface. - Changing
dot3ExtPkgObjectResetstate can lead to a reset of the respective interface leading to an interruption of service for the users connected to the respective EPON interface. - Changing
dot3ExtPkgObjectPowerDownstate can lead to a power down of the respective interface, leading to an interruption of service for the users connected to the respective EPON interface. - Changing
dot3ExtPkgObjectFecEnabledstate can lead to disabling the Forward Error Correction on the respective interface, which can lead to a degradation of the optical link, and therefore may lead to an interruption of service for the users connected to the respective EPON interface. - Changing
dot3ExtPkgObjectRegisterActionstate can lead to a change in the registration state of the respective interface, leading to a deregistration and an interruption of service for the users connected to the respective EPON interface. - Changing
dot3ExtPkgObjectReportNumThresholdcan lead to a change in the reporting of the ONU interface and therefore to a change in the bandwidth allocation of the respective interface. This change may lead a degradation or an interruption of service for the users connected to the respective EPON interface. - Changing
dot3ExtPkgObjectReportThresholdcan lead to a change in the reporting of the ONU interface and therefore to a change in the bandwidth allocation of the respective interface. This change may lead a degradation or an interruption of service for the users connected to the respective EPON interface. - Changing
dot3ExtPkgOptIfLowerInputPowerThresholdcan lead to a Threshold Crossing Alert (TCA) being sent for the respective interface. This alert may be leading to an interruption of service for the users connected to the respective EPON interface, depending on the system action on such an alert. - Changing
dot3ExtPkgOptIfUpperInputPowerThresholdcan lead to a Threshold Crossing Alert (TCA) being sent for the respective interface. This alert may be leading to an interruption of service for the users connected to the respective EPON interface, depending on the system action on such an alert. - Changing
dot3ExtPkgOptIfLowerOutputPowerThresholdcan lead to a Threshold Crossing Alert (TCA) being sent for the respective interface. This alert may be leading to an interruption of service for the users connected to the respective EPON interface, depending on the system action on such an alert. - Changing
dot3ExtPkgOptIfUpperOutputPowerThresholdcan lead to a Threshold Crossing Alert (TCA) being sent for the respective interface. This alert may be leading to an interruption of service for the users connected to the respective EPON interface, depending on the system action on such an alert. - Changing
dot3ExtPkgOptIfTransmitEnablestate can lead to a halt in the optical transmission of the respective interface, leading to an interruption of service for the users connected to the respective EPON interface.
The user of this MIB module must therefore be aware that support for SET operations in a non-secure environment without proper protection can have a negative effect on network operations. โ ๏ธ
The readable objects in this MIB module (i.e., those with MAX-ACCESS other than not-accessible) may be considered sensitive in some environments, since, collectively, they provide information about the performance of network interfaces and can reveal some aspects of their configuration. In such environments, it is important to control even GET and NOTIFY access to these objects, and possibly even to encrypt their values when sending them over the network via SNMP. ๐
SNMP versions prior to SNMPv3 did not include adequate security. Even if the network itself is secure (for example by using IPsec), there is still no control over who on the secure network is allowed to access and GET/SET (read/change/create/delete) the objects in this MIB module. Not it, not the vibe ๐
It is RECOMMENDED that implementers consider the security features provided by the SNMPv3 framework (see [RFC3410], section 8), including full support for the SNMPv3 cryptographic mechanisms (for authentication and privacy). โจ
Further, deployment of SNMP versions prior to SNMPv3 is NOT RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to enable cryptographic security. It is then a customer/operator responsibility to ensure that the SNMP entity giving access to an instance of this MIB module is properly configured to give access to the objects only to those principals (users) that have legitimate rights to indeed GET or SET (change/create/delete) them. Only the people who should be touching it, periodt ๐
10. References ๐
10.1. Normative References
[802.1d] IEEE, "Institute of Electrical and Electronic
Engineers, 802.1D-2004, IEEE Standard for Local and
metropolitan area networks Media Access Control (MAC)
Bridges.", June 2004.
[802.3] IEEE, "Institute of Electrical and Electronic
Engineers, IEEE Std 802.3-2002, "IEEE Standard for
Carrier Sense Multiple Access with Collision Detection
(CSMA/CD) Access Method and Physical Layer
Specifications.", December 2002.
[802.3ah] IEEE, "Institute of Electrical and Electronic
Engineers, IEEE Std 802.3ah-2004. Information
technology - Telecommunications and information
exchange between systems - Local and metropolitan area
networks - Specific requirements - Part 3: Carrier
sense multiple access with collision detection
(CSMA/CD) access method and physical layer
specifications - Media Access Control Parameters,
Physical Layers and Management Parameters for
subscriber access networks.", IEEE Std 802.3ah-2004,
October 2004.
[ITU-T.G.975] ITU, "ITU-T, SERIES G: TRANSMISSION SYSTEMS AND MEDIA,
DIGITAL SYSTEMS AND NETWORKS Digital sections and
digital line system - Optical fibre submarine cable
systems Forward error correction for submarine
systems, ITU-T Recommendation G.975", October 2000.
[ITU-T.G.983] ITU, "ITU-T, SERIES G: TRANSMISSION SYSTEMS AND MEDIA,
DIGITAL SYSTEMS AND NETWORKS, Digital transmission
systems - Digital sections and digital line system -
Optical line systems for local and access networks
Broadband optical access systems based on Passive
Optical Networks (PON), ITU-T Recommendation G.983.1",
October 1998.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J.
Schoenwaelder, Ed., "Structure of Management
Information Version 2 (SMIv2)", STD 58, RFC 2578,
April 1999.
[RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J.
Schoenwaelder, Ed., "Textual Conventions for SMIv2",
STD 58, RFC 2579, April 1999.
[RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder,
"Conformance Statements for SMIv2", STD 58, RFC 2580,
April 1999.
[RFC2863] McCloghrie, K. and F. Kastenholz, "The Interfaces
Group MIB", RFC 2863, June 2000.
[RFC2864] McCloghrie, K. and G. Hanson, "The Inverted Stack
Table Extension to the Interfaces Group MIB",
RFC 2864, June 2000.
[RFC3635] Flick, J., "Definitions of Managed Objects for the
Ethernet-like Interface Types", RFC 3635,
September 2003.
[RFC4836] Beili, E., "Definitions of Managed Objects for IEEE
802.3 Medium Attachment Units (MAUs)", RFC 4836,
April 2007.
10.2. Informative References
[RFC1525] Decker, E., McCloghrie, K., Langille, P., and A.
Rijsinghani, "Definitions of Managed Objects for
Source Routing Bridges", RFC 1525, September 1993.
[RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart,
"Introduction and Applicability Statements for
Internet-Standard Management Framework", RFC 3410,
December 2002.
[RFC4188] Norseth, K. and E. Bell, "Definitions of Managed
Objects for Bridges", RFC 4188, September 2005.
[RFC4878] Squire, M., "Definitions and Managed Objects for
Operations, Administration, and Maintenance (OAM)
Functions on Ethernet-Like Interfaces", RFC 4878,
June 2007.
Author's Address ๐ฆ
Lior Khermosh
PMC-SIERRA
Kohav Hertzelia bldg,
4 Hasadnaot St.,
Hertzliya Pituach, 46120
ISRAEL
Phone: +972-9-9628000 Ext: 302
Fax: +972-9-9628001
EMail: lior_khermosh@pmc-sierra.com
Full Copyright Statement โญ
Copyright (C) The IETF Trust (2007).
The legal bits, verbatim because they matter:
This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors
retain all their rights.
This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND
THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF
THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Intellectual Property โจ
okay so the IETF is NOT saying whether any patents or other IP rights tied to this tech are valid or how far they reach ๐ and they're not claiming they looked for any either. if you want the rules on rights for RFC docs, check out BCP 78 and BCP 79 ๐
copies of IPR disclosures sent to the IETF Secretariat live in the IETF online IPR repository at http://www.ietf.org/ipr ๐ฆ you'll also find any promises to license, or what happened when someone tried to get a general license or permission to use those proprietary rights as an implementer or user of the spec. bestie, that's where the paperwork lives ๐
and if you know about any copyrights, patents, patent applications, or other proprietary rights that might cover tech you'd need to implement this standard, the IETF literally wants to hear from you ๐ซถ email ietf-ipr@ietf.org with the info. no cap, they're asking nicely!! ๐
Acknowledgement
the RFC Editor function gets its funding right now from the Internet Society ๐ so thank you to them for keeping the lights on ๐ฅโจ
๐ฆ where this page comes from
- ietf: rfc4837 2007-07
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms