時(shí)下最常用的網(wǎng)絡(luò)監(jiān)控和排錯(cuò)工具非SPAN(Switch Port Analyzer)莫屬了,SPAN也通常被稱作端口鏡像。它可以讓我們以旁路的方式來監(jiān)控網(wǎng)絡(luò)流量,不會對現(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)特性,通過專家級擴(kuò)展列表基于Base域進(jìn)行1~126字節(jié)的任意偏移,對會話關(guān)鍵字進(jìn)行匹配實(shí)現(xiàn)會話的可視化,例如針對TCP三次握手、RDMA會話的可視;
●支持設(shè)置采樣率;
●支持報(bào)文截取長度,降低目標(biāo)服務(wù)器壓力。
看到以上特性,相信大家就知道為什么ERSPAN是如今數(shù)據(jù)中心內(nèi)部網(wǎng)絡(luò)監(jiān)控一個(gè)必不可少的工具了。
總結(jié)一下,ERSPAN主要的作用可以歸納為兩點(diǎn):
●會話可視化:借助ERSPAN把新建TCP、RDMA(Remote Direct Memory Access)等的所有會話都采集到后端服務(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è)特殊的“超級幀容器”中,這個(gè)超級容器會攜帶足夠多的附加信息,以便它被正確的路由到接收設(shè)備,并讓接收設(shè)備能夠提取并完全恢復(fù)原始監(jiān)控的流量。
接收設(shè)備可以是另外一臺支持解封裝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ò),未來對IPv6的支持也會是一個(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字段里有作定義:
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字段會出現(xiàn)在Type II的GRE頭部中。即意味著Type II可以確保接收GRE報(bào)文的次序,不會出現(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é)平臺特定子頭部。
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)識符;
●Gra (Timestamp Granularity):用來定義時(shí)間戳的顆粒度,如00b代表100微秒粒度,01b代表100納秒粒度,10b代表IEEE 1588粒度,11b則需要結(jié)合平臺特定子頭部來實(shí)現(xiàn)更高精的粒度;
●Platf ID與Platform Specific Info:根據(jù)Platf ID不同的值,Platform Specific Info字段會有不同的格式與內(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會話可視化
我們舉一個(gè)RDMA場景下應(yīng)用ERSPAN技術(shù)來達(dá)到RDMA會話可視化的案例:
●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ù)和高性能分布式存儲場景中有大量的應(yīng)用。
●RoCEv2:RDMA over Converged Ethernet Version 2,RDMA數(shù)據(jù)封裝在UDP報(bà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ù),獲得交換芯片在微秒級別的轉(zhuǎn)發(fā)質(zhì)量數(shù)據(jù)、協(xié)議交互狀態(tài),并通過數(shù)據(jù)統(tǒng)計(jì)與分析,得出RDMA在網(wǎng)絡(luò)上端到端的轉(zhuǎn)發(fā)質(zhì)量評估和預(yù)測。
為了實(shí)現(xiàn)RDAM會話可視化,我們需要ERSPAN在鏡像流量時(shí),對RDMA交互會話的關(guān)鍵字匹配,這時(shí)們需要利用專家級擴(kuò)展列表。
專家級擴(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)識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會話狀態(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)文。
我們接下來看看如何利用專家級擴(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)
最后一步,將該專家級擴(kuò)展列表掛載到相應(yīng)ERSPAN進(jìn)程中,即可實(shí)現(xiàn)RDMA會話的可視化。
寫在最后
在數(shù)據(jù)中心網(wǎng)絡(luò)規(guī)模日益龐大,網(wǎng)絡(luò)流量日益復(fù)雜,而對網(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對感興趣流鏡像之后,再利用gRPC上送到分析服務(wù)器,是不是就會極大提高網(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ò)中對PFC+ECN+MMU的管理,能保持較高的協(xié)調(diào)性,還可以部署RDMA整網(wǎng)的可視化方案,支持利用ERSPAN技術(shù)匹配專家級拓展列表對RDMA會話進(jìn)行可視化展示。
感謝您關(guān)注銳捷網(wǎng)絡(luò)技術(shù)干貨文章!現(xiàn)誠邀您參與有獎(jiǎng)?wù){(diào)研,您寶貴的意見和建議將幫助我們在技術(shù)探索與分享上持續(xù)精進(jìn)。
點(diǎn)擊下方“鏈接”或掃描二維碼參與調(diào)研。戳