阮志丹,劉 光,何躍平
(中國電信股份有限公司廣東分公司 廣州 510081)
為了量化地衡量用戶對Wi-Fi網絡質量的真實感受,中國電信股份有限公司廣東分公司(以下簡稱廣東電信)通過在Wi-Fi熱點現場測試模擬用戶行為,結合專業測試分析工具,獲取Wi-Fi網絡性能的量化數據,以發現Wi-Fi網絡存在的問題。Wi-Fi測試有多項指標,其中DHCP(dynamic host configuration protocol,動態主機配置協議)成功率是反映用戶動態獲取IP地址成功率的一項關鍵參數,如果無法快速獲取IP地址,則后面的Portal頁面彈出、認證、上網都無法快速實現,用戶使用起來就會覺得慢,對用戶感知造成較大的影響。
本文主要對Wi-Fi網絡DHCP獲取IP地址慢的原因進行深入分析,結合廣東電信Wi-Fi優化的實際案例,闡述提高Wi-Fi DHCP成功率的思路和方法。
DHCP可以自動地為主機設定IP環境參數。由于其使用的方便性,在Wi-Fi接入上網方式中得到普遍的應用。圖1描繪了DHCP客戶機與DHCP服務器之間通信、獲取IP地址的過程,具體介紹如下。
(1)尋找DHCP服務器。客戶機在本網段內廣播DHCP discover報文以發現網絡中的DHCP服務器,如果客戶機不是第一次登錄網絡,它會把上次使用過的IP地址封裝在option50中,以請求再次分配該IP地址。
(2)服務器提供IP租用地址。當DHCP服務器監聽到主機發出的DHCP discover報文廣播后,它會從那些還沒有租出的地址范圍內,選擇最前面的空閑IP地址,連同其他IP設置信息(如網關、掩碼、DNS等),響應給客戶端一個DHCP offer報文。
(3)主機A接受IP租約。如果主機A收到網絡上多臺DHCP服務器的響應,只會挑選其中一個DHCP offer(通常是最先抵達的那個),并會向網絡發送一個DHCP request廣播分組。
(4)租約確認。當DHCP服務器接收到主機A的DHCP request之后,會向客戶端發出一個DHCP ack響應。
DHCP成功率指標計算方法:DHCP成功率=(成功獲取IP地址次數÷測試總次數)×100%。
其中,判斷DHCP是否成功需要同時滿足兩個條件:獲取到IP地址以及不超過時間閾值。從終端發送DHCP discover請求開始計時(同一transaction ID的多個discover請求以第一個為準),最后以從服務器端接收到與discover相同transaction ID的DHCP ack結束計時。如果總時長小于10 s,判定為DHCP成功1次;如果總時長大于10 s,則判斷為失敗。

圖1 DHCP交互流程
從廣東電信實際在Wi-Fi熱點現場測試的統計情況分析,DHCP成功率指標失敗的最主要原因是成功獲取地址的時延超過考核閾值(10 s),并不是真正地無法獲取IP地址,但這樣給用戶造成的感覺就是使用Wi-Fi上網很慢。下面將從4個方面對DHCP獲取IP地址慢的原因進行深入分析。
通過測試發現接入愛立信SE800 BRAS(寬帶遠程接入服務器)設備的Wi-Fi熱點時,DHCP獲取IP地址時延過大,獲得IP地址的時間一般在15 s左右,高于考核10 s的要求。
正常情況下Wi-Fi用戶獲取IP地址的DHCP報文交互流程一般為:discover-offer-request-ack,通過協議的4次交互就可以獲取IP地址,時延基本都在5 s以內。而SE800下接入的Wi-Fi用戶獲取IP地址的DHCP報文流程 為:discover-offer-discover-offer-discover-offer-request-ack,也就是說客戶端要發3次discover報文,在第3次收到offer后才發起request交互,這樣獲得IP地址的時間就會大大延長。實測中DHCP交互過程分組抓取情況如圖2所示。
通過分析發現,該問題和SE800的IP地址分配機制有很大關系。SE800的內置DHCP服務器在進行地址分配時采用輪詢算法,即從地址池第一個地址開始依次分配,每次分配的地址為上一次分配地址的下一個可用地址,如此循環往復。而Windows操作系統的客戶端在IP地址的租用已經過期或者之前分配的IP地址不再可用時,會始終發送3個DHCP discover報文(而且會把上次使用過的IP地址封裝在option50中),以驗證客戶端舊的IP地址不再可用,最后,客戶端計算機會接受第3個的DHCP offer報文中提供的IP地址。按照SE800的IP地址分配機制,由于IP地址繼續往下輪詢,客戶端基本上都無法獲取上次使用過的IP地址,因此需要發送3個DHCP discover報文才能獲取IP地址。
在測試過程中發現:接入華為ME60 BRAS設備的Wi-Fi熱點用戶終端也普遍存在發送2次DHCP discover才能獲取IP地址的情況,這種情況下獲取IP地址的時間一般不會超出10 s,但也會使獲取IP地址的時間增加3~4 s。
通過在測試終端和BRAS上同時進行分組抓取,發現BRAS側沒有收到前一次用戶下線時的DHCP release報文,即用戶側發起了release報文,但是BRAS上對用戶進行分組抓取時并沒有收到用戶的release報文,所以BRAS不會主動把用戶下線。用戶第一次發起discover的時候BRAS認為用戶是在線的,這時BRAS會發起一個cut操作使用戶下線,第二次用戶發起discover的時候用戶不在線,BRAS才會按正常處理流程處理,返回一個offer報文。此時,問題就在于為什么ME60沒有收到前一次的DHCP release報文?
進一步對用戶及BRAS之間的交換機進行分組抓取分析,發現交換機確實已經將DHCP release報文發給了ME60,而ME60卻沒有收到。最后華為公司確認原因在于ME60的Wi-Fi認證前域配置了嚴格的地址限制,其中不包含設備本身的地址,而DHCP release中訪問的目標IP地址正好是設備本身地址,因此被設備Wi-Fi認證前域的ACL過濾掉。
在各地市的巡檢測試過程中,發現部分接入華為ME60 BRAS設備的Wi-Fi熱點有時也會出現類似第3.1節所述的接入SE800設備的情況,即DHCP獲取IP地址需要發送3次discover才能獲取IP地址。但是不同之處在于,不是所有華為ME60設備都會出現這種情況,而且即使出現這種情況的ME60設備大部分的測試情況都正常,只是有時會出現3次discover的情況。

圖2 接入SE800用戶DHCP交互分組抓取圖解
通過仔細地對比分析成功、失敗情況下的DHCP分組抓取數據,發現在出現3次discover的情況時,用戶前兩次發送DHCP discover報文時,試圖請求再次分配上次使用過的IP地址,而ME60 BRAS設備返回的DHCP offer的地址都不是用戶所請求的IP地址,因此客戶端直到發送3個DHCP discover報文驗證舊IP地址不再可用時,才接受第3個DHCP offer報文中提供的IP地址。
華為公司確認ME60的地址池分配機制是這樣的:一個地址池的IP地址被釋放后會放在本地址池的最后,如果該地址未被分配,那么ME60設備優先為上次使用過該IP地址的用戶分配此地址;如果ME60設備上配置了多個地址池,分配方式按照配置順序依次進行分配,前面一個地址池分配完后才開始分下一個地址池里的地址。那么在什么情況下會出現異常呢?試想如果在地址池比較小、用戶又比較多的情況下,一個IP地址被釋放后將被加在本地址池的最后,由于地址池使用率已經很高,空余地址不多,很快此地址就會被其他的用戶占用,因此上次使用過該IP地址的用戶想再分配此地址的請求就無法得到滿足了,導致需要發3次discover。結合實際測試的情況來看,出現3次discover情況的ME60基本上是接入AC的BRAS,Wi-Fi接入用戶量大、地址池個數較多但每個地址池的地址數量較少。在設備上查看,這類ME60的前幾個地址池的利用率確實很高、空余地址不多,但是后面的地址池卻空閑著無法得到使用。
隨著Wi-Fi網絡建設規模的擴大,傳統的胖AP組網方式不適應網絡飛速發展的要求,目前廣東省已經大規模引入集中控制型AC+瘦AP網絡架構(如圖3所示)——采用較大容量AC設備集中部署在城域網,統一接入各個熱點的瘦AP,增強了網絡的安全性、可擴展性、可管理性。
集中控制型AC對組網提出了更高的要求,組網存在的問題影響面可能會比傳統胖AP的模式大很多。在省分公司調研時發現,有些省分公司為了避免AC上聯電路的冗余,將AC雙掛2臺BRAS,這樣的網絡結構看起來很合理,但在實際測試發現也存在問題。由于業務VLAN都透傳到兩臺BRAS上,終端發過來的DHCP discover報文會同時透傳到兩臺BRAS,因此兩臺BRAS均會對discover報文進行響應,終端將會選擇最先收到的offer報文。這樣,如果用戶先接入BRAS1,獲取的是BRAS1上的地址,在DHCP租約期到期需要續租的時候,用戶會發出DHCP request報文,如果此時是BRAS2先響應DHCP offer報文,將影響到用戶的續租。也就是說用戶可能會在租約期到期時中斷,需要重新獲取IP地址,這將影響到用戶DHCP成功率及Wi-Fi上網體驗。
針對上述影響DHCP指標的若干因素,制定了相對應的提升優化方案,并且在現網網絡中實施。

圖3 AC、瘦AP典型組網
針對SE800的IP地址分配機制問題,協調愛立信改進了SE800內置DHCP服務器的輪詢算法,即如果客戶機不是第一次登錄網絡,并且再次請求分配上次使用過的IP地址,則SE800會查詢地址池中的空余地址,如果該地址未被分配,那么DHCP服務器優先為客戶端分配此地址。愛立信在SE800設備的6.2.1.7p2以上軟件版本均已修正了該漏洞(bug),經過現網實際測試,基本消除了客戶端需要發送3次discover才能獲取到IP地址的問題。
對于ME60認證前域嚴格地址限制導致無法收到release報文的問題,解決方案是在認證前域的ACL中增加一條:
rule XXX permit ip source user-group wlan destination ip-address X.X.X.X 0//其中X.X.X.X代表了BRAS設備Wi-Fi IP地址池的網關地址
另外,為了增強設備的安全性,也可修改為只允許對網關的DHCP端口進行訪問,具體配置如下:
rule XXX permit ip source user-group wlan destination ip-address X.X.X.X 0 destination-port eq bootps
ME60設備IP地址池過小會造成在用戶量多時客戶端有時無法獲取原來的IP地址,導致需要發3次discover。如前所述,該問題和ME60的IP地址分配機制有關,但是廠商認為目前沒有一種好的IP地址分配機制可以解決這個問題。筆者提出一個變通的方案是可以歸并若干小的地址池合成一個大的地址池;如果小的地址池不連續、無法合并的話,可以新建一個大的地址池取代原來若干小的地址池。
使用一個大的地址池后,就不會產生多個地址池的情況下,前面的地址池利用率過高、后面的地址池卻空閑著無法使用的問題。如此,一個IP地址被釋放后會放在本地址池的最后,只要地址池空閑,地址非常充足,該地址短期內就不會分配給其他用戶使用,那么曾經用過該IP地址的用戶再請求分配此地址就能很快得到響應,用戶的使用體驗就會提高很多。
針對AC雙上聯兩臺BRAS的組網問題,可行的優化方法是:將兩臺上行BRAS其中一臺作為主用BRAS,另一臺作為備用BRAS,將備用BRAS下聯AC的端口關閉,用作冷備份,這樣只有一臺BRAS會對discover報文進行響應,就不會影響到用戶的續租。在主用BRAS發生故障或主用鏈路發生故障時,登錄備用BRAS,把備用BRAS下聯AC的端口打開,也能迅速將業務切換到備用BRAS。
通過對Wi-Fi網絡以上幾個方面的優化,2012年上半年廣東電信組織的第三方Wi-Fi測試中,DHCP測試成功率達到了98.6%,遠遠超出了2011年測試值86.7%,Wi-Fi的網絡質量和用戶體驗得到大幅提升。
本文主要對影響Wi-Fi DHCP成功率、造成DHCP獲取IP地址慢的原因進行深入分析,并結合廣東電信Wi-Fi網絡優化的實際案例,有針對性地提出了提高Wi-Fi DHCP成功率的思路和方法。這些方法在廣東電信Wi-Fi網絡優化中得到了全網推廣應用,實踐表明,通過本文提出的優化方法,可以非常有效地提高Wi-Fi DHCP成功率,用戶的使用感知也得到明顯的提升。在國內掀起的Wi-Fi建設熱潮的形勢下,這些優化方法對于運營商的Wi-Fi網絡優化具有普遍的借鑒意義,必將得到廣泛的應用。
1 Droms R.Dynamic Host Configuration Protocol.RFC 2131,March 1997
2 Alexander S,Droms R.DHCP Options and BOOTP Vendor Extensions.RFC 2132,March 1997