Bandwidth Profiles in VOLTHA

This document describes Bandwidth profiles format in Sadis, how they are configured to VOLTHA and how they are mapped to physical configuration for the OLT and the ONU with Traffic Descriptors and T-CONT configuration.

Bandwidth Profiles Representations in Sadis

The ONOS Sadis application supports configuration of the bandwidth profiles in two formats, IETF and MEF. The values contained are expressed in kilobits/second (kbps). The expectation is a Default meter will always present for workflows that have flow rules installed at port startup, such as for EAPOL and DHCP. Meters referred by subscribers must also be present.

The MEF Brandwidth Profile format is as follows:

{
  "id": "Default",
  "air": 100000,
  "cbs": 30,
  "cir": 600,
  "ebs": 30,
  "eir": 400
}

and the IETF format:

{
  "id": "DT_downstream_default_bw_profile",
  "pir": 1168192,
  "pbs": 0,
  "cir": 0,
  "cbs": 0,
  "gir": 0
}

Independent of format the olt ONOS apps will generate a meter-per-bandwidth profile.

An example of a meter in ONOS is:

onos> meters
DefaultMeter{device=of:00000a0a0a0a0a0a, cellId=1, appId=DefaultApplicationId{id=411, name=org.opencord.olt},
    unit=KB_PER_SEC, isBurst=true, state=ADDED,
    bands=[DefaultBand{rate=600, burst-size=30, type=DROP, drop-precedence=null},
    DefaultBand{rate=101000, burst-size=60, type=DROP, drop-precedence=null},
    DefaultBand{rate=100000, burst-size=0, type=DROP, drop-precedence=null}], annotations={}}

note the different bands that map to the values of the Default bandwidth profile as well. The number of bands in the meter are based on the BW profile. If BW profile has only PIR value, then there is only one band, but if the BW profile has all - EIR, PIR and GIR, then we have all the three bands.

The cellId=1 value is the identification of the meter (in other places used as meterId) and it will be used in flows for a subscriber that requires the specific bandwidth profile corresponding to that meter.

We can check the bandwidthProfile associated with this meter:

onos> volt-bpmeter-mappings
bpInfo=Default deviceId=of:00000000c0a8646f meterId=1

From the above, we see that meterId=1 corresponds to bandwidthProfile Default, configured in SADIS.

We can check the parameters of the configured bandwidthProfile with the following command, passing the Id of the meter in sadis:

onos> bandwidthprofile Default
BandwidthProfileInformation{id=Default, committedInformationRate=600, committedBurstSize=30, exceededInformationRate=400, exceededBurstSize=30}

Bandwidth Profiles and Subscriber Mapping

Each subscriber in sadis can refer up to 4 meters, 2 meters per ONU and 2 per OLT, upstream and downstream. An example is:

{
 "uniTagMatch" : 55,
 "ponCTag" : 55,
 "ponSTag" : 555,
 "usPonCTagPriority" : 5,
 "usPonSTagPriority" : 5,
 "dsPonCTagPriority" : 5,
 "dsPonSTagPriority" : 5,
 "technologyProfileId" : 67,
 "downstreamBandwidthProfile" : "High-Speed-Internet",
 "upstreamBandwidthProfile" : "TCONT_TYPE3_700Mbps_Peak_500Mbps_Assured_ForVoD",
 "downstreamOltBandwidthProfile" : "High-Speed-Internet",
 "upstreamOltBandwidthProfile" : "TCONT_TYPE3_700Mbps_Peak_500Mbps_Assured_ForVoD",
 "configuredMacAddress" : "2c:60:0c:ee:d7:68",
 "serviceName" : "VOD",
 "isDhcpRequired" : "true",
 "isIgmpRequired" : "true"
}

If the downstreamOltBandwidthProfile and upstreamOltBandwidthProfile are not specified the values of downstreamBandwidthProfile and upstreamBandwidthProfile are taken and used.

A meter is referred by a flow for a specific subscriber by the meter instruction, as an example the following flow refers to meter 1:

ADDED, bytes=0, packets=0, table=0, priority=10000, selector=[IN_PORT:256, ETH_TYPE:eapol],
    treatment=[immediate=[OUTPUT:CONTROLLER, VLAN_PUSH:vlan, VLAN_ID:4091], meter=METER:1,
    metadata=METADATA:ffb004000000001/0]

TCONT Mapping

Different Bandwidth profiles get mapped to different TCONT types:

  • If GIR > 0, GIR = PIR, additional_bw_eligibility = none then TCONT Type-1 is selected -> set guaranteed_bw = maximum_bw = CBR_RT_BW (or CBR_NRT_BW) = GIR and alloc_type=none and send these parameters to BAL. (alloc_type is inferred from the other parameters)

  • If GIR = 0, CIR > 0, CIR = PIR, additional_bw_eligibility = none then TCONT Type-2 is selected -> set guaranteed_bw = maximum_bw = CIR, CBR_RT_BW = 0 and CBR_NRT_BW = 0 and alloc_type = NSR and send these parameters to BAL. (alloc_type is set to NSR by default)

  • If GIR = 0, CIR > 0, PIR > CIR, additional_bw_eligibility = non_assured then TCONT Type-3 is selected -> set guaranteed_bw = CIR, maximum_bw = PIR, CBR_RT_BW = 0 and CBR_NRT_BW = 0 and alloc_type = NSR and send these parameters to BAL. (alloc_type is set to NSR by default)

  • If GIR = 0, CIR = 0, PIR > 0, additional_bw_eligibility = best_effort then TCONT Type-4 is selected -> set guaranteed_bw = 0, maximum_bw = PIR, CBR_RT_BW = 0 and CBR_NRT_BW = 0 and alloc_type = NSR and send these parameters to BAL. (alloc_type is set to NSR by default)

  • If GIR > 0, PIR >= GIR + CIR, additional_bw_eligibility = non_assured or best_effort then TCONT Type-5 is selected -> set guaranteed_bw = GIR+CIR, maximum_bw = PIR, CBR_RT_BW (or CBR_NRT_BW) = GIR and alloc_type = NSR and send these parameters to BAL. (alloc_type is set to NSR by default)

The additional_bw_eligibility can take None, BestEffort, NonAssured as values.

Further information can be found in this document that goes into depth about the T-CONT type support.

A meter gets applied to TCONTs based on the service definition on technology profile.

Traffic Descriptor (TD)

The G.988 standard at page 117 describes the mapping of values to Traffic Descriptor MEs.

For VOLTHA the Traffic Descriptor ME is computed as follows CIR(TD)=AIR+CIR, where both AIR and CIR are extracted from the bandwidth profile.

Please note that the values for the elements in the Traffic Descriptor ME are in Bytes/second so a conversion from the kilobits/second of the Sadis representation is done by multiplying the values by 125 (kbps –> bps –> Bps).