微信收費事件背後被廣泛忽略的技術細節

 

作爲一個橫跨通信與互聯網兩大行業的從業者,前四年的核心網經驗和後五年的互聯網經驗讓我不得不感慨一個非常遺憾的現實:通信與互聯網兩大行業本來 可以有珠聯璧合的技術協同,爲移動互聯網提供近乎零耗電零流量的PUSH機制,但由於兩個行業之間長期以來的價值觀隔閡和互防心態,導致如今的手機 PUSH技術不僅爲用戶增加了顯著的電量消耗,還對移動運營商的基礎設施造成了完全不必要的信令壓力。微信與運營商的紛爭正是這種衝突集中爆發的結果。

看到不少來自兩個行業的專業分析,通信行業的專家譴責微信過於頻繁的心跳和短包導致“信令風暴”,而互聯網人士則往往站在用戶與道德的制高點上對移動運營商挖苦譏諷,雙方都很少探究這個問題的深層次技術和利益矛盾。這裏我不妨提一提有些大家沒有真正重視的技術細節。

爲什麼使用同樣PUSH技術的AppleGoogle等巨頭,沒有被運營商卯上,唯獨單單拿微信下手?大家也許會認爲這是運營商欺軟怕硬,拿 AppleGoogle沒辦法。其實從實際數據上來看(下面將提到),微信確確實實產生了遠超AppleGoogle的信令需求。難道是因爲騰訊技不 如人,被逮着了尾巴?其實不然,我們曾經也在PUSH技術上投入了較多的分析研究,其中一項發現或許可以解釋各種原委。根據分析,一般當基帶空閒超過一定 時間後,運營商的IP網關會自動釋放(關閉)連接。目前各家所使用PUSH通道的實現原理雖然同爲『長連接慢心跳』,但這個『慢』字卻有很大的文章。GoogleAndroid系統中使用蜂窩(2G/3G)網絡連接GCMPUSH通道時,默認採用的心跳週期是28分鐘,這纔是所謂“慢”的含義 —— 儘可能降低心跳的頻度,從而達到儘量省電的目的。但這個放諸全球絕大部分地區借行得通的規則,到了中國大陸,就出現了問題。以中移動的2.5G網絡爲例,經過粗略測試,大約5分鐘左右的基帶空閒,連接就會被釋放,這就是爲什麼微信Android版本選擇以『5分鐘』爲週期發送連接心跳。可 能有人會有疑問了,『那Google28分鐘發送心跳,豈不是在中移動的2.5G網絡下無法保持PUSH長連接?』事實上,確實如此,這也是爲什麼 GooglePUSH通道經常『遲到』。當我們活躍使用手機時,由於基帶往往並不會閒置,所以部分掩蓋了問題的本質。另外,當連接到Wi-Fi時,寬帶 的網關一般沒有空閒釋放機制,所以長連接會得到保持,這也進一步減少了我們平時遭遇的PUSH遲到。

5分鐘』的心跳週期到底是什麼概念?可以理解爲,每部安裝了微信的Android設備每天發送近300條短信(其實佔用的信令資 源還遠超這個數量);還意味着每天你的手機將被從待機省電狀態喚醒近300次,每次相當於打一個幾秒鐘的電話。粗略測算,一般的Android手機每天有 超過15-20%的電量被消耗在發送過度頻繁的心跳上。其實,這都還遠不是最糟糕的事情。由於衆所周知的原因,大陸行貨渠道發售的 Android手機都無法使用GooglePUSH通道,原本每個手機中只需要建立的唯一共享的PUSH通道,被人爲分裂,以至於每一個聲稱爲用戶提供 實時通知的國內App,基本都在重複上面微信所做的行爲。當你的手機中同時安裝了多個這類App時,無論手機的耗電,還是運營商的信令負擔,都要數倍於上 述情形。

雖然我向來不憚以最壞的惡意揣測國內的壟斷巨頭,但在這個事情上,中移動或許確有它的苦衷。正如很多技術文章中所言,2G網絡的基礎結構和協議並未 針對IP傳輸優化,其服務IP鏈路的信令承載能力相對較弱,而TDS-CDMA又長期得不到真正的發展,導致中移動的2.5G網絡承受了超齡超載的負荷。刻 意縮短空閒連接的釋放超時,可能原本是期望能起到節省信道資源的目的,沒想到聰明反被聰明誤,這一限制性的舉措讓互聯網應用不得不以遠高於正常的頻率發送 心跳以維持PUSH長連接,結果大大加重的信令負擔,給本就脆弱的2.5G網絡雪上加霜,而且更給用戶的手機造成了遠超常規PUSH技術的電量消耗,造成 瞭如今這一『三輸』的格局。

其實,不光是微信,整個移動互聯網行業都在努力解決PUSH機制目前所面對的各方面問題。包括GoogleApple這樣在整個行業舉足輕重的巨 頭,都僅僅在OSI通信協議的4層以上作各種努力,目前幾乎所有的PUSH機制都基於『TCP長連接慢心跳』方式實現。雖然『慢心跳』如果得以正常工作, 可以在一定程度上降低手機基帶模塊的工作頻度,但無論互聯網行業在技術上再如何標榜“PUSH”相比“PULL”的流量優勢,但在OSI的下三層來看,基 帶模塊所承受的負擔和“PULL”仍然沒有本質差別。這就決定了耗電問題不可能從互聯網技術層面徹底解決。事實上,在移動通信網絡中,信令是一種天然的最 佳PUSH載體,它不需要任何IP層的收發包(也就不需要TCP連接)就能實現秒級的實時性,最重要的是它沒有任何額外的電量負擔,手機完全只需處於正常 的待機狀態。可惜移動運營商只會將其運用在一本萬利的SMS(及WAP PUSH)服務,壓根不可能無償提供給互聯網產業使用。結果,互聯網行業選擇了雖然不用付費,但卻代價高昂的『TCP長連接』,只爲讓用戶享受到免費的通 知服務。這種兩大行業置用戶體驗於不顧的分庭抗禮,已經相持近10年,而當互聯網終究開始以免費服務反噬移動運營商的SMS甚至語音業務時,運營商再也坐 不住了……

注:由於iOS系統的相對封閉性,暫時未能測定ApplePush通道APNS2.5G網絡下的長連接心跳週期。歡迎瞭解的朋友補充測試數據。


UPDATE:更正微信Android版在中移動2.5G網絡下的心跳週期爲5分鐘(此前測定的2.5分鐘存在偏差)

 

文章轉載自:開源中國社區 [http://www.oschina.net]
本文標題:微信收費事件背後被廣泛忽略的技術細節
本文地址:
http://www.oschina.net/news/39623/technology-of-weixin

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章