RFC 1404
A Model for Common Operational Statistics
๐ RFC 1404: A Model for Common Operational Statistics ๐
Okay bestie, so this is RFC 1404 ๐ธ, written by B. Stockman from NORDUnet/SUNET and dated January 1993 ๐ . It's an informational doc for the Internet community ๐, so it's giving "here's some info" and not "here's a standard." The title block doesn't list anything it obsoletes or updates, so it's flying solo โจ.
Status of the Memo
Okay so this memo just provides information for the Internet community ๐ . It does not specify an Internet standard. Distribution is unlimited, so share it with everyone ๐ฆ.
Abstract
This memo describes a model for operational statistics in the Internet ๐. It gives recommendations for metrics, measurements, polling periods, storage formats and presentation formats ๐. Literally everything you need to plan your stats game ๐ฅ.
Acknowledgements
The author would like to thank the members of the Operational Statistics Working Group of the IETF ๐ซถ. Their efforts are the reason this memo exists at all, so big love to them ๐.
Table of Contents
1. Introduction ............................................. 2
2. The Model ................................................ 5
2.1 Metrics and Polling Periods .............................. 5
2.2 Format for Storing Collected Data ........................ 6
2.3 Reports .................................................. 6
2.4 Security Issues .......................................... 6
3. Categorization of Metrics ................................ 7
3.1 Overview ................................................. 7
3.2 Categorization of Metrics Based on Measurement Areas ..... 7
3.2.1 Utilization Metrics ...................................... 7
3.2.2 Performance Metrics ...................................... 7
3.2.3 Availability Metrics ..................................... 7
3.2.4 Stability Metrics ........................................ 8
3.3 Categorization Based on Availability of Metrics .......... 8
3.3.1 Per Interface Variables Already in Standard MIB .......... 8
3.3.2 Per Interface Variables in Private Enterprise MIB ........ 9
3.3.3 Per interface Variables Needing High Resolution Polling .. 9
3.3.4 Per Interface Variables not in any MIB ................... 9
3.3.5 Per Node Variables ....................................... 9
3.3.6 Metrics not being Retrievable with SNMP ................. 10
3.4 Recommended Metrics ..................................... 10
3.4.1 Chosen Metrics .......................................... 10
4. Polling Frequencies ..................................... 11
4.1 Variables Needing High Resolution Polling ............... 11
4.2 Variables not Needing High Resolution Polling ........... 11
5. Pre-Processing of Raw Statistical Data .................. 12
5.1 Optimizing and Concentrating Data to Resources .......... 12
5.2 Aggregation of Data ..................................... 12
6. Storing of Statistical Data ............................. 13
6.1 The Storage Format ...................................... 13
6.1.1 The Label Section ....................................... 14
6.1.2 The Device Section ...................................... 14
6.1.3 The Data Section ........................................ 16
6.2 Storage Requirement Estimations ......................... 17
7. Report Formats .......................................... 18
7.1 Report Types and Contents ............................... 18
7.2 Contents of the Reports ................................. 18
7.2.1 Offered Load by Link .................................... 18
7.2.2 Offered Load by Customer ................................ 18
7.2.3 Resource Utilization Reporting .......................... 19
7.2.3.1 Utilization as Maximum Peak Behavior .................... 19
7.2.3.2 Utilization as Frequency Distribution of Peaks .......... 19
8. Considerations for Future Development ................... 20
8.1 A Client/Server Based Statistical Exchange System ....... 20
8.2 Inclusion of Variables not in the Internet Standard MIB . 20
8.3 Detailed Resource Utilization Statistics ................ 20
Appendix A Some formulas for statistical aggregation ........... 21
Appendix B An example .......................................... 24
Security Considerations ......................................... 27
Author's Address ................................................ 27
1. Introduction โจ
These days loads of network administrations collect and archive network management metrics ๐ that show utilization, growth and outages, and honestly that's not unusual at all. The main goal is near-term problem isolation and longer-term network planning inside the organization ๐ง . But there's also a bigger goal: cooperative problem isolation and network planning between network administrations ๐ค, which is only going to matter more as the Internet keeps growing ๐.
There are a bunch of network management tools for collecting and presenting metrics ๐ ๏ธ. However, different measurement and presentation techniques make it hard to compare data between networks ๐ฉ. Plus, there's no common agreement on which metrics should be regularly collected or how they should be displayed ๐.
There needs to be an agreed-upon model for:
- A minimal set of common network management metrics to satisfy the goals stated above.
- Tools for collecting these metrics.
- A common storage format to facilitate the usage of these data by common presentation tools.
- Common presentation formats.
Under this Operational Statistics model, collection tools will collect and store data in a given format to be retrieved later by presentation tools displaying the data in a predefined way. (See figure below.) ๐ฆ
The Operational Statistics Model
(Collection of common metrics, by commonly available tools, stored in a common format, displayed in common formats by commonly available presentation tools.)
!-----------------------!
! Network !
!---+---------------+---!
/ \
/ \
/ \
--------+------ ----+---------
! New ! ! Old !
! Collection ! ! Collection !
! Tool ! ! Tool !
!---------+---! !------+-----!
\ !
\ !-------+--------!
\ ! Post-Processor !
\ !--+-------------!
\ /
\ /
\ /
!--+-------+---!
! Common !
! Statistics !
! Database !
!-+--------+---!
/ \
/ \
/ \
/ !-+-------------!
/ ! Pre-Processor !
/ !-------+-------!
!-----------+--! !
! New ! !-------+-------!
! Presentation ! ! Old !
! Tool ! ! Presentation !
!---------+----! ! Tool !
\ !--+------------!
\ /
\ /
!-+---------------+-!
! Graphical Output !
! (e.g., to paper !
! or X-window) !
!-------------------!
This memo gives an overview of this model for common operational statistics ๐ง. The model defines the gathering, storing and presentation of network operational statistics, and it classifies the types of information that should be available at each network operation center conforming to this model ๐๏ธ.
The model defines a minimal set of metrics, and how these metrics should be gathered and stored ๐ฆ. Finally, the model gives recommendations on the content and the layout of statistical reports, which makes it possible to easily compare network statistics between NOCs ๐.
The primary purpose of this model is to define ways and methods for how NOCs could most effectively share their operational statistics ๐. One intention with this model is to specify a baseline capability that NOCs conforming to this model may support with a minimal development effort and a minimal ongoing effort ๐ .
2. The Model ๐
The model defines three areas of interest that all the underlying concepts are based on:
- The definition of a minimal set of metrics to be gathered.
- The definition of a format for storing collected statistical data.
- The definition of methods and formats for generating reports.
The model indicates that old tools used today could be retrofitted into the new paradigm ๐ง. This could be done by providing conversion filters between the old and the new environment tools. In this sense, this model intends to advocate the development of public domain software for use by participating NOCs ๐.
One basic idea with the model is that statistical data stored at one place could be retrieved and displayed at some other place ๐ง.
2.1 Metrics and Polling Periods
The intention here is to define a minimal set of metrics that could easily be gathered using standard SNMP based network management tools ๐ฏ. These metrics should hence be available as variables in the Internet Standard MIB ๐.
If the Internet Standard MIB is changed, this minimal set of metrics could also be reconsidered, since there are many metrics viewed as important but currently not defined in the standard MIB ๐. For some metrics that are highly desirable to collect, there are currently no ways to get them into the Internet Standard MIB, because these metrics probably are not possible to retrieve using SNMP ๐ฌ. Tools and methods for gathering such metrics should be explicitly defined if such metrics are to be considered. This is, however, outside of the scope of this memo ๐ง.
2.2 Format for Storing Collected Data
A format for storing data is defined ๐. The intention is to minimize redundant information by using a single header structure where all information relevant to a certain set of statistical data is stored ๐งน. This header section will give information on when and where the corresponding statistical data were collected โฐ.
2.3 Reports
Some basic classes of reports are suggested with regard to different views of network behavior ๐. For this reason, reports on totals of octets and packets over some period of time are regarded as essential to give an overall view of the traffic flows in a network ๐. Differentiating between applications and protocols, to give ideas on which type of traffic is dominant, is regarded as needed ๐. Finally, reports on resource utilization are recommended โจ.
Depending on the intention with a report, the time period over which it spans may vary ๐ฐ๏ธ. For capacity planning there may be a need for longer-term reports, while in engineering and operation there may be sufficient reports on a weekly or daily basis ๐.
2.4 Security Issues
okay bestie, this part is kinda serious ๐ฅบ there are legal, ethical and political concerns about sharing data. people get nervous about showing numbers that might make one of the networks look bad ๐ฌ
so we need to keep the shared data integrity, conformity and confidentiality safe ๐ to make it useful, the same data MUST be collected from all of the involved sites, and it MUST be collected at the same interval โจ and to stop vendors from getting an unfair performance edge, certain data MUST NOT be made available ๐
3. Categorization of Metrics โจ
3.1 Overview
this section sorts metrics by how wide their scope is and how easy they are to retrieve ๐ it gives a recommendation of a minimal set of metrics, plus some hints on metrics to think about adding later when the network management environment supports them. and yes, there are some thoughts on storage requirements too ๐ฆ
3.2 Categorization of Metrics Based on Measurement Areas
the metrics used to evaluate network traffic could be sorted into (at least) four major categories ๐ธ
- Utilization metrics
- Performance metrics
- Availability metrics
- Stability metrics
3.2.1. Utilization Metrics
this category describes different aspects of all the traffic being forwarded through the network ๐ possible metrics are:
- Total input and output packets and octets.
- Various peak metrics.
- Per protocol and per application metrics.
3.2.2 Performance Metrics
these metrics describe the quality of service, like delays and congestion situations ๐ข possible metrics are:
- RTT metrics on different protocol layers.
- Number of collisions on a bus network
- Number of ICMP Source Quench messages.
- Number of packets dropped.
- etc.
3.2.3 Availability Metrics
this could be considered the long term accessibility metrics on different protocol layers ๐ฐ๏ธ possible metrics are:
- Line availability as percentage uptime.
- Route availability
- Application availability
3.2.4 Stability Metrics
these metrics describe short term fluctuations in the network that degrade the service level ๐ changes in traffic patterns could also be recognized using these metrics. possible metrics are:
- Number of fast line status transitions
- Number of fast route changes (also known as route flapping)
- Number of routes per interface in the tables
- Next hop count stability.
- Short term ICMP behaviors.
3.3 Categorization Based on Availability of Metrics
first things first, bestie: to retrieve metrics, the corresponding variables MUST be possible to access at every network object that is part of the management domain where statistics are being collected ๐
some metrics are super easy to grab because they're defined as variables in the Internet Standard MIB ๐ other metrics may be retrievable if they're part of some vendor's private enterprise MIB subtree ๐ง and some metrics are considered impossible to retrieve. that's either because they can't be included in the SNMP concept, or because measuring them would need so much polling that you'd basically clog the network with management traffic ๐
every metric categorized below could be judged an important one for evaluating network behavior ๐ this list MAY help reconsider which metrics are reasonable and desirable to collect. if the availability of the metrics below changes, these decisions MAY change too ๐ฆ
3.3.1 Per Interface Variables Already in Internet Standard MIB (thus easy to retrieve)
ifInUcastPkts (unicast packet in)
ifOutUcastPkts (unicast packet out)
ifInNUcastPkts (non-unicasts packet in
ifOutNUcastPkts (non-unicast packet out)
ifInOctets (octets in)
ifOutOctets (octets out)
ifOperStatus (line status)
3.3.2 Per Interface Variables in Internet Private Enterprise MIB (thus could sometimes be possible to retrieve)
discarded packets in
discarded packets out
congestion events in
congestion events out
aggregate errors
interface resets
3.3.3 Per Interface Variables Needing High Resolution Polling (which is hard due to resulting network load)
interface queue length
seconds missing stats
interface unavailable
route changes
interface next hop count
3.3.4 Per Interface Variables not in any MIB (thus impossible to retrieve using SNMP but possible to include in a MIB).
link layer packets in
link layer packets out
link layer octets in
link layer octets out
packet interarrival times
packet size distribution
3.3.5 Per Node Variables (not categorized here)
per protocol packets in
per protocol packets out
per protocol octets in
per protocol octets out
packets discarded in
packets discarded out
packet size distribution
sys uptime
poll delta time
reboot count
3.3.6 Metrics not being Retrievable with SNMP
delays (RTTs) on different protocol layers
application layer availabilities
peak behavior metrics
3.4 Recommended Metrics
so there are SO many metrics people could gather when doing network statistics ๐คฏ to help this model reach general consensus, we need a minimal set of metrics that are both essential and possible to retrieve from most network objects today ๐ as a sign that a metric is generally retrievable, being in the Internet Standard MIB is regarded as a mandatory requirement.
3.4.1 Chosen Metrics
the following metrics were chosen as desirable and reasonable, being part of the Internet Standard MIB ๐
for each interface:
ifInOctets (octets in)
ifOutOctets (octets out)
ifInUcastPkts (unicast packets in)
ifOutUcastPkts (unicast packets out)
ifInNUcastPkts (non-unicast packets in)
ifOutNUcastPkts (non-unicast packets out)
ifInDiscards (in discards)
ifOutDiscards (out discards)
ifOperStatus (line status)
for each node:
ipForwDatagrams (IP forwards)
ipInDiscards (IP in discards)
sysUpTime (system uptime)
all of the above metrics are available in the Internet Standard MIB โ but there are also other metrics that could be RECOMMENDED, like the RTT metric, which probably never will be in any MIB ๐ญ for those, other collection tools than SNMP have to be explicitly defined. the specification of those tools is outside the scope of this memo ๐
4. Polling Frequencies ๐
the reason for polling is to get statistics that serve as the base for trend and capacity planning ๐ from the operational data, it SHALL be possible to derive engineering and management data. it SHALL be noted that all polling and saving values below are just a recommendation and not mandatory ๐ซถ
4.1 Variables Needing High Resolution Polling
to detect peak behaviors, it is RECOMMENDED that a period of maximum 1 minute (60 seconds) is used when gathering traffic data โฑ๏ธ the metrics to gather at this frequency are:
for each interface
ifInOctets (octets in)
ifOutOctets (octets out)
ifInUcastPkts (unicast packets in)
ifOutUcastPkts (unicast packets out)
if it's not possible to gather data at this high polling frequency, it is RECOMMENDED that an even multiple of 60 seconds is used ๐ the initial polling frequency value will be part of the stored statistical data, as described in section 4 below.
4.2 Variables not Needing High Resolution Polling
the other recommended variables to gather, i.e., ๐ญ
for each interface:
ifInNUcastPkts (non-unicast packets in)
ifOutNUcastPkts (non-unicast packets out)
ifInDiscards (in discards)
ifOutDiscards (out discards)
ifOperStatus (line status)
and for each node:
ipForwDatagrams (IP forwards)
ipInDiscards (IP in discards)
sysUpTime (system uptime)
these variables could be gathered at a lower polling rate ๐ no specific polling rate is mentioned, but it is RECOMMENDED that the period chosen is an even multiple of 60 seconds.
5. Pre-Processing of Raw Statistical Data ๐งน
5.1 Optimizing and Concentrating Data to Resources
to avoid redundant data being stored in commonly available storage, the raw data needs processing ๐๏ธ for example, if a link is down there's no need to keep storing a counter that isn't changing ๐ using variables such as sysUpTime and Line Status, you can avoid continuously storing data from links and nodes where no traffic has been transmitted for some period of time.
another part of processing is decoupling the data from the raw interface being polled ๐ the intention SHOULD be to convert that data into the resource you care about, like the traffic on a given link. changes of interface in a gateway for a given link SHOULD NOT be visible in the provided data ๐
5.2 Aggregation of Data
a polling period of 1 minute creates the need to aggregate stored data โณ aggregation here means that over a period with logged entries, a new aggregated entry is created by taking the first and last of the previously logged entries over some aggregation period, then computing a new entry.
not to lose information about the peak values, aggregation also means the peak value of the previous aggregation period is calculated and stored ๐๏ธ
this gives the layout of aggregated entries below ๐ง
it's foreseen that over a relatively short period, polled data will be logged at the tightest polling period (1 minute) ๐โโ๏ธ regularly, these data will be pre-processed into the actual files being provided.
suggestions for aggregation periods:
Over a
24 hour period aggregate to 15 minutes,
1 month period aggregate to 1 hour,
1 year period aggregate to 1 day
aggregation is the computation of new average and maximum values for the aggregation period, based on the previous aggregation period's data ๐ for each aggregation period, the maximum and average values are computed and stored. other aggregation periods could also be chosen when needed. the chosen aggregation period value will be stored together with the aggregated data, as described below ๐
6. Storing of Statistical Data ๐พโจ
okay so this section is all about how to store the stats ๐ซถ the goal is that a common set of tools can gather, store, and analyze statistical data, so everyone's on the same page. the format is designed to minimize redundant info, which means less storage needed. that's giving efficiency ๐ and if a client server based model for pulling remote stats ever gets developed, this storage format should be possible to use as the transmission protocol ๐ฆ
the format is built from three sections inside the stats storage: a label section, a device section, and a data section ๐ the label section gives the start and end times for a given data section, plus the file where the actual data lives. the device section specifies what is being logged in the matching data section.
to fit multiple data sections into one log-file, label sections, device sections, and data sections can show up more than once ๐ธ each section type is wrapped in a BEGIN-END pair. label and device sections could be stored right in the data-file, or as separate files, where the matching data-file is pointed to by the data-file entry in the label section.
a data section must match exactly one label section and one device section ๐ if there are more label sections and device sections, each data section belongs to the label section and device section immediately before it, as long as those sections are stored within the data-file. how files are physically arranged is outside the scope of this document ๐ง
6.1 The Storage Format
stat-data ::=
<label-section><FS><device-section><FS><data-section><FS>
[<device-section><FS><data-section><FS>]
FS ::= "," | <LF> | <LF> # any text here <LF>
the file must start with a label specification, then a device specification, then a data section. if the logging gets interrupted for some reason, a new label specification should be inserted when storing restarts ๐ญ and if the device being logged changes, that should be marked as a new label plus a new device specification ๐
it shall be noted here that the actual physical storage of data is a local decision and can vary a lot ๐ there can be one data-file per interface, or multiple interfaces logged in the same data-file. label and device sections may live in a separate file too, not just inside the data-file.
6.1.1 The Label Section
label-section ::= "BEGIN_LABEL" <FS>
<start_time> <FS>
<stop_time> <FS>
<data_file> <FS>
"END_LABEL"
start-time ::= <time-string>
end-time ::= <time-string>
file-name ::= <ascii-string>
time-string ::= <year><month><day><hour><minute><second>
year ::= <digit><digit><digit><digit>
month ::= 01 | ... | 12
hour ::= 00 | ... | 23
minute ::= 00 | ... | 59
second ::= 00 | ... | 59
digit ::= 0 | ... | 9
ascii-string ::= same as MIB II definition of <ascii-string>
the times define the start and stop times for the related set of logged data ๐ฐ๏ธ and the time is in UTC ๐
6.1.2 The Device Section
device-section ::= "BEGIN_DEVICE" <FS>
<device-field> <FS>
"END_DEVICE"
device-field ::= <networkname><FS><routername><FS><linkname><FS>
<bw-value><FS><bw-sort><FS><proto-type><FS>
<proto-addr><FS><time-zone><FS><tag-table>
[<tag-table>]
networkname ::= <ascii-string>
routername ::= <fully qualified domain name>
linkname ::= <ascii-string>
bw-value ::= <actual bandwidth value>
bw-sort ::= "bps" | "Kbps" | "Mbps" | "Gbps" | "Tbps"
proto-type ::= "IP" | "DECNET" | "X.25" | "CLNS"
proto-addr ::= <network-address depending on proto-type>
timezone ::= <"+" | "-"><00 | ... | 12><00 | 30>
tag-table ::= <tag><FS><tag-class><FS><variable-field>
[<FS><variable-field>]
tag-class ::= "total" | "peak"
variable-field ::= <variable-name> <FS> <initial-polling-period><FS>
<aggregation-period>
tag ::= <ascii-string>
variable-name ::= <ascii-string>
initial-polling-period ::= <digit>[<digit>]
aggregation-period ::= <digit>[<digit>]
the network name is a human readable string that says which network the logged data belongs to ๐
the routername is the fully qualified name that makes sense for the network architecture where the router is installed ๐ฅ๏ธ
the linkname is a human readable string describing the connectivity of the link the logged data comes from ๐
the bandwidth should be the numerical value followed by the sort being used. valid sorts are bps, Kbps, Mbps, Tbps ๐จ
the proto-type field describes which network architecture the logged interface is connected to. valid types are IP, DECNET, X.25 and CLNP ๐งฉ
the network address is the unique numeric address of the interface being logged. its actual form depends on the protocol type named in the proto-type field ๐ข for Internet connected interfaces, the "three-dot" notation should be used ๐
the time-zone shows the time difference that should be added to the timestamp in the data section to get the local time for the logged interface ๐
the tag-table lists all the variables being polled ๐ variable names are the fully qualified Internet MIB names. the table may contain multiple tags. each tag must be associated with only one polling and aggregation period. if variables are polled or aggregated at different periods, one separate tag in the table has to be used for each period ๐ซถ
since variables may be polled with different polling periods within the same set of logged data, there is a need to explicitly link a polling period to each variable ๐ after processing, the actual period covered may have changed compared to the initial polling period, and that should be noted in the aggregation period field. the initial polling period and aggregation period should be given in seconds โฑ๏ธ
aggregation also means computing the max value for the previously polled data, so the aggregation process has to extend the tag table to include these maximum values ๐ this could be done in different ways. the variable field for the aggregated variables can be extended to also include the peak values from the previous period. another option is to create new tags for the peak values. to tell apart polled raw data, aggregated total values, and aggregated peak values, some kind of unique naming for these entities has to be implemented ๐ท๏ธ
6.1.3 The Data Section
data-section ::= "BEGIN_DATA"<FS>
<data-field><LF>
"END_DATA"
data-field ::= <timestamp><FS><tag><FS>
<poll-delta><FS><delta-val>
[<FS><delta-val>]
poll-delta ::= <digit> [<digit>]
tag ::= <ascii-string>
delta-value ::= <digit> [<digit>]
timestamp ::= <year><month><day><hour><minute><second>
year ::= <digit><digit><digit><digit>
month ::= 01 | ... | 12
hour ::= 00 | ... | 23
minute ::= 00 | ... | 59
second ::= 00 | ... | 59
digit ::= 0 | ... | 9
the data field holds the polled data from a set of variables, as defined by the matching tag field ๐ each data field starts with the timestamp for that poll, then the tag naming the polled variables, then a polling delta value giving the number of seconds since the previous poll โณ variable values are stored as delta values for counters, and as absolute values for non-counter values such as OperStatus ๐ the timestamp is in UTC, and the time-zone field in the device section is used to work out the local time for the device being logged ๐
6.2 Storage Requirement Estimations
okay the header sections aren't counted in this example ๐ assuming the maximum polling intensity is used for all 12 recommended variables, and each variable's size in ASCII is 8 bytes, here are the numbers for one year of storing and aggregating stats ๐
say the data is saved according to this scheme:
1 minute non-aggregated saved 1 day.
15 minute aggregation period saved 1 week.
1 hour aggregation period saved 1 month.
1 day aggregation period saved 1 year.
and this gives us the size of one entry for each aggregation period ๐งฎ
Aggregation periods
1 min 15 min 1 hour 1 day
Timestamp 14 14 14 14
Tag 5 5 5 5
Poll-Delta 2 3 4 5
Total values 96 96 96 96
Peak values 0 96 192 288
Field separators 14 28 42 56
Total entry size 131 242 353 464
so for each day 60*24 = 1440 entries with a total size of 1440*131 = 187 Kbytes ๐
for each week 4*24*7 = 672 entries are stored, with a total size of 672*242 = 163 Kbytes ๐๏ธ
for each month 24*30 = 720 entries are stored, with a total size of 720*353 = 254 Kbytes ๐
for each year 365 entries are stored, with a total size of 365*464 = 169 Kbytes ๐
the grand total estimated storage during one year = 773 Kbytes ๐
7. Report Formats ๐
this section suggests some report formats and defines the metrics to be used in those reports ๐
7.1 Report Types and Contents
there's the longer term need for monthly and yearly reports, showing the long term tendencies in the network ๐ then there are the short term weekly reports, which give hints about the medium term changes in network behavior. those can be used as input for the medium term engineering approach ๐ ๏ธ and finally there are the daily reports, giving instant overviews needed for daily network operations โ๏ธ
these reports should give information on:
Offered Load Total traffic at external interfaces.
Offered Load Segmented by "Customer".
Offered Load Segmented protocol/application.
Resource Utilization Link/Router.
7.2 Contents of the Reports
7.2.1 Offered Load by Link
Metric categories: input octets per external interface
output octets per external interface
input packets per external interface
output packets per external interface
the goal here is to visualize the overall trend of network traffic on each connected external interface ๐โจ this could be shown as a bar-chart with the totals for each of the four metric categories ๐ depending on the time period selected, it could be done on an hourly, daily, monthly, or yearly basis ๐ฉท
7.2.2. Offered Load by Customer ๐
Metric categories: input octets per customer
output octets per customer
input packets per customer
output packets per customer
okay so the idea here is to sort the offered load by customer, from biggest to smallest ๐
Then you plot F(n), which is the percentage of total traffic offered to the top n customers, or f(n), which is the percentage of traffic offered by the n'th ranked customer ๐
what counts as a "customer" is up to you, bestie. It has to be defined locally, at the site where the stats are being gathered ๐
the cumulative plot is giving who's hogging the bandwidth energy ๐ It lets you quickly see what fraction of the traffic comes from what number of "users," which is such an iconic overview ๐ซถ
also, if you want to show average AND peak behavior in the same bar diagram, compute the average over some period and the peak during that same period. Then show both values in the same bar ๐โจ
7.2.3. Resource Utilization Reporting ๐ก
7.2.3.1. Utilization as Maximum Peak Behavior ๐ฅ
okay so link utilization is how we capture info on network loading ๐ถ The polling interval must be small enough to be significant with respect to variations in human activity, because human activity is what drives loading in network variation ๐งโ๐ป On the other hand, there is no need to make it smaller than an interval over which excessive delay would notably impact productivity. For this reason, 30 minutes is a good estimate of the time people stay in one activity, and the window where prolonged high delay will mess with their productivity ๐ญ
to track 30 minute variations, you need to sample twice as frequently, so every 15 minutes ๐ Using the polling period of 10 minutes recommended above, that will be enough to capture variations in utilizations โ
a possible format for reporting utilizations as peak behaviors is to combine averages and peak measurements on the same diagram. Think of peak-meters on audio equipment, it's the vibe ๐ง If a diagram contains daily totals for some period, the peaks are the most busy hour during each day. If the diagram shows totals on an hourly basis, the peak is the maximum 10 minute period for each hour ๐
by combining the average and the maximum values for a certain time period, you can detect line utilization and bottlenecks caused by temporary high loads. main character energy for your dashboards ๐
7.2.3.2. Utilization Visualized as a Frequency Distribution of Peaks ๐ฆ
another way to visualize line utilization is to put the 10 minute samples in a histogram. It shows the relative frequency among the samples vs. the load ๐๐
8. Considerations for Future Development ๐ธ
this memo is the first effort at formalizing a common basis for operational statistics ๐ One major guideline has been to keep the model simple, so vendors and NOCs can easily integrate it into their operational tools ๐ง There are, however, some ideas that could be progressed further to expand the scope and usability of the model ๐ฑ
8.1. A Client/Server Based Statistical Exchange System ๐ฐ๏ธ
a possible way to develop this is a client/server based architecture for providing Internet access to operational statistics. The idea is that each NOC should install a server that provides locally collected information in a variety of forms for clients ๐ป
the client should be able to use a query language to define the network object, the interface, the metrics, and the time period it wants. Using a TCP based protocol, the server then transmits the requested data ๐จ Once the client receives it, the data can be processed and presented by a variety of tools. One possibility is an X-Window based tool that displays defined diagrams from data, with the diagrams fed into the X-Window tool directly from the statistical server ๐ช Another complementary method is generating PostScript output so you can print the diagrams ๐จ๏ธ In all cases there should be the possibility to store the retrieved data locally for later processing ๐พโจ
8.2. Inclusion of Variables not in the Internet Standard MIB ๐งฉ
as pointed out above in the categorization of metrics, there are metrics that certainly could have been recommended if they were available in the Internet Standard MIB ๐ฅบ To make such metrics part of the recommended set, it will be necessary to specify a subtree in the Internet Standard MIB containing the variables judged necessary for performing operational statistics ๐ณ
8.3. Detailed Resource Utilization Statistics ๐
one area of interest not covered in the description of metrics and presentation formats above is detailed views of traffic flows. These views could include statistics per application and per protocol ๐ช Today such metrics are not part of the Internet Standard MIB, but tools like the NSF NNStat are already gathering this kind of information ๐ต๏ธโโ๏ธ A possible way to get such data is to define an NNStat MIB, or to include such variables in the suggested operational statistics MIB subtree ๐
APPENDIX A โจ
Some formulas for statistical aggregation ๐งฎ
the following naming conventions are being used:
For poll values poll(n)_j
n = Polling or aggregation period
j = Entry number
so poll(900)_j is the 15 minute total value ๐
For peak values peak(n,m)_j
n = Period over which the peak is calculated
m = The peak period length
j = Entry number
and peak(3600,900)_j is the maximum 15 minute period calculated over 1 hour ๐ฐ๏ธ
peak(3600,900)_j is thus the maximum 15 minute period calculated
over 1 hour.
assume a polling over a 24 hour period giving 1440 logged entries ๐
without any aggregation we have:
poll(60)_1
......
poll(60)_1439
15 minute aggregation will give 96 entries of total values ๐
poll(900)_1
....
poll(900)_96
j=(n+14)
poll(900)_k = SUM poll(60)_j n=1,16,31,...1425
j=n k=1,2,....,96
there will also be 96 1 minute peak values ๐
j=(n+14)
peak(900,60)_k = MAX poll(60)_000j n=1,16,31,....,1425
j=n k=1,2,....,96
next aggregation step is from 15 minute to 1 hour โฉ This gives 24 totals ๐ง
j=(n+3)
poll(3600)_k = SUM poll(900)_j n=1,5,9,.....,93
j=n k=1,2,....,24
and 24 1 minute peaks calculated over each hour:
j=(n+3)
peak (3600,60)_k = MAX peak(900,60)_j n=1,5,9,.....,93
j=n k=1,2,....24
and finally 24 15 minute peaks calculated over each hour:
j=(n+3)
peak (3600,900) = MAX poll(900)_j n=1,5,9,.....,93
j=n
next aggregation step is from 1 hour to 24 hour ๐ For each day with 1440 entries as above, this will give:
j=(n+23)
poll(86400)_k = SUM poll(3600)_j n=1,25,51,.......
j=n k=1,2............
j=(n+23)
peak(86400,60)_k = MAX peak(3600,60)_j n=1,25,51,....
j=n k=1,2.........
which gives the busiest 1 minute period over 24 hours ๐ฅ
j=(n+23)
peak(86400,900)_k = MAX peak(3600,900)_j n=1,25,51,....
j=n k=1,2,........
which gives the busiest 15 minute period over 24 hours ๐ซ
j=(n+23)
peak(86400,3600)_k = MAX poll(3600)_j n=1,25,51,....
j=n k=1,2,........
which gives the busiest 1 hour period over 24 hours ๐
there will probably be a difference between the three peak values in the final 24 hour aggregation. Smaller peak periods give higher values than longer ones, i.e., if they're adjusted to be numerically comparable ๐ค
poll(86400)/3600 < peak(86400,3600) < peak(86400,900)*4
< peak(86400,60)*60
APPENDIX B โจ
An example ๐
okay bestie, this is my favorite part because we get to watch the numbers actually move ๐ฆ say we've got this data storage:
BEGIN_DEVICE
....
UNI-1,total,ifInOctet, 60, 60,ifOutOctet, 60, 60
BRD-1,total,ifInNUcastPkts,300,300,ifOutNUcastPkts,300,300
....
and when we run it through, it gives us:
BEGIN_DATA
19920730000000,UNI-1,60, val1-1,val2-1
19920730000060,UNI-1,60, val1-2,val2-2
19920730000120,UNI-1,60, val1-3,val2-3
19920730000180,UNI-1,60, val1-4,val2-4
19920730000240,UNI-1,60, val1-5,val2-5
19920730000300,UNI-1,60, val1-6,val2-6
19920730000300,BRD-1,300, val1-7,val2-7
19920730000360,UNI-1,60, val1-8,val2-8
...
now aggregating to 15 minutes ๐ซถ
BEGIN_DEVICE
....
UNI-1,total,ifInOctet, 60,900,ifOutOctet, 60,900
BRD-1,total,ifInNUcastPkts,300,900,ifOutNUcastPkts,300,900
UNI-2,peak, ifInOctet, 60,900,ifOutOctet, 60,900
BRD-2,peak, ifInNUcastPkts,300,900,ifOutNUcastPkts,300,900
....
and the key to reading that is:
where UNI-1 is the 15 minute total
BRD-1 is the 15 minute total
UNI-2 is the 1 minute peak over 15 minute (peak = peak(1))
BRD-2 is the 5 minute peak over 15 minute (peak = peak(1))
which gives:
BEGIN_DATA
19920730000900,UNI-1,900, tot-val1,tot-val2
19920730000900,BRD-1,900, tot-val1,tot-val2
19920730000900,UNI-2,900, peak(1)-val1,peak(1)-val2
19920730000900,BRD-2,900, peak(1)-val1,peak(1)-val2
19920730001800,UNI-1,900, tot-val1,tot-val2
19920730001800,BRD-1,900, tot-val1,tot-val2
19920730001800,UNI-2,900, peak(1)-val1,peak(1)-val2
19920730001800,BRD-2,900, peak(1)-val1,peak(1)-val2
......
next up is the one hour step ๐
BEGIN_DEVICE
....
UNI-1,total,ifInOctet, 60,3600,ifOutOctet, 60,3600
BRD-1,total,ifInNUcastPkts,300,3600,ifOutNUcastPkts,300,3600
UNI-2,peak,ifInOctet, 60,3600,ifOutOctet, 60,3600
BRD-2,peak,ifInNUcastPkts, 300, 900,ifOutNUcastPkts,300, 900
UNI-3,peak,ifInOctet, 900,3600,ifOutOctet, 900,3600
BRD-3,peak,ifInNUcastPkts, 900,3600,ifOutNUcastPkts,900,3600
where:
where
UNI-1 is the one hour total
BRD-1 is the one hour total
UNI-2 is the 1 minute peak over 1 hour (peak of peak = peak(2))
BRD-2 is the 5 minute peak over 1 hour (peak of peak = peak(2))
UNI-3 is the 15 minute peak over 1 hour (peak = peak(1))
BRD-3 is the 15 minute peak over 1 hour (peak = peak(1))
which gives:
BEGIN_DATA
19920730003600,UNI-1,3600, tot-val1,tot-val2
19920730003600,BRD-1,3600, tot-val1,tot-val2
19920730003600,UNI-2,3600, peak(2)-val1,peak(2)-val2
19920730003600,BRD-2,3600, peak(2)-val1,peak(2)-val2
19920730003600,UNI-3,3600, peak(1)-val1,peak(1)-val2
19920730003600,BRD-3,3600, peak(1)-val1,peak(1)-val2
19920730007200,UNI-1,3600, tot-val1,tot-val2
19920730007200,BRD-1,3600, tot-val1,tot-val2
19920730007200,UNI-2,3600, peak(2)-val1,peak(2)-val2
19920730007200,BRD-2,3600, peak(2)-val1,peak(2)-val2
19920730007200,UNI-3,3600, peak(1)-val1,peak(1)-val2
19920730007200,BRD-3,3600, peak(1)-val1,peak(1)-val2
......
and finally, the one day step ๐ this one is the big finish:
UNI-1,total,ifInOctet,60,86400,ifOutOctet,60,86400
BRD-1,total,ifInNUcastPkts,300,86400,ifOutNUcastPkts,300,86400
UNI-2,peak,ifInOctet,60,86400,ifOutOctet,60,86400
BRD-2,peak,ifInNUcastPkts,300,900,ifOutNUcastPkts,300,900
UNI-3,peak,ifInOctet,900,86400,ifOutOctet,900,86400
BRD-3,peak,ifInNUcastPkts,900,86400,ifOutNUcastPkts,900,86400
UNI-4,peak,ifInOctet,3600,86400,ifOutOctet,3600,86400
BRD-4,peak,ifInNUcastPkts,3600,86400,ifOutNUcastPkts,3600,86400
where:
where
UNI-1 is the 24 hour total
BRD-1 is the 24 hour total
UNI-2 is the 1 minute peak over 24 hour
(peak of peak of peak = peak(3))
UNI-3 is the 15 minute peak over 24 hour (peak of peak = peak(2))
UNI-4 is the 1 hour peak over 24 hour (peak = peak(1))
BRD-2 is the 5 minute peak over 24 hour
(peak of peak of peak = peak(3))
BRD-3 is the 15 minute peak over 24 hour (peak of peak = peak(2))
BRD-4 is the 1 hour peak over 24 hour (peak = peak(1))
which gives:
BEGIN_DATA
19920730086400,UNI-1,86400, tot-val1,tot-val2
19920730086400,BRD-1,86400, tot-val1,tot-val2
19920730086400,UNI-2,86400, peak(3)-val1,peak(3)-val2
19920730086400,BRD-2,86400, peak(3)-val1,peak(3)-val2
19920730086400,UNI-3,86400, peak(2)-val1,peak(2)-val2
19920730086400,BRD-3,86400, peak(2)-val1,peak(2)-val2
19920730086400,UNI-4,86400, peak(1)-val1,peak(1)-val2
19920730086400,BRD-4,86400, peak(1)-val1,peak(1)-val2
19920730172800,UNI-1,86400, tot-val1,tot-val2
19920730172800,BRD-1,86400, tot-val1,tot-val2
19920730172800,UNI-2,86400, peak(3)-val1,peak(3)-val2
19920730172800,BRD-2,86400, peak(3)-val1,peak(3)-val2
19920730172800,UNI-3,86400, peak(2)-val1,peak(2)-val2
19920730172800,UNI-3,86400, peak(2)-val1,peak(2)-val2
19920730172800,UNI-4,86400, peak(1)-val1,peak(1)-val2
19920730172800,BRD-4,86400, peak(1)-val1,peak(1)-val2
......
Security Considerations ๐
Security issues are discussed in Section 2.4. ๐จ bestie, go read it, it's serious and it's giving very important energy.
Author's Address ๐
Bernhard Stockman
NORDUnet/SUNET NOC
Royal Institute of Technology
Drottning Kristinas Vag 37B
S-100 44 Stockholm, Sweden
Phone: +46 8 790-6519
Fax : +46 8 241-179
Email: boss@sunet.se
๐ฆ where this page comes from
- ietf: rfc1404 1993-01
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms