宮興琦,姜會增,周用貴
(中國鐵道科學研究院 標準計量研究所,北京 100081)
為旅客提供互聯網接入服務是旅客列車無線局域網系統的主要功能之一,該系統采用移動、聯通和電信3家運營商的4G網絡,構建9路車地通信鏈路,提升互聯網出口帶寬。高鐵及動車車廂內用戶密度高,車地通信出口帶寬較小,旅客列車無線局域網寬帶分配系統作為旅客列車無線局域網接入系統的關鍵部分,切實影響旅客接入互聯網的實際體驗。利用有限的帶寬為旅客提供更好的互聯網接入服務是帶寬分配系統的一個重要功能。
旅客列車無線局域網由中心服務器、單車服務器、無線訪問接入點(AP)和無線網橋組成,中心服務器主要提供旅客互聯網接入服務,單車服務器提供車廂內局域網服務,AP提供無線終端接入服務,無線網橋連接車廂間的單車服務器,局域網組成如圖1所示[1]。
旅客列車無線局域網帶寬分配系統部署于中心服務器,由用戶發現模塊和鏈路發現模塊組成,主要用于提升互聯網接入利用率。
帶寬分配系統的用戶發現模塊主要用于實時更新車上用戶的狀態,適應高鐵停靠站旅客上下線較頻繁的情況,為鏈路發現模塊提供信息支持;鏈路發現模塊主要根據在線用戶狀態和9路車地鏈路狀態為用戶選擇合適的通信信道。

圖1 旅客列車無線局域網組成圖
jhash_3words算法為Linux 網絡協議中常用的一個哈希算法,適用于網絡數據哈希運算。通過用戶數據包解析出用戶的mac地址,并通過jhash_3words算法將解析出的mac地址進行hash散列運算,用戶發現模塊通過對jhash_3words算法進行二次封裝,得到mac地址散列運算函數get_tuple_hash。
運算結果更新,存入用戶信息鏈表,信息鏈表的單個節點記錄了用戶的狀態、最新數據更新狀態和權限級別。當用戶接入中心服務器后,get_tuple_hash函數通過用戶源IP和mac地址進行hash運算,根據運算結果將用戶登入時間和權限等信息更新到指定的鏈表結點上,如果指定結點不存在則表示為新用戶,為其創建新的結點[2]。如果結點已經存在則表示該用戶為老用戶,更新其最后一次訪問時間。
當內核態通過hash mac散列算法將用戶列表更新后,內核通過netlink socket動態消息通道向用戶態應用發送新的用戶列表。
鏈路發現模塊負責數據包在各條可用鏈路上的并發傳輸,帶寬分配方式的選擇原則是并行帶寬增大和數據傳輸可靠。
采用 RoundRobinScheme算法[4],也稱為輪詢調度算法,該算法把來自用戶的請求輪流分配給內部鏈路,從1開始,直到N(網卡個數),然后重新開始循環。
RoundRobin算法的優點是簡潔,無需記錄當前所有連接的狀態,是一種無狀態分配。系統使用了RoundRobin的權重分配算法,即為每條鏈路分配不同的比例系數,例如,3塊網卡設置為3:1:1時,將控制數據包在各條鏈路上的分發比例為3:1:1。
帶寬分配系統采用 C語言開發,開發平臺為Centos6.6,內核版本為2.6.38,采用的編譯器為gcc。系統的用戶發現模塊采用內核編程方式,鏈路發現模塊采用應用層編程方式,二者通過netlink套接字方式通信。
當用戶通過列車AP接入中心服務器后,用戶發現模塊通過內核HOOK獲取用戶數據包[3],根據數據包信息通過jhash_3words算法更新用戶列表,之后通過netlink套接字將消息發送至應用層接收程序,應用層接收程序實時更新用戶列表。部分實現代碼如下:


jhash_3words算法進行二次封裝,得到高性能mac地址散列運算函數get_tuple_hash,實現代碼如下:

此時,get_tuple_hash函數通過用戶源IP和mac地址進行hash運算,根據運算結果將用戶登入時間和權限等信息更新到指定的鏈表結點上,如果指定結點不存在,則表示為新用戶,為其創建新的結點。如果結點已經存在,則表示該用戶為老用戶,更新其最后一次訪問時間,其部分實現代碼如下:


當內核態通過hash mac散列算法將用戶列表更新后,內核通過netlink socket動態消息通道向用戶態應用發送新的用戶列表,netlink需要定義新的協議號用來標示消息,如下所示:

中心服務器使用移動、聯通、電信的3G/4G網絡作為車地通信的網絡出口,支持最多9條無線鏈路并發傳輸用戶數據,但是相對于乘客的需求而言,此時帶寬仍屬于窄帶通信,因而如何將9路鏈路充分利用,提高帶寬分配效率是提升乘客使用體驗的一個重要環節。
鏈路發現模塊的作用在于即時維護各條鏈路的真實狀態,包括鏈路的可用性、鏈路IP變換,并且在鏈路狀態發生變化時能夠將用戶調度到可用鏈路上,對上層應用是透明的,能夠保證用戶通信的連續性。
鏈路發現模塊需要維護可用鏈路鏈表,在IP發生變化時通過可用鏈表來選擇數據轉移的去處,同時更新可用鏈表中的內容,IP切換的過程可以分解為兩個部分:
(1)現有的IP地址消失,即舊的鏈路失效,此時,應該將數據轉移到其他鏈路上去。
(2)新的IP地址出現,即新的可用鏈路出現,此時,應該將一部分數據分配到新的可用鏈路上。
在新的IP出現時需要新建套接字描述符,并將其代表的鏈路名稱等信息生成一條新的可用鏈路結構加入到鏈表中,同時,將代表該鏈路上的舊IP記錄刪除,注銷套接字描述符。
創建套接字的過程并不復雜,關鍵在于要保證在IP切換的過程中數據能夠及時、連續地進行交互[5]。當可用鏈路的數量發生變化時,自動地將數據進行轉移分發,既不能向失效鏈路分配數據,也不能使新的可用鏈路閑置。
以4塊網卡為例,當4條鏈路變為3條,或者3條鏈路變為4條之后,需要對網卡進行重新排序,調整各條可用鏈路的狀態,處理流程如圖2所示。

圖2 可用鏈路更新流程圖
可用鏈路模塊在數據轉移模塊中的作用比較重要,可用鏈路模塊維護了現在可用鏈路的全部信息,為數據包的鏈路分發提供了重要參考。
鏈路發現模塊負責數據包在各條可用鏈路上的并發傳輸,實現并行帶寬增加和數據傳輸可靠。在調度方式的選擇上,采用RoundRobin算法[6]。
本文允許其他模塊通過調用RoundRobin模塊對各條鏈路的權重系數進行調節,其中,sendpercent[7]為權重系數,鏈路發現模塊將根據sendprecent設置的系數,并進一步通過匹配ifname和device_id來確定對應的鏈路,從而正確設置系數。
RoundRobin算法在高速移動環境下簡單易實現,是從鏈路負載的角度進行考慮。然而從用戶使用的角度上講有著很大的局限性,通過簡單的輪詢,同一個應用的數據流被分到不同的鏈路上很可能非但沒有增加并行傳輸的帶寬,反而造成了鏈路帶寬的下降。假設有兩條鏈路A和B,A鏈路的往返時間(RTT)為40 ms,B鏈路的RTT為80 ms,如圖3所示。

圖3 RoundRobin輪詢算法示例
由圖3可知,B鏈路的時延較大,在Packet1到達Recver后,需要等到Packet2也到達Recver才能向上層應用進行遞交,也就是說,即便A鏈路此時的RTT較小,也需要等待B鏈路的數據包,此時對于用戶來講,B鏈路的情況較差。在A鏈路不發生擁塞的情況下,B鏈路的加入反而拉低了A鏈路的表現。
當某條鏈路的IP失效時,鏈路發現模塊會將發生IP變化的鏈路消息通知數據轉移模塊,此時需要將此鏈路設為不可用鏈路,停止繼續分配數據包至此鏈路,代碼如下:


IP變化消息中的新IP為0.0.0.0,說明該網卡的IP已經失效,需要將此鏈路中的輪詢比例(dis)屬性設為0,數據調度模塊會檢測dis的數值,當為0時會停止向此鏈路分發數據,此時可用鏈路的數目發生了變化,需要更新鏈路ID,確保可用鏈路鏈表的狀態是最新的,通過檢查dis屬性設置可用鏈路的ID和可用鏈路的數量[5]。
當接收到的IP變化的消息中新IP不為零時說明有新的可用鏈路加入,此時應該將其加入到可用鏈路鏈表,為其分配數據[8],代碼如下:

帶寬分配系統在試驗室環境下已經通過功能驗證,經測試,該系統能夠在常數時間內判別大量用戶實時狀態,提升9路鏈路的應用效率,采用運營商的網絡進行互聯網接入,具備同時接入中國移動、中國聯通和中國電信3G/4G網絡的能力。每列車中心服務器上統一配置一套互聯網接入設備,具備多信道帶寬匯聚并在車載局域網內進行自適應分配的功能。
旅客列車無線局域網帶寬分配系統在試驗室環境下已經通過功能驗證,但是在實際情況下,每條線路的運營商3G/4G信號覆蓋強度不同,導致不同的線路出口帶寬差別較大。下一步需做的工作是在實際運行環境下進行測試,通過積累大量用戶的行為特征與數據特性,更好地優化互聯網接入功能,更進一步提升互聯網帶寬分配效率,提升用戶使用體驗。
[1]中國鐵路總公司. 旅客列車無線局域網系統和安裝布線總體技術要求(暫行)[Z]. 北京:中國鐵路總公司,2015.
[2]李晨光. Linux系統網絡管理模塊的實現[J].鐵路計算機應用,2008 ,17(6):35-38.
[3]張 昊. 高鐵車地通信系統級仿真平臺設計與多基站協作技術的研究[D].成都:西南交通大學,2013.
[4]丁良輝. 無線自組織網絡中的TCP協議研究[D]. 上海:上海交通大學,2008.
[5]周開波. 利用mSCTP實現3G和WLAN無縫切換及其性能分析[D]. 北京:北京郵電大學,2012.
[6]何 川. 移動自組織網絡中的可靠傳送協議[D].成都:電子科技大學,2013.
[7]宮興琦.高速移動環境下連接及擁塞控制的研究與實現[D].北京:北京交通大學,2014.
[8]方 棋,吉 強,韓 臻.Linux環境下基于策略路由實現多線路負載均衡[J]. 鐵路計算機應用,2006,15(9):35-38.
[9]Andrea De Vendictis, Andrea Baiocchi, Michela Bonacci.Analysis and enhancement of TCP Vegas congestion control in a mixed TCP Vegas and TCP Reno network scenario[J].Performance Evaluation, 2003(533).
[10]Tine Stegel, Janez Sterle, Urban Sedlar, et al. SCTP multihoming provisioning in converged IP-based multimedia environment[J]. Computer Communications, 2010(3314).