本文將關(guān)注模型化技術(shù)在遠(yuǎn)程通信領(lǐng)域的應(yīng)用,以展示相對(duì)于其它的領(lǐng)域它是怎么的先進(jìn)的。
一致性不是可選的
一個(gè)遠(yuǎn)程通信系統(tǒng)是一套能夠相互通信的不均勻的設(shè)備。要做到這一點(diǎn),這些設(shè)備必須遵從同樣的協(xié)議。從技術(shù)上講,這包含2個(gè)互補(bǔ)的方面:
一個(gè)靜態(tài)界面——從一個(gè)設(shè)備到另一個(gè)的交換的報(bào)文格式。
一個(gè)動(dòng)態(tài)界面——定義了交換的報(bào)文的正確的序列。
對(duì)一個(gè)遠(yuǎn)程通信系統(tǒng)協(xié)議,這兩方面的一致性都很重要。此外,協(xié)議定義需要盡可能清楚不能有岐義。
標(biāo)準(zhǔn)化機(jī)構(gòu)
標(biāo)準(zhǔn)化機(jī)構(gòu)定義的協(xié)議公布了這兩個(gè)方面的介紹。從歷史上看,世界的每個(gè)地區(qū)都有自己的標(biāo)準(zhǔn)化機(jī)構(gòu),如歐洲的ETSI,日本的ARIB,美國的ATIS。當(dāng)時(shí),因?yàn)闃?biāo)準(zhǔn)是不同的,這就意味著在一個(gè)區(qū)域的設(shè)備如手機(jī),無法在另一個(gè)領(lǐng)域正常工作。多虧了全球化,不同的標(biāo)準(zhǔn)化組織現(xiàn)已攜手發(fā)布全球標(biāo)準(zhǔn),如3G或即將到來的LTE(Long Term Evolution),它是4G技術(shù)的可選方案之一。
為了產(chǎn)生清晰且易于理解的標(biāo)準(zhǔn),歐洲標(biāo)準(zhǔn)化機(jī)構(gòu)ETSI已經(jīng)公布了一組介紹,通過一組技術(shù)如SDL(Specification and Description Language規(guī)范和描述語言),ASN.1(Abstract Syntax Notation One抽象語法記法一),ECN(Encoding Control Notation編碼控制符號(hào)),TTCN-3(Testing and Test Control Notation測試和測試控制表示法)來“制作出更好的標(biāo)準(zhǔn)”。這些介紹可見于ETSI網(wǎng)站: etsi.org/WebSite/Technologies/ProtocolSpecification.aspx
本文將論述這些技術(shù)如何幫助遠(yuǎn)程通信行業(yè)生成更好的標(biāo)準(zhǔn)。
動(dòng)態(tài)界面
一種協(xié)議描述了同級(jí)的從一層到另一遠(yuǎn)程層的報(bào)文交換。這樣的界面稱為Protocol Data Unit即PDU。
圖1、報(bào)文交換圖
這實(shí)際上是一個(gè)協(xié)議的邏輯視圖,因?yàn)閷?shí)際中一層與上一層或下一層交換信息。這種“垂直”的界面被稱為ASP(Abstract Service Primitive)。因此PDU通過ASP發(fā)送到遠(yuǎn)程層,但不發(fā)送描述交換的PDU的協(xié)議定義。
動(dòng)態(tài)描述的協(xié)議邏輯視圖由一堆情景組成。 ETSI建議使用MSC(消息序列圖)。我們看下一個(gè)簡單的例子,一層請求連接并在MSC中描述。
圖2、一個(gè)簡單的消息序列圖例子
在上面的情景中,報(bào)文在終端機(jī)與網(wǎng)絡(luò)間進(jìn)行交換。一條報(bào)文可能包含參數(shù)如 例子中ConConf報(bào)文帶有conId 參數(shù)。
大多時(shí)候,一個(gè)遠(yuǎn)程通信系統(tǒng)是一個(gè)分布式系統(tǒng),終端是脫離網(wǎng)絡(luò)的實(shí)體設(shè)備。它很可能有一個(gè)不同的處理器架構(gòu)并運(yùn)行不同的操作系統(tǒng)。因此,必須用一種方法來創(chuàng)建一個(gè)信息流,使該信息流獨(dú)立于處理器和操作系統(tǒng)。
靜態(tài)界面
為了定義一個(gè)硬件獨(dú)立的信息流,要一起使用抽象的數(shù)據(jù)表示法與ASN.1表示法。ASN.1指的是Abstract Syntax Notation One ,由ITU-T標(biāo)準(zhǔn)化。它描述的是可理解的數(shù)據(jù)類型,包括基本類型如布爾型或?qū)崝?shù),復(fù)雜類型如結(jié)構(gòu)或數(shù)組。ASN.1描述了類型,但沒有說明如何在一個(gè)給定的語言下操縱它們。主要關(guān)注的是ASN.1定義了編碼和解碼規(guī)則,以便為某一類型的信息數(shù)據(jù)流獨(dú)立于給定的硬件結(jié)構(gòu)的實(shí)施。除了標(biāo)準(zhǔn)化的編碼規(guī)則,如BER(Basic Encoding Rule基本編碼規(guī)則)或PER(Packet Encoding Rule分組編碼規(guī)則),它們也有一個(gè)符號(hào)來描述具體的編碼規(guī)則,它就是ECN:Encoding Control Notation編碼控制符號(hào)。最后一點(diǎn),ASN.1數(shù)據(jù)類型可以直接導(dǎo)入到SDL作規(guī)范,到TTCN進(jìn)行測試。
An ASN.1 example structure:PersonRecord ::= SEQUENCE {
name IA5String,
age INTEGER,
member BOOLEAN
}
An example value:
examplePerson PersonRecord ::= {
name “Smith”,
age 35,
member true
}
XML encoding of the value:
Smith
35
true
協(xié)議詳細(xì)的行為
MSC描述的協(xié)議行為只是幾種可能的情景。即使它描述可替代,可循環(huán),或可選的情景,MCS也無法描述發(fā)生在一個(gè)協(xié)議的所有可能的情況。要做到這點(diǎn),它關(guān)乎要描述的該協(xié)議的詳細(xì)和可執(zhí)行的模型。以這種方式,它可能可以模擬和驗(yàn)證它的行為,這樣該模型被認(rèn)為是一個(gè)參考模型。為了這個(gè)目的,ETSI推薦一個(gè)正式的建模語言,它稱為SDL規(guī)范和描述語言。
SDL已在80年代首先用來描述遠(yuǎn)程通信協(xié)議,無需說明語言是否符合我們的要求設(shè)計(jì)。但隨著不同技術(shù)的革新,語言也自此跟著演變,如面向?qū)ο蟮慕榻B,UML概要文件的定義。
從技術(shù)上講,SDL有4個(gè)互補(bǔ)的觀點(diǎn),我們以下將會(huì)簡要介紹。
·體系結(jié)構(gòu)
一個(gè)系統(tǒng)由塊組成,這些塊可以分解為子塊。
圖3、系統(tǒng)結(jié)構(gòu)圖
體系統(tǒng)結(jié)構(gòu)的頁就是一個(gè)進(jìn)程,主要是一個(gè)帶有關(guān)聯(lián)的隱含消息隊(duì)列的有限狀態(tài)機(jī)。
·通信
不同塊間交換的信息流在體系結(jié)構(gòu)中有描述,用來定義塊的接口。
圖4、系統(tǒng)內(nèi)及系統(tǒng)與外部環(huán)境的通信
·行為
詳細(xì)的行為被完全生動(dòng)地描述。根據(jù)規(guī)格想要的精確度,它可能忽略了實(shí)施細(xì)節(jié)。
圖5、系統(tǒng)流程圖
上面的例子展示了一個(gè)基本的有限狀態(tài)機(jī):初始化時(shí)ConReq消息發(fā)送出去,ConReqTimer開始啟動(dòng)。狀態(tài)機(jī)轉(zhuǎn)到Connecting狀態(tài)并等待連接確認(rèn)消息ConConf,或者計(jì)時(shí)器關(guān)閉。之后,連接請求10次。如果仍然不成功,進(jìn)程停止。
·數(shù)據(jù)
為了使規(guī)格完整無岐義,SDL嵌入抽象數(shù)據(jù)類型和語法來操縱這些數(shù)據(jù)。如前所述,最好導(dǎo)入ASN.1數(shù)據(jù)類型。
協(xié)議一致性
現(xiàn)在的問題是確保實(shí)現(xiàn)的相同協(xié)議符合ETSI公布的標(biāo)準(zhǔn)。對(duì)于近代的標(biāo)準(zhǔn)如SIP協(xié)議,IP V6,3GPP IMS等,ETSI的已公布基于TTCN-3語言的一致性測試套件。為了確保它符合需求,ETSI還保持了由ITU-T標(biāo)準(zhǔn)化的TTCN-3語言。
TTCN代表測試和測試控制符號(hào),它是國際標(biāo)準(zhǔn)化組織發(fā)起的一致性測試方法和框架文件(9646-3)的一部分。 TTCN-2專用于通信系統(tǒng),TTCN-3適用于測試任何一種系統(tǒng)。
TTCN-3可視為一個(gè)經(jīng)典文本的編程語言,但幾個(gè)方面使用它成為了一種十分強(qiáng)大的測試語言。
·抽象層
SDL, TTCN-3包含報(bào)文和計(jì)時(shí)器的概念,它們是一個(gè)遠(yuǎn)程通信系統(tǒng)的基本服務(wù)。這樣就很容易發(fā)送或接收一條報(bào)文,啟動(dòng)或取消一個(gè)計(jì)時(shí)器。
·模板
當(dāng)測試一個(gè)遠(yuǎn)程通信系統(tǒng)時(shí),大部分的工作是核實(shí)交換的報(bào)文是否包含正確的信息。TTCN-3定義了模板的概念,輕松地驗(yàn)證一組復(fù)雜參數(shù)的正確性。TTCN-3還可選擇參數(shù)(參數(shù)可能不存在),可以忽略一些參數(shù)(參數(shù)是存在的,但與它的值無關(guān))。
·可選方案
測試描述可選方案并根據(jù)不同的可選方案設(shè)置結(jié)論。TTCN-3 嵌入可選方案的概念,無論它們是基于異步信息如報(bào)文的交換還是同步信息如修改的變量值。
cEnv.send(ConReq);ConReqTimer.start;
alt {
[]cEnv.receive(ConConf){
setverdict(pass);
}
[]ConReqTimer.timeout{
setverdict(fail);
}
}
上面的例子顯示了TTCN-3的一個(gè)基本可選方案:一個(gè)連接請求ConReq 通過cEnv 端口發(fā)送,計(jì)時(shí)器 ConReqTimer 開發(fā)啟動(dòng)。在這個(gè)可選方案中,或是接收到 ConConf 響應(yīng)或是計(jì)時(shí)器ConReqTimer 關(guān)閉。
模型測試
由于SDL和TTCN-3有同樣的抽象層,兩種語言都可在實(shí)施前測試一個(gè)規(guī)范模型。由于兩種語言都是正式的,意味著完整且沒有岐義的,可以從SDL規(guī)范中生成協(xié)議實(shí)施的代碼,從TTCN-3測試?yán)猩蓽y試代碼。一個(gè)早期的驗(yàn)證將最終節(jié)省大量的時(shí)間和精力。
圖6、模型測試框圖
最后一點(diǎn),ETSI發(fā)布了TTCN-3的一致性測試套件,這樣遠(yuǎn)程通信制造商可以確保其實(shí)施符合標(biāo)準(zhǔn)。
結(jié)論
由于遠(yuǎn)程通信系統(tǒng)本質(zhì)要求符合一個(gè)共同的標(biāo)準(zhǔn),該標(biāo)準(zhǔn)包括靜態(tài)和動(dòng)態(tài)接口,遠(yuǎn)程標(biāo)準(zhǔn)化機(jī)構(gòu)以及遠(yuǎn)程通信設(shè)備制造商采用多年的先進(jìn)技術(shù)如 MSC, ASN.1, SDL和 TTCN 。事實(shí)上,這些技術(shù)涵蓋整個(gè)開發(fā)周期,從需求,規(guī)劃到設(shè)計(jì),測試。這就是為什么在開發(fā)通信系統(tǒng)時(shí)必須考慮清楚的原因。