我在中興承擔(dān)5年的通信協(xié)議軟件開發(fā)崗位

一仆嗦、引入

? ? 4G LTE通信系統(tǒng)由有線和無線兩部分組成,當(dāng)然岸晦,在這個(gè)層面2G欧啤、3G還有5G也是一樣,比如從西安撥打上海的電話启上,手機(jī)信號一定是以電磁波的形式先發(fā)送到本地基站,這部分是無線網(wǎng)絡(luò)店印,然后通過有線網(wǎng)絡(luò)連接到上海的某個(gè)基站冈在,最后再以電磁波的形式發(fā)送到上海的電話上。

Figure 1-1: EPS Bearer Service Architecture

? ? User Equipment (UE)

? ? Evolved Packet Core(EPC)

? ? Evolved Universal Terrestrial Radio Access Network (E-UTRAN)

? ? Evolved Packet System(EPS)

? ? 其中eNB即是所謂的基站按摘,它由BBU和RRU兩部分構(gòu)成包券。RRU是Remote Radio Unit 遠(yuǎn)端射頻模塊,BBU是Building Baseband Unit 室內(nèi)基帶處理單元炫贤。

Figure 1-2: BBU溅固、RRU、手機(jī)(Cell Phone)

? ? 為什么要引入3GPP通信協(xié)議兰珍?

? ? eNB位于UE和EPC之間侍郭,UE在接入(比如主叫主動(dòng)撥號或者被叫被喚醒)或者切換(開車過程中打電話,從一個(gè)蜂窩小區(qū)進(jìn)入到另外一個(gè)蜂窩小區(qū))時(shí)掠河,UE發(fā)送給基站的任一條消息(EPC發(fā)送給eNB的消息同此理)都是為了發(fā)送給核心網(wǎng)亮元,只有經(jīng)過核心網(wǎng)才能達(dá)到其實(shí)現(xiàn)通信的目的。手機(jī)可能是蘋果公司生產(chǎn)的唠摹,eNB可能是中興/華為的爆捞,核心網(wǎng)可能是愛立信的,為了正常通信一定得規(guī)范一套協(xié)議勾拉,只要我發(fā)送信令的信元煮甥、發(fā)送的時(shí)機(jī)合乎協(xié)議盗温,就能保證不同廠家的通信設(shè)備組到一起可以正常通信,這就是3GPP通信協(xié)議成肘,也是BBU的職責(zé)卖局。

二、業(yè)務(wù)

? ? 業(yè)務(wù)需要描述的場景是完備而復(fù)雜的艇劫,對于一個(gè)具體的業(yè)務(wù)場景吼驶,F(xiàn)igure 2-1所繪的流程圖是一種有效的表述形式。

? ? UE和MME之間由控制信息也有數(shù)據(jù)信息店煞,F(xiàn)igure 2-1描述了一個(gè)UE接入過程的控制信息交互的片段蟹演。從圖中可以看到,eNB首先會(huì)起一個(gè)定時(shí)器等MME的INITIAL CONTEXT SETUP REQUEST顷蟀,等到之后進(jìn)行內(nèi)部各模塊的處理酒请,UE也相當(dāng)于是eNB的一個(gè)需要處理的模塊,處理完成后給MME回復(fù)INITIAL CONTEXT SETUP RESPONSE鸣个,不能啥都不回羞反,或者回復(fù)的消息不滿足INITIAL CONTEXT SETUP RESPONSE的格式要求。

? ? 從圖中還可以看到囤萤,在接入過程中昼窗,CONTEXT過程完成后進(jìn)行UECapabilityEnquiry過程,并且將查詢上來的UECapabilityInformation進(jìn)行處理涛舍,按MME接收的格式(UE CAPABILITY INFO INDICATION)發(fā)送到MME澄惊,這個(gè)UE Capability過程的時(shí)機(jī)不是隨時(shí)都可以發(fā)的。

Figure 2-1:Initial UE Capability Handling

? ? 控制信息的傳輸即信令富雅,包括消息號和結(jié)構(gòu)體兩部分掸驱,比如Figure 2-1中INITIAL CONTEXT SETUP REQUEST消息號對應(yīng)的結(jié)構(gòu)體如圖Figure 2-2所示。

Figure 2-2: INITIAL CONTEXT SETUP REQUEST

? ? Figure 2-2描述了消息體中每個(gè)信元的含義没佑,比如MME UE S1AP ID毕贼、eNB UE S1AP ID分別代表當(dāng)前UE在MME和eNB的ID(Identity),這是任意一條S1口消息必帶的信元蛤奢,因?yàn)槿绻粭l消息沒有發(fā)給確定的UE是沒有意義的鬼癣。其它的每個(gè)信元也都有各自特定的物理意義,比如E-RAB to Be Setup List代表了UE在接入過程中同時(shí)需要建立用于傳輸數(shù)據(jù)的承載列表远剩。

? ? 3GPP不僅提供了接口和流程描述扣溺,還提供了第三方的編解碼庫,各通信設(shè)備商在按照接口的要求填寫情況下瓜晤,直接調(diào)用第三方的編解碼函數(shù)即可轉(zhuǎn)換為協(xié)議要求格式的碼流锥余,也只有協(xié)議確定了才能按協(xié)議編解碼。

? ? 3GPP只是描述了對UE和MME的通信規(guī)范痢掠,各通信設(shè)備商都以此為唯一標(biāo)準(zhǔn)驱犹。同時(shí)嘲恍,基站內(nèi)部內(nèi)部模塊間通信也是通過信令交互完成的,由于模塊間的分工雄驹、依賴關(guān)系和產(chǎn)品需要支持的不同硬件佃牛、不同架構(gòu)等,提出了大量的業(yè)務(wù)需求医舆。

? ? Figure 2-3中為BBU機(jī)框圖俘侠,機(jī)框支持“1~2塊CC板”加上“1~6塊BPL板”。

Figure 2-3: BBU 820

? ? 數(shù)據(jù)反傳功能會(huì)涉及哪些業(yè)務(wù)場景:

? ? UE切換時(shí)蔬将,可能MME下發(fā)的數(shù)據(jù)包傳輸了一半爷速,在原來位置(BPL)的數(shù)據(jù)傳輸情況不能直接傳到目標(biāo)側(cè)(BPL),由于背板總線的原因需要采用CC板的霞怀、信令傳輸?shù)姆绞竭M(jìn)行傳遞惫东。會(huì)出現(xiàn)多種數(shù)據(jù)反傳場景。如Figure 2-4到Figure 2-6所示毙石。

Figure 2-4: 同eNB內(nèi)跨BPL切換
Figure 2-5: 同eNB內(nèi)跨CC跨BPL切換
Figure 2-6: 跨eNB切換

? ? 業(yè)務(wù)場景多樣而且復(fù)雜廉沮,要保證特性功能運(yùn)行正確、代碼有利于維護(hù)徐矩,是一件非常具有挑戰(zhàn)性的問題滞时。

三、代碼

? ? 第一滤灯、普遍地漂洋,從代碼的邏輯梳理出代碼的業(yè)務(wù)功能是一件很麻煩的事情;但是如果大致知道代碼的業(yè)務(wù)需求力喷,再看代碼的業(yè)務(wù)需求,會(huì)輕松很多演训。所以不論是講解代碼還是開發(fā)代碼弟孟,業(yè)務(wù)是基礎(chǔ)。第二样悟、代碼的目的是給機(jī)器執(zhí)行的拂募,但是,更重要的是代碼是要便于人能夠很好的理解窟她,如果一套代碼功能無誤陈症,但是可讀性差或者根本就沒有可讀性,這套代碼肯定是會(huì)被廢棄的震糖,因?yàn)楹竺娴娜藷o法在此基礎(chǔ)上新增功能或修改故障录肯。

? ? 控制面的代碼量大概是20萬行的規(guī)模,業(yè)務(wù)的正確理解是前提吊说,它還有這些特點(diǎn):

? ? 代碼分層設(shè)計(jì):C++面向?qū)ο笤O(shè)計(jì)论咏,類似Figure 2-4优炬、Figure 2-5、Figure 2-6的整個(gè)圖的流程都分別是一個(gè)類Transaction厅贪。既然是流程控制蠢护,肯定是一套完備的、能表述C語言流程圖的控制邏輯养涮,比如SEQUENTIAL葵硕、FORK...JOIN、FINALLY等類贯吓,SEQUENTIAL將傳給本類的所有事物按順序逐條執(zhí)行(Figure 2-4懈凹、Figure 2-5、Figure 2-6都屬于這類情況)宣决,F(xiàn)ORK將傳入本類的所有事務(wù)并發(fā)執(zhí)行蘸劈,在一個(gè)確定的時(shí)機(jī)去等待所有事務(wù)執(zhí)行完成(JOIN)、FINALLY會(huì)在業(yè)務(wù)流程走完后做一些清理或者其它需要的工作尊沸。它們分別被劃分為Infra/Sched/traffic等層威沫。

? ? 模板和模式:業(yè)務(wù)中各種的流程圖就有超過100張,很多地方需要消除重復(fù)洼专,也是形成統(tǒng)一的編碼規(guī)范和風(fēng)格棒掠,需要大量使用模板。如前文看到的E-RAB to Be Setup List這種List屁商,需要使用訪問者模式烟很、對于KPI上報(bào)數(shù)據(jù)搜集需要使用監(jiān)聽者模式,固定的模式利于寫也利于讀蜡镶。Figure 2-6中的發(fā)送EV_X2_SN_STATUS_TRANSFER這個(gè)動(dòng)作在流程圖的每個(gè)步驟都會(huì)用到雾袱,代碼中將其設(shè)計(jì)成一個(gè)Action類,對外提供了和Transaction的接口官还,對內(nèi)提供了builder(數(shù)據(jù)構(gòu)建芹橡、編碼),sender望伦,waiter等邏輯林说,這也相當(dāng)于是一種協(xié)議,也是一種模式屯伞,省時(shí)省力腿箩。

? ? 多繼承:每個(gè)UE實(shí)例在eNB內(nèi)是一塊兒12k左右的數(shù)據(jù),里邊存儲(chǔ)了大量的UE相關(guān)信息劣摇,12k大小的數(shù)據(jù)怎么管理珠移?代碼中使用了多繼承的數(shù)據(jù)組織形式。多繼承的每一個(gè)父類都能根據(jù)業(yè)務(wù)領(lǐng)域做到高內(nèi)聚低耦合,要找每個(gè)特性的時(shí)候就能方便找到剑梳。


Figure 3-1: 多繼承

? ? 信令:如果一個(gè)業(yè)務(wù)流程失敗了唆貌,通過信令對照流程圖能迅速的找到是在哪個(gè)步驟異常了,再檢查信令中的信元垢乙,將一個(gè)流程很清晰的呈現(xiàn)出來锨咙,專職的測試人員不用看代碼,通過信令就基本能夠確定開發(fā)人員的特性實(shí)現(xiàn)正確與否追逮。

? ? KPI:為了衡量一個(gè)系統(tǒng)運(yùn)行情況的好壞酪刀,業(yè)務(wù)定義了一系列的KPI指標(biāo),它相當(dāng)于一把尺子钮孵,對運(yùn)營商呈現(xiàn)出軟件運(yùn)行情況骂倘,當(dāng)然運(yùn)營商也有第三方的監(jiān)測軟件。

? ? 如此龐大的項(xiàng)目巴席,保證通暢有序的工作是一件很大的工程历涝,管理上由很多有益的實(shí)踐:

? ? 多級CI。在每次代碼合入時(shí)都需要經(jīng)過系統(tǒng)CI漾唉,CI的意思是持續(xù)集成荧库,業(yè)務(wù)、平臺(tái)赵刑、基帶各自在自己的二級CI上保證代碼沒有問題分衫,然后合入到一級CI,合入每級CI前需要驗(yàn)證通過般此,合入每級CI后需要回歸測試完成蚪战,CI本身又設(shè)置了很多的校驗(yàn)項(xiàng)保證代碼質(zhì)量。

? ? 商用代碼監(jiān)測軟件铐懊。商用代碼監(jiān)測軟件是二級CI的其中的一個(gè)校驗(yàn)項(xiàng)邀桑,比如我們寫的switch...case語句,按規(guī)范每個(gè)case都需要break科乎,如果待合入代碼違反了就會(huì)攔截不讓合入概漱,再比如代碼為業(yè)務(wù)死代碼,永遠(yuǎn)執(zhí)行不到等等喜喂,各種各樣。

? ? 大規(guī)模FT竿裂。每開發(fā)的一個(gè)業(yè)務(wù)特性時(shí)玉吁,需要新增FT,保證業(yè)務(wù)邏輯腻异,同時(shí)进副,之前別人寫的保證業(yè)務(wù)邏輯的FT已經(jīng)幾千條了,要保證所有FT通過,即既要保證自己的特性軟件仿真通過影斑,又要保證不影響之前的代碼的邏輯给赞。

? ? RF測試部署。FT的通過基本能保證代碼的質(zhì)量矫户,但是由于模塊間的接口片迅、FT不能完全真實(shí)構(gòu)造場景的局限性等,F(xiàn)T不能替代真實(shí)環(huán)境的測試皆辽。RF測試用例通過python自動(dòng)化腳本自動(dòng)化的執(zhí)行一些基本的業(yè)務(wù)流程柑蛇,又叫冒煙測試,保證不會(huì)讓整個(gè)大項(xiàng)目癱瘓驱闷。

? ? wiki耻台。wiki有些相當(dāng)于公共的blog,我們在編碼空另、軟件安裝盆耽、腳本學(xué)習(xí)時(shí)有太多不會(huì)的地方,比如python的類庫如此的多以至于不可能把每個(gè)類庫都接觸到扼菠,我們百度一下就都知道了摄杂。工作內(nèi)容紛繁復(fù)雜,需要記筆記的及時(shí)記筆記娇豫,東西太多不能都記得住匙姜,記住了也不能保證不忘,每個(gè)團(tuán)隊(duì)內(nèi)各成員大家參與冯痢、大家受益氮昧。

? ? 敏捷管理。敏捷管理屬于管理制度的范疇浦楣,每個(gè)公司的管理制度都各不相同袖肥,敏捷管理形成了一套方法論,比如任務(wù)卡墻振劳、7-13人小團(tuán)隊(duì)化椎组、輪值制度、OKR讓自己制定自己的目標(biāo)等历恐,對發(fā)揮個(gè)人能動(dòng)性寸癌,集思廣益,組織有序和民主等都是很好的實(shí)踐弱贼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蒸苇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子吮旅,更是在濱河造成了極大的恐慌溪烤,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異檬嘀,居然都是意外死亡槽驶,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進(jìn)店門鸳兽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來掂铐,“玉大人,你說我怎么就攤上這事贸铜”の常” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵蒿秦,是天一觀的道長烤镐。 經(jīng)常有香客問我,道長棍鳖,這世上最難降的妖魔是什么炮叶? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮渡处,結(jié)果婚禮上镜悉,老公的妹妹穿的比我還像新娘。我一直安慰自己医瘫,他們只是感情好侣肄,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著醇份,像睡著了一般稼锅。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上僚纷,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天矩距,我揣著相機(jī)與錄音,去河邊找鬼怖竭。 笑死锥债,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的痊臭。 我是一名探鬼主播哮肚,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼广匙!你這毒婦竟也來了绽左?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤艇潭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蹋凝,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲁纠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鳍寂。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片改含。...
    茶點(diǎn)故事閱讀 40,973評論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖迄汛,靈堂內(nèi)的尸體忽然破棺而出捍壤,到底是詐尸還是另有隱情,我是刑警寧澤鞍爱,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布鹃觉,位于F島的核電站,受9級特大地震影響睹逃,放射性物質(zhì)發(fā)生泄漏盗扇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一沉填、第九天 我趴在偏房一處隱蔽的房頂上張望疗隶。 院中可真熱鬧,春花似錦翼闹、人聲如沸斑鼻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坚弱。三九已至,卻和暖如春法牲,著一層夾襖步出監(jiān)牢的瞬間史汗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工拒垃, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留停撞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓悼瓮,卻偏偏與公主長得像戈毒,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子横堡,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,348評論 25 707
  • V2X中的X代表不同的通信目標(biāo)埋市,包括四種:V2V(汽車),V2I(路邊設(shè)施)命贴,V2N(電信網(wǎng)絡(luò))道宅,和V2P(行人)...
    hanlamp閱讀 9,106評論 3 3
  • 用兩張圖告訴你食听,為什么你的 App 會(huì)卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 12,754評論 2 59
  • Attach Procedure 手機(jī)開機(jī)先注冊到一個(gè)網(wǎng)絡(luò)上污茵,UE注...
    LAandLE閱讀 5,617評論 0 1
  • 每年績效review的時(shí)期心情都非常的復(fù)雜樱报,即害怕,又開心泞当,又惶恐迹蛤!害怕是因?yàn)榕伦约哼@半年沒成長,或者成長太少襟士,不...
    雅王妃閱讀 179評論 0 0