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