<?xml version="1.0" encoding="UTF-8"?>
<!--
  Device:2 Root Data Model: Common Object definitions [IP]

  Copyright (c) 2010-2024, Broadband Forum

  Redistribution and use in source and binary forms, with or
  without modification, are permitted provided that the following
  conditions are met:

  1. Redistributions of source code must retain the above copyright
     notice, this list of conditions and the following disclaimer.

  2. Redistributions in binary form must reproduce the above
     copyright notice, this list of conditions and the following
     disclaimer in the documentation and/or other materials
     provided with the distribution.

  3. Neither the name of the copyright holder nor the names of its
     contributors may be used to endorse or promote products
     derived from this software without specific prior written
     permission.

  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

  The above license is used as a license under copyright only.
  Please reference the Forum IPR Policy for patent licensing terms
  <https://www.broadband-forum.org/ipr-policy>.

  Any moral rights which are necessary to exercise under the above
  license grant are also deemed granted under this license.

  Comments or questions about this Broadband Forum data model should be
  directed to <info@broadband-forum.org>.
-->

<dm:document
    xmlns:dm="urn:broadband-forum-org:cwmp:datamodel-1-14"
    xmlns:dmr="urn:broadband-forum-org:cwmp:datamodel-report-1-0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
      urn:broadband-forum-org:cwmp:datamodel-1-14
        https://www.broadband-forum.org/cwmp/cwmp-datamodel-1-14.xsd
      urn:broadband-forum-org:cwmp:datamodel-report-1-0
        https://www.broadband-forum.org/cwmp/cwmp-datamodel-report-1-0.xsd"
    spec="urn:broadband-forum-org:tr-181-2-20-0-ip"
    file="tr-181-2-20-0-ip.xml">

  <import file="tr-069-biblio.xml" spec="urn:broadband-forum-org:tr-069"/>

  <import file="tr-106-types.xml" spec="urn:broadband-forum-org:tr-106">
    <component name="Alias"/>
    <dataType name="IPAddress"/>
    <dataType name="IPv4Address"/>
    <dataType name="IPv6Address"/>
    <dataType name="IPv6Prefix"/>
    <dataType name="URL"/>
    <dataType name="StatsCounter64"/>
  </import>

  <import file="tr-181-2-root.xml"
      spec="urn:broadband-forum-org:tr-181-2-20-root">
    <component name="Root"/>
  </import>

  <import file="tr-181-2-interface.xml"
    spec="urn:broadband-forum-org:tr-181-2-20-interface">
    <component name="Layer3Interface"/>
  </import>

  <template id="IP-DIAGNOSTICS-PARENT">
    #.
  </template>

  <template id="IP-LAYER-CAPACITY-DIAG-PARENT">
    ##.IPLayerCapacity().Input.
  </template>

  <component name="IPAccessControl">
    <parameter name="AllowAllIPv4" access="readWrite" version="2.16">
      <description>
        Allow incoming IP connections from any IPv4 address. The source prefixes defined in
        {{param|IPv4AllowedSourcePrefix}} will be ignored.
      </description>
      <syntax>
        <boolean/>
        <default type="object" value="false"/>
      </syntax>
    </parameter>

    <parameter name="IPv4AllowedSourcePrefix" access="readWrite" version="2.16">
      <description>
        Allow only incoming IP connections from the provided list of IPv4 prefixes.

        When {{param}} is set to {{empty}} and {{param|AllowAllIPv4}} is set to ''false'',
        no incoming IP connections are allowed.

        When {{param|AllowAllIPv4}} is set ''true'', {{param}} is ignored.
      </description>
      <syntax>
        <list>
          <size maxLength="1024"/>
        </list>
        <string/>
      </syntax>
    </parameter>

    <parameter name="AllowAllIPv6" access="readWrite" version="2.16">
      <description>
        Allow incoming IP connections from any IPv6 address. The source prefixes defined in
        {{param|IPv6AllowedSourcePrefix}} will be ignored.
      </description>
      <syntax>
        <boolean/>
        <default type="object" value="false"/>
      </syntax>
    </parameter>

    <parameter name="IPv6AllowedSourcePrefix" access="readWrite" version="2.16">
      <description>
        Allow only incoming IP connections from the provided list of IPv6 prefixes.

        When {{param}} is set to {{empty}} and {{param|AllowAllIPv6}} is set to ''false'',
        no incoming IP connections are allowed.

        When {{param|AllowAllIPv6}} is set ''true'', {{param}} is ignored.
      </description>
      <syntax>
        <list>
          <size maxLength="1024"/>
        </list>
        <string/>
      </syntax>
    </parameter>
  </component>

  <component name="IPVersion">
    <parameter name="IPVersion" access="readWrite" version="2.2">
      <description>
        Specifies the IP protocol version, following the definitions in {{bibref|IANA-ipversionnumbers}}.
        Valid values are: {{range}}.
      </description>
      <syntax>
        <int>
          <range minInclusive="4" maxInclusive="4">
            <description>IPv4</description>
          </range>
          <range minInclusive="6" maxInclusive="6">
            <description>IPv6</description>
          </range>
          <range minInclusive="-1" maxInclusive="-1">
            <description>
              No specific IP version is required
            </description>
          </range>
        </int>
        <default type="object" value="-1"/>
      </syntax>
    </parameter>
  </component>

  <component name="IPPingDiagnosticsInput">

    <parameter name="Interface" access="readWrite" version="2.0">
      <description>
        {{reference}} The layer 2 or layer 3 interface over which the test is
        to be performed. Example: ''Device.IP.Interface.1'',
        ''Device.Bridge.1.Port.2''

        {{template|INTERFACE-ROUTING}}
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
          <pathRef refType="weak" targetType="row"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="ProtocolVersion" access="readWrite" mandatory="true"
        version="2.8">
      <description>
        Indicates the IP protocol to be used.
      </description>
      <syntax>
        <string>
          <enumeration value="Any">
            <description>
              Use either IPv4 or IPv6 depending on the system preference
            </description>
          </enumeration>
          <enumeration value="IPv4">
            <description>Use IPv4 for the Ping requests</description>
          </enumeration>
          <enumeration value="IPv6">
            <description>Use IPv6 for the Ping requests</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="Host" access="readWrite" mandatory="true" version="2.0">
      <description>
        Host name or address of the host to ping.

        In the case where {{param}} is specified by name, and the name resolves
        to more than one address, it is up to the device implementation to
        choose which address to use.
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="NumberOfRepetitions" access="readWrite" mandatory="true"
        version="2.0">
      <description>
        Number of repetitions of the ping test to perform before reporting the
        results.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="Timeout" access="readWrite" mandatory="true"
        version="2.0">
      <description>
        Timeout in {{units}} for the ping test.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DataBlockSize" access="readWrite" mandatory="true"
        version="2.0">
      <description>
        Size of the data block in bytes to be sent for each ping.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="65535"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DSCP" access="readWrite" version="2.0">
      <description>
        DiffServ codepoint to be used for the test packets. By default the CPE
        SHOULD set this value to zero.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="63"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPPingDiagnosticsOutput">

    <parameter name="IPAddressUsed" access="readOnly" version="2.8">
      <description>
        Indicates which IP address was used to send the Ping request. The
        parameter is only valid if the {{param|DiagnosticsState}} is
        {{enum|Complete|DiagnosticsState}}.
      </description>
      <syntax>
        <dataType ref="IPAddress"/>
      </syntax>
    </parameter>

    <parameter name="SuccessCount" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        Result parameter indicating the number of successful pings (those in
        which a successful response was received prior to the timeout) in the
        most recent ping test.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="FailureCount" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        Result parameter indicating the number of failed pings in the most
        recent ping test.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="AverageResponseTime" access="readOnly"
        activeNotify="canDeny" version="2.0">
      <description>
        Result parameter indicating the average response time in {{units}} over
        all repetitions with successful responses of the most recent ping test.
        If there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MinimumResponseTime" access="readOnly"
        activeNotify="canDeny" version="2.0">
      <description>
        Result parameter indicating the minimum response time in {{units}} over
        all repetitions with successful responses of the most recent ping test.
        If there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MaximumResponseTime" access="readOnly" version="2.0">
      <description>
        Result parameter indicating the maximum response time in {{units}} over
        all repetitions with successful responses of the most recent ping test.
        If there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="AverageResponseTimeDetailed" access="readOnly"
        activeNotify="canDeny" version="2.7">
      <description>
        Result parameter indicating the average response time in {{units}} over
        all repetitions with successful responses of the most recent ping test.
        If there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MinimumResponseTimeDetailed" access="readOnly"
        activeNotify="canDeny" version="2.7">
      <description>
        Result parameter indicating the minimum response time in {{units}} over
        all repetitions with successful responses of the most recent ping test.
        If there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MaximumResponseTimeDetailed" access="readOnly"
        version="2.7">
      <description>
        Result parameter indicating the maximum response time in {{units}} over
        all repetitions with successful responses of the most recent ping test.
        If there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPTraceRouteDiagnosticsInput">

    <parameter name="Interface" access="readWrite" version="2.0">
      <description>
        {{reference}} The layer 2 or layer 3 interface over which the test is
        to be performed. Example: ''Device.IP.Interface.1'',
        ''Device.Bridge.1.Port.2''

        {{template|INTERFACE-ROUTING}}
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
          <pathRef refType="weak" targetType="row"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="ProtocolVersion" access="readWrite" mandatory="true"
        version="2.8">
      <description>
        Indicates the IP protocol to be used.
      </description>
      <syntax>
        <string>
          <enumeration value="Any">
            <description>
              Use either IPv4 or IPv6 depending on the system preference
            </description>
          </enumeration>
          <enumeration value="IPv4">
            <description>Use IPv4 for the TraceRoute</description>
          </enumeration>
          <enumeration value="IPv6">
            <description>Use IPv6 for the TraceRoute</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="Host" access="readWrite" mandatory="true" version="2.0">
      <description>
        Host name or address of the host to find a route to.

        In the case where {{param}} is specified by name, and the name resolves
        to more than one address, it is up to the device implementation to
        choose which address to use.
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="NumberOfTries" access="readWrite" version="2.0">
      <description>
        Number of tries per hop. Set prior to running Diagnostic. By default,
        the CPE SHOULD set this value to 3.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="3"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="Timeout" access="readWrite" version="2.0">
      <description>
        Timeout in {{units}} for each hop of the trace route test. By default
        the CPE SHOULD set this value to 5000.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DataBlockSize" access="readWrite" version="2.0">
      <description>
        Size of the data block in bytes to be sent for each trace route. By
        default, the CPE SHOULD set this value to 38.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="65535"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DSCP" access="readWrite" version="2.0">
      <description>
        DiffServ codepoint to be used for the test packets. By default the CPE
        SHOULD set this value to 0.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="63"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MaxHopCount" access="readWrite" version="2.0">
      <description>
        The maximum number of hop used in outgoing probe packets (max TTL). By
        default the CPE SHOULD set this value to 30.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="64"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPTraceRouteDiagnosticsOutputNumberOfEntries">
    <parameter name="RouteHopsNumberOfEntries" access="readOnly"
        activeNotify="canDeny">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>
  </component>

  <component name="IPTraceRouteDiagnosticsOutput">

    <parameter name="IPAddressUsed" access="readOnly" version="2.8">
      <description>
        Indicates which IP address was used for TraceRoute. The parameter is
        only valid if the {{param|DiagnosticsState}} is
        {{enum|Complete|DiagnosticsState}}.
      </description>
      <syntax>
        <dataType ref="IPAddress"/>
      </syntax>
    </parameter>

    <parameter name="ResponseTime" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        Result parameter indicating the response time in {{units}} the most
        recent trace route test. If a route could not be determined, this value
        MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <object name="RouteHops.{i}." access="readOnly"
        numEntriesParameter="RouteHopsNumberOfEntries" minEntries="0"
        maxEntries="unbounded" dmr:noUniqueKeys="true" version="2.0">
      <description>
        Contains the array of hop results returned. If a route could not be
        determined, this array will be empty
      </description>

      <parameter name="Host" access="readOnly" activeNotify="canDeny">
        <description>
          Result parameter indicating the Host Name if DNS is able to resolve
          or IP Address of a hop along the discovered route.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="HostAddress" access="readOnly" activeNotify="canDeny">
        <description>
          If this parameter is not {{empty}} it will contain the last IP
          address of the host returned for this hop and the {{param|Host}} will
          contain the Host Name returned from the reverse DNS query.
        </description>
        <syntax>
          <string/>
        </syntax>
      </parameter>

      <parameter name="ErrorCode" access="readOnly" activeNotify="canDeny">
        <description>
          Contains the error code returned for this hop. This code is directly
          from the ICMP CODE field.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="RTTimes" access="readOnly">
        <description>
          {{list}} Each list item contains one or more round trip times in
          {{units}} (one for each repetition) for this hop.

          A list item of 0 indicates that the corresponding response was not
          received. Round trip times of less than 1 {{units}} MUST be rounded
          up to 1.

          The number of list entries is determined by the value of
          {{param|#.NumberOfTries}}.
        </description>
        <syntax>
          <list minItems="1" maxItems="3">
          </list>
          <unsignedInt>
            <units value="milliseconds"/>
          </unsignedInt>
        </syntax>
      </parameter>
    </object>
  </component>

  <component name="IPDownloadDiagnosticsCapabilities">

    <parameter name="DownloadTransports" access="readOnly" version="2.0">
      <description>
        Supported ''DownloadDiagnostics'' transport protocols for a CPE device.
      </description>
      <syntax>
        <list/>
        <string>
          <enumeration value="HTTP"/>
          <enumeration value="FTP" optional="true"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="DownloadDiagnosticMaxConnections" access="readOnly"
        version="2.9">
      <description>
        Indicates the maximum number of connections that are supported by
        Download Diagnostics.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DownloadDiagnosticsMaxIncrementalResult"
        access="readOnly" version="2.9">
      <description>
        The maximum number of rows in {{object|IncrementalResult}} that the CPE
        will store.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPDownloadDiagnosticsInput">

    <parameter name="Interface" access="readWrite" version="2.0">
      <description>
        {{reference}} The IP-layer interface over which the test is to be
        performed. Example: Device.IP.Interface.1

        {{template|INTERFACE-ROUTING}}
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
          <pathRef refType="weak" targetType="row"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="DownloadURL" access="readWrite" mandatory="true"
        version="2.0">
      <description>
        The {{datatype}} for the CPE to perform the download on. This parameter
        MUST be in the form of a valid HTTP {{bibref|RFC2616}} or FTP
        {{bibref|RFC959}} URL.

        * When using FTP transport, FTP binary transfer MUST be used.

        * When using HTTP transport, persistent connections MUST be used and
          pipelining MUST NOT be used.

        * When using HTTP transport the HTTP Authentication MUST NOT be used.

        Note: For time based tests ({{param|TimeBasedTestDuration}} &gt; 0) the
        Controller MAY add a hint to duration of the test to the URL. See
        {{bibref|TR-143|Section 4.3}} for more details.
      </description>
      <syntax>
        <dataType ref="URL"/>
      </syntax>
    </parameter>

    <parameter name="DSCP" access="readWrite" version="2.0">
      <description>
        The DiffServ code point for marking packets transmitted in the test.

        The default value SHOULD be zero.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="63"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="EthernetPriority" access="readWrite" version="2.0">
      <description>
        Ethernet priority code for marking packets transmitted in the test (if
        applicable).

        The default value SHOULD be zero.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="7"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimeBasedTestDuration" access="readWrite" version="2.9">
      <description>
        Controls time based testing {{bibref|TR-143|Section 4.3}}. When
        {{param}} &gt; 0, {{param}} is the duration in {{units}} of a time
        based test. If {{param}} is 0, the test is not based on time, but on
        the size of the file to be downloaded. The default value SHOULD be 0.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="999"/>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimeBasedTestMeasurementInterval" access="readWrite"
        version="2.9">
      <description>
        The measurement interval duration in {{units}} for objects in
        {{object|IncrementalResult}} for a time based FTP/HTTP download test
        (when {{param|TimeBasedTestDuration}} &gt; 0). The default value SHOULD
        be 0, which implies {{object|IncrementalResult}} collection is
        disabled.

        For example if {{param|TimeBasedTestDuration}} is 90 {{units}} and
        {{param}} is 10 {{units}}, there will be 9 results in
        {{object|IncrementalResult}}, each with a 10 {{units}} duration.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="999"/>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimeBasedTestMeasurementOffset" access="readWrite"
        version="2.9">
      <description>
        This {{param}} works in conjunction with
        {{param|TimeBasedTestMeasurementInterval}} to allow the interval
        measurement to start a number of {{units}} after {{param|BOMTime}}. The
        test measurement interval in {{object|IncrementalResult}} starts at
        time {{param|BOMTime}} + {{param}} to allow for slow start window
        removal of file transfers.

        This {{param}} is in {{units}}. The default value SHOULD be 0.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="255"/>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="ProtocolVersion" access="readWrite" version="2.9">
      <description>
        Indicates the IP protocol version to be used. The default value SHOULD
        be {{enum|Any}}.
      </description>
      <syntax>
        <string>
          <enumeration value="Any">
            <description>
              Use either IPv4 or IPv6 depending on the system preference.
            </description>
          </enumeration>
          <enumeration value="IPv4">
            <description>Use IPv4 for the requests</description>
          </enumeration>
          <enumeration value="IPv6">
            <description>Use IPv6 for the requests.</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="NumberOfConnections" access="readWrite" version="2.9">
      <description>
        The number of connections to be used in the test. The default value
        SHOULD be 1. {{param}} MUST NOT be set to a value greater than
        {{param|DownloadDiagnosticMaxConnections}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPDownloadDiagnosticsInput2">

    <parameter name="EnablePerConnectionResults" access="readWrite"
        activeNotify="canDeny" version="2.9">
      <description>
        The results must be returned in the {{object|PerConnectionResult}}
        table for every connection when set to {{true}}. The default value
        SHOULD be {{false}}.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>
  </component>

  <component name="IPDownloadDiagnosticsOutputNumberOfEntries">
    <parameter name="PerConnectionResultNumberOfEntries" access="readOnly"
        dmr:previousParameter="TCPOpenResponseTime" version="2.9">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="IncrementalResultNumberOfEntries" access="readOnly"
        dmr:previousParameter="EnablePerConnectionResults" version="2.9">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>
  </component>

  <component name="IPDownloadDiagnosticsOutput">

    <parameter name="IPAddressUsed" access="readOnly" activeNotify="canDeny"
        version="2.9">
      <description>
        Indicates which IP address was used to send the request.
      </description>
      <syntax>
        <dataType ref="IPAddress"/>
      </syntax>
    </parameter>

    <parameter name="ROMTime" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        Request time in UTC, which MUST be specified to microsecond precision.

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the client sends the GET command.

        * For FTP this is the time at which the client sends the RTRV command.

        If multiple connections are used, then {{param}} is set to the earliest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="BOMTime" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        Begin of transmission time in UTC, which MUST be specified to
        microsecond precision

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the first data packet is received.

        * For FTP this is the time at which the client receives the first data
          packet on the data connection.

        If multiple connections are used, then {{param}} is set to the earliest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="EOMTime" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        End of transmission in UTC, which MUST be specified to microsecond
        precision.

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the last data packet is received.

        * For FTP this is the time at which the client receives the last packet
          on the data connection.

        If multiple connections are used, then {{param}} is set to the latest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="TestBytesReceived" access="readOnly" version="2.0">
      <description>
        The number of {{units}} received during the FTP/HTTP transaction
        including FTP/HTTP headers, between {{param|BOMTime}} and
        {{param|EOMTime}} across all connections.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TotalBytesReceived" access="readOnly" version="2.0">
      <description>
        The total number of {{units}} (at the IP layer) received on the
        Interface between {{param|BOMTime}} and {{param|EOMTime}}. This MAY be
        calculated by sampling Stats.BytesReceived on the {{param|Interface}}
        object at {{param|BOMTime}} and at {{param|EOMTime}} and subtracting.
        If {{param|Interface}} is {{empty}}, this parameter cannot be
        determined and SHOULD be 0.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TotalBytesSent" access="readOnly" version="2.9">
      <description>
        The total number of {{units}} (at the IP layer) sent on the Interface
        between {{param|BOMTime}} and {{param|EOMTime}}. This MAY be calculated
        by sampling Stats.BytesSent on the {{param|Interface}} object at
        {{param|BOMTime}} and at {{param|EOMTime}} and subtracting. If
        {{param|Interface}} is {{empty}}, this parameter cannot be determined
        and SHOULD be 0.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TestBytesReceivedUnderFullLoading" access="readOnly"
        version="2.9">
      <description>
        The number of {{units}} of the test file received between the latest
        {{param|PerConnectionResult.{i}.BOMTime}} and the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} across all connections.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TotalBytesReceivedUnderFullLoading" access="readOnly"
        version="2.9">
      <description>
        The total number of {{units}} (at the IP layer) received in between the
        latest {{param|PerConnectionResult.{i}.BOMTime}} and the earliest
        {{param|PerConnectionResult.{i}.EOMTime}}. This MAY be calculated by
        sampling Stats.BytesReceived on the {{param|Interface}} object at the
        latest {{param|PerConnectionResult.{i}.BOMTime}} and at the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} and subtracting.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TotalBytesSentUnderFullLoading" access="readOnly"
        version="2.9">
      <description>
        The total number of {{units}} (at the IP layer) sent between the latest
        {{param|PerConnectionResult.{i}.BOMTime}} and the earliest
        {{param|PerConnectionResult.{i}.EOMTime}}. This MAY be calculated by
        sampling Stats.BytesSent on the {{param|Interface}} object at the
        latest {{param|PerConnectionResult.{i}.BOMTime}} and at the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} and subtracting.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="PeriodOfFullLoading" access="readOnly" version="2.9">
      <description>
        The period of time in {{units}} between the latest
        {{param|PerConnectionResult.{i}.BOMTime}} and the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} of the test.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TCPOpenRequestTime" access="readOnly"
        activeNotify="canDeny" version="2.0">
      <description>
        Request time in UTC, which MUST be specified to microsecond precision.

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the TCP socket open (SYN) was sent
          for the HTTP connection.

        * For FTP this is the time at which the TCP socket open (SYN) was sent
          for the data connection.

        Note: Interval of 1 microsecond SHOULD be supported.

        If multiple connections are used, then {{param}} is set to the latest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="TCPOpenResponseTime" access="readOnly"
        activeNotify="canDeny" version="2.0">
      <description>
        Response time in UTC, which MUST be specified to microsecond precision.

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the TCP ACK to the socket opening
          the HTTP connection was received.

        * For FTP this is the time at which the TCP ACK to the socket opening
          the data connection was received.

        Note: Interval of 1 microsecond SHOULD be supported.

        If multiple connections are used, then {{param}} is set to the latest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <object name="PerConnectionResult.{i}." access="readOnly"
        numEntriesParameter="PerConnectionResultNumberOfEntries" minEntries="0"
        maxEntries="unbounded" dmr:noUniqueKeys="true" version="2.9">
      <description>
        Results for individual connections. This table is only populated when
        {{param|#.EnablePerConnectionResults}} is {{true}}. A new object is
        created for each connection specified in
        {{param|#.NumberOfConnections}}. Instance numbers MUST start at 1 and
        sequentially increment as new instances are created. All instances are
        removed when {{param|#.DiagnosticsState}} is set to
        {{enum|Requested|#.DiagnosticsState}} or
        {{enum|None|#.DiagnosticsState}}.
      </description>

      <parameter name="ROMTime" access="readOnly" activeNotify="canDeny">
        <description>
          Request time in UTC, which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the client sends the GET
            command.

          * For FTP this is the time at which the client sends the RTRV
            command.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="BOMTime" access="readOnly" activeNotify="canDeny">
        <description>
          Begin of transmission time in UTC, which MUST be specified to
          microsecond precision

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the first data packet is
            received.

          * For FTP this is the time at which the client receives the first
            data packet on the data connection.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="EOMTime" access="readOnly" activeNotify="canDeny">
        <description>
          End of transmission in UTC, which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the last data packet is
            received.

          * For FTP this is the time at which the client receives the last
            packet on the data connection.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="TestBytesReceived" access="readOnly"
          activeNotify="canDeny">
        <description>
          The number of {{units}} of the test file received during the FTP/HTTP
          transaction including FTP/HTTP headers, between {{param|BOMTime}} and
          {{param|EOMTime}}.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TotalBytesReceived" access="readOnly"
          activeNotify="canDeny">
        <description>
          The total number of {{units}} (at the IP layer) received on the
          Interface between {{param|BOMTime}} and {{param|EOMTime}}. This MAY
          be calculated by sampling Stats.BytesReceived on the
          {{param|#.Interface}} object at {{param|BOMTime}} and at
          {{param|EOMTime}} and subtracting.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TotalBytesSent" access="readOnly"
          activeNotify="canDeny">
        <description>
          The total number of {{units}} (at the IP layer) sent on the Interface
          between {{param|BOMTime}} and {{param|EOMTime}}. This MAY be
          calculated by sampling Stats.BytesSent on the {{param|#.Interface}}
          object at {{param|BOMTime}} and at {{param|EOMTime}} and subtracting.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TCPOpenRequestTime" access="readOnly"
          activeNotify="canDeny">
        <description>
          Request time in UTC, which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the TCP socket open (SYN) was
            sent for the HTTP connection.

          * For FTP this is the time at which the TCP socket open (SYN) was
            sent for the data connection.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="TCPOpenResponseTime" access="readOnly"
          activeNotify="canDeny">
        <description>
          Response time in UTC, which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the TCP ACK to the socket
            opening the HTTP connection was received.

          * For FTP this is the time at which the TCP ACK to the socket opening
            the data connection was received.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>

    <object name="IncrementalResult.{i}." access="readOnly"
        numEntriesParameter="IncrementalResultNumberOfEntries" minEntries="0"
        maxEntries="unbounded" dmr:noUniqueKeys="true" version="2.9">
      <description>
        Results for time segmented tests (tests where
        {{param|#.TimeBasedTestDuration}} &gt; 0 and
        {{param|#.TimeBasedTestMeasurementInterval}} &gt; 0). This data is
        totaled across all connections in the test. A new object is created
        every {{param|#.TimeBasedTestMeasurementInterval}} after that interval
        has completed. Instance numbers MUST start at 1 and sequentially
        increment as new instances are created. All instances are removed when
        {{param|#.DiagnosticsState}} is set to
        {{enum|Requested|#.DiagnosticsState}} or
        {{enum|None|#.DiagnosticsState}}.
      </description>

      <parameter name="TestBytesReceived" access="readOnly"
          activeNotify="canDeny">
        <description>
          Change in the value of {{param|#.TestBytesReceivedUnderFullLoading}}
          between {{param|StartTime}} and {{param|EndTime}}, measured in
          {{units}}.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TotalBytesReceived" access="readOnly">
        <description>
          The total number of {{units}} (at the IP layer) received on the
          Interface between {{param|StartTime}} and {{param|EndTime}}. This MAY
          be calculated by sampling Stats.BytesReceived on the
          {{param|#.Interface}} object at {{param|StartTime}} and at
          {{param|EndTime}} and subtracting. If {{param|#.Interface}} is
          {{empty}}, this parameter cannot be determined and SHOULD be 0.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TotalBytesSent" access="readOnly">
        <description>
          The total number of {{units}} (at the IP layer) sent on the Interface
          between {{param|StartTime}} and {{param|EndTime}}. This MAY be
          calculated by sampling Stats.BytesSent on the {{param|#.Interface}}
          object at {{param|StartTime}} and at {{param|EndTime}} and
          subtracting. If {{param|#.Interface}} is {{empty}}, this parameter
          cannot be determined and SHOULD be 0.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="StartTime" access="readOnly" activeNotify="canDeny">
        <description>
          The start time of this interval which MUST be specified to
          microsecond precision.

          For example: 2008-04-09T15:01:05.123456Z
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="EndTime" access="readOnly" activeNotify="canDeny">
        <description>
          The end time of this interval which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>
  </component>

  <component name="IPUploadDiagnosticsCapabilities">

    <parameter name="UploadTransports" access="readOnly" version="2.0">
      <description>
        Supported ''UploadDiagnostics'' transport protocols for a CPE device.
      </description>
      <syntax>
        <list/>
        <string>
          <enumeration value="HTTP"/>
          <enumeration value="FTP" optional="true"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="UploadDiagnosticsMaxConnections" access="readOnly"
        version="2.9">
      <description>
        Indicates the maximum number of connections that are supported by
        Upload Diagnostics.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="UploadDiagnosticsMaxIncrementalResult" access="readOnly"
        version="2.9">
      <description>
        The maximum number of rows in {{object|IncrementalResult}} that the CPE
        will store.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPUploadDiagnosticsInput">

    <parameter name="Interface" access="readWrite" version="2.0">
      <description>
        {{reference}} The IP-layer interface over which the test is to be
        performed. Example: Device.IP.Interface.1

        {{template|INTERFACE-ROUTING}}
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
          <pathRef refType="weak" targetType="row"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="UploadURL" access="readWrite" mandatory="true"
        version="2.0">
      <description>
        The {{datatype}} for the CPE to Upload to. This parameter MUST be in
        the form of a valid HTTP {{bibref|RFC2616}} or FTP {{bibref|RFC959}}
        URL.

        * When using FTP transport, FTP binary transfer MUST be used.

        * When using HTTP transport, persistent connections MUST be used and
          pipelining MUST NOT be used.

        * When using HTTP transport the HTTP Authentication MUST NOT be used.
      </description>
      <syntax>
        <dataType ref="URL"/>
      </syntax>
    </parameter>

    <parameter name="DSCP" access="readWrite" version="2.0">
      <description>
        DiffServ code point for marking packets transmitted in the test.

        The default value SHOULD be zero.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="63"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="EthernetPriority" access="readWrite" version="2.0">
      <description>
        Ethernet priority code for marking packets transmitted in the test (if
        applicable).

        The default value SHOULD be zero.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="7"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TestFileLength" access="readWrite" version="2.0">
      <description>
        The size of the file {{units}} to be uploaded to the server.

        The CPE MUST insure the appropriate number of bytes are sent.
      </description>
      <syntax>
        <unsignedLong>
          <units value="bytes"/>
        </unsignedLong>
      </syntax>
    </parameter>

    <parameter name="TimeBasedTestDuration" access="readWrite" version="2.9">
      <description>
        Controls time based testing {{bibref|TR-143|Section 4.3}}. When
        {{param}} &gt; 0, {{param}} is the duration in {{units}} of a time
        based test. If {{param}} is 0, the test is not based on time, but on
        the size of the file to be uploaded. The default value SHOULD be 0.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="999"/>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimeBasedTestMeasurementInterval" access="readWrite"
        version="2.9">
      <description>
        The measurement interval duration in {{units}} for objects in
        {{object|IncrementalResult}} for a time based FTP/HTTP upload test
        (when {{param|TimeBasedTestDuration}} &gt; 0). The default value SHOULD
        be 0, which implies {{object|IncrementalResult}} collection is
        disabled.

        For example if {{param|TimeBasedTestDuration}} is 90 {{units}} and
        {{param}} is 10 {{units}}, there will be 9 results in
        {{object|IncrementalResult}}, each with a 10 {{units}} duration.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="999"/>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimeBasedTestMeasurementOffset" access="readWrite"
        version="2.9">
      <description>
        This {{param}} works in conjunction with
        {{param|TimeBasedTestMeasurementInterval}} and allows the interval
        measurement to start a number of {{units}} after {{param|BOMTime}}. The
        test measurement interval in {{object|IncrementalResult}} starts at
        time {{param|BOMTime}} + {{param}} to allow for slow start window
        removal of file transfers.

        This {{param}} is in {{units}}. The default value SHOULD be 0.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="255"/>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="ProtocolVersion" access="readWrite" version="2.9">
      <description>
        Indicates the IP protocol version to be used. The default value SHOULD
        be {{enum|Any}}.
      </description>
      <syntax>
        <string>
          <enumeration value="Any">
            <description>
              Use either IPv4 or IPv6 depending on the system preference.
            </description>
          </enumeration>
          <enumeration value="IPv4">
            <description>Use IPv4 for the requests</description>
          </enumeration>
          <enumeration value="IPv6">
            <description>Use IPv6 for the requests.</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="NumberOfConnections" access="readWrite" version="2.9">
      <description>
        The number of connections to be used in the test. The default value
        SHOULD be 1. {{param}} MUST NOT be set to a value greater than
        {{param|UploadDiagnosticsMaxConnections}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPUploadDiagnosticsInput2">

    <parameter name="EnablePerConnectionResults" access="readWrite"
        activeNotify="canDeny" version="2.9">
      <description>
        The results must be returned in the {{object|PerConnectionResult}}
        table for every connection when set to {{true}}. The default value
        SHOULD be {{false}}.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>
  </component>

  <component name="IPUploadDiagnosticsOutputNumberOfEntries">
    <parameter name="PerConnectionResultNumberOfEntries" access="readOnly"
        dmr:previousParameter="TCPOpenResponseTime" version="2.9">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="IncrementalResultNumberOfEntries" access="readOnly"
        dmr:previousParameter="EnablePerConnectionResults" version="2.9">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>
  </component>

  <component name="IPUploadDiagnosticsOutput">

    <parameter name="IPAddressUsed" access="readOnly" version="2.9">
      <description>
        Indicates which IP address was used to send the request.
      </description>
      <syntax>
        <dataType ref="IPAddress"/>
      </syntax>
    </parameter>

    <parameter name="ROMTime" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        Request time in UTC, which MUST be specified to microsecond precision.

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the client sends the GET command.

        * For FTP this is the time at which the client sends the RTRV command.

        If multiple connections are used, then {{param}} is set to the earliest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="BOMTime" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        Begin of transmission time in UTC, which MUST be specified to
        microsecond precision

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the first data packet is received.

        * For FTP this is the time at which the client receives the first data
          packet on the data connection.

        If multiple connections are used, then {{param}} is set to the earliest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="EOMTime" access="readOnly" activeNotify="canDeny"
        version="2.0">
      <description>
        End of transmission in UTC, which MUST be specified to microsecond
        precision.

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the last data packet is received.

        * For FTP this is the time at which the client receives the last packet
          on the data connection.

        If multiple connections are used, then {{param}} is set to the latest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="TestBytesSent" access="readOnly" version="2.9">
      <description>
        The number of {{units}} of the test file sent during the FTP/HTTP
        transaction including FTP/HTTP headers, between {{param|BOMTime}} and
        {{param|EOMTime}} across all connections.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TotalBytesReceived" access="readOnly" version="2.9">
      <description>
        The total number of {{units}} (at the IP layer) received on the
        Interface between {{param|BOMTime}} and {{param|EOMTime}}. This MAY be
        calculated by sampling Stats.BytesReceived on the {{param|Interface}}
        object at {{param|BOMTime}} and at {{param|EOMTime}} and subtracting.
        If {{param|Interface}} is {{empty}}, this parameter cannot be
        determined and SHOULD be 0.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TotalBytesSent" access="readOnly" version="2.0">
      <description>
        The total number of {{units}} (at the IP layer) sent on the Interface
        between {{param|BOMTime}} and {{param|EOMTime}}. This MAY be calculated
        by sampling Stats.BytesSent on the {{param|Interface}} object at
        {{param|BOMTime}} and at {{param|EOMTime}} and subtracting. If
        {{param|Interface}} is {{empty}}, this parameter cannot be determined
        and SHOULD be 0.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TestBytesSentUnderFullLoading" access="readOnly"
        version="2.9">
      <description>
        The number of {{units}} of the test file sent between the latest
        {{param|PerConnectionResult.{i}.BOMTime}} and the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} across all connections.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TotalBytesReceivedUnderFullLoading" access="readOnly"
        version="2.9">
      <description>
        The total number of {{units}} (at the IP layer) received between the
        latest {{param|PerConnectionResult.{i}.BOMTime}} and the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} across all connections in the
        test. This MAY be calculated by sampling Stats.BytesReceived on the
        {{param|Interface}} object at the latest
        {{param|PerConnectionResult.{i}.BOMTime}} and at the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} and subtracting. If
        {{param|Interface}} is {{empty}}, this parameter cannot be determined
        and SHOULD be 0.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="TotalBytesSentUnderFullLoading" access="readOnly"
        version="2.9">
      <description>
        The total number of {{units}} (at the IP layer) sent between the latest
        {{param|PerConnectionResult.{i}.BOMTime}} and the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} across all connections in the
        test. This MAY be calculated by sampling Stats.BytesSent on the
        {{param|Interface}} object at the latest
        {{param|PerConnectionResult.{i}.BOMTime}} and at the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} and subtracting. If
        {{param|Interface}} is {{empty}}, this parameter cannot be determined
        and SHOULD be 0.
      </description>
      <syntax>
        <dataType ref="StatsCounter64">
          <units value="bytes"/>
        </dataType>
      </syntax>
    </parameter>

    <parameter name="PeriodOfFullLoading" access="readOnly" version="2.9">
      <description>
        The period of time in {{units}} between the latest
        {{param|PerConnectionResult.{i}.BOMTime}} and the earliest
        {{param|PerConnectionResult.{i}.EOMTime}} of the test.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TCPOpenRequestTime" access="readOnly"
        activeNotify="canDeny" version="2.0">
      <description>
        Request time in UTC, which MUST be specified to microsecond precision.

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the TCP socket open (SYN) was sent
          for the HTTP connection.

        * For FTP this is the time at which the TCP socket open (SYN) was sent
          for the data connection.

        Note: Interval of 1 microsecond SHOULD be supported.

        If multiple connections are used, then {{param}} is set to the latest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="TCPOpenResponseTime" access="readOnly"
        activeNotify="canDeny" version="2.0">
      <description>
        Response time in UTC, which MUST be specified to microsecond precision.

        For example: 2008-04-09T15:01:05.123456Z

        * For HTTP this is the time at which the TCP ACK to the socket opening
          the HTTP connection was received.

        * For FTP this is the time at which the TCP ACK to the socket opening
          the data connection was received.

        Note: Interval of 1 microsecond SHOULD be supported.

        If multiple connections are used, then {{param}} is set to the latest
        {{param}} across all connections.
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <object name="PerConnectionResult.{i}." access="readOnly"
        numEntriesParameter="PerConnectionResultNumberOfEntries" minEntries="0"
        maxEntries="unbounded" dmr:noUniqueKeys="true" version="2.9">
      <description>
        Results for individual connections. This table is only populated when
        {{param|#.EnablePerConnectionResults}} is {{true}}. A new object is
        created for each connection specified in
        {{param|#.NumberOfConnections}}. Instance numbers MUST start at 1 and
        sequentially increment as new instances are created. All instances are
        removed when {{param|#.DiagnosticsState}} is set to
        {{enum|Requested|#.DiagnosticsState}} or
        {{enum|None|#.DiagnosticsState}}.
      </description>

      <parameter name="ROMTime" access="readOnly" activeNotify="canDeny">
        <description>
          Request time in UTC, which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the client sends the GET
            command.

          * For FTP this is the time at which the client sends the RTRV
            command.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="BOMTime" access="readOnly" activeNotify="canDeny">
        <description>
          Begin of transmission time in UTC, which MUST be specified to
          microsecond precision

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the first data packet is
            received.

          * For FTP this is the time at which the client receives the first
            data packet on the data connection.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="EOMTime" access="readOnly" activeNotify="canDeny">
        <description>
          End of transmission in UTC, which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the last data packet is
            received.

          * For FTP this is the time at which the client receives the last
            packet on the data connection.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="TestBytesSent" access="readOnly">
        <description>
          The number of {{units}} of the test file sent during the FTP/HTTP
          transaction including FTP/HTTP headers, between {{param|BOMTime}} and
          {{param|EOMTime}}.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TotalBytesReceived" access="readOnly"
          activeNotify="canDeny">
        <description>
          The total number of {{units}} (at the IP layer) received on the
          Interface between {{param|BOMTime}} and {{param|EOMTime}}. This MAY
          be calculated by sampling Stats.BytesReceived on the
          {{param|#.Interface}} object at {{param|BOMTime}} and at
          {{param|EOMTime}} and subtracting. If {{param|#.Interface}} is
          {{empty}}, this parameter cannot be determined and SHOULD be 0.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TotalBytesSent" access="readOnly"
          activeNotify="canDeny">
        <description>
          The total number of {{units}} (at the IP layer) sent on the Interface
          between {{param|BOMTime}} and {{param|EOMTime}}. This MAY be
          calculated by sampling Stats.BytesSent on the {{param|#.Interface}}
          object at {{param|BOMTime}} and at {{param|EOMTime}} and subtracting.
          If {{param|#.Interface}} is {{empty}}, this parameter cannot be
          determined and SHOULD be 0.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TCPOpenRequestTime" access="readOnly"
          activeNotify="canDeny">
        <description>
          Request time in UTC, which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the TCP socket open (SYN) was
            sent for the HTTP connection.

          * For FTP this is the time at which the TCP socket open (SYN) was
            sent for the data connection.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="TCPOpenResponseTime" access="readOnly"
          activeNotify="canDeny">
        <description>
          Response time in UTC, which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z

          * For HTTP this is the time at which the TCP ACK to the socket
            opening the HTTP connection was received.

          * For FTP this is the time at which the TCP ACK to the socket opening
            the data connection was received.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>

    <object name="IncrementalResult.{i}." access="readOnly"
        numEntriesParameter="IncrementalResultNumberOfEntries" minEntries="0"
        maxEntries="unbounded" dmr:noUniqueKeys="true" version="2.9">
      <description>
        Results for time segmented tests (tests where
        {{param|#.TimeBasedTestDuration}} &gt; 0 and
        {{param|#.TimeBasedTestMeasurementInterval}} &gt; 0). This data is
        totaled across all connections in the test. A new object is created
        every {{param|#.TimeBasedTestMeasurementInterval}} after that interval
        has completed. Instance numbers MUST start at 1 and sequentially
        increment as new instances are created. All instances are removed when
        {{param|#.DiagnosticsState}} is set to
        {{enum|Requested|#.DiagnosticsState}} or
        {{enum|None|#.DiagnosticsState}}.
      </description>

      <parameter name="TestBytesSent" access="readOnly">
        <description>
          Change in the value of {{param|#.TestBytesSent}} between
          {{param|StartTime}} and {{param|EndTime}}, measured in {{units}}.
        </description>
        <syntax>
      <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TotalBytesReceived" access="readOnly">
        <description>
          The total number of {{units}} (at the IP layer) received on the
          Interface between {{param|StartTime}} and {{param|EndTime}}. This MAY
          be calculated by sampling Stats.BytesReceived on the
          {{param|#.Interface}} object at {{param|StartTime}} and at
          {{param|EndTime}} and subtracting. If {{param|#.Interface}} is
          {{empty}}, this parameter cannot be determined and SHOULD be 0.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="TotalBytesSent" access="readOnly">
        <description>
          The total number of {{units}} (at the IP layer) sent on the Interface
          between {{param|StartTime}} and {{param|EndTime}}. This MAY be
          calculated by sampling Stats.BytesSent on the {{param|#.Interface}}
          object at {{param|StartTime}} and at {{param|EndTime}} and
          subtracting. If {{param|#.Interface}} is {{empty}}, this parameter
          cannot be determined and SHOULD be 0.
        </description>
        <syntax>
          <dataType ref="StatsCounter64">
            <units value="bytes"/>
          </dataType>
        </syntax>
      </parameter>

      <parameter name="StartTime" access="readOnly" activeNotify="canDeny">
        <description>
          The start time of this interval which MUST be specified to
          microsecond precision.

          For example: 2008-04-09T15:01:05.123456Z
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="EndTime" access="readOnly" activeNotify="canDeny">
        <description>
          The end time of this interval which MUST be specified to microsecond
          precision.

          For example: 2008-04-09T15:01:05.123456Z
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>
  </component>

  <component name="IPUDPEchoDiagnosticsCapabilities">

    <parameter name="UDPEchoDiagnosticsMaxResults" access="readOnly"
        version="2.9">
      <description>
        The maximum number of rows in {{object|IndividualPacketResult}} that
        the CPE will store. If a test would create more rows than {{param}}
        only the first {{param}} rows are present in
        {{object|IndividualPacketResult}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPUDPEchoDiagnosticsInput">

    <parameter name="Interface" access="readWrite" version="2.9">
      <description>
        The IP-layer interface over which the test is to be performed. Example:
        Device.IP.Interface.1

        {{template|INTERFACE-ROUTING}}
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
          <pathRef refType="strong" targetParent=".IP.Interface."
              targetType="row"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="Host" access="readWrite" activeNotify="canDeny"
        mandatory="true" version="2.9">
      <description>
        Host name or address of the host to perform tests to.
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="Port" access="readWrite" activeNotify="canDeny"
        mandatory="true" version="2.9">
      <description>
        Port on the host to perform tests to.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="65535"/>
        </unsignedInt>
        <default type="factory" value="7"/>
      </syntax>
    </parameter>

    <parameter name="NumberOfRepetitions" access="readWrite"
        activeNotify="canDeny" version="2.9">
      <description>
        Number of repetitions of the test to perform before reporting the
        results. The default value SHOULD be 1.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="Timeout" access="readWrite" activeNotify="canDeny"
        mandatory="true" version="2.9">
      <description>
        Timeout in {{units}} for the test. That is, the amount of time to wait
        for the return of a packet that was sent to the {{param|Host}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DataBlockSize" access="readWrite" activeNotify="canDeny"
        version="2.9">
      <description>
        Size of the data block in {{units}} to be sent for each packet. The
        default value SHOULD be 24.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="65535"/>
          <units value="bytes"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DSCP" access="readWrite" activeNotify="canDeny"
        version="2.9">
      <description>
        DiffServ codepoint to be used for the test packets. The default value
        SHOULD be zero.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="63"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="InterTransmissionTime" access="readWrite"
        activeNotify="canDeny" version="2.9">
      <description>
        The time in {{units}} between the {{param|NumberOfRepetitions}} of
        packets sent during a given test. The default value SHOULD be 1000.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="65535"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="ProtocolVersion" access="readWrite" version="2.9">
      <description>
        Indicates the IP protocol version to be used. The default value SHOULD
        be {{enum|Any}}.
      </description>
      <syntax>
        <string>
          <enumeration value="Any">
            <description>
              Use either IPv4 or IPv6 depending on the system preference.
            </description>
          </enumeration>
          <enumeration value="IPv4">
            <description>Use IPv4 for the requests</description>
          </enumeration>
          <enumeration value="IPv6">
            <description>Use IPv6 for the requests.</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>
  </component>

  <component name="IPUDPEchoDiagnosticsInput2">

    <parameter name="EnableIndividualPacketResults" access="readWrite"
        activeNotify="canDeny" version="2.9">
      <description>
        The results must be returned in the {{object|IndividualPacketResult}}
        table for every repetition of the test when set to {{true}}. The
        default value SHOULD be {{false}}.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>
  </component>

  <component name="IPUDPEchoDiagnosticsOutputNumberOfEntries">
    <parameter name="IndividualPacketResultNumberOfEntries" access="readOnly"
        dmr:previousParameter="EnableIndividualPacketResults">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>
  </component>

  <component name="IPUDPEchoDiagnosticsOutput">

    <parameter name="IPAddressUsed" access="readOnly" version="2.9">
      <description>
        Indicates which IP address was used to send the request.
      </description>
      <syntax>
        <dataType ref="IPAddress"/>
      </syntax>
    </parameter>

    <parameter name="SuccessCount" access="readOnly" version="2.9">
      <description>
        Result parameter indicating the number of successful packets (those in
        which a successful response was received prior to the timeout) in the
        most recent test.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="FailureCount" access="readOnly" version="2.9">
      <description>
        Result parameter indicating the number of failed packets (those in
        which a successful response was not received prior to the timeout) in
        the most recent test.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="AverageResponseTime" access="readOnly" version="2.9">
      <description>
        Result parameter indicating the average response time in {{units}} over
        all repetitions with successful responses of the most recent test. If
        there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MinimumResponseTime" access="readOnly" version="2.9">
      <description>
        Result parameter indicating the minimum response time in {{units}} over
        all repetitions with successful responses of the most recent test. If
        there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MaximumResponseTime" access="readOnly" version="2.9">
      <description>
        Result parameter indicating the maximum response time in {{units}} over
        all repetitions with successful responses of the most recent test. If
        there were no successful responses, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <object name="IndividualPacketResult.{i}." access="readOnly"
        numEntriesParameter="IndividualPacketResultNumberOfEntries"
        minEntries="0" maxEntries="unbounded" dmr:noUniqueKeys="true"
        version="2.9">
      <description>
        This object provides the results from individual UDPEchoPlus test
        packets collected during a test if
        {{param|#.EnableIndividualPacketResults}} is set to true. When
        {{param|#.DiagnosticsState}} is set to
        {{enum|Complete|#.DiagnosticsState}} it should contain
        {{param|#.NumberOfRepetitions}} objects. Instance numbers MUST start at
        1 and sequentially increment as new instances are created. The instance
        number should match the TestIterationNumber field of the request and
        response packet. All instances are removed when
        {{param|#.DiagnosticsState}} is set to
        {{enum|Requested|#.DiagnosticsState}} or
        {{enum|None|#.DiagnosticsState}}.
      </description>

      <parameter name="PacketSuccess" access="readOnly">
        <description>
          Indicates that the response to this UDP Echo Plus packet sent was
          received by the client. When this value is {{true}}, then all the
          remaining parameters in this instance are valid. Otherwise only the
          values originally set by the CPE client (e.g.
          {{param|PacketSendTime}} and {{param|TestGenSN}}) MAY be set to valid
          values.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="PacketSendTime" access="readOnly">
        <description>
          Time the client sent this UDP Echo Plus packet in UTC, which MUST be
          specified to microsecond precision.

          For example: 2008-04-09T15:01:05.123456Z
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="PacketReceiveTime" access="readOnly">
        <description>
          Time the client receives the response packet in UTC, which MUST be
          specified to microsecond precision.

          For example: 2008-04-09T15:01:05.123456Z

          If this response is never received, {{param}} SHOULD be set to the
          Unknown Time value as specified in {{bibref|TR-106|Section 3.2.2}}.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="TestGenSN" access="readOnly">
        <description>
          The TestGenSN field in the UDPEcho Plus packet
          {{bibref|TR-143|Section A.1.4}} sent by the CPE client.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="TestRespSN" access="readOnly">
        <description>
          The TestRespSN field in the response packet {{bibref|TR-143|Section
          A.1.4}} from the UDP Echo Plus server (i.e. {{param|#.Host}}) for
          this Echo Plus packet sent by the CPE client. If
          {{param|PacketSuccess}} is {{false}}, {{param}} SHOULD be 0.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="TestRespRcvTimeStamp" access="readOnly">
        <description>
          The TestRespRcvTimeStamp field in the response packet
          {{bibref|TR-143|Section A.1.4}} from the UDP Echo Plus server (i.e.
          {{param|#.Host}}) to record the reception time in {{units}} of this
          UDP Echo Plus packet sent from the CPE client. If
          {{param|PacketSuccess}} is {{false}}, {{param}} SHOULD be 0.
        </description>
        <syntax>
          <unsignedInt>
            <units value="microseconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="TestRespReplyTimeStamp" access="readOnly">
        <description>
          The TestRespReplyTimeStamp field in the response packet
          {{bibref|TR-143|Section A.1.4}} from the UDP Echo Plus server (i.e.
          {{param|#.Host}}) to record the server reply time in {{units}} of
          this UDP Echo Plus packet sent from the CPE client.

          That is, the time that the server returned the UDP Echo Plus packet.
          If {{param|PacketSuccess}} is {{false}}, {{param}} SHOULD be 0.
        </description>
        <syntax>
          <unsignedInt>
            <units value="microseconds"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="TestRespReplyFailureCount" access="readOnly">
        <description>
          The count value that was set by the UDP Echo Plus server (i.e.
          {{param|#.Host}}) to record the number of dropped echo response
          packets by the server. This count is incremented if a valid echo
          request packet is received at a UDP EchoPlus server but for some
          reason cannot be responded to (e.g. due to local buffer overflow, CPU
          utilization, etc...). If {{param|PacketSuccess}} is {{false}},
          {{param}} SHOULD be 0.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>
  </component>

  <component name="IPLayerCapacityCapabilities">

    <parameter name="IPLayerMaxConnections" access="readOnly" version="2.14">
      <description>
        Indicates the maximum number of connections that are supported for an
        IP-Layer Capacity test.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="IPLayerMaxIncrementalResult" access="readOnly"
        version="2.14">
      <description>
        The maximum number of rows in {{object|IncrementalResult}} that the
        device will store.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="IPLayerCapSupportedSoftwareVersion" access="readOnly"
        version="2.15">
      <description>
        Indicates the installed version of the test software. The software
        version string will be implementation-dependent, and SHOULD identify
        both the implementation and the version (e.g., UDPST-7.2.1).
      </description>
      <syntax>
        <string>
          <size maxLength="64"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="IPLayerCapSupportedControlProtocolVersion"
        access="readOnly" version="2.15">
      <description>
        Indicates the control protocol version supported by the test software.
        Refer to {{bibref|TR-471}} for more information.
      </description>
      <syntax>
        <string>
          <size maxLength="64"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="IPLayerCapSupportedMetrics" access="readOnly"
        version="2.14">
      <description>
        Indicates the test metrics from {{bibref|TR-471|Section 5.2}} that are
        supported by the device.

        Note that {{bibref|TR-471}} mandates support for and use of IPLR and
        Sampled RTT.
      </description>
      <syntax>
        <list/>
        <string>
          <enumeration value="IPLR">
            <description>IP packet Loss Ratio</description>
          </enumeration>
          <enumeration value="Sampled_RTT">
            <description>Sampled Round Trip Time</description>
          </enumeration>
          <enumeration value="IPDV" optional="true">
            <description>IP packet Delay Variation</description>
          </enumeration>
          <enumeration value="IPRR" optional="true">
            <description>IP packet Reordering Ratio</description>
          </enumeration>
          <enumeration value="RIPR" optional="true">
            <description>Replicated IP packet Ratio</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="IPLayerCapacityAuthCodeNumberOfEntries"
        access="readOnly" version="2.19">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>
  <object name="IPLayerCapacityAuthCode.{i}." access="readWrite"
        numEntriesParameter="IPLayerCapacityAuthCodeNumberOfEntries"
        maxEntries="256" version="2.19">
      <description>
        Authentication Code table containing list of keys to be used by the
        client when connecting to the server.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <component ref="Alias"/>
      <parameter name="AuthenticationKey" access="readWrite" version="2.19">
        <description>
          A passphrase that is used by the client to authenticate with the
          server.
        </description>
        <syntax secured="true">
          <string/>
        </syntax>
      </parameter>
    </object>
  </component>

  <component name="IPLayerCapacityInput">
    <parameter name="Interface" access="readWrite" version="2.14">
      <description>
        {{reference}} The IP-layer interface over which the test is to be
        performed. Example: Device.IP.Interface.1

        {{template|INTERFACE-ROUTING}}
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
          <pathRef refType="weak" targetType="row"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="Role" access="readWrite" mandatory="true" version="2.14">
      <description>
        Indicates whether the device will act as Sender or Receiver of test
        packets.
      </description>
      <syntax>
        <string>
          <enumeration value="Receiver">
            <description>The device will act as the Receiver.</description>
          </enumeration>
          <enumeration value="Sender">
            <description>The device will act as the Sender.</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="Host" access="readWrite" status="deleted" version="2.14">
      <description>
        The Fully Qualified Domain Name (FQDN) or IP address of the Test
        Endpoint to perform the UDP Capacity tests with.

        {{deprecated|2.17|because it is superseded by
        {{param|ServerList}} with multi-flow and server capability. Refer
        to {{bibref|TR-471}} for details}}

        {{obsoleted|2.19}}

        {{deleted|2.20}}
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="ServerList" access="readWrite" mandatory="true" version="2.17">
      <description>
        A list of servers intended as testing partners for the client.
        The client works through the server list attempting individual
        test flows in a round-robin sequence. One flow is attempted to
        each server and all flows are required for testing, unless the
        optional {{param|FlowCount}} and {{param|MaximumFlows}}
        parameters are specified. The list contains each server’s
        Fully Qualified Domain Name or IP address and listening port
        in the format ''server:port''.
      </description>
      <syntax>
        <list maxItems="100">
        </list>
        <string>
          <size maxLength="256"/>
          <size/>
        </string>
      </syntax>
    </parameter>

    <parameter name="Port" access="readWrite" status="deleted"
        activeNotify="canDeny" version="2.14">
      <description>
        Port on the Test Endpoint host.

        {{deprecated|2.17|because it is superseded by
        {{param|ServerList}} with multi-flow and server capability. Refer
        to {{bibref|TR-471}} for details}}

        {{obsoleted|2.19}}

        {{deleted|2.20}}
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="65535"/>
        </unsignedInt>
      </syntax>
    </parameter>


    <parameter name="JumboFramesPermitted" access="readWrite" version="2.14">
      <description>
        If {{true}}, jumbo frames are allowed above 1 Gbps. The default value
        SHOULD be {{true}}.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>

    <parameter name="MTU" access="readWrite" version="2.19">
      <description>
        The MTU to be used for this test. Common MTU settings are 1500, 1250
        and 9000.
      </description>
      <syntax>
        <unsignedInt/>
        <default type="implementation" value="1500"/>
      </syntax>
    </parameter>

     <parameter name="LocalInterfaceRateIncluded" access="readWrite"
          version="2.19">
      <description>
        When set to {{true}}, the client is invoked with the option which uses
        the bytes statistics on the interface along with the test traffic to
        determine the maximum IP layer capacity. When set to {{false}}, only
        test traffic is used to calculate IP layer capacity metrics.
      </description>
      <syntax>
        <boolean/>
        <default type="implementation" value="true"/>
      </syntax>
    </parameter>

    <parameter name="AuthenticationEnabled" access="readWrite" version="2.19">
      <description>
        If {{true}}, client uses authentication for the test. If {{false}}, the
        client does not use authentication. Refer to
        {{template|IPLAYERCAPACITY}} for description on how the input
        arguments are provided to enable authentication for the test.
      </description>
      <syntax>
        <boolean/>
        <default type="implementation" value="false"/>
      </syntax>
    </parameter>

    <parameter name="AuthenticationCode" access="readWrite" version="2.19">
      <description>
        The authentication code or key to use when the client connects to
        the server. Refer to {{template|IPLAYERCAPACITY}} for description
        on how the input arguments are provided to enable authentication
        for the test.
      </description>
      <syntax secured="true">
          <string/>
      </syntax>
    </parameter>

    <parameter name="AuthenticationAlias" access="readWrite" version="2.19">
      <description>
        The reference to {{object|IPLayerCapacityAuthCode}} table
        by Alias. Refer to {{template|IPLAYERCAPACITY}} for description on
        how the input arguments are provided to enable authentication for the
        test.
      </description>
      <syntax>
        <string/>
      </syntax>
    </parameter>

    <parameter name="AuthenticationKeyFileLocation" access="readWrite"
        version="2.19">
      <description>
        The key file location the client uses to derive the
        {{param|AuthenticationCode}} and {{param|AuthenticationAlias}} to be
        used for authentication. Refer to {{template|IPLAYERCAPACITY}} for
        description on how the input arguments are provided to enable
        authentication for the test.
      </description>
      <syntax>
        <string/>
      </syntax>
    </parameter>

    <parameter name="NumberOfConnections" access="readWrite"
      status="deleted"
    version="2.14">
      <description>
        The number of connections to be used in the test. The default value
        SHOULD be 1. {{param}} MUST NOT be set to a value greater than
        {{param|{{template|IP-DIAGNOSTICS-PARENT}}IPLayerMaxConnections}}.

        {{deprecated|2.17|because it is superseded by
        {{param|ServerList}} with multi-flow and server capability and
        related parameters. Refer to {{bibref|TR-471}} for details}}

        {{obsoleted|2.19}}

        {{deleted|2.20}}
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="FlowCount" access="readWrite" version="2.17">
      <description>
        Optional Number of flows required for a test.
        The default SHOULD be 0 (a magic number that indicates the
        parameter is not used).
        {{param}} MUST NOT be set to a value greater than
        {{param|{{template|IP-DIAGNOSTICS-PARENT}}IPLayerMaxConnections}}.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>


    <parameter name="MaximumFlows" access="readWrite" version="2.17">
      <description>
        Optional number of flows to attempt. MaximumFlows must be
        greater than the size of ServerList or FlowCount.

        The default SHOULD be 0 (a magic number that indicates the
        parameter is not used).
        {{param}} MUST NOT be set to a value greater than
        {{param|{{template|IP-DIAGNOSTICS-PARENT}}IPLayerMaxConnections}}.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>


    <parameter name="EthernetPriority" access="readWrite" version="2.14">
      <description>
        Ethernet priority code for marking packets transmitted in the test (if
        applicable). The default value SHOULD be zero.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="7"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="DSCP" access="readWrite" version="2.14">
      <description>
        The DiffServ code point for marking packets transmitted in the test.
        The default value SHOULD be zero.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="63"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="ProtocolVersion" access="readWrite" version="2.14">
      <description>
        Indicates the IP protocol version to be used. The default value SHOULD
        be {{enum|Any}}.
      </description>
      <syntax>
        <string>
          <enumeration value="Any">
            <description>
              Use either IPv4 or IPv6 depending on the system preference.
            </description>
          </enumeration>
          <enumeration value="IPv4">
            <description>Use IPv4 for the requests</description>
          </enumeration>
          <enumeration value="IPv6">
            <description>Use IPv6 for the requests.</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="UDPPayloadMin" access="readWrite" version="2.14">
      <description>
        Minimum reference size of UDP payload in {{units}}. No default. The
        implementation will algorithmically determine a value if none is
        configured. The value SHOULD be set to a value that avoids
        fragmentation (i.e., using path MTU discovery).
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="35" maxInclusive="8972"/>
          <units value="octets"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="UDPPayloadMax" access="readWrite" version="2.14">
      <description>
        Maximum reference size of UDP payload in {{units}}. No default. The
        implementation will algorithmically determine a value if none is
        configured. The value SHOULD be set to the largest value that avoids
        fragmentation (i.e., using path MTU discovery). If
        {{param|JumboFramesPermitted}} is {{false}}, the maximum value MUST be
        1472 octets. If {{param|JumboFramesPermitted}} is {{true}}, this value
        can be as large as 8972 octets. {{param}} MUST be greater than or equal
        to {{param|UDPPayloadMin}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="35" maxInclusive="8972"/>
          <units value="octets"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="UDPPayloadContent" access="readWrite" version="2.15">
      <description>
        UDP Payload Content Type, If there is payload compression in the path
        and tests intend to characterize a possible advantage due to
        compression, then payload content SHOULD be supplied by a pseudo-random
        sequence generator, by using part of a compressed file, or by other
        means. Payload may also contain the test protocol PDUs. The default
        value SHOULD be {{enum|zeroes}}.
      </description>
      <syntax>
        <string>
          <enumeration value="zeroes">
            <description>All zero (0) payload content.</description>
          </enumeration>
          <enumeration value="ones">
            <description>All one (1) payload content.</description>
          </enumeration>
          <enumeration value="alternates0and1">
            <description>
              Alternating zero (0) and one (1) payload content.
            </description>
          </enumeration>
          <enumeration value="random">
            <description>Random payload content.</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="PortMin" access="readWrite" version="2.14">
      <description>
        Starting value for range of Dynamic Ports supported for test traffic
        and status feedback messages. {{param}} MUST be less than or equal to
        {{param|PortMax}}, if specified. If {{param}} and {{param|PortMax}} are
        not specified, the full range of Ports in the Dynamic Ports range
        (49152-65535) that have been specifically set aside by IANA MAY be
        used.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="49152" maxInclusive="65535"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="PortMax" access="readWrite" version="2.14">
      <description>
        Indicates the upper bound of the supported Dynamic Port range, where
        {{param|PortMin}} indicates the starting port number. {{param}} MUST be
        greater than or equal to {{param|PortMin}}, if specified. If
        {{param|PortMin}} and {{param}} are not specified, the full range of
        Ports in the Dynamic Ports range (49152-65535) that have been
        specifically set aside by IANA MAY be used.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="49152" maxInclusive="65535"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="PortOptionalMin" access="readWrite" version="2.14">
      <description>
        Starting value for range of User Ports supported for test traffic and
        status feedback messages. A value of zero (0) indicates no User Ports
        are used for test traffic or status feedback messages.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="0"/>
          <range minInclusive="1024" maxInclusive="49151"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="PortOptionalMax" access="readWrite" version="2.14">
      <description>
        Indicates the upper bound of the supported User Port range, where
        {{param|PortOptionalMin}} indicates the starting port number. {{param}}
        MUST be greater than or equal to {{param|PortOptionalMin}}. A value of
        zero (0) indicates no User Ports are used for test traffic or status
        feedback messages.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="0"/>
          <range minInclusive="1024" maxInclusive="49151"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TestType" access="readWrite" version="2.14">
      <description>
        Indicates the type of IP-Layer Capacity test being run. The default
        value SHOULD be {{enum|Search}}.
      </description>
      <syntax>
        <string>
          <enumeration value="Search">
            <description>
              Search algorithm will be used to determine sending rate.
            </description>
          </enumeration>
          <enumeration value="Fixed">
            <description>Fixed sending rate will be used.</description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="IPDVEnable" access="readWrite" version="2.14">
      <description>
        Enables one-way IPDV (IP Packet Delay Variation) metric for load rate
        adjustment algorithm. When {{true}} (enabled), one-way delay variation
        is used, otherwise round-trip delay variation is used. The default
        value SHOULD be {{false}}.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>

    <parameter name="IPRREnable" access="readWrite" version="2.14">
      <description>
        Enables IPRR (IP packet Reordering Ratio) metric. The default value
        SHOULD be {{false}}.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>

    <parameter name="RIPREnable" access="readWrite" version="2.15">
      <description>
        Enables RIPRR (Replicated IP Packet Ratio) metric. The default value
        SHOULD be {{false}}.
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>

    <parameter name="PreambleDuration" access="readWrite" version="2.14">
      <description>
        Duration of the preamble testing, when traffic is being sent and/or
        received but the test clock has not been started. This is done to
        ensure all network elements in the path are "awake". The default value
        SHOULD be 2 {{units}}. Value specified in {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="5"/>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MaximumTestBandwidth" access="readWrite" version="2.19">
      <description>
        The rate limiting or admission control bandwidth to be
        configured on the client for the test. A value of 0
        indicates the client does not use rate limiting or admission control.
        The value is expressed in {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range maxInclusive="32767"/>
          <units value="Mbps"/>
        </unsignedInt>
        <default type="implementation" value="0"/>
      </syntax>
    </parameter>

    <parameter name="StartSendingRate" access="readWrite" version="2.14">
      <description>
        The Sending Rate for a {{enum|Fixed|TestType}} test or the initial
        Sending Rate value for a {{enum|Search|TestType}} test. Value specified
        in {{units}}. The default value SHOULD be 500 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="500" maxInclusive="40000000"/>
          <units value="kbps"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="StartSendingRateIndex" access="readWrite" version="2.16">
      <description>
        The configurable initial Sending Rate index (to a row of the sending
        rate table) for a {{enum|Fixed|TestType}} or {{enum|Search|TestType}}
        test. {{param}} overrides {{param|StartSendingRate}} if both parameters
        are present. See Annex A of {{bibref|TR-471}} for details. The default
        value SHOULD be 0.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="11108"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="NumberTestSubIntervals" access="readWrite" version="2.14">
      <description>
        Number of intermediate measurement reporting intervals. The value MUST
        NOT be greater than
        {{param|{{template|IP-DIAGNOSTICS-PARENT}}IPLayerMaxIncrementalResult}}.
        The default value SHOULD be 10.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="100"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="NumberFirstModeTestSubIntervals" access="readWrite"
        version="2.15">
      <description>
        When the value &gt;= 1, bimodal test mode is requested and the value
        represents the number of sub-intervals to be included in the first
        capacity test mode. The remaining sub-intervals of
        {{param|NumberTestSubIntervals}} are for the second capacity test mode.
        Value = 0 indicates that bimodal testing is disabled. The value MUST
        NOT be greater than {{param|NumberTestSubIntervals}}. The default value
        SHOULD be 0.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="100"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TestSubInterval" access="readWrite" version="2.14">
      <description>
        Duration of intermediate measurement reporting intervals. {{param}} *
        {{param|NumberTestSubIntervals}} MUST result in an integer value in
        seconds, in the range 5 seconds &lt;= {{param}} *
        {{param|NumberTestSubIntervals}} &lt;= 60 seconds. The default value
        SHOULD be 1000 {{units}}. Value specified in {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="100" maxInclusive="6000"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="StatusFeedbackInterval" access="readWrite" version="2.14">
      <description>
        Period of status feedback message (receiver of offered load returns
        messages to the sender with results of measured metrics). Value
        specified in {{units}}. The default value SHOULD be 50 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="5" maxInclusive="250"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimeoutNoTraffic" access="readWrite" status="deleted"
        version="2.14">
      <description>
        Timeout value. Value specified in {{units}}. The default value SHOULD
        be 5 {{units}}.

        {{deprecated|2.15|because it is superseded by
        {{param|TimeoutNoTestTraffic}} due to new precision requirement. Refer
        to {{bibref|TR-471}} for details}}

        {{obsoleted|2.17}}

        {{deleted|2.18}}
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="5" maxInclusive="30"/>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimeoutNoTestTraffic" access="readWrite" version="2.15">
      <description>
        Timeout value. If no test traffic packets are received for {{param}}
        {{units}}, test will timeout. Value specified in {{units}}. The default
        value SHOULD be 1000 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="500" maxInclusive="1000"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimeoutNoStatusMessage" access="readWrite" version="2.15">
      <description>
        Timeout value. If no status message packets are received for {{param}}
        {{units}}, test will timeout. Value specified in {{units}}. The default
        value SHOULD be 1000 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="500" maxInclusive="1000"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="Tmax" access="readWrite" version="2.14">
      <description>
        Maximum waiting time for packets to arrive. Value specified in
        {{units}}. The default value SHOULD be 1000 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="50" maxInclusive="3000"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TmaxRTT" access="readWrite" version="2.14">
      <description>
        Maximum Round Trip Time waiting time for packets to arrive. Value
        specified in {{units}}. The default value SHOULD be 3000 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="50" maxInclusive="3000"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimestampResolution" access="readWrite" version="2.14">
      <description>
        Indicates the requested precision of timestamp values. The test
        implementation will determine the actual precision to use based on the
        implemented resolution capabilities of the protocols used and this
        requested value. If the implemented resolution capabilities of the
        {{param|{{template|IP-DIAGNOSTICS-PARENT}}IPLayerCapSupportedMetrics}}
        protocols being used are able to provide the requested resolution, this
        resolution SHOULD be provided. Value specified in {{units}}. The
        default value SHOULD be 1 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="1000"/>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="SeqErrThresh" access="readWrite" version="2.15">
      <description>
        This parameter is only meaningful if {{param|TestType}} is
        {{enum|Search|TestType}}. Threshold for Loss or Reordering or
        Replication impairments measured (events where received packet sequence
        number did not increase by one). The default value SHOULD be 10.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0" maxInclusive="100"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="ReordDupIgnoreEnable" access="readWrite" version="2.15">
      <description>
        This parameter is only meaningful if {{param|TestType}} is
        {{enum|Search|TestType}}. When {{true}} (enabled) only Loss counts
        toward received packet sequence number errors, and Reordering and
        Duplication impairments are ignored. When {{false}} (disabled), Loss,
        Reordering and Duplication are all counted as sequence number errors.
        The default value SHOULD be {{true}} (enabled).
      </description>
      <syntax>
        <boolean/>
      </syntax>
    </parameter>

    <parameter name="LowerThresh" access="readWrite" version="2.14">
      <description>
        This parameter is only meaningful if {{param|TestType}} is
        {{enum|Search|TestType}}. The lower threshold on the range of Round
        Trip Time (RTT) variation. Value specified in {{units}}. The default
        value SHOULD be 30 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="5" maxInclusive="250"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="UpperThresh" access="readWrite" version="2.14">
      <description>
        This parameter is only meaningful if {{param|TestType}} is
        {{enum|Search|TestType}}. The upper threshold on the range of Round
        Trip Time (RTT) variation. Value specified in {{units}}. The default
        value SHOULD be 90 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="5" maxInclusive="250"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="RetryThresh" access="readWrite" version="2.16">
      <description>
        The initial number of retries before activating “fast” sending rate
        increase mode. Different paths through the flow chart increase the
        sending rate, either fast or slow, or decrease the rate, etc. The
        algorithm doubles the threshold each time on subsequent activations.
        See Annex B of {{bibref|TR-471}} for details. The default value SHOULD
        be 5.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1" maxInclusive="3000"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="HighSpeedDelta" access="readWrite" version="2.14">
      <description>
        This parameter is only meaningful if {{param|TestType}} is
        {{enum|Search|TestType}}. The number of rows to move in a single
        adjustment when initially increasing offered load (to ramp up quickly).
        The default value SHOULD be 10.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="2"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="RateAdjAlgorithm" access="readWrite" version="2.16">
      <description>
        Configurable choice of Load Rate Adjustment Algorithm. Refer to
        {{bibref|TR-471}} for details.
      </description>
      <syntax>
        <string>
          <enumeration value="B">
            <description>
              Use type "B" Load Rate Adjustment Algorithm. See section 5.2.1 in
              {{bibref|TR-471}} for details.
            </description>
          </enumeration>
          <enumeration value="C">
            <description>
              Use type "C" Load Rate Adjustment Algorithm. See Annex B in
              {{bibref|TR-471}} for details.
            </description>
          </enumeration>
        </string>
      </syntax>
    </parameter>

    <parameter name="SlowAdjThresh" access="readWrite" version="2.14">
      <description>
        This parameter is only meaningful if {{param|TestType}} is
        {{enum|Search|TestType}}. Threshold on the measured number of
        consecutive status reports indicating loss and/or delay variation above
        {{param|UpperThresh}} (SlowAdjCount). The default value SHOULD be 3.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="2"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="HSpeedThresh" access="readWrite" version="2.14">
      <description>
        This parameter is only meaningful if {{param|TestType}} is
        {{enum|Search|TestType}}. Threshold for transition between low and high
        sending rate step sizes (such as 1Mbps and 100 Mbps). If
        {{param|JumboFramesPermitted}} is {{true}} this may result in use of
        jumbo frames. The default value SHOULD be 1 {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
          <units value="Gbps"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPLayerCapacityOutputNumberOfEntries">
    <parameter name="IncrementalResultNumberOfEntries" access="readOnly"
        dmr:previousParameter="ReorderedRatioAtMax">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="ModalResultNumberOfEntries" access="readOnly" version="2.15">
      <description>
        {{numentries}}
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>
  </component>

  <component name="IPLayerCapacityOutput">

    <parameter name="StatusCode" access="readOnly" version="2.19">
      <description>
        Status code of the test returned by the client, if applicable.
      </description>
      <syntax>
        <unsignedInt/>
      </syntax>
    </parameter>

    <parameter name="StatusMessage" access="readOnly" version="2.19">
      <description>
        Status message of the test returned by the client, if applicable.
      </description>
      <syntax>
        <string/>
      </syntax>
    </parameter>

    <parameter name="BOMTime" access="readOnly" activeNotify="canDeny"
        version="2.14">
      <description>
        Beginning of transmission send/receive time in UTC, which MUST be
        specified to {{param|TimestampResolution}} precision. If multiple
        connections are used, then {{param}} is set to the earliest value
        across all connections. For example: 2008-04-09T15:01:05.123456Z
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="EOMTime" access="readOnly" activeNotify="canDeny"
        version="2.14">
      <description>
        End of transmission in UTC, which MUST be specified to
        {{param|TimestampResolution}} precision. If multiple connections are
        used, then {{param}} is set to the latest value across all connections.
        For example: 2008-04-09T15:01:05.123456Z
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="TmaxUsed" access="readOnly" version="2.14">
      <description>
        Configured value of {{param|Tmax}} used in the test. This value is
        expressed in {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TestInterval" access="readOnly" version="2.14">
      <description>
        Duration of the test (either downlink or uplink). This value is
        expected to equal {{param|TestSubInterval}} *
        {{param|NumberTestSubIntervals}}. This value is expressed in {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <units value="seconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MaxIPLayerCapacity" access="readOnly" version="2.14">
      <description>
        The maximum IP-Layer Capacity metric from among all
        {{param|IncrementalResult.{i}.IPLayerCapacity}} values measured between
        {{param|BOMTime}} and {{param|EOMTime}} across all connections for this
        test. This is calculated according to {{bibref|TR-471}} Equation 1.
        Result is expressed in {{units}} with 2 digits beyond the decimal. 10^6^
        bits/second = 1 {{units}}.
      </description>
      <syntax>
        <decimal>
          <units value="Mbps"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="TimeOfMax" access="readOnly" version="2.14">
      <description>
        Time in UTC of end of the sub-interval when
        {{param|MaxIPLayerCapacity}} was measured. If the value of
        {{param|MaxIPLayerCapacity}} occurred in multiple sub-intervals, this
        MUST be the earliest of these sub-intervals. Value MUST be specified to
        {{param|TimestampResolution}} precision. For example:
        2008-04-09T15:01:05.123456Z
      </description>
      <syntax>
        <dateTime/>
      </syntax>
    </parameter>

    <parameter name="MaxETHCapacityNoFCS" access="readOnly" version="2.15">
      <description>
        Results of measurements using the Maximum IP-Layer Capacity metric,
        according to {{bibref|TR-471}} Equation 1, and calculations to estimate
        the capacity at Layer 2 with Preamble and Inter-frame gap, but no ETH
        Frame Check Sequence. Result is expressed in {{units}} with 2 digits
        beyond the decimal. 10^6^ bits/second = 1 {{units}}.
      </description>
      <syntax>
        <decimal>
          <units value="Mbps"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="MaxETHCapacityWithFCS" access="readOnly" version="2.15">
      <description>
        Results of measurements using the Maximum IP-Layer Capacity metric,
        according to {{bibref|TR-471}} Equation 1, and calculations to estimate
        the capacity at Layer 2 with ETH Frame Check Sequence. Result is
        expressed in {{units}} with 2 digits beyond the decimal.
        10^6^ bits/second = 1 {{units}}.
      </description>
      <syntax>
        <decimal>
          <units value="Mbps"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="MaxETHCapacityWithFCSVLAN" access="readOnly"
        version="2.15">
      <description>
        Results of measurements using the Maximum IP-Layer Capacity metric,
        according to {{bibref|TR-471}} Equation 1, and calculations to estimate
        the capacity at Layer 2 with ETH Frame Check Sequence and VLAN tag.
        Result is expressed in {{units}} with 2 digits beyond the decimal.
        10^6^ bits/second = 1 {{units}}.
      </description>
      <syntax>
        <decimal>
          <units value="Mbps"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="LossRatioAtMax" access="readOnly" version="2.14">
      <description>
        Ratio of lost packets to total packets during sub-interval of
        {{param|MaxIPLayerCapacity}}. This value is expressed as a decimal to 9
        decimal digits.
      </description>
      <syntax>
        <decimal/>
      </syntax>
    </parameter>

    <parameter name="RTTRangeAtMax" access="readOnly" version="2.14">
      <description>
        The range of Round Trip Time (RTT) during sub-interval of
        {{param|MaxIPLayerCapacity}}. This value is expressed in {{units}}.
        This value is expressed as a decimal to 9 decimal digits.
      </description>
      <syntax>
        <decimal>
          <units value="seconds"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="PDVRangeAtMax" access="readOnly" version="2.14">
      <description>
        The range of Packet Delay Variation (PDV) during sub-interval of
        {{param|MaxIPLayerCapacity}}. This value is expressed in {{units}}.
        This value is expressed as a decimal to 9 decimal digits.
      </description>
      <syntax>
        <decimal>
          <units value="seconds"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="MinOnewayDelayAtMax" access="readOnly" version="2.14">
      <description>
        The minimum one-way delay during the sub-interval of
        {{param|MaxIPLayerCapacity}}. The minimum one-way delay is calculated
        at the conclusion of the test and SHALL be calculated using the
        conditional distribution of all packets with a finite one-way delay
        value (undefined delays are excluded). This value is expressed in
        {{units}}. This value is expressed as a decimal to 9 decimal digits.
      </description>
      <syntax>
        <decimal>
          <units value="seconds"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="ReorderedRatioAtMax" access="readOnly" version="2.14">
      <description>
        Ratio of reordered packets to total packets during the sub-interval of
        {{param|MaxIPLayerCapacity}}. This value is expressed as a decimal to 9
        decimal digits.
      </description>
      <syntax>
        <decimal/>
      </syntax>
    </parameter>

    <parameter name="ReplicatedRatioAtMax" access="readOnly" version="2.15">
      <description>
        Ratio of replicated packets to total packets during the sub-interval of
        {{param|MaxIPLayerCapacity}}. This value is expressed as a decimal to 9
        decimal digits.
      </description>
      <syntax>
        <decimal/>
      </syntax>
    </parameter>

    <parameter name="RTTMinAtMax" access="readOnly" version="2.19">
      <description>
        The value of minimum Round Trip Time (RTT) during the sub interval of
        {{param|MaxIPLayerCapacity}}. This value is expressed as a decimal to 9
        decimal digits.
      </description>
      <syntax>
        <decimal/>
      </syntax>
    </parameter>

    <parameter name="RTTMaxAtMax" access="readOnly" version="2.19">
      <description>
        The value of maximum Round Trip Time (RTT) during the sub interval of
        {{param|MaxIPLayerCapacity}}. This value is expressed as a decimal to 9
        decimal digits.
      </description>
      <syntax>
        <decimal/>
      </syntax>
    </parameter>

    <parameter name="InterfaceEthMbpsAtMax" access="readOnly" version="2.15">
      <description>
        The number of bits observed on the Interface during an IP-Layer
        Capacity test for time interval of duration {{param|TestSubInterval}}
        ending at {{param|IncrementalResult.{i}.TimeOfSubInterval}}
        corresponding to the {{param|MaxIPLayerCapacity}}, divided by the
        duration of {{param|TestSubInterval}}. Result is expressed in Mbps with
        2 digits beyond the decimal. 10^6^ bits/second = 1 {{units}}. This is
        primarily a diagnostic measurement. Measurement direction follows the
        {{param|Role}}.
      </description>
      <syntax>
        <decimal>
          <units value="Mbps"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="IPLayerCapacitySummary" access="readOnly" version="2.15">
      <description>
        The IP-Layer Capacity metric from among all
        {{param|IncrementalResult.{i}.IPLayerCapacity}} values measured between
        {{param|BOMTime}} and {{param|EOMTime}} across all connections for this
        test. This is calculated according to {{bibref|TR-471}} Equation 1.
        Result is expressed in {{units}} with 2 digits beyond the decimal. 10^6^
        bits/second = 1 {{units}}.
      </description>
      <syntax>
        <decimal>
          <units value="Mbps"/>
        </decimal>
      </syntax>
    </parameter>

    <parameter name="LossRatioSummary" access="readOnly" version="2.15">
      <description>
        Ratio of lost packets to total packets during the complete
        {{param|TestInterval}}. This value is expressed as a decimal to 9
        decimal digits.
      </description>
      <syntax>
        <decimal/>
      </syntax>
    </parameter>

    <parameter name="RTTRangeSummary" access="readOnly" version="2.15">
      <description>
        The range of measured Round Trip Time (RTT) during the complete
        {{param|TestInterval}}. This value is expressed in {{units}}, as a
        decimal to 9 decimal digits.
      </description>
      <syntax>
        <decimal>
        <units value="seconds"/>
      </decimal>
      </syntax>
    </parameter>

    <parameter name="PDVRangeSummary" access="readOnly" version="2.15">
      <description>
        The range of Packet Delay Variation (PDV) during the complete
        {{param|TestInterval}}. This value is expressed in {{units}}, as a
        decimal to 9 decimal digits.
      </description>
      <syntax>
        <decimal>
        <units value="seconds"/>
      </decimal>
      </syntax>
    </parameter>

    <parameter name="MinOnewayDelaySummary" access="readOnly" version="2.15">
      <description>
        The minimum one-way delay during the complete {{param|TestInterval}}.
        This value is expressed in {{units}}, as a decimal to 9 decimal digits.
      </description>
      <syntax>
        <decimal>
        <units value="seconds"/>
      </decimal>
      </syntax>
    </parameter>

    <parameter name="MinRTTSummary" access="readOnly" version="2.15">
      <description>
        The minimum RTT during the complete {{param|TestInterval}}. This value
        is expressed in {{units}}, as a decimal to 9 decimal digits.
      </description>
      <syntax>
        <decimal>
        <units value="seconds"/>
      </decimal>
      </syntax>
    </parameter>

    <parameter name="ReorderedRatioSummary" access="readOnly" version="2.15">
      <description>
        Ratio of reordered packets to total packets during the complete
        {{param|TestInterval}}. This value is expressed as a decimal to 9
        decimal digits.
      </description>
      <syntax>
        <decimal/>
      </syntax>
    </parameter>

    <parameter name="ReplicatedRatioSummary" access="readOnly" version="2.15">
      <description>
        Ratio of replicated packets to total packets during the complete
        {{param|TestInterval}}. This value is expressed as a decimal to 9
        decimal digits.
      </description>
      <syntax>
        <decimal/>
      </syntax>
    </parameter>

     <parameter name="InterfaceEthMbpsSummary" access="readOnly"
        version="2.15">
      <description>
        The number of bits observed on the {{param|Interface}} during an
        IP-Layer Capacity test for the entire time interval of duration
        {{param|TestInterval}}, divided by the duration of
        {{param|TestInterval}}. Result is expressed in {{units}} with 2 digits
        beyond the decimal. 10^6^ bits/second = 1 {{units}}. This is primarily a
        diagnostic measurement. Measurement direction follows the
        {{param|Role}}.
      </description>
      <syntax>
        <decimal>
          <units value="Mbps"/>
        </decimal>

      </syntax>
    </parameter>

    <parameter name="TmaxRTTUsed" access="readOnly" version="2.14">
      <description>
        Configured value of {{param|TmaxRTT}} used in the test. This value is
        expressed in {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="TimestampResolutionUsed" access="readOnly" version="2.14">
      <description>
        Indicates the timestamp resolution of reported results. This is a
        function of the measurement protocol, and it is usually determined once
        the protocol chosen. Value specified in {{units}}.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="ActiveFlows" access="readOnly" version="2.17">
      <description>
        Number of flows set-up and used for a test.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="0"/>
        </unsignedInt>
      </syntax>
     </parameter>

    <object name="ModalResult.{i}." access="readOnly"
        numEntriesParameter="ModalResultNumberOfEntries" minEntries="1"
        maxEntries="unbounded" dmr:noUniqueKeys="true" version="2.15">
      <description>
        Modal test results. Only returned when bimodal test mode is enabled
        ({{param|#.NumberFirstModeTestSubIntervals}} &gt;=1). If returned, it
        MUST contain 1 or more entries, with instance number 1 corresponding to
        the second mode and instance number 2 corresponding to the third mode.

        Results for the Maximum in each mode/instance are calculated based on
        {{object|#.IncrementalResult.{i}.}} data within the boundary of its
        corresponding mode.
      </description>

      <parameter name="MaxIPLayerCapacity" access="readOnly">
        <description>
          The maximum IP-Layer Capacity metric from among all
          {{param|#.IncrementalResult.{i}.IPLayerCapacity}} values within
          corresponding mode across all connections for this test. This is
          calculated according to {{bibref|TR-471}} Equation 1. Result is
          expressed in {{units}} with 2 digits beyond the decimal.
          10^6^ bits/second = 1 {{units}}.
        </description>
        <syntax>
          <decimal>
            <units value="Mbps"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="TimeOfMax" access="readOnly">
        <description>
          Time in UTC of end of the sub-interval when
          {{param|MaxIPLayerCapacity}} was measured. If the value of
          {{param|MaxIPLayerCapacity}} occurred in multiple sub-intervals, this
          MUST be the earliest of these sub-intervals. Value MUST be specified
          to {{param|#.TimestampResolution}} precision. For example:
          2008-04-09T15:01:05.123456Z
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="MaxETHCapacityNoFCS" access="readOnly">
        <description>
          Results of measurements using the Maximum IP-Layer Capacity metric,
          according to {{bibref|TR-471}} Equation 1, and calculations to
          estimate the capacity at Layer 2 with Preamble and Inter-frame gap,
          but no ETH Frame Check Sequence. Result is expressed in {{units}}
          with 2 digits beyond the decimal. 10^6^ bits/second = 1 {{units}}.
        </description>
        <syntax>
          <decimal>
            <units value="Mbps"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="MaxETHCapacityWithFCS" access="readOnly">
        <description>
          Results of measurements using the Maximum IP-Layer Capacity metric,
          according to {{bibref|TR-471}} Equation 1, and calculations to
          estimate the capacity at Layer 2 with ETH Frame Check Sequence.
          Result is expressed in {{units}} with 2 digits beyond the decimal.
          10^6^ bits/second = 1 {{units}}.
        </description>
        <syntax>
          <decimal>
            <units value="Mbps"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="MaxETHCapacityWithFCSVLAN" access="readOnly">
        <description>
          Results of measurements using the Maximum IP-Layer Capacity metric,
          according to {{bibref|TR-471}} Equation 1, and calculations to
          estimate the capacity at Layer 2 with ETH Frame Check Sequence and
          VLAN tag. Result is expressed in {{units}} with 2 digits beyond the
          decimal. 10^6^ bits/second = 1 {{units}}.
        </description>
        <syntax>
          <decimal>
            <units value="Mbps"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="LossRatioAtMax" access="readOnly">
        <description>
          Ratio of lost packets to total packets during sub-interval of
          {{param|MaxIPLayerCapacity}}. This value is expressed as a decimal to
          9 decimal digits.
        </description>
        <syntax>
          <decimal/>
        </syntax>
      </parameter>

      <parameter name="RTTRangeAtMax" access="readOnly">
        <description>
          The range of Round Trip Time (RTT) during sub-interval of
          {{param|MaxIPLayerCapacity}}. This value is expressed in {{units}}.
          This value is expressed as a decimal to 9 decimal digits.
        </description>
        <syntax>
          <decimal>
            <units value="seconds"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="PDVRangeAtMax" access="readOnly">
        <description>
          The range of Packet Delay Variation (PDV) during sub-interval of
          {{param|MaxIPLayerCapacity}}. This value is expressed in {{units}}.
          This value is expressed as a decimal to 9 decimal digits.
        </description>
        <syntax>
          <decimal>
            <units value="seconds"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="MinOnewayDelayAtMax" access="readOnly">
        <description>
          The minimum one-way delay during the sub-interval of
          {{param|MaxIPLayerCapacity}}. The minimum one-way delay is calculated
          at the conclusion of the test and SHALL be calculated using the
          conditional distribution of all packets with a finite one-way delay
          value (undefined delays are excluded). This value is expressed in
          {{units}}. This value is expressed as a decimal to 9 decimal digits.
        </description>
        <syntax>
          <decimal>
            <units value="seconds"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="ReorderedRatioAtMax" access="readOnly">
        <description>
          Ratio of reordered packets to total packets during the sub-interval
          of {{param|MaxIPLayerCapacity}}. This value is expressed as a decimal
          to 9 decimal digits.
        </description>
        <syntax>
          <decimal/>
        </syntax>
      </parameter>

      <parameter name="ReplicatedRatioAtMax" access="readOnly">
        <description>
          Ratio of replicated packets to total packets during the sub-interval
          of {{param|MaxIPLayerCapacity}}. This value is expressed as a decimal
          to 9 decimal digits.
        </description>
        <syntax>
          <decimal/>
        </syntax>
      </parameter>

      <parameter name="InterfaceEthMbpsAtMax" access="readOnly" version="2.15">
      <description>
        The number of bits observed on the {{param|#.Interface}} during an
        IP-Layer Capacity test for time interval of duration
        {{param|#.TestSubInterval}} ending at
        {{param|#.IncrementalResult.{i}.TimeOfSubInterval}} corresponding to
        the {{param|MaxIPLayerCapacity}}, divided by the duration of
        {{param|#.TestSubInterval}}. Result is expressed in Mbps with 2
        digits beyond the decimal. 10^6^ bits/second = 1 {{units}}. This is
        primarily a diagnostic measurement. Measurement direction follows the
        {{param|#.Role}}.
      </description>
      <syntax>
      <decimal>
         <units value="Mbps"/>
      </decimal>
      </syntax>
    </parameter>
    </object>

    <object name="IncrementalResult.{i}." access="readOnly"
        numEntriesParameter="IncrementalResultNumberOfEntries" minEntries="0"
        maxEntries="unbounded" dmr:noUniqueKeys="true" version="2.14">
      <description>
        Results for time segmented tests (tests where
        {{param|#.NumberTestSubIntervals}} &gt; 1). This data is calculated
        across all connections in the test. A new object is created every
        {{param|#.TestSubInterval}} after that interval has completed. Instance
        numbers MUST start at 1 and sequentially increment as new instances are
        created. All instances are removed when new test is started or results
        are otherwise cleared.
      </description>

      <component ref="IPLayerCapacityIncrementalResults"/>
    </object>
    </component>

    <component name="IPLayerCapacityIncrementalResults">
      <parameter name="IPLayerCapacity" access="readOnly">
        <description>
          Results of measurements using the maximum IP-Layer Capacity metric
          calculation for a single interval from {{bibref|TR-471}} Equation 1,
          for time interval of duration {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}} ending at
          {{param|TimeOfSubInterval}} across all connections for this test.
          Result is expressed in {{units}} with 2 digits beyond the decimal.
          10^6^ bits/second = 1 {{units}}.
        </description>
        <syntax>
          <decimal>
            <units value="Mbps"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="TimeOfSubInterval" access="readOnly"
          activeNotify="canDeny">
        <description>
          Time in UTC of end of sub-interval when {{param|IPLayerCapacity}} was
          measured. Value MUST be specified to {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TimestampResolution}}
          precision. For example: 2008-04-09T15:01:05.123456Z
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="LossRatio" access="readOnly">
        <description>
          Ratio of lost packets to total packets, for time interval of duration
          {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}} ending at {{param|TimeOfSubInterval}}
          across all connections for this test. This value is expressed as a
          decimal to 9 decimal digits.
        </description>
        <syntax>
          <decimal/>
        </syntax>
      </parameter>

      <parameter name="RTTRange" access="readOnly">
        <description>
          The range of Round Trip Time (RTT), for time interval of duration
          {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}} ending at {{param|TimeOfSubInterval}}
          across all connections for this test. See {{bibref|TR-471}} for
          description of how value is calculated. This value is expressed in
          {{units}}. This value is expressed as a decimal to 9 decimal digits.
        </description>
        <syntax>
          <decimal>
            <units value="seconds"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="PDVRange" access="readOnly">
        <description>
          The range of Packet Delay Variation (PDV), for time interval of
          duration {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}} ending at
          {{param|TimeOfSubInterval}} across all connections for this test. See
          {{bibref|TR-471}} for description of how value is calculated. This
          value is expressed in {{units}}. This value is expressed as a decimal
          to 9 decimal digits.
        </description>
        <syntax>
          <decimal>
            <units value="seconds"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="MinOnewayDelay" access="readOnly">
        <description>
          The minimum one-way delay, for time interval of duration
          {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}} ending at {{param|TimeOfSubInterval}}
          across all connections for this test. The minimum one-way delay is
          calculated at the conclusion of the test and SHALL be calculated
          using the conditional distribution of all packets with a finite
          one-way delay value (undefined delays are excluded). This value is
          expressed in {{units}}. This value is expressed as a decimal to 9
          decimal digits.
        </description>
        <syntax>
          <decimal>
            <units value="seconds"/>
          </decimal>
        </syntax>
      </parameter>

      <parameter name="ReorderedRatio" access="readOnly">
        <description>
          Ratio of reordered packets to total packets, for time interval of
          duration {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}} ending at
          {{param|TimeOfSubInterval}} across all connections for this test.
          This value is expressed as a decimal to 9 decimal digits.
        </description>
        <syntax>
          <decimal/>
        </syntax>
      </parameter>

      <parameter name="ReplicatedRatio" access="readOnly" version="2.15">
        <description>
          Ratio of replicated packets to total packets, for time interval of
          duration {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}} ending at
          {{param|TimeOfSubInterval}} across all connections for this test.
          This value is expressed as a decimal to 9 decimal digits.
        </description>
        <syntax>
          <decimal/>
        </syntax>
      </parameter>

       <parameter name="InterfaceEthMbps" access="readOnly" version="2.15">
      <description>
        The number of bits observed on the {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}Interface}} during an
        IP-Layer Capacity test for time interval of duration
        {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}} ending at {{param|TimeOfSubInterval}},
        divided by the duration of {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}TestSubInterval}}. Result is
        expressed in Mbps with 2 digits beyond the decimal. 10^6^ bits/second
        = 1 {{units}}. This is primarily a diagnostic measurement.
        Measurement direction follows the {{param|{{template|IP-LAYER-CAPACITY-DIAG-PARENT}}Role}}.
      </description>
      <syntax>
        <decimal>
         <units value="Mbps"/>
        </decimal>
      </syntax>
    </parameter>
  </component>

  <component name="IPServerSelectionDiagnosticsInput">

    <parameter name="Interface" access="readWrite" version="2.9">
      <description>
        {{reference|the IP-layer interface over which the test is to be
        performed}} Example: Device.IP.Interface.1

        {{template|INTERFACE-ROUTING}}
      </description>
      <syntax>
        <string>
          <size maxLength="256"/>
          <pathRef refType="strong" targetParent=".IP.Interface."
              targetType="row"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="ProtocolVersion" access="readWrite" mandatory="true"
        version="2.9">
      <description>
        Indicates the IP protocol version to be used.
      </description>
      <syntax>
        <string>
          <enumeration value="Any">
            <description>
              Use either IPv4 or IPv6 depending on the system preference.
            </description>
          </enumeration>
          <enumeration value="IPv4">
            <description>Use IPv4 for the requests.</description>
          </enumeration>
          <enumeration value="IPv6">
            <description>Use IPv6 for the requests.</description>
          </enumeration>
        </string>
        <default type="factory" value="Any"/>
      </syntax>
    </parameter>

    <parameter name="Protocol" access="readWrite" mandatory="true"
        version="2.9">
      <description>
        The protocol over which the test is to be performed.
      </description>
      <syntax>
        <string>
          <enumeration value="ICMP"/>
          <enumeration value="UDP Echo"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="HostList" access="readWrite" mandatory="true"
        version="2.9">
      <description>
        Each entry is a Host name or address of a host to ping.
      </description>
      <syntax>
        <list maxItems="10">
          <size/>
        </list>
        <string>
          <size maxLength="256"/>
        </string>
      </syntax>
    </parameter>

    <parameter name="NumberOfRepetitions" access="readWrite" mandatory="true"
        version="2.9">
      <description>
        Number of repetitions of the ping test to perform for each
        {{param|HostList}} entry before reporting the results.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="Timeout" access="readWrite" mandatory="true"
        version="2.9">
      <description>
        Timeout in {{units}} for each iteration of the ping test where the
        total number of iterations is the value of
        {{param|NumberOfRepetitions}} times the number of entities in the
        {{param|HostList}} Parameter.
      </description>
      <syntax>
        <unsignedInt>
          <range minInclusive="1"/>
          <units value="milliseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>
  </component>

  <component name="IPServerSelectionDiagnosticsOutput">

    <parameter name="FastestHost" access="readOnly" activeNotify="canDeny"
        version="2.9">
      <description>
        Result parameter indicating the Host (one of the items within the
        {{param|HostList}} Parameter) with the smallest average response time.
      </description>
      <syntax>
        <string/>
      </syntax>
    </parameter>

    <parameter name="MinimumResponseTime" access="readOnly"
        activeNotify="canDeny" version="2.9">
      <description>
        Result parameter indicating the minimum response time in {{units}} over
        all repetitions with successful responses of the most recent ping test
        for the Host identified in {{param|FastestHost}}. Success is defined by
        the underlying protocol used. If there were no successful responses
        across all Hosts, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="AverageResponseTime" access="readOnly"
        activeNotify="canDeny" version="2.9">
      <description>
        Result parameter indicating the average response time in {{units}} over
        all repetitions with successful responses of the most recent ping test
        for the Host identified in {{param|FastestHost}}. Success is defined by
        the underlying protocol used. If there were no successful responses
        across all Hosts, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="MaximumResponseTime" access="readOnly" version="2.9">
      <description>
        Result parameter indicating the maximum response time in {{units}} over
        all repetitions with successful responses of the most recent ping test
        for the Host identified in {{param|FastestHost}}. Success is defined by
        the underlying protocol used. If there were no successful responses
        across all Hosts, this value MUST be zero.
      </description>
      <syntax>
        <unsignedInt>
          <units value="microseconds"/>
        </unsignedInt>
      </syntax>
    </parameter>

    <parameter name="IPAddressUsed" access="readOnly" version="2.9">
      <description>
        Indicates which IP address was used to send the request to the host
        identified in {{param|FastestHost}}.
      </description>
      <syntax>
        <dataType ref="IPAddress"/>
      </syntax>
    </parameter>
  </component>

  <component name="IP">

    <object name="Device.IP." access="readOnly" minEntries="1" maxEntries="1"
        version="2.0">
      <description>
        IP object that contains the {{object|Interface}},
        {{object|ActivePort}}, and {{object|Diagnostics}} objects.
      </description>

      <parameter name="IPv4Capable" access="readOnly">
        <description>
          Indicates whether the device is IPv4 capable.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv4Enable" access="readWrite" version="2.2">
        <description>
          Enables or disables the IPv4 stack, and so the use of IPv4 on the
          device. This affects only layer 3 and above.

          When {{false}}, IP interfaces that had been operationally up and
          passing IPv4 packets will now no longer be able to do so, and will be
          operationally down (unless also attached to an enabled IPv6 stack).
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv4Status" access="readOnly" version="2.2">
        <description>
          Indicates the status of the IPv4 stack. {{enum}}

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="IPv6Capable" access="readOnly" version="2.2">
        <description>
          Indicates whether the device is IPv6 capable.

          Note: If {{false}}, it is expected that IPv6-related parameters,
          enumeration values, etc will not be implemented by the device.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6Enable" access="readWrite" version="2.2">
        <description>
          Enables or disables the IPv6 stack, and so the use of IPv6 on the
          device. This affects only layer 3 and above.

          When {{false}}, IP interfaces that had been operationally up and
          passing IPv6 packets will now no longer be able to do so, and will be
          operationally down (unless also attached to an enabled IPv4 stack).
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6Status" access="readOnly" version="2.2">
        <description>
          Indicates the status of the IPv6 stack. {{enum}}

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="ULAPrefix" access="readWrite" version="2.2">
        <description>
          The ULA /48 prefix {{bibref|RFC4193|Section 3}}.
        </description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
        </syntax>
      </parameter>

      <parameter name="ActivePortNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <component ref="Layer3Interface"/>
    </object>

    <object base="Device.IP.Interface.{i}.">
      <description action="replace">
        IP interface table (a stackable interface object as described in
        {{bibref|TR-181i2|Section 4.2}}). This table models the layer 3 IP
        interface.

        Each IP interface can be attached to the IPv4 and/or IPv6 stack. The
        interface's IP addresses and prefixes are listed in the
        {{object|IPv4Address}}, {{object|IPv6Address}} and
        {{object|IPv6Prefix}} tables.

        Note that support for manipulating {{param|Loopback}} interfaces is
        OPTIONAL, so the implementation MAY choose not to create (or allow the
        Controller to create) {{object}} instances of type
        {{enum|Loopback|Type}}.

        When the Controller administratively disables the interface, i.e. sets
        {{param|Enable}} to {{false}}, the interface's automatically-assigned
        IP addresses and prefixes MAY be retained. When the Controller
        administratively enables the interface, i.e. sets {{param|Enable}} to
        {{true}}, these IP addresses and prefixes MUST be refreshed. It's up to
        the implementation to decide exactly what this means: it SHOULD take
        all reasonable steps to refresh everything but if it is unable, for
        example, to refresh a prefix that still has a significant lifetime, it
        might well choose to retain rather than discard it.

        Any {{enum|Tunneled|Type}} IP interface instances instantiated by the
        CPE MUST NOT have any statistics, writable parameters, IP addresses or
        IPv6 prefixes. Any read-only parameters, e.g. {{param|Status}}, MUST
        return the same information as for the corresponding
        {{enum|Tunnel|Type}} interface. The reason for these rules is that
        {{enum|Tunneled|Type}} IP interfaces exist only in order to be the
        targets of references (within the data model) and do not model any
        concepts over and above those already modeled by the
        {{enum|Tunnel|Type}} IP interfaces.

        Note that {{enum|Tunnel|Type}} and {{enum|Tunneled|Type}} IP interfaces
        are part of a legacy mechanism that is only used for
        {{object|##.IPv6rd}}, {{object|##.DSLite}} and {{object|##.IPsec}}
        tunnels and MUST NOT be used in any other context. For all other
        tunneling mechanisms {{enum|Normal|Type}} IP interfaces are stacked
        above technology-specific Tunnel Interfaces, e.g. above
        {{object|##.GRE.Tunnel.{i}.Interface}} or
        {{object|##.MAP.Domain.{i}.Interface}} objects.
      </description>

      <parameter base="Enable">
        <description action="replace">
          Enables or disables the interface (regardless of {{param|IPv4Enable}}
          and {{param|IPv6Enable}}).

          This parameter is based on ''ifAdminStatus'' from {{bibref|RFC2863}}.
        </description>
     </parameter>

      <parameter base="LowerLayers">
        <description action="append">
          {{param}} MUST be {{empty}} and read-only when {{param|Type}} is
          {{enum|Loopback|Type}}, {{enum|Tunnel|Type}}, or
          {{enum|Tunneled|Type}}.
        </description>
      </parameter>

      <parameter name="IPv4Enable" access="readWrite" version="2.2"
          dmr:previousParameter="Enable">
        <description>
          If set to {{true}}, attaches this interface to the IPv4 stack. If set
          to {{false}}, detaches this interface from the IPv4 stack.

          Once detached from the IPv4 stack, the interface will now no longer
          be able to pass IPv4 packets, and will be operationally down (unless
          also attached to an enabled IPv6 stack).

          For an IPv4 capable device, if {{param}} is not present this
          interface SHOULD be permanently attached to the IPv4 stack.

          Note that {{param}} is independent of {{param|Enable}}, and that to
          administratively enable an interface for IPv4 it is necessary for
          both {{param|Enable}} and {{param}} to be {{true}}.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6Enable" access="readWrite" version="2.2">
        <description>
          If set to {{true}}, attaches this interface to the IPv6 stack. If set
          to {{false}}, detaches this interface from the IPv6 stack.

          Once detached from the IPv6 stack, the interface will now no longer
          be able to pass IPv6 packets, and will be operationally down (unless
          also attached to an enabled IPv4 stack).

          For an IPv6 capable device, if {{param}} is not present this
          interface SHOULD be permanently attached to the IPv6 stack.

          Note that {{param}} is independent of {{param|Enable}}, and that to
          administratively enable an interface for IPv6 it is necessary for
          both {{param|Enable}} and {{param}} to be {{true}}.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="ULAEnable" access="readWrite" version="2.2">
        <description>
          Controls whether or not ULAs {{bibref|RFC4193}} are generated and
          used on this interface.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Router" access="readWrite" dmr:previousParameter="LowerLayers">
        <description>
          {{reference}} The ''Router'' instance that is associated with this IP
          Interface entry.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="strong" targetParent="##.Routing.Router."
                targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="MaxMTUSize" access="readWrite">
        <description>
          The maximum transmission unit (MTU); the largest allowed size of an
          IP packet (including IP headers, but excluding lower layer headers
          such as Ethernet, PPP, or PPPoE headers) that is allowed to be
          transmitted by or through this device.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="64" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="Type" access="readOnly">
        <description>
          IP interface type. {{enum}}

          For {{enum|Loopback}}, {{enum|Tunnel}}, and {{enum|Tunneled}} IP
          interface objects, the {{param|LowerLayers}} parameter MUST be
          {{empty}}.
        </description>
        <syntax>
          <string>
            <enumeration value="Normal"/>
            <enumeration value="Loopback"/>
            <enumeration value="Tunnel">
              <description>
                Only used with legacy ({{enum|Tunnel}},{{enum|Tunneled}}) IP
                interface pairs
              </description>
            </enumeration>
            <enumeration value="Tunneled">
              <description>
                Only used with legacy ({{enum|Tunnel}},{{enum|Tunneled}}) IP
                interface pairs
              </description>
            </enumeration>
          </string>
          <default type="object" value="Normal"/>
        </syntax>
      </parameter>

      <parameter name="Loopback" access="readWrite">
        <description>
          When set to {{true}}, the IP interface becomes a loopback interface
          and the CPE MUST set {{param|Type}} to {{enum|Loopback|Type}}. In
          this case, the CPE MUST also set {{param|LowerLayers}} to {{empty}}
          and fail subsequent attempts at setting {{param|LowerLayers}} until
          the interface is no longer a loopback.

          Support for manipulating loopback interfaces is OPTIONAL.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="IPv4AddressNumberOfEntries" access="readOnly">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="IPv6AddressNumberOfEntries" access="readOnly"
          version="2.2">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="IPv6PrefixNumberOfEntries" access="readOnly"
          version="2.2">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="AutoIPEnable" access="readWrite">
        <description>
          If {{true}}, enables auto-IP on the interface {{bibref|RFC3927}}.
          This mechanism is only used with IPv4.

          When auto-IP is enabled on an interface, an {{object|IPv4Address}}
          object will dynamically be created and configured with auto-IP
          parameter values. The exact conditions under which an auto-IP address
          is created (e.g. always when enabled or only in absence of dynamic IP
          addressing) is implementation specific.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="TWAMPReflectorNumberOfEntries" access="readOnly"
          version="2.12">
        <description>
          {{numentries}}
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.IP.Interface.{i}.IPv4Address.{i}." access="readWrite"
        numEntriesParameter="IPv4AddressNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.0" dmr:previousObject="Device.IP.Interface.{i}.">
      <description>
        IPv4 address table. Entries are auto-created and auto-deleted as IP
        addresses are added and deleted via DHCP, auto-IP, 3GPP-NAS (3GPP Non Access Stratum), or IPCP. Static
        entries are created and configured by the Controller.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="true">
        <parameter ref="IPAddress"/>
        <parameter ref="SubnetMask"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this IPv4 address.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly" version="2.2">
        <description>
          The status of this {{object}} table entry. {{enum}}

          The {{enum|Error_Misconfigured}} value indicates that a necessary
          configuration value is undefined or invalid.

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error_Misconfigured"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>
      <parameter base="Alias">
        <description action="append">
          This parameter can only be modified if {{param|AddressingType}} is
          {{enum|Static|AddressingType}}.
        </description>
      </parameter>

      <parameter name="IPAddress" access="readWrite">
        <description>
          IPv4 address.

          This parameter can only be modified if the {{param|AddressingType}}
          is {{enum|Static|AddressingType}}.
        </description>
        <syntax>
          <dataType ref="IPv4Address"/>
        </syntax>
      </parameter>

      <parameter name="SubnetMask" access="readWrite">
        <description>
          Subnet mask.

          This parameter can only be modified if the {{param|AddressingType}}
          is {{enum|Static|AddressingType}}.
        </description>
        <syntax>
          <dataType ref="IPv4Address"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="AddressingType" access="readOnly">
        <description>
          Addressing method used to assign the IP address. {{enum}}
        </description>
        <syntax>
          <string>
            <enumeration value="DHCP"/>
            <enumeration value="IKEv2">
              <description>Assigned by IKEv2 {{bibref|RFC5996}}.</description>
            </enumeration>
            <enumeration value="AutoIP"/>
            <enumeration value="IPCP"/>
            <enumeration value="Static"/>
            <enumeration value="3GPP-NAS" version="2.18">
              <description>
                Assigned by the core network (fixed or cellular) using 3GPP NAS signalling methods.
                e.g. PDU Session Establishment Request {{bibref|3GPP-TS.24.501|Clause 6.2.4.2}},
                PDN Connectivity Request {{bibref|3GPP-TS.24.301|Clause 6.2.2}},
                PDP Context Activation Request {{bibref|3GPP-TS.24.008|Clause 6.1.2A}}, ...
                This information is available from the AT commands {{bibref|3GPP-TS.27.007|Clause 10.1.23}} PDP context read dynamic parameters +CGCONTRDP.
              </description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.IP.Interface.{i}.TWAMPReflector.{i}."
        access="readWrite" minEntries="0" maxEntries="unbounded"
        enableParameter="Enable"
        numEntriesParameter="TWAMPReflectorNumberOfEntries" version="2.12"
        dmr:previousObject="Device.Interface.{i}.Stats.">
      <description>
        This object contains parameters associated with the configuration that
        permits this interface to be used as Two-Way Active Measurement
        Protocol (TWAMP) reflector as defined in {{bibref|TR-390}}.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="true">
        <parameter ref="Port"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables the TWAMP reflector.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The current operational state of the TWAMP reflector.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Active"/>
            <enumeration value="Error" optional="true"/>
          </string>
        </syntax>
      </parameter>

      <component ref="Alias"/>

      <parameter name="Port" access="readWrite">
        <description>
          The port used to listen for the TWAMP test packets.
        </description>
        <syntax>
          <unsignedInt>
            <range maxInclusive="65535"/>
          </unsignedInt>
          <default type="object" value="862"/>
        </syntax>
      </parameter>

      <parameter name="MaximumTTL" access="readWrite">
        <description>
          The maximum TTL of a received packet that this TWAMP reflector will
          reflect to the TWAMP controller.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="1" maxInclusive="255"/>
          </unsignedInt>
          <default type="object" value="1"/>
        </syntax>
      </parameter>

      <parameter name="IPAllowedList" access="readWrite">
        <description>
          {{list}} List items represent source IP addresses and subnets from
          which test packets MUST always be received. {{empty}} list will allow
          test packets to be received from any source IP address.

          Each entry in the list MUST be either an IP address, or an IP prefix
          specified using Classless Inter-Domain Routing (CIDR) notation
          {{bibref|RFC4632}}.

          An IP prefix is specified as an IP address followed (with no
          intervening white space) by "/n", where ''n'' (the prefix size) is an
          integer in the range 0-32 (for IPv4) or 0-128 (for IPv6) that
          indicates the number of (leftmost) '1' bits of the prefix.

          IPv4 example:

          * 1.2.3.4 specifies a single IPv4 address, and 1.2.3.4/24 specifies a
            class C subnet with subnet mask 255.255.255.0.

          * 1.2.0.0/22 represents the 1024 IPv4 addresses from 1.2.0.0 to
            1.2.3.255.

          IPv6 example:

          * fec0::220:edff:fe6a:f76 specifies a single IPv6 address.

          * 2001:edff:fe6a:f76::/64 represents the IPv6 addresses from
            2001:edff:fe6a:f76:0:0:0:0 to
            2001:edff:fe6a:f76:ffff:ffff:ffff:ffff.
        </description>
        <syntax>
          <list>
            <size maxLength="255"/>
          </list>
          <string/>
        </syntax>
      </parameter>

      <parameter name="PortAllowedList" access="readWrite">
        <description>
          {{list}} List items represent source port ranges from which test
          packets MUST always be received. {{empty}} list will allow test
          packets to be received from any source port.

          Each entry in the list MUST be either a port number or a range of
          port numbers separated by a hyphen (-).

          For example, an entry with the value: '2-40' accepts test packets
          from any allowed source IP addresses with a source port between 2 and
          40 inclusive. An entry of '3' accepts test packets from allow source
          IP addresses with a port of 3.
        </description>
        <syntax>
          <list>
            <size maxLength="255"/>
          </list>
          <string/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.IP.Interface.{i}.IPv6Address.{i}." access="readWrite"
        numEntriesParameter="IPv6AddressNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.2">
      <description>
        This table contains the IP interface's IPv6 unicast addresses. There
        MUST be an entry for each such address, including anycast addresses.

        There are several ways in which entries can be added to and deleted
        from this table, including:

        * Automatically via SLAAC {{bibref|RFC4862}}, which covers generation
          of link-local addresses (for all types of device) and global
          addresses (for non-router devices).

        * Automatically via DHCPv6 {{bibref|RFC8415}}, which covers generation
          of any type of address (subject to the configured DHCP server
          policy).

        * Manually via a GUI or some other local management interface.

        * Manually via factory default configuration.

        * By the Controller.

        This table MUST NOT include entries for the Subnet-Router anycast
        address {{bibref|RFC4291|Section 2.6.1}}. Such entries would be
        identical to others but with a zero interface identifier, and would add
        no value.

        A loopback interface will always have address ''::1''
        {{bibref|RFC4291|Section 2.5.3}} and MAY also have link-local address
        ''fe80::1''.

        This object is based on ''ipAddressTable'' from {{bibref|RFC4293}}.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="true">
        <parameter ref="IPAddress"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this {{object}} entry.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this {{object}} table entry. {{enum}}

          The {{enum|Error_Misconfigured}} value indicates that a necessary
          configuration value is undefined or invalid.

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error_Misconfigured"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <parameter name="IPAddressStatus" access="readOnly">
        <description>
          The status of {{param|IPAddress}}, indicating whether it can be used
          for communication. See also {{param|PreferredLifetime}} and
          {{param|ValidLifetime}}. {{enum}}

          This parameter is based on ''ipAddressStatus'' and
          ''ipAddressStatusTC'' from {{bibref|RFC4293}}.
        </description>
        <syntax>
          <string>
            <enumeration value="Preferred">
              <description>
                Valid address that can appear as the destination or source
                address of a packet.
              </description>
            </enumeration>
            <enumeration value="Deprecated">
              <description>
                Valid but deprecated address that is not intended to be used as
                a source address.
              </description>
            </enumeration>
            <enumeration value="Invalid">
              <description>
                Invalid address that is not intended to appear as the
                destination or source address of a packet.
              </description>
            </enumeration>
            <enumeration value="Inaccessible">
              <description>
                Valid address that is not accessible because the interface to
                which it is assigned is not operational.
              </description>
            </enumeration>
            <enumeration value="Unknown">
              <description>
                Address status cannot be determined for some reason.
              </description>
            </enumeration>
            <enumeration value="Tentative">
              <description>
                The uniqueness of the address on the link is being verified.
              </description>
            </enumeration>
            <enumeration value="Duplicate">
              <description>
                Invalid address that has been determined to be non-unique on
                the link.
              </description>
            </enumeration>
            <enumeration value="Optimistic">
              <description>
                Valid address that is available for use, subject to
                restrictions, while its uniqueness on a link is being verified.
              </description>
            </enumeration>
          </string>
          <default type="object" value="Invalid"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>
      <parameter base="Alias">
        <description action="append">
          This parameter can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}}.
        </description>
      </parameter>

      <parameter name="IPAddress" access="readWrite">
        <description>
          IPv6 address.

          This parameter can only be modified if the {{param|Origin}} is
          {{enum|Static|Origin}}.

          This parameter is based on ''ipAddressAddr'' from {{bibref|RFC4293}}.
        </description>
        <syntax>
          <dataType ref="IPv6Address"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="Origin" access="readOnly">
        <description>
          Mechanism via which the IP address was assigned. {{enum}}

          This parameter is based on ''ipOrigin'' from {{bibref|RFC4293}}.
        </description>
        <syntax>
          <string>
            <enumeration value="AutoConfigured">
              <description>
                Automatically generated. For example, a link-local address as
                specified by SLAAC {{bibref|RFC4862|Section 5.3}}, a global
                address as specified by SLAAC {{bibref|RFC4862|Section 5.5}},
                or generated via CPE logic (e.g. from delegated prefix as
                specified by {{bibref|RFC8415}}), or from ULA /48 prefix as
                specified by {{bibref|RFC4193}}.
              </description>
            </enumeration>
            <enumeration value="DHCPv6">
              <description>Assigned by DHCPv6 {{bibref|RFC8415}}.</description>
            </enumeration>
            <enumeration value="IKEv2">
              <description>Assigned by IKEv2 {{bibref|RFC5996}}.</description>
            </enumeration>
            <enumeration value="MAP">
              <description>
                Assigned by MAP {{bibref|RFC7597}}, i.e. is this interface's
                ''MAP IPv6 address''
              </description>
            </enumeration>
            <enumeration value="WellKnown">
              <description>
                Specified by a standards organization, e.g. the ''::1''
                loopback address, which is defined in {{bibref|RFC4291}}.
              </description>
            </enumeration>
            <enumeration value="3GPP-NAS" version="2.18">
              <description>
                Address assigned by the core network (fixed or cellular) using 3GPP NAS signalling methods.
                e.g. PDU Session Establishment Request {{bibref|3GPP-TS.24.501|Clause 6.2.4.2}},
                PDN Connectivity Request {{bibref|3GPP-TS.24.301|Clause 6.2.2}},
                PDP Context Activation Request {{bibref|3GPP-TS.24.008|Clause 6.1.2A}}, ...
                This information is available from the AT commands {{bibref|3GPP-TS.27.007|Clause 10.1.23}} PDP context read dynamic parameters +CGCONTRDP.
              </description>
            </enumeration>
            <enumeration value="Static">
              <description>
                For example, present in the factory default configuration (but
                not {{enum|WellKnown}}), created by the Controller, or created
                by some other management entity (e.g. via a GUI).
              </description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>

      <parameter name="Prefix" access="readWrite">
        <description>
          IPv6 address prefix.

          Some addresses, e.g. addresses assigned via the DHCPv6 IA_NA option,
          are not associated with a prefix, and some
          {{enum|WellKnown|#.IPv6Prefix.{i}.Origin}} prefixes might not be
          modeled. In both of these cases {{param}} will be {{null}}.

          This parameter can only be modified if the {{param|Origin}} is
          {{enum|Static|Origin}}.

          This parameter is based on ''ipAddressPrefix'' from
          {{bibref|RFC4293}}.
        </description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent="#.IPv6Prefix."
                targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="PreferredLifetime" access="readWrite">
        <description>
          The time at which this address will cease to be preferred (i.e. will
          become deprecated), or {{null}} if not known. For an infinite
          lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.

          This parameter can only be modified if the {{param|Origin}} is
          {{enum|Static|Origin}}.
        </description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>

      <parameter name="ValidLifetime" access="readWrite">
        <description>
          The time at which this address will cease to be valid (i.e. will
          become invalid), or {{null}} if unknown. For an infinite lifetime,
          the parameter value MUST be 9999-12-31T23:59:59Z.

          This parameter can only be modified if the {{param|Origin}} is
          {{enum|Static|Origin}}.
        </description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>

      <parameter name="Anycast" access="readWrite">
        <description>
          Indicates whether this is an anycast address {{bibref|RFC4291|Section
          2.6}}. Anycast addresses are syntactically identical to unicast
          addresses and so need to be configured explicitly.

          This parameter can only be modified if the {{param|Origin}} is
          {{enum|Static|Origin}}.

          This parameter is based on ''ipAddressType'' from {{bibref|RFC4293}}.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.IP.Interface.{i}.IPv6Prefix.{i}." access="readWrite"
        numEntriesParameter="IPv6PrefixNumberOfEntries"
        enableParameter="Enable" minEntries="0" maxEntries="unbounded"
        version="2.2">
      <description>
        This table contains the interface's IPv6 prefixes. There MUST be an
        entry for each such prefix, not only for prefixes learned from router
        advertisements.

        There are several ways in which entries can be added to and deleted
        from this table, including:

        * Automatically via {{bibref|RFC4861}} Router Advertisements. See also
          {{object|###.RouterAdvertisement}}.

        * Automatically via DHCPv6 {{bibref|RFC8415}} prefix delegation
          {{bibref|RFC8415}}. See also {{object|###.DHCPv6.Client}}.

        * Automatically via internal CPE logic, e.g. creation of child prefixes
          derived from a parent prefix.

        * Manually via a GUI or some other local management interface.

        * Manually via factory default configuration.

        * By the Controller.

        The CPE MAY choose not to create {{object}} entries for
        {{enum|WellKnown|Origin}} prefixes or for the ULA /48 prefix
        {{bibref|RFC4193}}. If an {{object}} entry exists for the ULA /48
        prefix, it MUST be on a downstream interface (i.e. an interface for
        which the physical layer interface object has ''Upstream'' =
        {{false}}).

        This object is based on ''ipAddressPrefixTable'' from
        {{bibref|RFC4293}}.
      </description>
      <uniqueKey functional="false">
        <parameter ref="Alias"/>
      </uniqueKey>
      <uniqueKey functional="true">
        <parameter ref="Prefix"/>
      </uniqueKey>

      <parameter name="Enable" access="readWrite">
        <description>
          Enables or disables this {{object}} entry.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          The status of this {{object}} table entry. {{enum}}

          The {{enum|Error}} value MAY be used by the CPE to indicate a locally
          defined error condition.
        </description>
        <syntax>
          <string>
            <enumeration value="Disabled"/>
            <enumeration value="Enabled"/>
            <enumeration value="Error" optional="true"/>
          </string>
          <default type="object" value="Disabled"/>
        </syntax>
      </parameter>

      <parameter name="PrefixStatus" access="readOnly">
        <description>
          The status of {{param|Prefix}}, indicating whether it can be used for
          communication. See also {{param|PreferredLifetime}} and
          {{param|ValidLifetime}}. {{enum}}

          This parameter is based on ''ipAddressStatus'' and
          ''ipAddressStatusTC'' from {{bibref|RFC4293}}.
        </description>
        <syntax>
          <string>
            <enumeration value="Preferred">
              <description>Valid prefix.</description>
            </enumeration>
            <enumeration value="Deprecated">
              <description>Valid but deprecated prefix.</description>
            </enumeration>
            <enumeration value="Invalid">
              <description>Invalid prefix.</description>
            </enumeration>
            <enumeration value="Inaccessible">
              <description>
                Valid prefix that is not accessible because the interface to
                which it is assigned is not operational.
              </description>
            </enumeration>
            <enumeration value="Unknown">
              <description>
                Prefix status cannot be determined for some reason.
              </description>
            </enumeration>
          </string>
          <default type="object" value="Invalid"/>
        </syntax>
      </parameter>

      <component ref="Alias"/>
      <parameter base="Alias">
        <description action="append">
          This parameter can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}}.
        </description>
      </parameter>

      <parameter name="Prefix" access="readWrite">
        <description>
          IPv6 address prefix.

          This parameter can only be modified if the {{param|Origin}} is
          {{enum|Static|Origin}}.

          This parameter is based on ''ipAddressPrefixPrefix'' from
          {{bibref|RFC4293}}.
        </description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="Origin" access="readOnly">
        <description>
          Mechanism via which the prefix was assigned or most recently updated.
          {{enum}}

          Note that:

          * {{enum|PrefixDelegation}} and {{enum|RouterAdvertisement}} prefixes
            can exist only on upstream interfaces (i.e. interfaces for which
            the physical layer interface object has ''Upstream'' = {{true}}),

          * {{enum|AutoConfigured}} and {{enum|WellKnown}} prefixes can exist
            on any interface, and

          * {{enum|Static}} and {{enum|Child}} prefixes can exist only on
            downstream interfaces (i.e. interfaces for which the physical layer
            interface object has ''Upstream'' = {{false}}).

          Also note that a {{enum|Child}} prefix's {{param|ParentPrefix}} will
          always be an {{enum|AutoConfigured}}, {{enum|PrefixDelegation}}, or
          {{enum|RouterAdvertisement}} prefix.

          This parameter is based on ''ipAddressOrigin'' from
          {{bibref|RFC4293}}.
        </description>
        <syntax>
          <string>
            <enumeration value="AutoConfigured">
              <description>
                Generated via internal CPE logic (e.g. the ULA /48 prefix) or
                derived from an internal prefix that is not modeled in any
                {{object}} table.
              </description>
            </enumeration>
            <enumeration value="PrefixDelegation">
              <description>
                Delegated via DHCPv6 {{bibref|RFC8415}} or some other protocol,
                e.g. IPv6rd {{bibref|RFC5969}}. Also see {{param|StaticType}}.
              </description>
            </enumeration>
            <enumeration value="RouterAdvertisement">
              <description>
                Discovered via router advertisement {{bibref|RFC4861}} Prefix
                Information Option.
              </description>
            </enumeration>
            <enumeration value="WellKnown">
              <description>
                Specified by a standards organization, e.g. ''fe80::/10'' for
                link-local addresses, or ''::1/128'' for the loopback address,
                both of which are defined in {{bibref|RFC4291}}.
              </description>
            </enumeration>
            <enumeration value="Static">
              <description>
                Created by the Controller, by some other management entity
                (e.g. via a GUI), or present in the factory default
                configuration (but not {{enum|WellKnown}}). Unrelated to any
                shorter length prefix that might exist on the CPE. Also see
                {{param|StaticType}}. Can be used for RA (Prefix Information),
                DHCPv6 address assignment (IA_NA) or DHCPv6 prefix delegation
                (IA_PD).
              </description>
            </enumeration>
            <enumeration value="Child">
              <description>
                Derived from an associated {{enum|AutoConfigured}} or
                {{enum|PrefixDelegation}} parent prefix. Also see
                {{param|StaticType}}, {{param|ParentPrefix}} and
                {{param|ChildPrefixBits}}. Can be used for RA (Prefix
                Information), DHCPv6 address assignment (IA_NA) or DHCPv6
                prefix delegation (IA_PD).
              </description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>

      <parameter name="StaticType" access="readWrite">
        <description>
          Static prefix sub-type. For a {{enum|Static|Origin}} prefix, this can
          be set to {{enum|PrefixDelegation}} or {{enum|Child}}, thereby
          creating an unconfigured prefix of the specified type that will be
          populated in preference to creating a new instance. This allows the
          Controller to pre-create "prefix slots" with known path names that
          can be referenced from elsewhere in the data model before they have
          been populated. {{enum}}

          This mechanism works as follows:

          * When this parameter is set to {{enum|PrefixDelegation}} or
            {{enum|Child}}, the instance becomes a "prefix slot" of the
            specified type.

          * Such an instance can be administratively enabled ({{param|Enable}}
            = {{true}}) but will remain operationally disabled
            ({{param|Status}} = {{enum|Disabled|Status}}) until it has been
            populated.

          * When a new prefix of of type T is needed, the CPE will look for a
            matching unpopulated instance, i.e. an instance with
            ({{param|Origin}},{{param}},{{param|Prefix}}) =
            ({{enum|Static|Origin}},T,""). If the CPE finds at least one such
            instance it will choose one and populate it. If already
            administratively enabled it will immediately become operationally
            enabled. If the CPE finds no such instances, it will create and
            populate a new instance with ({{param|Origin}},{{param}}) = (T,T).
            If the CPE finds more than one such instance, the algorithm via
            which it chooses which instance to populate is
            implementation-specific.

          * When a prefix that was populated via this mechanism becomes
            invalid, the CPE will reset {{param|Prefix}} to {{empty}}. This
            does not affect the value of the {{param|Enable}} parameter.

          The prefix {{param}} can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}}.
        </description>
        <syntax>
          <string>
            <enumeration value="Static">
              <description>
                Prefix is a "normal" {{enum|Static|Origin}} prefix.
              </description>
            </enumeration>
            <enumeration value="Inapplicable" access="readOnly">
              <description>
                Prefix is not {{enum|Static|Origin}}, so this parameter does
                not apply.
              </description>
            </enumeration>
            <enumeration value="PrefixDelegation">
              <description>
                Prefix will be populated when a
                {{enum|PrefixDelegation|Origin}} prefix needs to be created.
              </description>
            </enumeration>
            <enumeration value="Child">
              <description>
                Prefix will be populated when a {{enum|Child|Origin}} prefix
                needs to be created. In this case, the Controller needs also to
                set {{param|ParentPrefix}} and might want to set
                {{param|ChildPrefixBits}} (if parent prefix is not set, or goes
                away, then the child prefix will become operationally
                disabled).
              </description>
            </enumeration>
          </string>
          <default type="object" value="Static"/>
        </syntax>
      </parameter>

      <parameter name="ParentPrefix" access="readWrite">
        <description>
          Indicates the parent prefix from which this prefix was derived. The
          parent prefix is relevant only for {{enum|Child|Origin}} prefixes and
          for {{enum|Static|Origin}} {{enum|Child|StaticType}} prefixes (both
          of which will always be on downstream interfaces), i.e. for
          {{param|Origin}}={{enum|Child|Origin}} and for
          ({{param|Origin}},{{param|StaticType}}) =
          ({{enum|Static|Origin}},{{enum|Child|StaticType}}) prefixes.

          This parameter can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}} (which makes sense only for a prefix whose
          {{param|StaticType}} is already or will be changed to
          {{enum|Child|StaticType}}).
        </description>
        <syntax>
          <string>
            <pathRef refType="strong" targetParent="." targetType="row"/>
          </string>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="ChildPrefixBits" access="readWrite">
        <description>
          A prefix that specifies the length of {{enum|Static|Origin}}
          {{enum|Child|StaticType}} prefixes and how they are derived from
          their {{param|ParentPrefix}}. It will be used if and only if it is
          not {{empty}} and is longer than the parent prefix (if it is not
          used, derivation of such prefixes is implementation-specific). Any
          bits to the right of the parent prefix are set to the bits in this
          prefix.

          For example, for a parent prefix of fedc::/56, if this parameter had
          the value 123:4567:89ab:cdef::/64, the child /64 would be
          fedc:0:0:ef::/64. For a parent prefix of fedc::/60, the child /64
          would be fedc:0:0:f::/64.

          This parameter can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}}.
        </description>
        <syntax>
          <dataType ref="IPv6Prefix"/>
          <default type="object" value=""/>
        </syntax>
      </parameter>

      <parameter name="OnLink" access="readWrite">
        <description>
          On-link flag {{bibref|RFC4861|Section 4.6.2}} as received (in the RA)
          for RouterAdvertisement. Indicates whether this prefix can be used
          for on-link determination.

          This parameter can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}}.

          This parameter is based on ''ipAddressPrefixOnLinkFlag'' from
          {{bibref|RFC4293}}.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="Autonomous" access="readWrite">
        <description>
          Autonomous address configuration flag {{bibref|RFC4861|Section
          4.6.2}} as received (in the RA) for RouterAdvertisement. Indicates
          whether this prefix can be used for generating global addresses as
          specified by SLAAC {{bibref|RFC4862}}.

          This parameter can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}}.

          This parameter is based on ''ipAddressPrefixAutonomousFlag'' from
          {{bibref|RFC4293}}.
        </description>
        <syntax>
          <boolean/>
          <default type="object" value="false"/>
        </syntax>
      </parameter>

      <parameter name="PreferredLifetime" access="readWrite">
        <description>
          This parameter is based on ''ipAddressPrefixAdvPreferredLifetime''
          from {{bibref|RFC4293}}. The time at which this prefix will cease to
          be preferred (i.e. will become deprecated), or {{null}} if not known.
          For an infinite lifetime, the parameter value MUST be
          9999-12-31T23:59:59Z.

          This parameter can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}}.
        </description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>

      <parameter name="ValidLifetime" access="readWrite">
        <description>
          This parameter is based on ''ipAddressPrefixAdvValidLifetime'' from
          {{bibref|RFC4293}}. The time at which this prefix will cease to be
          valid (i.e. will become invalid), or {{null}} if not known. For an
          infinite lifetime, the parameter value MUST be 9999-12-31T23:59:59Z.

          This parameter can only be modified if {{param|Origin}} is
          {{enum|Static|Origin}}.
        </description>
        <syntax>
          <dateTime/>
          <default type="object" value="9999-12-31T23:59:59Z"/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.IP.ActivePort.{i}." access="readOnly"
        numEntriesParameter="ActivePortNumberOfEntries" minEntries="0"
        maxEntries="unbounded" version="2.0">
      <description>
        This table lists the ports on which TCP connections are listening or
        established.
      </description>
      <uniqueKey functional="true">
        <parameter ref="LocalIPAddress"/>
        <parameter ref="LocalPort"/>
        <parameter ref="RemoteIPAddress"/>
        <parameter ref="RemotePort"/>
      </uniqueKey>

      <parameter name="LocalIPAddress" access="readOnly">
        <description>
          Connection local IP address.
        </description>
        <syntax>
          <dataType ref="IPAddress"/>
        </syntax>
      </parameter>

      <parameter name="LocalPort" access="readOnly">
        <description>
          Connection local port.
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="RemoteIPAddress" access="readOnly">
        <description>
          The remote IP address of the source of inbound packets.

          This will be {{null}} for listening connections (only connections in
          {{enum|ESTABLISHED|Status}} state have remote addresses).
        </description>
        <syntax>
          <dataType ref="IPAddress"/>
        </syntax>
      </parameter>

      <parameter name="RemotePort" access="readOnly">
        <description>
          The remote port of the source of inbound packets.

          This will be {{null}} for listening connections (only connections in
          {{enum|ESTABLISHED|Status}} state have remote addresses).
        </description>
        <syntax>
          <unsignedInt>
            <range minInclusive="0" maxInclusive="65535"/>
          </unsignedInt>
        </syntax>
      </parameter>

      <parameter name="Status" access="readOnly">
        <description>
          Current operational status of the connection. {{enum}}
        </description>
        <syntax>
          <string>
            <enumeration value="LISTEN"/>
            <enumeration value="ESTABLISHED"/>
          </string>
        </syntax>
      </parameter>
    </object>

    <object name="Device.IP.Diagnostics." access="readOnly" minEntries="1"
        maxEntries="1" version="2.0">
      <description>
        The IP Diagnostics object.
      </description>

      <parameter name="IPv4PingSupported" access="readOnly" version="2.8">
        <description>
          Indicates that Ping over IPv4 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6PingSupported" access="readOnly" version="2.8">
        <description>
          Indicates that Ping over IPv6 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv4TraceRouteSupported" access="readOnly"
          version="2.8">
        <description>
          Indicates that TraceRoute over IPv4 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6TraceRouteSupported" access="readOnly"
          version="2.8">
        <description>
          Indicates that TraceRoute over IPv6 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv4DownloadDiagnosticsSupported" access="readOnly"
          version="2.9">
        <description>
          Indicates that Download Diagnostics over IPv4 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6DownloadDiagnosticsSupported" access="readOnly"
          version="2.9">
        <description>
          Indicates that Download Diagnostics over IPv6 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv4UploadDiagnosticsSupported" access="readOnly"
          version="2.9">
        <description>
          Indicates that Upload Diagnostics over IPv4 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6UploadDiagnosticsSupported" access="readOnly"
          version="2.9">
        <description>
          Indicates that Upload Diagnostics over IPv6 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv4UDPEchoDiagnosticsSupported" access="readOnly"
          version="2.9">
        <description>
          Indicates that UDPEcho Diagnostics over IPv4 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6UDPEchoDiagnosticsSupported" access="readOnly"
          version="2.9">
        <description>
          Indicates that UDPEcho Diagnostics over IPv6 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPLayerCapacitySupported" access="readOnly"
          version="2.14">
        <description>
          Indicates that IP Layer Capacity measurement is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv4ServerSelectionDiagnosticsSupported"
          access="readOnly" version="2.9">
        <description>
          Indicates that ServerSelection Diagnostics over IPv4 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="IPv6ServerSelectionDiagnosticsSupported"
          access="readOnly" version="2.9">
        <description>
          Indicates that ServerSelection Diagnostics over IPv6 is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>
    </object>

    <object name="Device.IP.Diagnostics.UDPEchoConfig." access="readOnly"
        minEntries="1" maxEntries="1" version="2.0">
      <description>
        This object allows the CPE to be configured to perform the UDP Echo
        Service defined in {{bibref|RFC862}} and UDP Echo Plus Service defined
        in {{bibref|TR-143|Appendix A.1}}.
      </description>

      <parameter name="Enable" access="readWrite">
        <description>
          MUST be enabled to receive UDP echo. When enabled from a disabled
          state all related timestamps, statistics and UDP Echo Plus counters
          are cleared.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="Interface" access="readWrite">
        <description>
          {{reference|IP-layer interface over which the CPE MUST listen and
          receive UDP echo requests on}}

          The value of this parameter MUST be either a valid interface or
          {{empty}}. An attempt to set this parameter to a different value MUST
          be rejected as an invalid parameter value.

          If {{empty}} is specified, the CPE MUST listen and receive UDP echo
          requests on all interfaces.

          Note: Interfaces behind a NAT MAY require port forwarding rules
          configured in the Gateway to enable receiving the UDP packets.
        </description>
        <syntax>
          <string>
            <size maxLength="256"/>
            <pathRef refType="weak" targetType="row"/>
          </string>
        </syntax>
      </parameter>

      <parameter name="SourceIPAddress" access="readWrite">
        <description>
          The Source IP address of the UDP echo packet. The CPE MUST only
          respond to a UDP echo from this source IP address.
        </description>
        <syntax>
          <dataType ref="IPAddress"/>
        </syntax>
      </parameter>

      <parameter name="UDPPort" access="readWrite">
        <description>
          The UDP port on which the UDP server MUST listen and respond to UDP
          echo requests.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="EchoPlusEnabled" access="readWrite">
        <description>
          If {{true}} the CPE will perform necessary packet processing for UDP
          Echo Plus packets.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="EchoPlusSupported" access="readOnly">
        <description>
          {{true}} if UDP Echo Plus is supported.
        </description>
        <syntax>
          <boolean/>
        </syntax>
      </parameter>

      <parameter name="PacketsReceived" access="readOnly"
          activeNotify="canDeny">
        <description>
          Incremented upon each valid UDP echo packet received.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="PacketsResponded" access="readOnly"
          activeNotify="canDeny">
        <description>
          Incremented for each UDP echo response sent.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="BytesReceived" access="readOnly" activeNotify="canDeny">
        <description>
          The number of UDP received bytes including payload and UDP header
          after the UDPEchoConfig is enabled.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="BytesResponded" access="readOnly"
          activeNotify="canDeny">
        <description>
          The number of UDP responded bytes, including payload and UDP header
          sent after the UDPEchoConfig is enabled.
        </description>
        <syntax>
          <unsignedInt/>
        </syntax>
      </parameter>

      <parameter name="TimeFirstPacketReceived" access="readOnly"
          activeNotify="canDeny">
        <description>
          Time in UTC, which MUST be specified to microsecond precision.

          For example: 2008-04-09T15:01:05.123456,

          The time that the server receives the first UDP echo packet after the
          UDPEchoConfig is enabled.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>

      <parameter name="TimeLastPacketReceived" access="readOnly"
          activeNotify="canDeny">
        <description>
          Time in UTC, which MUST be specified to microsecond precision.

          For example: 2008-04-09T15:01:05.123456

          The time that the server receives the most recent UDP echo packet.
        </description>
        <syntax>
          <dateTime/>
        </syntax>
      </parameter>
    </object>

    <profile name="UDPEcho:1" version="2.0">
      <object ref="Device.IP.Diagnostics.UDPEchoConfig." requirement="present">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Interface" requirement="readWrite"/>
        <parameter ref="SourceIPAddress" requirement="readWrite"/>
        <parameter ref="UDPPort" requirement="readWrite"/>
        <parameter ref="PacketsReceived" requirement="readOnly"/>
        <parameter ref="PacketsResponded" requirement="readOnly"/>
        <parameter ref="BytesReceived" requirement="readOnly"/>
        <parameter ref="BytesResponded" requirement="readOnly"/>
        <parameter ref="TimeFirstPacketReceived" requirement="readOnly"/>
        <parameter ref="TimeLastPacketReceived" requirement="readOnly"/>
        <parameter ref="EchoPlusSupported" requirement="readOnly"/>
      </object>
    </profile>

    <profile name="UDPEchoPlus:1" version="2.0">
      <object ref="Device.IP.Diagnostics.UDPEchoConfig." requirement="present">
        <parameter ref="EchoPlusEnabled" requirement="readWrite"/>
      </object>
    </profile>

    <profile name="TWAMPReflectorBasic:1" version="2.12">
      <object ref="Device.IP.Interface.{i}." requirement="createDelete">
        <parameter ref="TWAMPReflectorNumberOfEntries" requirement="readOnly"/>
      </object>
      <object ref="Device.IP.Interface.{i}.TWAMPReflector.{i}."
          requirement="createDelete">
        <parameter ref="Enable" requirement="readWrite"/>
        <parameter ref="Status" requirement="readOnly"/>
        <parameter ref="Port" requirement="readWrite"/>
        <parameter ref="MaximumTTL" requirement="readWrite"/>
        <parameter ref="IPAllowedList" requirement="readWrite"/>
        <parameter ref="PortAllowedList" requirement="readWrite"/>
      </object>
    </profile>
  </component>

  <model name="IP:2.20">
    <component ref="Root"/>
    <component ref="IP"/>
  </model>
</dm:document>
