■ 山東 錢衛
編者按:在網絡部署中,采用VLAN是常用的網段劃分及隔離手段,但是由于設備的不同,console中的配置命令使用不同的體系,有時會出現某些故障現象。筆者單位就遇到類似問題,在進行相關梳理和分析后,解決了問題。
在網絡部署中,為了做到最大的業務隔離和用戶安全,一個最基本的原則,就 是 PUPSPV(每用戶每業務每VLAN),也就是讓任何一個用戶的任何一個業務,都使用不同的VLAN。根據業務的不同,有的使用單層VLAN,有的使用QinQ雙層VLAN。
但是由于設備的不同,console中的配置命令使用不同的體系,有的時候,很可能表面上看去已經完美的實現了規劃的業務,但是一些隱藏起來的默認設置,會留下非常大的隱患。
某段時間,在我單位某幾個業務中,突然有大量用戶反應網絡訪問速度劇降,甚至很多用戶無法撥號,受影響的用戶大約占這幾個鄉鎮用戶的30%。同時,這幾個鄉鎮的內網業務全部中斷。

圖1 在UNI4口下抓包結果
經過現場及鄉鎮負責同事的排查,確認了邏輯業務均正常,無故障:
1.網線、光纜、光收發等各類材料和設備正常,無松動、死機、過熱等情況。
2.在中心機房測試,各類業務正常運行。
3.各個業務使用各自的單層 VLAN或 QinQ VLAN,沒有使用非法VLAN的情況。
4.各端口只透傳了相應的VLAN,同時受影響VLAN中沒有發現倒接路由器的情況。
5.未發現廣播風暴。
鑒于業務受影響比較大,且受影響用戶的地理分布存在隨機性,同一個用戶也是時好時壞。因此我們到幾個現場進行了實地排障。
在確認了上述5個方面沒有問題后,可以確定,在規劃的邏輯業務中是不存在問題的,那么故障原因只能存在于規劃之外。
首先在用戶和中心機房之間的機房中,搭建內網專線環境,經過我們的測試,發現業務時通時不通,但抓包無異常數據。登錄交換機,卻發現設備的CPU和端口帶寬處于峰值;關閉測試環境的上聯口,相關指標迅速降下來。
在OLT下面搭建用戶測試環境,給ONU的四個端口VLAN分別進行如下配置:UNI1為寬帶,UNI2為點播,UNI3為智慧類業務,UNI4不配置。經過多步測試,終于發現了幾個異常點:uni1口的業務為test@nw,無法撥號;uni4理論上不能撥號,但使用另外一個縣區的test@jn卻撥號成功,并且可以正常上網。這兩個縣區使用的核心路由器不是同一臺,能夠成功認證,只能說明在物理連接中出現了串路。
同時我們在UNI4口下面抓包,如圖1所示,發現存在大量的廣播包,20.8秒內抓到111萬數據包,隨后抓包的電腦死機。
這些數據包幾乎全部是DHCP Offer包,且 其Transaction ID相同。DHCP Offer數據是服務器向終端發送的響應包。
打開任何一個數據包,通過source MAC地址78:eb:14:d0:c0:20的 前三個字節,可以查到這是一款FAST路由器,且其網關地址為192.168.1.1,這種配置一般是普通的家用路由器。Destination Mac地址20:8b:37:16:11:ef則是一款Skyworth機頂盒,一般是接到UNI2口的,如圖2所示。

圖2 打開一個數據包查看詳情
由此可以確定,鄉鎮有用戶將機頂盒從UNI2口誤接到了UNI4口,且鄉鎮安裝人員未按照規定給無業務的UNI端口配置寬帶VLAN或關閉此端口,且在某處存在用戶倒接路由器,且該用戶的無業務UNI口也沒關閉,兩個縣區之間存在物理環路。
由此,就產生了本文所敘述的故障:各個業務本身沒有問題,在相應業務出口抓包也沒異常,卻全部卡頓或中斷。畢竟即使業務邏輯隔離了,但他們是在相同的設備、光模塊、網線中傳輸,共用同樣的CPU、光電轉換能力、網口速率等。
上述5個問題共同存在,才導致了這次詭異事故的產生。這種情況既是偶發性的,也是在這種網絡架構下必然遲早要發生的。
首先是外網與內網必須從邏輯隔離改為物理隔離,其他業務視情況而定。其次,從頂層BRAS向下,需要全面封鎖VLAN1。
1.BRAS
BRAS利用各個
子接口接收不同VLAN的業務,如interface gei-0/0/0/1.111222開 啟了user-dynamic-vlan anyother-qinq,并且限制了qinq range internal-vlanrange 300-400 externalvlan-range 111-222。但是對于沒有QinQ的業務,也可以響應PPPOE請求,需要將本功能封閉,或者在對端設備關閉。
2.交換機
各類不同的交換機配置命令不同,例如使用port link-type trunk開啟透傳模式,port trunk allow-pass vlan 1234指定允許透傳的VLAN,其他VLAN一律丟棄。
但其實VLAN1是默認透傳的,這條默認的命令隱藏看不到。
在VLAN1為系統保留VLAN不能全局關閉的情況下,需要在各個trunk口手動關閉undo port trunk allow-pass vlan 1。
再者,其他untagged或者native口,不用的時候需要 disable或 shutdown,或者配置一個非法的VLAN防止業務通過。
3.OLT+ONU
OLT中,由于設備的不同,命令各式各樣,除了trunk封閉VLAN1外,還需要考慮到PON口下面ONU的注冊行為。
ONU上線后,需要給其配置不同的業務。沒有給UNI口手動配置的時候,注冊時會默認配置為:
vlan mode tagged
native vlan 1(隱藏不顯示)
此時可以建立業務模板。如我們使用的某廠家設備,可以建立4口create onusvr-template 1 name vlanauto-set uni-eth-num 4模板,然后再每一個PON口都綁定模板。
我們使用的模板,用累加的方式給四個口分別配置111、222、333、444,第二個上線的設備配置 112、223、334、445,依次類推。
也可以用模板讓其上線后的默認配置改為native vlan 2這類沒有使用的VLAN,則數據包在pon口就被丟棄了。