實戰案例:交換機之間匯聚為 2Gbps 口,但實際使用中竟達不到 2G 吞吐量且丟包嚴重?
本期分享的案例是有線/無線網絡的相關問題。
一、背景介紹
客戶是一家工作室,主要業務是做自媒體,對于網絡要求很高,每日都會負載很大的上下行流量。入戶是下行10Gbps的萬兆寬帶,路由和核心交換機也都是萬兆設備,匯聚和接入交換機通過匯聚的方式互聯,設備品牌是某J。
現場簡化拓撲如下:
規劃配置如下:
- 傻瓜式網絡,網段為:10.0.0.0/16
- 所有的路由器、交換機全部都是管理型設備
二、問題現象
IT客戶使用的方式主要是終端(PC1....PC6等)跑大流量的下載任務,使用過程中存在問題:匯聚和接入交換機之間的2Gbps匯聚口LAG無法跑滿,并且在跑大流量的時候PC上網會出現卡頓的情況。
三、排查分析
第一步:確認總吞吐量無法跑滿2Gbps問題
首先查看交換機匯聚口兩條鏈路的吞吐總量,可以看到接入交換機的兩條物理鏈路上分別為996Mbps+250Mbps,差不多總計1.3Gbps。
從目前的現象來看是因為單條鏈路的流已經打滿了,但是另外一條鏈路遠不到瓶頸,所以總吞吐量沒法打滿。并且從這個現象來看,如果流量繼續跑9口(打滿流量的那條鏈路),那么就可能會產生丟包。
第二步:確認大流量的情況下丟包情況
跑高吞吐量時PC ping測試外網和內網網關的結果如下:
從目前的現象來看確實存在丟包了,大概率是該PC的流量打在了那條將近跑滿1Gbps的物理鏈路上。
綜上所述,那么基于這種情況初步判斷是匯聚分流不均勻導致,由于交換機可看信息有限,我們就要從原理側進行分析并嘗試解決。
第三步:深度思考匯聚算法
因為匯聚算法要么基于IP要么基于MAC,所以一條四元組固定的會話流只會走1條固定的物理鏈路。因此當前的總流量打不起來的問題,基于拓撲:
分析如下:
- 會話1來自PC5—峰值肯可能是700Mbps,正好hash到了匯聚物理口9
- 會話2來自PC6—峰值肯可能是300Mbps,正好hash到了匯聚物理口10
- 會話3來自PC4—峰值肯可能是600Mbps,正好hash到了匯聚物理口9
- 會話4來自PC5—峰值肯可能是300Mbps,正好hash到了匯聚物理口10
所以總的流量是:
- 9物理口實際最多只能1Gbps而達不到1.3Gps(600+700)
- 10物理口實際可達預期600Mbps,因為該口是1bps還不到瓶頸。
基本結論:
交換機匯聚口是不具備帶寬均衡策略的,所以如果有PC又概率性的走到9口那就會導致丟包的情況出現?;诖?,符合現場存在“總吞吐量達不到2Gbps和高吞吐量下PC出現通信丟包的問題現象”
四、解決方案
從上述分析出發,這是一個數學的概率性問題,所以可以嘗試增加匯聚口,如下:
- 會話1—峰值肯可能是700Mbps,正好hash到了匯聚物理口9
- 會話2—峰值肯可能是300Mbps,正好hash到了匯聚物理口10
- 會話3—峰值肯可能是600Mbps,正好hash到了匯聚物理口11
即每個口的hash就能大概率的均衡過去了,每個物理口皆保持在1Gbps以下
可以明顯的看到分流更均勻了,每個物理口的流量都未達到1Gbps瓶頸,然后測試下PC ping網關和外網的情況:
基本沒有再出現丟包的問題,問題解決!