流量可视化之ERSPAN的前世今生
- +1 你赞过了
【天极网网络频道】时下最常用的网络监控和排错工具非SPAN(Switch Port Analyzer)莫属了,SPAN也通常被称作端口镜像。它可以让我们以旁路的方式来监控网络流量,不会对现网的业务造成干扰,同时将监控流量的副本发送到本地或远端的设备上,包括Sniffer、IDS、或其他类型的网络分析工具。
一些典型的用法有:
• 通过追踪控制/数据帧来排除网络问题;
• 通过监控VoIP包来分析延迟和抖动;
• 通过监控网络交互来分析时延;
• 通过监控网络流量来做异常状态的检测。
SPAN可以在本地操作,将流量镜像到同一个源设备的其他端口,也可以远程镜像到其他与源设备二层相邻的网络设备上(RSPAN)。
今天我们来聊一聊可以跨三层IP传输的远程网络流量监控技术——ERSPAN(Encapsulated Remote Switch Port Analyzer),即在SPAN的基础上扩展了encapsulated remote的特性。
ERSPAN基本操作原理
首先,我们来看一下ERSPAN的特性:
• 将源端口报文复制一份通过GRE(Generic Routing Encapsulation)发送到目的服务器进行解析,采集服务器的物理位置不受限制;
• 借助芯片的UDF(User Defined Field)特性,通过专家级扩展列表基于Base域进行1~126字节的任意偏移,对会话关键字进行匹配实现会话的可视化,例如针对TCP三次握手、RDMA会话的可视;
• 支持设置采样率;
• 支持报文截取长度,降低目标服务器压力。
看到以上特性,相信大家就知道为什么ERSPAN是如今数据中心内部网络监控一个必不可少的工具了。
总结一下,ERSPAN主要的作用可以归纳为两点:
• 会话可视化:借助ERSPAN把新建TCP、RDMA(Remote Direct Memory Access)等的所有会话都采集到后端服务器进行展示;
• 网络排障:当出现网络问题时,去抓取网络流量做故障分析。
为了达到这样的效果,源网络设备需要从海量数据流中将用户感兴趣的流量过滤出来,复制一份,将每个复制帧封装到一个特殊的“超级帧容器”中,这个超级容器会携带足够多的附加信息,以便它被正确的路由到接收设备,并让接收设备能够提取并完全恢复原始监控的流量。
接收设备可以是另外一台支持解封装ERSPAN报文的服务器。
ERSPAN的类型和封装格式分析
ERSPAN的报文基于GRE封装,并通过以太网转发到任何IP路由可达的地方。当前ERSPAN主要应用在IPv4网络,未来对IPv6的支持也会是一个刚需。
关于ERSAPN的通用封装结构,下面是一个ICMP报文的镜像抓包:
ERSPAN协议经过长期发展,随着能力的增强形成多个版本,称为"ERSPAN Types”,不同Type具有不同的帧头部格式。
在ERSPAN头部的第一个Version字段里有作定义:
另外在GRE头部中的Protocol Type字段也有指明内部的ERSPAN类型,Protocol Type字段值为0x88BE表示是ERSPAN Type II,0x22EB 表示是ERSPAN Type III。
1. Type I
Type I的ERSPAN帧直接将IP+GRE封装在原始镜像帧头部之上,这种封装方式在原始帧之上增加了38字节:14(MAC) + 20 (IP) + 4(GRE)。这种格式的优势在于其头部尺寸紧凑,减少传输过程的开支,但因为其将 GRE Flag和Version字段全部设置为0,即不携带任何拓展字段,也导致Type I并没有大规模应用,这里就不过多展开。
Type I的GRE头部封装格式如下:
2. Type II
在Type II中,GRE头部中的C, R, K, S,s, Recur, Flags, Version字段,除了S字段为1,其余字段皆为0,所以Sequence Number字段会出现在Type II的GRE头部中。即意味着Type II可以确保接收GRE报文的次序,不会出现因为网络故障,导致收到一堆无序的GRE报文之后无法排序的情况。
Type II的GRE头部封装格式如下:
另外,ERSPAN Type II的帧格式还增加了8字节的ERSPAN头部在GRE头部和原始镜像帧之间。
Type II的ERSPAN头部封装格式如下:
最后,紧随原始镜像帧之后的,是标准的4字节的以太网循环冗余校验码CRC。
值得注意的是,在实现中,镜像帧并没有包含原始帧的FCS字段,作为替代的是基于整个ERSPAN重新计算的新CRC值。这意味着接收设备无法检验原始帧的CRC正确性,我们只能假设仅仅是未损坏的帧被镜像了。
3. Type III
Type III引入了一个更大、更灵活的复合报头,以满足日益复杂和多样化的网络监控场景,包含且不限于网络管理、入侵检测、性能和延迟分析等。这些场景需要知道镜像帧的所有原始参数,并包括那些不存在于原始帧本身的内容。
ERSPAN Type III复合报头包括一个强制的12字节头部和一个可选的8字节平台特定子头部。
Type III的ERSPAN头部封装格式如下:
同样,在原始镜像帧之后的是4字节的CRC。
从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则需要结合平台特定子头部来实现更高精的粒度;
• Platf ID与Platform Specific Info:根据Platf ID不同的值,Platform Specific Info字段会有不同的格式与内容。
应该注意的是,上面所支持的各种报头字段可以在常规的ERSPAN应用中使用,甚至可以镜像错误帧或BPDU帧,并保持原始的Trunk封装和VLAN ID。此外,在镜像帧的过程中,也可以在每个ERSPAN帧中添加关键时间戳信息以及其他信息字段。
通过ERSPAN自身的各种特征头部,我们可以实现更为精细化的网络流量分析,接下来只需要在ERSPAN进程中挂载相应的ACL,来匹配我们感兴趣的网络流量即可。
ERSPAN实现RDMA会话可视化
我们举一个RDMA场景下应用ERSPAN技术来达到RDMA会话可视化的案例:
RDMA:Remote Direct Memory Access远程直接数据存取,是利用智能网卡和交换机,实现服务器A的网卡可以直接读写服务器B的内存,最终达到高带宽、低延迟和低资源利用率的效果,在大数据和高性能分布式存储场景中有大量的应用。
RoCEv2:RDMA over Converged Ethernet Version 2,RDMA数据封装在UDP报头中,目的端口号为4791,UDP报头之后是IB BTH,即InfiniBand Base Transport Header。
RDMA日常运维需要采集很多数据,用于收集日常水位基准线和异常报警,以及发生异常的问题定位依据。结合ERSPAN可以快速抓取海量数据,获得交换芯片在微秒级别的转发质量数据、协议交互状态,并通过数据统计与分析,得出RDMA在网络上端到端的转发质量评估和预测。
为了实现RDAM会话可视化,我们需要ERSPAN在镜像流量时,对RDMA交互会话的关键字匹配,这时我们需要利用专家级扩展列表。
专家级扩展列表匹配字段定义:
UDF由五个字段组成:UDF关键字、base域、offset域、value域和mask域。受限于硬件表项容量,当前共有8个UDF可以使用,一个UDF最长可以匹配两个字节。
• UDF关键字:UDF1...UDF8共8个UDF匹配域关键字
• base域:标识UDF匹配域的起始位置。如下
l4_header (适用RG-S6520-64CQ)
l5_header (适用RG-S6510-48VS8CQ)
• offset域:基于base域的偏移值,范围:0-126
• value域:匹配值,可以与mask域配合使用,用来配置需要匹配的具体value,有效位两个字节
• mask域:掩码,有效位两个字节
(补充:如果多个表项有用到同一个UDF匹配域的话,那么base域和offset域必须保持一致。)
与RDMA会话状态相关的两个关键报文是CNP(Congestion Notification Packet)与NAK(Negative Acknowledgment):
前者是RDMA接收端收到交换机(出口Buffer达到阈值时)发出的ECN报文后生成的,包含了导致拥塞的flow或QP的信息;后者是用于表示RDMA传输有丢包的响应报文。
我们接下来看看如何利用专家级扩展列表来匹配这两个报文:
expert access-list extended rdma
permit udp any any any any eq 4791 udf 1 l4_header 8 0x8100 0xFF00 (匹配RG-S6520-64CQ)
permit udp any any any any eq 4791 udf 1 l5_header 0 0x8100 0xFF00 (匹配RG-S6510-48VS8CQ)
expert access-list extended rdma
permit udp any any any any eq 4791 udf 1 l4_header 8 0x1100 0xFF00 udf 2 l4_header 20 0x6000 0xFF00(匹配RG-S6520-64CQ)
permit udp any any any any eq 4791 udf 1 l5_header 0 0x1100 0xFF00 udf 2 l5_header 12 0x6000 0xFF00(匹配RG-S6510-48VS8CQ)
最后一步,将该专家级扩展列表挂载到相应ERSPAN进程中,即可实现RDMA会话的可视化。
写在最后
在数据中心网络规模日益庞大,网络流量日益复杂,而对网络运维要求日益精细的今天,ERSPAN是必不可少的工具之一。
随着运维自动化程度越来越高,Netconf、RESTconf、gRPC等技术在网络自动化运维中受到广大运维同学的欢迎,利用gRPC来作为镜像流量回传的底层协议也具有诸多优势。如:基于HTTP/2协议,可以支持同一连接下串流推送机制;使用ProtoBuf编码,比JSON格式的信息大小降低了一半,可以使数据传输更加快捷和高效。试想一下,如果利用ERSPAN对感兴趣流镜像之后,再利用gRPC上送到分析服务器,是不是就会极大提高网络自动化运维的能力和效率呢?
锐捷网络在25G/100G数据中心的新产品RG-S6510-48VS8CQ和RG-S6520-64CQ,除了可以满足RDMA网络中对PFC+ECN+MMU的管理,能保持较高的协调性,还可以部署RDMA整网的可视化方案,支持利用ERSPAN技术匹配专家级拓展列表对RDMA会话进行可视化展示。
感谢您关注锐捷网络技术干货文章!现诚邀您参与有奖调研,您宝贵的意见和建议将帮助我们在技术探索与分享上持续精进。
点击下方“链接”或扫描二维码参与调研。戳👇
最新资讯
热门视频
新品评测