[SRv6]《SRv6网络编程》SRv6 OAM与随路网络测量(2/2:IFIT)

概述

本文主要介绍SRv6 OAM和数据平面Telemetry关键技术(随路网络测量
OAM:基于已有的IPv6 OAM机制进行简单扩展,实现故障管理和性能测量
随路网络测量:基于IFIT(In-situ Flow Information Telemetry)框架实现,不引入额外的测量报文,提升了检测的准确度;支持多种随路网络测量技术的数据平面封装,可大规模部署在IP网络中

第一部分:OAM

参照我的博客:
《SRv6网络编程》SRv6 OAM与随路网络测量(1/2:OAM)

第二部分:随路网络测量

2.1. 随路网络测量概述

网络Telemetry可分为管理平面,控制平面和数据平面的Telemetry。随路网络测量时数据平面的Telemetry所使用的一种关键技术
区别于主动的性能测量方法,随路网络测量并不会发送主动探测报文,而是在用户报文中携带OAM的指令
随路网络测量是一种混合测量方法
随路网络测量的优点

  • 测量的是真实的用户流量
  • 可实现逐报文的监控
  • 可以获得更多的数据平面信息
  • 可获得报文在网络转发中所经过的路径,包括设备和出入接口
  • 报文在每一个网络设备的转发过程中命中的规则
  • 报文在每一个网络设备中缓存所消耗的时间(纳秒级)
  • 报文在排队过程中和哪些其他的流同时竞争队列

2.2. 随路网络测量模式

业界随路网络测量的技术方案包括:IOAM,PBT(Postcard-Based Telemetry)和EAM(Enhanced Alternate Marking, 增强交替染色)
随路网络测量分为两种模式:passportpostcard模式

两种模式下,测量域的入节点会为被测量报文添加一个TIH(Telemetry Information Header),区别在于每经过一台设备时对采集数据的处理
Passport模式
就好像一个周游世界的游客,每到一个国家就在护照上盖一个出入境的戳
Postcard模式
就好比游客到了一个景点,就一张明信片回家
两者的优劣对比

2.3. IFIT的架构与功能

随路网络测量在网络部署中存在的诸多挑战:

  • 只能监控有限规模的流对象
  • 可能影响正常的转发性能
  • 海量的数据接收,存储和分析将给服务器造成极大的冲击
  • 需要一种方式,能够实现灵活可扩展的数据定义,并将所需的数据交付给数据分析的应用

IFIT架构

IFIT应用给网络设备下发监控和测量任务,包括但不限于指定测量的流对象收集的数据,并且选择随路网络测量的数据平面封装

IFIT功能

  • 智能选流:对一部分流进行识别和重点监控
  • 高效数据上送:采用二进制编码;仅上送新发现的流路径或者发生变更的流路径,从而减少数据传输量
  • 动态网络探针:按需加载网络测量功能,从而利用有限的资源满足多张业务需求

2.4. IFIT的封装模式

一致模式:将IFIT指令头封装在隧道外,使报文在途径的每一个节点都被相同地处理
管道模式:将IFIT指令头封装在隧道内,无论隧道由多少中间节点,IFIT都将隧道当成一跳来处理

2.5. SRv6支持的IFIT功能

Passport模式

IOAM支持Passport和Postcard两种模式,本节先来介绍Passport模式
IOAM定义的Trace Option(跟踪模式)实现了一种Passport模式的随路
Trace Option的指令格式如图:

Trace Option中每个字段的含义:

着重关注其中的IOAM-Trace-Type字段:
报文每经过一个IOAM域的节点时都会根据IOAM-Trace-Type收集相应类型的数据并依次添加在IOAM指令头后面

Postcard模式

EAM
EAM属于Postcard模式的随路网络测量
EAM指令格式:

EAM各字段的含义:

L比特通过周期性的交替设置为0或1的形式(交替染色),以Postcard模式逐跳上送FlowMonID,周期号,周期内的计数值上送到分析器,得到丢包术和丢包位置等信息
D比特位会为需要检测的数据包置位为1,并对其打上时间戳,用以计算出标记报文的单向时延

IOAM
IOAM支持PBT-I(Postcard-Based Telemetry with Instruction Header)
IOAM新增了一种IOAMDEX(Directly EXport)的选项实现了PBT-I,指令头格式如图:

对比IOAM Passport模式中的Trace Option,该报文中新增加了如下表的两个字段:

SRv6 IFIT封装

封装方式主要分为两种:

  • 封装在IPv6的逐跳选项扩展报文头中
  • 封装在SRH的Optional TLV中

封装在IPv6的逐跳选项扩展报文头中

这种封装方式中的IFIT指令会被所有IPv6转发节点苏处理
在SR-BE或者松散SR-TE场景下,可以让运维人员知道报文是如何逐跳转发的

封装在SRH的Optional TLV中

这种封装方式的IFIT指令只会有指定的Endpoint节点处理
在SRv6 TE严格路径的场景下,该封装效果等同于IFIT在逐跳选项扩展报文头中的封装

总结

与传统OAM相比较,随路网络测量是很有前景的数据平面Telemetry技术
SRv6的数据面可编程特性也极大地促进了随路网络测量技术的发展和应用
IFIT框架支持多种随路网络测量技术的数据平面封装,可以结合控制器,提供智能选流高效数据上送动态探针等多种功能

(0)

相关推荐

  • 网工知识角|华为认证网络管理协议分类(二)

    sFlow ·采样流sFlow(Sampled Flow)是一种基于报文采样的网络流量监控技术,基于Flow采样可以截取原始报文的全部,也可以截取一部分报头. ·sFlow系统包含一个嵌入在设备中的s ...

  • 迅为4412开发板Qt网络编程-UDP实现服务器和客户端

    UDP 协议是开放式,无连接,不可靠的传输层通信协议,但它收发数据的速度相对于 TCP 快很多,常用在传输音视频等数据量非常大的场合.udp 网络编程只需要使用一个类 QUdpSocket. 本实验中 ...

  • 老曹眼中的网络编程基础

    我们是幸运的,因为我们拥有网络.网络是一个神奇的东西,它改变了你和我的生活方式,改变了整个世界. 然而,网络的无标度和小世界特性使得它又是复杂的,无所不在,无所不能,以致于我们无法区分甚至无法描述. ...

  • 4412开发板Qt网络编程-TCP实现服务器和客户端

    网络编程有 TCP 和 UDP,TCP 编程需要用到俩个类:QTcpServer 和 QTcpSocket. 1 TCP 实现服务器和客户端 TCP 协议(Transmission Control P ...

  • 网络编程及前端面试题!Python入门

    当我们学习Python时,需要掌握的的知识有很多,除了有关Python的专业知识外,我们还需要学习网络编程.前端等知识,对此这篇文章为大家总结一下Python常见面试题之网络编程及前端的问题. 第一: ...

  • 【汇总】Python网络编程框架有哪些?

    伴随着人工智能时代的到来,Python这门语言变得非常受欢迎,成为了很多开发人员的热捧,甚至还有不少小白.其他岗位就业人员想要转行学习Python,尤其是想要从事网络编程的人员,那么你知道Python ...

  • day21 网络编程(下)

    版权声明:本博客转载自路飞学城Python全栈开发培训课件,仅用于学习之用,严禁用于商业用途. 欢迎访问路飞学城官网:https://www.luffycity.com/ 课程目标:学会网络编程开发的 ...

  • 03Python网络编程之多线程服务端。

    # 多线程和单线程其实是差不多的,知识我们多开了几个线程# 来让多个客户端连接,这样同一时间可以有四个客户端跟服务端通信 import zen_utils# 导入线程模块from threading ...

  • 03Python网络编程之单线程服务端

    # 对于单线程的服务端,我们借助于zen_utils(我们自己编写好的一些函数)是很容易就实现的.# 导入这个模块import zen_utils if __name__ == '__main__': ...

  • 03Python网络编程之客户端。

    # 这个是客户端,下边我会写几个关于服务的单线程.多线程.异步服务端的脚本. # 定义一个客户端,# 导入接收终端参数.随机数.socket.自己编写工具的模块.import argparse, ra ...