Configuring Performance Measurement based on Dynamic iFIT Flows

Performance measurement based on dynamic iFIT flows can be automatically triggered after iFIT is enabled globally on a device.

Context

iFIT supports dynamic flow learning on the ingress by using the mask or exact match of the source or destination address. In addition, iFIT can flexibly monitor service quality in real time by configuring a learning whitelist. The generation of dynamic flows on transit and egress nodes is triggered by packets with iFIT headers.

Pre-configuration Tasks

Before configuring performance measurement based on dynamic iFIT flows, complete the following tasks:

  • Configure a dynamic routing protocol or static routes so that devices are reachable at the network layer.
  • Configure the network time protocol 1588v2 or G.8275.1 to implement clock synchronization for all devices that have clocks on the network.

    On a network where the preceding time protocols are not deployed or supported, NTP can be used to implement clock synchronization. In this case, latency measurement is not supported.

Procedure

In a non-inter-AS Option A scenario, perform the following steps to configure performance measurement based on dynamic iFIT flows:
  1. Run system-view

    The system view is displayed.

  2. Run ifit
    iFIT is enabled globally, and the iFIT view is displayed.

    To implement dynamic flow statistics collection, you only need to enable iFIT on the transit and egress nodes.

  3. Perform the following steps to configure iFIT automatic flow learning on the ingress to implement flexible performance measurement based on dynamic iFIT flows:
    1. Run node-id node-id

      A node ID is configured.

    2. (Optional) Run whitelist-group whitelist-group-name

      An iFIT whitelist group is created and its view is displayed.

    3. (Optional) Run any of the following commands to set a whitelist rule:
      • In an IPv4 scenario, run the rule rule-name ipv4 { source { src-ip-address [ src-mask-length | any src-mask-length ] } | destination { dest-ip-address [ dest-mask-length ] | any dest-mask-length } | protocol { { tcp | udp | sctp | protocol-number4 | protocol-number5 | protocol-number6 } [ source-port src-port-number ] [ destination-port dest-port-number ] | { protocol-number | protocol-number3 | protocol-number7 | protocol-number8 } } } * command.
      • In an IPv6 scenario, run the rule rule-name ipv6 { source-ipv6 { src-ipv6-address [ src6-mask-length | any src6-mask-length ] } | destination-ipv6 { dest-ipv6-address [ dest6-mask-length ] | any dest6-mask-length } | protocol { { tcp | udp | sctp | protocol-number4 | protocol-number5 | protocol-number6 } [ source-port src-port-number ] [ destination-port dest-port-number ] | { protocol-number | protocol-number3 | protocol-number7 | protocol-number8 } } } * command.
    4. Run flow-learning vpn-instance vpn-name

      An iFIT VPN instance is created and its view is displayed.

    5. (Optional) Run learning-mode { sip-mask-dip-exact | sip-mask-dip-mask | sip-exact-dip-exact | sip-exact-dip-mask }

      An iFIT flow learning mode is configured.

    6. Run flow-learning { bidirectional | unidirectional }

      An iFIT flow learning direction is configured.

    7. Run measure-mode { e2e | trace }

      The iFIT flow learning measurement mode is set to end-to-end or hop-by-hop.

    8. (Optional) Run interval interval-value

      A measurement period is configured for iFIT flow learning.

    9. Run flow-learning interface { all | { ifType ifNum | ifName } } [ whitelist-group whitelist-group-name ]

      The automatically learned iFIT flows are bound to a specified interface.

    10. Run quit

      Return to the iFIT view.

  4. Run any of the following commands to modify the learned dynamic iFIT flows:
    • In IPv4 scenarios:
      • To set dynamic flow parameters, run the dynamic flow source { src-ip-address [ src-mask-length ] | srcAny } destination { dest-ip-address [ dest-mask-length ] | dstAny } [ vpn-instance vpn-name ] interface { ifType ifNum | ifName } [ dscp dscp-value ] [ protocol { { tcp | udp | protocol-tcp | protocol-udp | sctp | protocol-sctp } [ source-port src-port-number ] [ destination-port dest-port-number ] | { protocol-number | protocol-number3 | protocol-number4 | protocol-number5 } } ] { measure-mode { e2e | trace } | delay-measure { enable | disable } | interval interval-value | { loss-measure-enable | loss-measure-disable } | { disorder-measure-enable | disorder-measure-disable } | per-packet-delay { enable | disable } } * command.
      • To clear the learned dynamic iFIT flows, run the reset dynamic flow source { src-ip-address [ src-mask-length ] | srcAny } destination { dest-ip-address [ dest-mask-length ] | dstAny } [ vpn-instance vpn-name ] interface { ifType ifNum | ifName } [ dscp dscp-value ] [ protocol { { tcp | udp | protocol-tcp | protocol-udp | sctp | protocol-sctp } [ source-port src-port-number ] [ destination-port dest-port-number ] | { protocol-number | protocol-number3 | protocol-number4 | protocol-number5 } } ] command.
    • In IPv6 scenarios:
      • To set dynamic flow parameters, run the dynamic flow source-ipv6 { src-ipv6-address [ src6-mask-length ] | srcAny } destination-ipv6 { dest-ipv6-address [ dest6-mask-length ] | dstAny } [ vpn-instance vpn-name ] interface { ifType ifNum | ifName } [ dscp dscp-value ] [ protocol { { tcp | udp | protocol-tcp | protocol-udp | sctp | protocol-sctp } [ source-port src-port-number ] [ destination-port dest-port-number ] | { protocol-number | protocol-number3 | protocol-number4 | protocol-number5 } } ] { measure-mode { e2e | trace } | delay-measure { enable | disable } | interval interval-value | { loss-measure-enable | loss-measure-disable } | { disorder-measure-enable | disorder-measure-disable } | per-packet-delay { enable | disable } } * command.
      • To clear the learned dynamic iFIT flows, run the reset dynamic flow source-ipv6 { src-ipv6-address [ src6-mask-length ] | srcAny } destination-ipv6 { dest-ipv6-address [ dest6-mask-length ] | dstAny } [ vpn-instance vpn-name ] interface { ifType ifNum | ifName } [ dscp dscp-value ] [ protocol { { tcp | udp | protocol-tcp | protocol-udp | sctp | protocol-sctp } [ source-port src-port-number ] [ destination-port dest-port-number ] | { protocol-number | protocol-number3 | protocol-number4 | protocol-number5 } } ] command.
        • If dynamic flow learning is not performed, this step can also be used to modify the learned dynamic backward flows in scenarios where iFIT measurement is performed for bidirectional flows.
        • Per-packet delay measurement can be enabled only after packet loss measurement is enabled and is mutually exclusive with out-of-order packet measurement.
  5. (Optional) Run dynamic-flow age interval-multiplier multi-value

    The aging time of dynamic iFIT flows is set.

  6. (Optional) Run reset dynamic flow { flowId | all }

    All learned dynamic flows or a specific one is deleted.

  7. Run commit

    The configuration is committed.

In an inter-AS Option A scenario, in addition to the preceding configurations, you also need to perform the following steps to enable iFIT mapping on the interfaces of the devices (a pair of ASBRs) that connect different ASs:
  1. In the system view, run interface { interface-name | interface-type interface-number }

    The interface view is displayed.

  2. Run either of the following commands based on the device location to enable iFIT mapping on the interface:
    • To enable iFIT mapping in the inbound direction, run the ifit ingress mapping enable command on the egress ASBR.
    • To enable iFIT mapping in the outbound direction, run the ifit egress mapping enable command on the ingress ASBR .

      You are advised to configure iFIT mapping in the inbound direction and then in the outbound direction. Otherwise, traffic may be interrupted.

  3. Run commit

    The configuration is committed.

Copyright © Huawei Technologies Co., Ltd.
Copyright © Huawei Technologies Co., Ltd.
< Previous topic Next topic >