造帶VLAN標(biāo)簽報(bào)文實(shí)戰(zhàn):從802.1Q到Wireshark驗(yàn)證)
做網(wǎng)絡(luò)調(diào)試這些年我越來越覺得搞網(wǎng)絡(luò)協(xié)議這東西光會(huì)看抓包是不行的關(guān)鍵時(shí)候得能“造包”。尤其是測交換機(jī)、測防火墻策略、驗(yàn)證網(wǎng)關(guān)設(shè)備對(duì)VLAN的處理邏輯時(shí)你不可能每次都去改真實(shí)設(shè)備的配置來配合你最省事的方法就是直接拿發(fā)包工具從網(wǎng)卡里構(gòu)造一條帶VLAN標(biāo)簽的報(bào)文發(fā)出去看對(duì)端怎么反應(yīng)。這篇文章要聊的就是我用XCAP最新版1-3-7發(fā)送帶VLAN相關(guān)報(bào)文的全過程親測有效而且操作步驟少到你可能覺得自己漏了什么覺得“就這么簡單”。先說適合誰看如果你在配網(wǎng)、測設(shè)備、做網(wǎng)絡(luò)自動(dòng)化驗(yàn)證或者做嵌入式網(wǎng)絡(luò)開發(fā)手頭需要一款不需要寫一堆腳本就能構(gòu)造二三四層報(bào)文的工具這篇文章正好對(duì)路。XCAP這工具不復(fù)雜但網(wǎng)上能找到的教程要么版本太老要么講得太繞所以我干脆把1-3-7版本里發(fā)VLAN報(bào)文的最簡流程整理成一篇文章作為這個(gè)“網(wǎng)絡(luò)協(xié)議系列”的第一篇。你照著做完就能得到一條實(shí)實(shí)在在帶著VID的報(bào)文并且在Wireshark里看到它。1. 為什么要自己動(dòng)手發(fā)帶VLAN的報(bào)文1.1 什么人需要這個(gè)能力最常見的場景是在實(shí)驗(yàn)室里驗(yàn)證交換機(jī)。你接手一臺(tái)設(shè)備需要確認(rèn)它在端口上是否正確處理了VLAN標(biāo)記VLAN 100的幀能不能從某個(gè)口轉(zhuǎn)發(fā)出去VLAN 200的幀會(huì)不會(huì)被丟棄。你當(dāng)然可以去命令行里敲一堆配置然后用真實(shí)終端去發(fā)流量但這樣周期太長而且環(huán)境一變就得重來。另一種場景是配合抓包做功能的回歸測試。比如你改完了一段協(xié)議棧代碼需要反復(fù)確認(rèn)收到特定VID的報(bào)文后程序走的分支是否正確。這時(shí)候你需要一個(gè)能精確控制每個(gè)字段的工具而不是用現(xiàn)成的Ping或者瀏覽器訪問網(wǎng)頁——那些軟件走的是操作系統(tǒng)協(xié)議棧該帶什么標(biāo)簽、不該帶什么標(biāo)簽?zāi)愀究刂撇涣?。還有一類人群是做交換機(jī)芯片或者終端網(wǎng)卡開發(fā)的。調(diào)試時(shí)經(jīng)常需要模擬對(duì)端設(shè)備發(fā)來帶特定802.1Q標(biāo)簽的報(bào)文來驗(yàn)證自己的硬件行為和預(yù)期一不一致。這類工作用現(xiàn)成的物理設(shè)備來搭場景成本高、效率低用發(fā)包工具純粹從網(wǎng)卡口發(fā)出自定義報(bào)文幾分鐘就能跑一個(gè)用例。1.2 先把“發(fā)帶VLAN的報(bào)文”這件事定義清楚這里說的“發(fā)帶VLAN的報(bào)文”不是說你在交換機(jī)上把一個(gè)端口劃分到某個(gè)VLAN里再讓交換機(jī)自動(dòng)給流量打上標(biāo)簽。我們做的事情是自己構(gòu)造一幀完整的二層數(shù)據(jù)在以太網(wǎng)頭部里手動(dòng)加入VLAN Tag字段然后把這一幀原始數(shù)據(jù)直接交給網(wǎng)卡發(fā)送出去。這么說可能有點(diǎn)抽象我們換個(gè)類比正常上網(wǎng)時(shí)你的網(wǎng)卡像一個(gè)“自動(dòng)流水線”操作系統(tǒng)把所有協(xié)議頭都封裝好了它只負(fù)責(zé)往外吐。而發(fā)包工具像“手工作坊”每個(gè)字節(jié)你都能自己擺位置。帶VLAN的報(bào)文關(guān)鍵就在于你在“源MAC之后、上層協(xié)議類型之前”插入了一個(gè)4字節(jié)的標(biāo)簽里面記錄了優(yōu)先級(jí)、VID等信息。對(duì)端交換機(jī)看到這個(gè)標(biāo)簽才知道這個(gè)幀屬于哪個(gè)VLAN。搞清楚這一點(diǎn)后面做配置心里就有底了。我們不是在配置什么復(fù)雜的虛擬網(wǎng)絡(luò)而是在手工編寫一個(gè)符合802.1Q規(guī)范的數(shù)據(jù)幀。2. 開工前的準(zhǔn)備XCAP 1-3-7 與驗(yàn)證環(huán)境搭建2.1 工具與版本為什么用最新版1-3-7XCAP是一款圖形化的發(fā)包工具實(shí)際用下來它最大的優(yōu)點(diǎn)是字段可視、修改直觀不需要記一堆命令也不用手寫Python腳本。新版的1-3-7在幀模板管理、發(fā)送性能和界面響應(yīng)上都比舊版舒服不少尤其是配置復(fù)雜報(bào)文時(shí)界面不會(huì)卡。安裝上有一個(gè)細(xì)節(jié)需要特別提醒裝完之后第一次打開如果沒有任何反應(yīng)八成是權(quán)限問題。右鍵選擇“以管理員身份運(yùn)行”因?yàn)樗枰苯釉L問網(wǎng)卡驅(qū)動(dòng)。另外如果你的電腦裝了比較嚴(yán)格的殺毒軟件建議把XCAP的安裝目錄加進(jìn)白名單不然它可能把發(fā)包工具當(dāng)木馬直接殺掉。這不是工具的問題是很多底層發(fā)包工具都會(huì)觸發(fā)類似誤報(bào)因?yàn)樗鼈冃枰迷继捉幼謾?quán)限。除了主程序我建議把網(wǎng)卡驅(qū)動(dòng)確認(rèn)一遍。Windows系統(tǒng)一般沒問題但如果你用的是比較老的USB網(wǎng)卡或者虛擬機(jī)默認(rèn)的虛擬網(wǎng)卡驅(qū)動(dòng)是否完整支持原始幀發(fā)送會(huì)直接影響結(jié)果。我之前試過在某臺(tái)虛擬化環(huán)境里發(fā)帶VLAN的幀發(fā)是發(fā)出去了但抓包怎么看都少一個(gè)Tag這個(gè)坑后面章節(jié)專門講。2.2 配套驗(yàn)證環(huán)境怎么搭工具選好了還得有驗(yàn)證手段。我的建議是安裝Wireshark用另一臺(tái)電腦或者同一個(gè)平臺(tái)上獨(dú)立物理網(wǎng)卡來抓包。最推薦的實(shí)驗(yàn)拓?fù)涫莾膳_(tái)電腦直連A機(jī)跑XCAP發(fā)包B機(jī)開Wireshark抓包中間只放一根網(wǎng)線。有人可能會(huì)問能不能在同一臺(tái)電腦上又發(fā)又抓技術(shù)上可以但如果只有一塊網(wǎng)卡你發(fā)的帶VLAN報(bào)文可能在被驅(qū)動(dòng)處理的時(shí)候就被改掉了抓到的結(jié)果并不能代表線上的真實(shí)形態(tài)。所以能分開盡量分開。如果你手頭實(shí)在只有一臺(tái)機(jī)器可以嘗試用支持混雜模式的USB千兆網(wǎng)卡但效果不如雙機(jī)直連穩(wěn)定。抓包工具的過濾規(guī)則也要提前準(zhǔn)備好。在Wireshark的過濾欄里輸入vlan它會(huì)直接列出所有帶VLAN標(biāo)簽的幀。這樣在你大量發(fā)包時(shí)不會(huì)被其他廣播報(bào)文干擾視線。如果抓到的幀里能看到vlan標(biāo)簽并且VID和你設(shè)置的一致就說明整個(gè)發(fā)送鏈路是通的你的報(bào)文構(gòu)造也沒有問題。3. 看清802.1Q的字段再下手構(gòu)造思路才不會(huì)歪3.1 802.1Q標(biāo)簽到底長什么樣要發(fā)帶VLAN的報(bào)文你得先知道VLAN Tag在幀里的確切位置。常見的Ethernet II幀順序是目的MAC6字節(jié)、源MAC6字節(jié)、EtherType2字節(jié)、Payload。而打了VLAN標(biāo)簽之后EtherType這個(gè)位置被“擠”到后面去了取而代之的是一個(gè)4字節(jié)的TPID和TCI字段組合。TPID全稱Tag Protocol Identifier標(biāo)準(zhǔn)取值是0x8100表示這是一個(gè)802.1Q標(biāo)簽。TCI又拆成三塊PCP3比特優(yōu)先級(jí)、DEI1比特丟棄優(yōu)先級(jí)、VID12比特VLAN編號(hào)。這12比特決定了VLAN號(hào)的取值范圍是0到4095不過實(shí)際可用的是1到40940和4095有特殊含義配置的時(shí)候也盡量避開。我整理了一張表你構(gòu)造報(bào)文之前對(duì)照著看字段長度含義常見取值目的MAC6字節(jié)目標(biāo)設(shè)備MAC地址00:11:22:33:44:55源MAC6字節(jié)本機(jī)或模擬源MAC66:55:44:33:22:11TPID2字節(jié)標(biāo)簽協(xié)議標(biāo)識(shí)0x8100TCI-PCP3比特用戶優(yōu)先級(jí)默認(rèn)0TCI-DEI1比特丟棄標(biāo)識(shí)默認(rèn)0TCI-VID12比特VLAN編號(hào)例如100EtherType2字節(jié)上層協(xié)議類型0x0800表示IPv4Payload不定長上層數(shù)據(jù)自定義填充這張表的意義在于你在XCAP界面里看到的每一個(gè)輸入框幾乎都能在這張表里找到對(duì)應(yīng)關(guān)系。理解角度對(duì)了后面一個(gè)個(gè)填字段就不會(huì)暈。3.2 構(gòu)造前先畫一張字段清單很多新手上來就在工具里猛點(diǎn)點(diǎn)完發(fā)現(xiàn)報(bào)文還是空的原因就是沒有預(yù)先想清楚要發(fā)什么。我的習(xí)慣是打開XCAP之前先在草稿紙上寫清楚五件事。第一目的MAC是多少第二源MAC是多少第三要打幾個(gè)VLAN標(biāo)簽VID分別是多少第四上層協(xié)議是IPv4還是IPv6或者干脆是裸二層數(shù)據(jù)第五payload里想放什么內(nèi)容。假如我要模擬一臺(tái)服務(wù)器向交換機(jī)發(fā)送屬于VLAN 100的ICMP請(qǐng)求我的清單會(huì)寫成這樣目的MAC 00:11:22:33:44:55源MAC 66:55:44:33:22:11TPID 0x8100VID 100EtherType 0x0800IP源地址192.0.2.10IP目的地址192.0.2.20ICMP報(bào)文內(nèi)容隨便填一段十六進(jìn)制數(shù)據(jù)。有了這份清單你在XCAP里的工作就變成了“把草稿紙上的內(nèi)容搬進(jìn)界面”而不是一邊想一邊試。實(shí)測下來這樣做的效率高很多而且字段不容易漏。尤其是后面要發(fā)雙標(biāo)簽QinQ報(bào)文時(shí)沒有清單的話內(nèi)外層VID填反了是非常常見的事。4. 實(shí)測XCAP一步步發(fā)出第一條帶VLAN的報(bào)文4.1 第一步新建報(bào)文模板并選擇幀格式打開XCAP 1-3-7之后主界面左側(cè)是報(bào)文模板列表右側(cè)是幀結(jié)構(gòu)配置區(qū)。點(diǎn)擊新建模板按鈕輸入一個(gè)你認(rèn)得出來的名字比如“VLAN100_Test”。然后選擇一個(gè)基礎(chǔ)幀格式。這里的關(guān)鍵點(diǎn)我們要自己控制VLAN標(biāo)簽所以幀格式選擇Ethernet II而不是802.3原始幀。雖然802.3也能加Tag但Ethernet II在工具里操作起來更直觀EtherType字段直接暴露在外面你后面插入VLAN標(biāo)簽時(shí)邏輯也更順暢。選完幀格式后界面里會(huì)出現(xiàn)一條標(biāo)準(zhǔn)的以太網(wǎng)幀結(jié)構(gòu)樹目的MAC、源MAC、EtherType、數(shù)據(jù)。有些版本可能還默認(rèn)帶了一個(gè)IPv4模板不用管它我們先把底層結(jié)構(gòu)里的這些字段都填對(duì)。雙擊目的MAC輸入框填入你計(jì)劃里的目的MAC。雙擊源MAC填入模擬的源MAC。如果找不到輸入框多半是界面折疊了點(diǎn)字段前面的小箭頭展開就行。4.2 第二步把VLAN標(biāo)簽塞進(jìn)正確的位置這是整個(gè)教程的核心步驟。在XCAP里插入VLAN標(biāo)簽的動(dòng)作通常是在EtherType字段附近做操作。現(xiàn)在EtherType這一行位于源MAC之后它目前顯示的是0x0800或者0x0000取決于你選了什么模板。我們要在它之前插入一個(gè)4字節(jié)的VLAN字段。具體操作是在EtherType字段上右鍵菜單里選擇“插入VLAN標(biāo)簽”或者點(diǎn)擊工具欄里的“插入802.1Q”按鈕。不同小版本的按鈕位置可能有細(xì)微差別但邏輯都一樣XCAP會(huì)在源MAC和EtherType之間生成一個(gè)VLAN字段并把原來的EtherType自動(dòng)后移。插入之后你會(huì)看到這個(gè)VLAN字段下面又拆出了幾個(gè)子字段TPID、PCP、DEI、VID。把TPID填成8100這是標(biāo)準(zhǔn)值一般來說不需要改。VID填成100PCP按需填測試場景下填0就夠了。如果你需要模擬高優(yōu)先級(jí)流量可以把PCP改成5或7但注意那是3比特最大7別填成8。還有一個(gè)容易忽略的點(diǎn)插入VLAN標(biāo)簽后原始的EtherType字段值不要忘了確認(rèn)。如果它本來是0x0000你后面要發(fā)的是IPv4報(bào)文就得把它改成0x0800。說實(shí)話這個(gè)字段如果忘了改報(bào)文發(fā)出去雖然帶著VLAN標(biāo)簽但對(duì)端根本不知道上層是什么直接丟包。4.3 第三步配置網(wǎng)卡參數(shù)并開始發(fā)送報(bào)文內(nèi)容構(gòu)造完畢后進(jìn)入發(fā)送界面。首先要選擇發(fā)送用的物理網(wǎng)卡。界面上通常有一個(gè)下拉列表會(huì)列出你機(jī)器上所有的網(wǎng)絡(luò)適配器。千萬不要選擇虛擬回環(huán)接口那個(gè)接口無法真正把帶VLAN標(biāo)簽的幀送到線纜上。選好物理網(wǎng)卡之后如果軟件提示“該網(wǎng)卡不支持原始套接字發(fā)送”之類的錯(cuò)誤先不要慌最常見的原因是權(quán)限不夠重新以管理員身份運(yùn)行通常就能解決。發(fā)送模式一般有三種單次發(fā)送、循環(huán)發(fā)送、突發(fā)發(fā)送。第一次驗(yàn)證建議選擇單次發(fā)送點(diǎn)一下“發(fā)送”按鈕就發(fā)一幀出去。這樣方便結(jié)合Wireshark逐幀核對(duì)內(nèi)容。等你確認(rèn)幀結(jié)構(gòu)完全正確再切到循環(huán)發(fā)送或者突發(fā)發(fā)送去測設(shè)備在高頻率下的處理能力。發(fā)送參數(shù)里有一個(gè)容易被忽略的選項(xiàng)是“發(fā)送速率”。XCAP默認(rèn)可能會(huì)以最大速率發(fā)這在連續(xù)發(fā)送時(shí)會(huì)讓CPU占用很高甚至導(dǎo)致系統(tǒng)假死。我的建議是如果你只是驗(yàn)證連通性把發(fā)送間隔設(shè)置在10毫秒以上如果是壓力測試則按需設(shè)置為較高的速率但先小范圍跑一下看看機(jī)器扛不扛得住。4.4 用實(shí)時(shí)抓包確認(rèn)報(bào)文真的帶上了標(biāo)簽到了驗(yàn)證環(huán)節(jié)。B機(jī)Wireshark里你先開啟抓包過濾規(guī)則填vlan。然后回到A機(jī)的XCAP點(diǎn)擊單次發(fā)送。你會(huì)在B機(jī)的抓包列表里看到一條新出現(xiàn)的幀它的Protocol列可能會(huì)顯示為802.1Q甚至直接顯示為“VLAN”相關(guān)字樣。點(diǎn)開這條幀展開Ethernet字段你應(yīng)該能看到類似這樣的結(jié)構(gòu)目的MAC、源MAC、802.1Q Virtual LAN。在802.1Q Virtual LAN這一層里就有你填的VID值。如果你看到VID是100說明整個(gè)發(fā)送鏈路已經(jīng)完全通了。細(xì)心的讀者可能會(huì)發(fā)現(xiàn)幀長度比標(biāo)準(zhǔn)以太網(wǎng)幀多出了4字節(jié)這是因?yàn)閂LAN Tag本身就是額外插入的4字節(jié)。這屬于正?,F(xiàn)象802.1Q標(biāo)準(zhǔn)允許幀長度因?yàn)門ag而增長。至于校驗(yàn)和字段XCAP一般會(huì)自動(dòng)計(jì)算Wireshark如果提示“校驗(yàn)和錯(cuò)誤”檢查一下網(wǎng)卡是否開啟了校驗(yàn)和卸載這類問題在第6章里詳聊。5. 再深入一點(diǎn)雙標(biāo)簽與循環(huán)發(fā)送的實(shí)際應(yīng)用5.1 雙標(biāo)簽報(bào)文的構(gòu)造與驗(yàn)證單層VLAN標(biāo)簽會(huì)發(fā)之后雙標(biāo)簽QinQ也要會(huì)因?yàn)楹芏噙\(yùn)營商網(wǎng)絡(luò)和服務(wù)商接入場景里報(bào)文會(huì)帶兩層標(biāo)簽外層叫公網(wǎng)標(biāo)簽內(nèi)層叫私網(wǎng)標(biāo)簽。XCAP里插入第二層標(biāo)簽的操作和第一層類似在已經(jīng)存在的VLAN標(biāo)簽字段上繼續(xù)右鍵再次選擇插入VLAN標(biāo)簽工具會(huì)把新的標(biāo)簽插在更靠近源MAC的位置也就是外層。構(gòu)造雙標(biāo)簽時(shí)最重要的是保持順序概念。二層幀里的字段順序是目的MAC、源MAC、外層VLAN Tag、內(nèi)層VLAN Tag、EtherType、Payload。外層TPID經(jīng)常被配置成0x88a8運(yùn)營商橋接協(xié)議而內(nèi)層TPID保持0x8100。有些場景也會(huì)兩個(gè)都填0x8100這取決于你要模擬的網(wǎng)絡(luò)環(huán)境。驗(yàn)證的時(shí)候在Wireshark過濾欄輸入vlan你會(huì)看到這個(gè)幀下面列著兩個(gè)802.1Q標(biāo)簽層。用鼠標(biāo)逐層展開就能確認(rèn)外層VID和內(nèi)層VID是否和你設(shè)置的一致。我實(shí)測中遇到最多的問題就是內(nèi)外層順序填反解決辦法就是回到第三步里說的字段清單先把兩個(gè)VID寫在紙上再照著填。5.2 循環(huán)發(fā)送與批量模擬的真實(shí)場景當(dāng)你已經(jīng)確認(rèn)單幀完全正確就可以考慮連續(xù)發(fā)送了。比如你想驗(yàn)證交換機(jī)在收到大量VLAN 100的廣播包時(shí)會(huì)不會(huì)出現(xiàn)MAC地址表異??梢杂醚h(huán)發(fā)送模式把目的MAC設(shè)置成全F的廣播地址把VID保持在100然后以一個(gè)固定的速率連續(xù)發(fā)幾百幀。這里有個(gè)操作細(xì)節(jié)XCAP的發(fā)送按鈕旁邊通常會(huì)有一個(gè)發(fā)送計(jì)數(shù)設(shè)置。你可以先設(shè)成100幀觀察設(shè)備的CPU占用和Wireshark接收到的幀數(shù)是否一致。循環(huán)發(fā)送時(shí)如果Wireshark里有些幀沒抓到先不要懷疑XCAP丟包檢查一下抓包電腦的網(wǎng)卡是否開啟了混雜模式以及Wireshark的緩沖設(shè)置是否夠大。批量模擬還有一個(gè)技巧把同一個(gè)報(bào)文模板復(fù)制多份每個(gè)模板只改VID例如復(fù)制出VLAN100、VLAN200、VLAN300三個(gè)模板然后在XCAP里按順序循環(huán)發(fā)送。這樣可以模擬多VLAN業(yè)務(wù)并存的場景對(duì)驗(yàn)證設(shè)備非常有用。6. 常見問題速查與避坑心得6.1 抓包看不到VLAN標(biāo)簽問題多半出在網(wǎng)卡這是我在評(píng)論區(qū)被問得最多的一個(gè)問題明明在XCAP里填了VID發(fā)送也提示成功但Wireshark里抓到的幀就是沒有VLAN標(biāo)簽。問題十有八九出在網(wǎng)卡的VLAN卸載功能上。很多現(xiàn)代網(wǎng)卡驅(qū)動(dòng)默認(rèn)開啟了VLAN硬件處理也就是說系統(tǒng)在發(fā)送報(bào)文時(shí)如果發(fā)現(xiàn)這個(gè)幀帶了802.1Q標(biāo)簽會(huì)先把標(biāo)簽扒掉在硬件層面處理完再發(fā)接收時(shí)又是反過來的。這樣一來你從應(yīng)用層發(fā)出的原始幀里的VLAN標(biāo)簽可能在到達(dá)物理線路之前就被網(wǎng)卡驅(qū)動(dòng)“聰明”地處理掉了。解決辦法是到網(wǎng)卡的高級(jí)設(shè)置里找到類似“VLAN ID”“VLAN stripping”“VLAN offload”的選項(xiàng)把它關(guān)掉或者設(shè)為0表示不處理。不同網(wǎng)卡的叫法不一樣而且這項(xiàng)設(shè)置在Windows上藏得比較深。我把排查路徑貼出來打開設(shè)備管理器找到當(dāng)前用的網(wǎng)卡右鍵屬性切換到高級(jí)選項(xiàng)卡在屬性列表里逐個(gè)翻看到帶VLAN的選項(xiàng)就仔細(xì)看看描述凡是跟卸載、剝離、offload相關(guān)的都停用掉。6.2 對(duì)端設(shè)備根本不認(rèn)這個(gè)報(bào)文如果抓包能看到幀接口抓到了VLAN標(biāo)簽但你的對(duì)端設(shè)備就是沒反應(yīng)那就得從報(bào)文本身的正確性去排查。首當(dāng)其沖的是TPID字段有些設(shè)備強(qiáng)制要求外層標(biāo)簽的TPID是0x88a8尤其在高等級(jí)交換機(jī)互聯(lián)場景里你發(fā)一個(gè)0x8100的幀設(shè)備可能直接就歸類為“不支持的標(biāo)簽類型”。另一個(gè)隱蔽的問題是上層協(xié)議類型。很多人只關(guān)注VLAN標(biāo)簽卻忘了把原始EtherType改成實(shí)際攜帶的協(xié)議。如果你發(fā)的payload是IPv4數(shù)據(jù)包但EtherType還停留在0x0000那對(duì)端設(shè)備將這個(gè)幀解析為未知類型并丟棄也是很正常的事。如果設(shè)備還是沒有響應(yīng)可以用Wireshark自帶的校驗(yàn)和檢查功能看看報(bào)有沒有報(bào)錯(cuò)。如果你的網(wǎng)卡開啟了發(fā)送側(cè)的TCP或IP校驗(yàn)和卸載XCAP計(jì)算好的校驗(yàn)和可能在網(wǎng)卡層被重新計(jì)算兩邊算法不一致就會(huì)出問題。穩(wěn)妥起見在測試環(huán)境里把網(wǎng)卡的校驗(yàn)和卸載也關(guān)掉讓報(bào)文帶上XCAP原始計(jì)算的值這樣排查最干凈。6.3 發(fā)送成功率與工具使用心得我再分享幾個(gè)實(shí)操中總結(jié)的小技巧。第一發(fā)包的電腦盡量用有線千兆網(wǎng)卡無線網(wǎng)卡基本不適合做這個(gè)它的驅(qū)動(dòng)對(duì)原始幀的支持非常差。第二如果你要連續(xù)大批量發(fā)包XCAP運(yùn)行時(shí)間長了偶爾會(huì)出現(xiàn)界面卡頓這時(shí)候試著把發(fā)送速率降低一點(diǎn)人不能和機(jī)器硬扛。第三不要把配置好的報(bào)文模板隨手刪了在XCAP里把它們按項(xiàng)目分門別類保存好下次測試直接加載能省不少時(shí)間。最后還想提一個(gè)容易被忽略的點(diǎn)如果你在Windows防火墻開了高防御模式XCAP的原始套接字訪問可能被攔截。實(shí)測的時(shí)候把防火墻對(duì)XCAP的訪問權(quán)限放行或者在測試網(wǎng)絡(luò)環(huán)境里臨時(shí)關(guān)閉防火墻不然你可能會(huì)看到“發(fā)送失敗”或者“句柄無效”這類讓人摸不著頭腦的報(bào)錯(cuò)。這與安全設(shè)置有關(guān)不屬于工具本身的問題。這個(gè)系列的第一篇就到這里核心就是一條先在腦子里把802.1Q的每個(gè)字段理清楚然后打開XCAP照著填最后用Wireshark確認(rèn)。步驟其實(shí)非常簡單真正花時(shí)間的反而是踩坑之后去查網(wǎng)卡驅(qū)動(dòng)設(shè)置的過程。下一篇我打算繼續(xù)聊XCAP構(gòu)造ARP報(bào)文和自定義Option字段的技巧如果你也在用這個(gè)工具做網(wǎng)絡(luò)測試歡迎一起交流。