端口镜像 流量过滤_技术盛宴 | 流量可视化之ERSPAN的前世今生
SPAN(Switch Port Analyzer)是當(dāng)下常用的網(wǎng)絡(luò)監(jiān)控和排錯(cuò)工具,SPAN也通常被稱作端口鏡像。它可以讓我們以旁路的方式來監(jiān)控網(wǎng)絡(luò)流量,不會(huì)對(duì)現(xiàn)網(wǎng)的業(yè)務(wù)造成干擾,同時(shí)將監(jiān)控流量的副本發(fā)送到本地或遠(yuǎn)端的設(shè)備上,包括Sniffer、IDS、或其他類型的網(wǎng)絡(luò)分析工具。
一些典型的用法有:
通過追蹤控制/數(shù)據(jù)幀來排除網(wǎng)絡(luò)問題;
通過監(jiān)控VoIP包來分析延遲和抖動(dòng);
通過監(jiān)控網(wǎng)絡(luò)交互來分析時(shí)延;
通過監(jiān)控網(wǎng)絡(luò)流量來做異常狀態(tài)的檢測。
SPAN可以在本地操作,將流量鏡像到同一個(gè)源設(shè)備的其他端口,也可以遠(yuǎn)程鏡像到其他與源設(shè)備二層相鄰的網(wǎng)絡(luò)設(shè)備上(RSPAN)。
今天我們來聊一聊可以跨三層IP傳輸?shù)倪h(yuǎn)程網(wǎng)絡(luò)流量監(jiān)控技術(shù)——ERSPAN(Encapsulated Remote Switch Port Analyzer),即在SPAN的基礎(chǔ)上擴(kuò)展了encapsulated remote的特性。
? ERSPAN基本操作原理 ?
首先,我們來看一下ERSPAN的特性:
將源端口報(bào)文復(fù)制一份通過GRE(Generic Routing Encapsulation)發(fā)送到目的服務(wù)器進(jìn)行解析,采集服務(wù)器的物理位置不受限制;
借助芯片的UDF(User Defined Field)特性,通過專家級(jí)擴(kuò)展列表基于Base域進(jìn)行1~126字節(jié)的任意偏移,對(duì)會(huì)話關(guān)鍵字進(jìn)行匹配實(shí)現(xiàn)會(huì)話的可視化,例如針對(duì)TCP三次握手、RDMA會(huì)話的可視;
支持設(shè)置采樣率;
支持報(bào)文截取長度,降低目標(biāo)服務(wù)器壓力。
看到以上特性,相信大家就知道為什么ERSPAN是如今數(shù)據(jù)中心內(nèi)部網(wǎng)絡(luò)監(jiān)控一個(gè)必不可少的工具了。
總結(jié)一下,ERSPAN主要的作用可以歸納為兩點(diǎn):
會(huì)話可視化:借助ERSPAN把新建TCP、RDMA(Remote Direct Memory Access)等的所有會(huì)話都采集到后端服務(wù)器進(jìn)行展示;
網(wǎng)絡(luò)排障:當(dāng)出現(xiàn)網(wǎng)絡(luò)問題時(shí),去抓取網(wǎng)絡(luò)流量做故障分析。
為了達(dá)到這樣的效果,源網(wǎng)絡(luò)設(shè)備需要從海量數(shù)據(jù)流中將用戶感興趣的流量過濾出來,復(fù)制一份,將每個(gè)復(fù)制幀封裝到一個(gè)特殊的“超級(jí)幀容器”中,這個(gè)超級(jí)容器會(huì)攜帶足夠多的附加信息,以便它被正確的路由到接收設(shè)備,并讓接收設(shè)備能夠提取并完全恢復(fù)原始監(jiān)控的流量。
接收設(shè)備可以是另外一臺(tái)支持解封裝ERSPAN報(bào)文的服務(wù)器。
? ERSPAN的類型和封裝格式分析?
ERSPAN的報(bào)文基于GRE封裝,并通過以太網(wǎng)轉(zhuǎn)發(fā)到任何IP路由可達(dá)的地方。當(dāng)前ERSPAN主要應(yīng)用在IPv4網(wǎng)絡(luò),未來對(duì)IPv6的支持也會(huì)是一個(gè)剛需。關(guān)于ERSAPN的通用封裝結(jié)構(gòu),下面是一個(gè)ICMP報(bào)文的鏡像抓包:ERSPAN協(xié)議經(jīng)過長期發(fā)展,隨著能力的增強(qiáng)形成多個(gè)版本,稱為"ERSPAN Types”,不同Type具有不同的幀頭部格式。
在ERSPAN頭部的第一個(gè)Version字段里有作定義:
ERSPAN類型
Version字段
Type I
0x0
Type II
0x1
Type III
0x2
另外在GRE頭部中的Protocol Type字段也有指明內(nèi)部的ERSPAN類型,Protocol Type字段值為0x88BE表示是ERSPAN Type II,0x22EB 表示是ERSPAN Type III。
Type I
Type I的ERSPAN幀直接將IP+GRE封裝在原始鏡像幀頭部之上,這種封裝方式在原始幀之上增加了38字節(jié):14(MAC) + 20 (IP) + 4(GRE)。這種格式的優(yōu)勢在于其頭部尺寸緊湊,減少傳輸過程的開支,但因?yàn)槠鋵?GRE Flag和Version字段全部設(shè)置為0,即不攜帶任何拓展字段,也導(dǎo)致Type I并沒有大規(guī)模應(yīng)用,這里就不過多展開。
Type I的GRE頭部封裝格式如下:
Type II
在Type II中,GRE頭部中的C, R, K, S,s, Recur, Flags, Version字段,除了S字段為1,其余字段皆為0,所以Sequence Number字段會(huì)出現(xiàn)在Type II的GRE頭部中。即意味著Type II可以確保接收GRE報(bào)文的次序,不會(huì)出現(xiàn)因?yàn)榫W(wǎng)絡(luò)故障,導(dǎo)致收到一堆無序的GRE報(bào)文之后無法排序的情況。
Type II的GRE頭部封裝格式如下:
另外,ERSPAN Type II的幀格式還增加了8字節(jié)的ERSPAN頭部在GRE頭部和原始鏡像幀之間。
Type II的ERSPAN頭部封裝格式如下:
最后,緊隨原始鏡像幀之后的,是標(biāo)準(zhǔn)的4字節(jié)的以太網(wǎng)循環(huán)冗余校驗(yàn)碼CRC。
值得注意的是,在實(shí)現(xiàn)中,鏡像幀并沒有包含原始幀的FCS字段,作為替代的是基于整個(gè)ERSPAN重新計(jì)算的新CRC值。這意味著接收設(shè)備無法檢驗(yàn)原始幀的CRC正確性,我們只能假設(shè)僅僅是未損壞的幀被鏡像了。
Type III
Type III引入了一個(gè)更大、更靈活的復(fù)合報(bào)頭,以滿足日益復(fù)雜和多樣化的網(wǎng)絡(luò)監(jiān)控場景,包含且不限于網(wǎng)絡(luò)管理、入侵檢測、性能和延遲分析等。這些場景需要知道鏡像幀的所有原始參數(shù),并包括那些不存在于原始幀本身的內(nèi)容。
ERSPAN Type III復(fù)合報(bào)頭包括一個(gè)強(qiáng)制的12字節(jié)頭部和一個(gè)可選的8字節(jié)平臺(tái)特定子頭部。
Type III的ERSPAN頭部封裝格式如下:
同樣,在原始鏡像幀之后的是4字節(jié)的CRC。
從Type III的頭部格式中可以看到,除了在Type II的基礎(chǔ)上保留了Ver、VLAN、COS、T、Session ID字段之外,還新增了很多特有的字段,如:
BSO:用來表示通過ERSPAN承載的數(shù)據(jù)幀的負(fù)載完整性,00是沒問題的幀、11是有問題的幀、01是短幀、11是超大幀;
Timestamp:從與系統(tǒng)時(shí)間同步的硬件時(shí)鐘里面導(dǎo)出,這32比特的字段至少支持100微秒的時(shí)間戳粒度;
P與FT(Frame Type):?前者用來指明ERSPAN承載的是以太網(wǎng)協(xié)議幀(PDU幀),后者用來指明是以太網(wǎng)幀還是IP包;
HW ID:在系統(tǒng)內(nèi)ERSPAN引擎的唯一標(biāo)識(shí)符;
Gra (Timestamp Granularity):用來定義時(shí)間戳的顆粒度,如00b代表100微秒粒度,01b代表100納秒粒度,10b代表IEEE 1588粒度,11b則需要結(jié)合平臺(tái)特定子頭部來實(shí)現(xiàn)更高精的粒度;
Platf ID與Platform Specific Info:根據(jù)Platf ID不同的值,Platform Specific Info字段會(huì)有不同的格式與內(nèi)容。
應(yīng)該注意的是,上面所支持的各種報(bào)頭字段可以在常規(guī)的ERSPAN應(yīng)用中使用,甚至可以鏡像錯(cuò)誤幀或BPDU幀,并保持原始的Trunk封裝和VLAN ID。此外,在鏡像幀的過程中,也可以在每個(gè)ERSPAN幀中添加關(guān)鍵時(shí)間戳信息以及其他信息字段。
通過ERSPAN自身的各種特征頭部,我們可以實(shí)現(xiàn)更為精細(xì)化的網(wǎng)絡(luò)流量分析,接下來只需要在ERSPAN進(jìn)程中掛載相應(yīng)的ACL,來匹配我們感興趣的網(wǎng)絡(luò)流量即可。
?ERSPAN實(shí)現(xiàn)RDMA會(huì)話可視化?
我們舉一個(gè)RDMA場景下應(yīng)用ERSPAN技術(shù)來達(dá)到RDMA會(huì)話可視化的案例:RDMA:Remote Direct Memory Access遠(yuǎn)程直接數(shù)據(jù)存取,是利用智能網(wǎng)卡和交換機(jī),實(shí)現(xiàn)服務(wù)器A的網(wǎng)卡可以直接讀寫服務(wù)器B的內(nèi)存,最終達(dá)到高帶寬、低延遲和低資源利用率的效果,在大數(shù)據(jù)和高性能分布式存儲(chǔ)場景中有大量的應(yīng)用。
RoCEv2:RDMA over Converged Ethernet Version 2,RDMA數(shù)據(jù)封裝在UDP報(bào)頭中,目的端口號(hào)為4791,UDP報(bào)頭之后是IB BTH,即InfiniBand Base Transport Header。
RDMA日常運(yùn)維需要采集很多數(shù)據(jù),用于收集日常水位基準(zhǔn)線和異常報(bào)警,以及發(fā)生異常的問題定位依據(jù)。結(jié)合ERSPAN可以快速抓取海量數(shù)據(jù),獲得交換芯片在微秒級(jí)別的轉(zhuǎn)發(fā)質(zhì)量數(shù)據(jù)、協(xié)議交互狀態(tài),并通過數(shù)據(jù)統(tǒng)計(jì)與分析,得出RDMA在網(wǎng)絡(luò)上端到端的轉(zhuǎn)發(fā)質(zhì)量評(píng)估和預(yù)測。
為了實(shí)現(xiàn)RDAM會(huì)話可視化,我們需要ERSPAN在鏡像流量時(shí),對(duì)RDMA交互會(huì)話的關(guān)鍵字匹配,這時(shí)們需要利用專家級(jí)擴(kuò)展列表。
專家級(jí)擴(kuò)展列表匹配字段定義:
UDF由五個(gè)字段組成:UDF關(guān)鍵字、base域、offset域、value域和mask域。受限于硬件表項(xiàng)容量,當(dāng)前共有8個(gè)UDF可以使用,一個(gè)UDF最長可以匹配兩個(gè)字節(jié)。
UDF關(guān)鍵字:UDF1...UDF8共8個(gè)UDF匹配域關(guān)鍵字;
base域:標(biāo)識(shí)UDF匹配域的起始位置。如下:
l4_header (適用RG-S6520-64CQ)
l5_header (適用RG-S6510-48VS8CQ)
offset域:基于base域的偏移值,范圍:0-126;
value域:匹配值,可以與mask域配合使用,用來配置需要匹配的具體value,有效位兩個(gè)字節(jié);
mask域:掩碼,有效位兩個(gè)字節(jié)。
?(補(bǔ)充:如果多個(gè)表項(xiàng)有用到同一個(gè)UDF匹配域的話,那么base域和offset域必須保持一致。)
與RDMA會(huì)話狀態(tài)相關(guān)的兩個(gè)關(guān)鍵報(bào)文是CNP(Congestion Notification Packet) NAK(Negative Acknowledgment)
前者是RDMA接收端收到交換機(jī)(出口Buffer達(dá)到閾值時(shí))發(fā)出的ECN報(bào)文后生成的,包含了導(dǎo)致?lián)砣膄low或QP的信息;后者是用于表示RDMA傳輸有丟包的響應(yīng)報(bào)文。
我們接下來看看如何利用專家級(jí)擴(kuò)展列表來匹配這兩個(gè)報(bào)文:
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)
最后一步,將該專家級(jí)擴(kuò)展列表掛載到相應(yīng)ERSPAN進(jìn)程中,即可實(shí)現(xiàn)RDMA會(huì)話的可視化。
寫在最后
在數(shù)據(jù)中心網(wǎng)絡(luò)規(guī)模日益龐大,網(wǎng)絡(luò)流量日益復(fù)雜,而對(duì)網(wǎng)絡(luò)運(yùn)維要求日益精細(xì)的今天,ERSPAN是必不可少的工具之一。
隨著運(yùn)維自動(dòng)化程度越來越高,Netconf、RESTconf、gRPC等技術(shù)在網(wǎng)絡(luò)自動(dòng)化運(yùn)維中受到廣大運(yùn)維同學(xué)的歡迎,利用gRPC來作為鏡像流量回傳的底層協(xié)議也具有諸多優(yōu)勢。如:基于HTTP/2協(xié)議,可以支持同一連接下串流推送機(jī)制;使用ProtoBuf編碼,比JSON格式的信息大小降低了一半,可以使數(shù)據(jù)傳輸更加快捷和高效。試想一下,如果利用ERSPAN對(duì)感興趣流鏡像之后,再利用gRPC上送到分析服務(wù)器,是不是就會(huì)極大提高網(wǎng)絡(luò)自動(dòng)化運(yùn)維的能力和效率呢?
銳捷網(wǎng)絡(luò)在25G/100G數(shù)據(jù)中心的新產(chǎn)品RG-S6510-48VS8CQ和RG-S6520-64CQ,除了可以滿足RDMA網(wǎng)絡(luò)中對(duì)PFC+ECN+MMU的管理,能保持較高的協(xié)調(diào)性,還可以部署RDMA整網(wǎng)的可視化方案,支持利用ERSPAN技術(shù)匹配專家級(jí)拓展列表對(duì)RDMA會(huì)話進(jìn)行可視化展示。
本期作者:趙爽
銳捷網(wǎng)絡(luò)互聯(lián)網(wǎng)系統(tǒng)部行業(yè)咨詢
【技術(shù)盛宴】專欄
銳捷網(wǎng)絡(luò)互聯(lián)網(wǎng)行業(yè)精心打造《技術(shù)盛宴》專欄,定期為您帶來網(wǎng)絡(luò)通信領(lǐng)域的技術(shù)干貨,前沿資訊、尖端技術(shù)、潮流科技……
你想看的,這里都有!
往期精彩回顧??技術(shù)盛宴 | 基于Rogue AP反制的無線安全技術(shù)探討
技術(shù)盛宴 | 暢談數(shù)據(jù)中心網(wǎng)絡(luò)運(yùn)維自動(dòng)化
技術(shù)盛宴 | 如何通過網(wǎng)絡(luò)遙測(Network Telemetry)技術(shù)實(shí)現(xiàn)精細(xì)化網(wǎng)絡(luò)運(yùn)維?
技術(shù)盛宴 | 淺談物聯(lián)網(wǎng)技術(shù)之通信協(xié)議的紛爭
總結(jié)
以上是生活随笔為你收集整理的端口镜像 流量过滤_技术盛宴 | 流量可视化之ERSPAN的前世今生的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: shell sqlplus执行sql文_
- 下一篇: python最简单的架构_Python实