交换机之ERSPAN【转】

ERSPAN介绍

时下常用的网络监控和排错工具非SPAN(Switch Port Analyzer)莫属了,SPAN也通常被称作端口镜像。它可以让我们以旁路的方式来监控网络流量,不会对现网的业务造成干扰,同时将监控流量的副本发送到本地或远端的设备上。
SPAN可以在本地操作,将流量镜像到同一个源设备的其他端口(local SPAN)。
也可以远程镜像到其他与源设备二层相邻的网络设备上(RSPAN: remote span)
今天我们来聊一聊可以跨三层IP传输的远程网络流量监控技术——ERSPAN(Encapsulated Remote Switch Port Analyzer),即在SPAN的基础上扩展了encapsulated remote的特性。

原理

首先,我们来看一下ERSPAN的特性:

  • GRE封装
    将源端口报文复制一份通过GRE(Generic Routing Encapsulation)封装发送到目的服务器进行解析,采集服务器的物理位置不受限制
  • 过滤:base + offset偏移过滤指定字段
    借助芯片的UDF(User Defined Field)特性,通过专家级扩展列表基于Base域进行1~126字节的任意偏移,对会话关键字进行匹配实现会话的可视化,例如针对TCP三次握手、RDMA会话的可视
  • 采样比例
    支持设置采样率
  • 报文截取
    支持报文截取长度,降低目标服务器压力。

在这里插入图片描述

ERSPAN的封装格式

ERSPAN的报文基于GRE封装,并通过以太网转发到任何IP路由可达的地方。当前ERSPAN主要应用在IPv4网络,未来对IPv6的支持也会是一个刚需。

下面是一个ICMP报文的镜像抓包:
在这里插入图片描述

ERSPAN types

ERSPAN协议经过长期发展,随着能力的增强形成多个版本,称为"ERSPAN Types”,不同Type具有不同的帧头部格式。
在ERSPAN头部的第一个Version字段里有作定义:
在这里插入图片描述
另外在GRE头部中的Protocol Type字段也有指明内部的ERSPAN类型,Protocol Type字段值为0x88BE表示是ERSPAN Type II;
0x22EB 表示是ERSPAN Type III。

type 1

Type I的ERSPAN帧直接将IP+GRE封装在原始镜像帧头部之上,这种封装方式在原始帧之上增加了38字节:14(MAC) + 20 (IP) + 4(GRE)。

这种格式的优势在于其头部尺寸紧凑,减少传输过程的开支,但因为其将 GRE Flag和Version字段全部设置为0,即不携带任何拓展字段,也导致Type I并没有大规模应用
在这里插入图片描述

type 2

在Type II中,GRE头部中的C, R, K, S,s, Recur, Flags, Version字段,除了S字段为1,其余字段皆为0,所以Sequence Number字段会出现在Type II的GRE头部中。

有seq num 即意味着Type II可以确保接收GRE报文的次序,不会出现因为网络故障,导致收到一堆无序的GRE报文之后无法排序的情况。
在这里插入图片描述
注:
另外,ERSPAN Type II的帧格式还增加了8字节的ERSPAN头部在GRE头部和原始镜像帧之间。
在这里插入图片描述

值得注意的是,在实现中,镜像帧并没有包含原始帧的FCS字段,作为替代的是基于整个ERSPAN重新计算的新CRC值。这意味着接收设备无法检验原始帧的CRC正确性,我们只能假设仅仅是未损坏的帧被镜像了。

type 3

Type III引入了一个更大、更灵活的复合报头,以满足日益复杂和多样化的网络监控场景,包含且不限于网络管理、入侵检测、性能和延迟分析等。这些场景需要知道镜像帧的所有原始参数,并包括那些不存在于原始帧本身的内容。

ERSPAN Type III复合报头包括一个强制的12字节头部和一个可选的8字节平台特定子头部;如下所示:
在这里插入图片描述
从Type III的头部格式中可以看到,除了在Type II的基础上保留了Ver、VLAN、COS、T、Session ID字段之外,还新增了很多特有的字段,如

  • BSO
    用来表示通过ERSPAN承载的数据帧的负载完整性,00是没问题的帧、11是有问题的帧、01是短帧、11是超大帧;

  • Timestamp
    从与系统时间同步的硬件时钟里面导出,这32比特的字段至少支持100微秒的时间戳粒度

  • P与FT(Frame Type)
    前者用来指明ERSPAN承载的是以太网协议帧(PDU帧),后者用来指明是以太网帧还是IP包

  • HW ID
    在系统内ERSPAN引擎的唯一标识符;

  • Gra (Timestamp Granularity)
    用来定义时间戳的颗粒度,如00b代表100微秒粒度,01b代表100纳秒粒度,10b代表IEEE 1588粒度,11b则需要结合平台特定子头部来实现更高精的粒度;

此外,在镜像帧的过程中,也可以在每个ERSPAN帧中添加关键时间戳信息以及其他信息字段。
通过ERSPAN自身的各种特征头部,我们可以实现更为精细化的网络流量分析,接下来只需要在ERSPAN进程中挂载相应的ACL,来匹配我们感兴趣的网络流量即可。

拓展

在数据中心网络规模日益庞大,网络流量日益复杂,而对网络运维要求日益精细的今天,ERSPAN是必不可少的工具之一。

随着运维自动化程度越来越高,Netconf、RESTconf、gRPC等技术在网络自动化运维中受到广大运维同学的欢迎,利用gRPC来作为镜像流量回传的底层协议也具有诸多优势。如:基于HTTP/2协议,可以支持同一连接下串流推送机制;使用ProtoBuf编码,比JSON格式的信息大小降低了一半,可以使数据传输更加快捷和高效。试想一下,如果利用ERSPAN对感兴趣流镜像之后,再利用gRPC上送到分析服务器,是不是就会极大提高网络自动化运维的能力和效率呢。

参考



https://www.ruijie.com.cn/jszl/61499/
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值