專利名稱:一種嵌入式sip服務(wù)器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及嵌入式SIPGession Initiation Protocol,會(huì)話初始協(xié)議)服務(wù)器, 尤其涉及實(shí)現(xiàn)嵌入式SIP服務(wù)器所需的一種輕型的嵌入式SIP協(xié)議棧。
背景技術(shù):
SIP是一個(gè)應(yīng)用層的控制協(xié)議,用來建立、修改和終止多媒體會(huì)話或者會(huì)議。SIP 因其簡單、靈活、可擴(kuò)展強(qiáng)等特點(diǎn),已然成為實(shí)現(xiàn)VoIP系統(tǒng)的熱點(diǎn)技術(shù)。SIP采用的是客戶/服務(wù)器(C/S)控制方式。SIP服務(wù)器處于SIP網(wǎng)絡(luò)的中間位置,負(fù)責(zé)接收用戶的注冊(cè),SIP數(shù)據(jù)包的路由轉(zhuǎn)發(fā)以及位置信息的重定向。按照邏輯功能區(qū)分,SIP系統(tǒng)由4種元素組成用戶代理(User Agent,UA),代理服務(wù)器(Proxy krver),重定向服務(wù)器(Redirection krver),注冊(cè)服務(wù)器(Register Server)0用戶代理代表SIP終端系統(tǒng),是用來和用戶交互的SIP實(shí)體。UA分為兩個(gè)部分用戶代理客戶端(User Agent Client, UAC)和用戶代理服務(wù)器(User Agent Server, UAS)。 呼叫控制請(qǐng)求發(fā)出方稱為UAC,請(qǐng)求接收和處理方稱為UAS。由于UA可能發(fā)出呼叫,又可能接收呼叫,所以一個(gè)UA應(yīng)該包含一個(gè)UAC程序和一個(gè)UAS程序。代理服務(wù)器同時(shí)具有服務(wù)器和客戶機(jī)的功能,它不僅接收SIP消息,還能把消息轉(zhuǎn)發(fā)到下一個(gè)SIP服務(wù)器。代理服務(wù)器具有履行驗(yàn)證、授權(quán)、網(wǎng)絡(luò)訪問控制和路由等功能, 在轉(zhuǎn)發(fā)請(qǐng)求消息前,代理服務(wù)器可以修改消息的部分內(nèi)容。重定向服務(wù)器提供下一跳的地址給用戶,它映射請(qǐng)求地址到零個(gè)或多個(gè)實(shí)際地址。重定向服務(wù)器不接收或終止呼叫,不初始化自己的SIP請(qǐng)求,也不產(chǎn)生SIP響應(yīng)來定位其它實(shí)體。注冊(cè)服務(wù)器接收用戶的注冊(cè)請(qǐng)求,它通過定位服務(wù)器維護(hù)用戶的位置。注冊(cè)服務(wù)器典型地與一個(gè)代理服務(wù)器或一個(gè)定向服務(wù)器位于同一臺(tái)機(jī)器并提供定位服務(wù),同時(shí)也支持驗(yàn)證。依據(jù)RFC3^1中定義的SIP協(xié)議棧模型,該協(xié)議棧分為四層底層為語法編碼層, 該層的編碼方式采用的是擴(kuò)展的BNF范式(Backus-Naur Form的縮寫,一種用于表示上下文無關(guān)文法的語言);第2層為傳輸層,該層定義網(wǎng)絡(luò)上的某一客戶機(jī)如何發(fā)送請(qǐng)求和接收響應(yīng),以及某一服務(wù)器如何接收請(qǐng)求和發(fā)送響應(yīng);第3層為事務(wù)層;最上層為事務(wù)用戶層, 每個(gè)SIP實(shí)體,除了無狀態(tài)代理,都是事務(wù)用戶,當(dāng)一個(gè)事務(wù)用戶希望發(fā)送請(qǐng)求時(shí),就創(chuàng)建一個(gè)客戶機(jī)事務(wù)實(shí)例以發(fā)送請(qǐng)求。嵌入式SIP服務(wù)器是一種基于SIP協(xié)議的嵌入式SIP服務(wù)器,該服務(wù)器具有用戶代理服務(wù)器功能、重定向服務(wù)器功能、注冊(cè)服務(wù)器功能。嵌入式SIP服務(wù)器具有良好的可擴(kuò)展性,可以擴(kuò)展多種服務(wù)器,如認(rèn)證服務(wù)器、計(jì)費(fèi)服務(wù)器等。嵌入式系統(tǒng)具有專用性強(qiáng)、實(shí)時(shí)性好、可裁剪性好、可靠性高、功耗低等特點(diǎn)。SIP 服務(wù)器在嵌入式系統(tǒng)中實(shí)現(xiàn),必須具有如上所述的特性?,F(xiàn)有的方法主要是對(duì)開源的SIP 服務(wù)器進(jìn)行分析,并依據(jù)特定嵌入式設(shè)備對(duì)其進(jìn)行裁剪,然后將其移植到該嵌入式設(shè)備中。這種方法的特點(diǎn)在于需要依據(jù)特定的嵌入式設(shè)備對(duì)開源的SIP服務(wù)器進(jìn)行特定的裁剪,裁剪后的SIP服務(wù)器很難做到最精簡,這樣會(huì)占用嵌入式設(shè)備有限的資源,另外裁剪后的SIP 服務(wù)器的擴(kuò)展性差。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于輕型的嵌入式SIP協(xié)議棧的嵌入式SIP服務(wù)器。本發(fā)明提出的輕型嵌入式SIP協(xié)議棧只考慮使用UDP^ser Datagram Protocol, 用戶數(shù)據(jù)包協(xié)議)實(shí)現(xiàn)SIP消息的接收與發(fā)送?;谏鲜鲚p型嵌入式SIP協(xié)議棧,本發(fā)明所述的嵌入式SIP服務(wù)器包括 消息收發(fā)器,用于負(fù)責(zé)收發(fā)SIP消息,管理套接字和網(wǎng)絡(luò)連接,以及SIP消息的初步解
析;消息收發(fā)器包括四個(gè)模塊UDP模塊、SIP消息接收模塊、SIP消息發(fā)送模塊和初步解析模塊,其中
UDP模塊采用面向無連接的傳輸協(xié)議UDP來建立消息收發(fā)器與網(wǎng)絡(luò)層之間連接,SIP 消息接收模塊用于接收完整的SIP消息,SIP消息發(fā)送模塊用于發(fā)送完整的SIP消息,所述完整的SIP即RFC3261所規(guī)定的標(biāo)準(zhǔn)的SIP消息,
SIP消息的初步解析模塊是所述消息收發(fā)器特定的模塊,使用Orig_SIP_Message_ ParseO函數(shù)將SIP消息按照消息體名或頭域進(jìn)行初步解析,解析為相對(duì)應(yīng)的字符串,并與該字符串建立一一對(duì)映的關(guān)系;
消息處理器,用于處理來自消息收發(fā)器和接口處理器SIP請(qǐng)求消息和SIP響應(yīng)消息,包括兩個(gè)模塊語法檢查模塊和可靠性策略模塊;
語法檢查模塊用于檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法,可靠性策略模塊用于對(duì) SIP消息進(jìn)行可靠性分析,保證SIP協(xié)議消息的可靠性,并為不同的SIP協(xié)議消息提供不同的可靠性策略;
接口處理器,包括兩個(gè)模塊消息構(gòu)建模塊和SIP消息完全解析模塊,其中 消息構(gòu)建模塊,用于接收來自其他服務(wù)器的信息,并構(gòu)建SIP消息或SDP消息, SIP消息完全解析模塊,用于完全解析SIP請(qǐng)求消息或SIP響應(yīng)消息,并向其他服務(wù)器發(fā)送。上述嵌入式SIP服務(wù)器接收SIP消息的過程,步驟描述如下 步驟1,所述消息收發(fā)器管理套接字和網(wǎng)絡(luò)連接。步驟2,所述消息收發(fā)器監(jiān)聽UDP端口,即接收用戶數(shù)據(jù)報(bào)所綁定的本地端口,接收UDP數(shù)據(jù)報(bào),并獲取SIP消息。步驟3,所述消息收發(fā)器對(duì)獲取到的SIP消息進(jìn)行初步解析。所述步驟3,所述消息收發(fā)器對(duì)獲取到的SIP消息進(jìn)行初步解析,即將所述獲取到的SIP消息按照消息體名或頭域進(jìn)行初步解析,解析為相應(yīng)的字符串,并與其建立一一對(duì)映的關(guān)系。(如,將INVITE初步解析為IN或I)。步驟4,所述消息處理器接收所述消息收發(fā)器初步解析過的SIP消息,并對(duì)該SIP 消息進(jìn)行語法分析,檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法。一個(gè)合法的SIP請(qǐng)求消息至少得包含以下六個(gè)頭域To、From、Via、Cseq、Call-ID、Max-Forward。所述步驟4,所述六個(gè)頭域是SIP消息的基本構(gòu)成部分,這六個(gè)頭域提供了消息的地址、響應(yīng)的路由信息、詳細(xì)的順序、SIP事務(wù)全局標(biāo)識(shí)以及消息的最大轉(zhuǎn)發(fā)次數(shù)。步驟5,所述消息處理器對(duì)合法的SIP消息進(jìn)行可靠性分析,并為不同的SIP消息提供不同的可靠性策略。步驟6,所述接口處理器創(chuàng)建SIP事務(wù)對(duì)象,并對(duì)SIP事務(wù)對(duì)象進(jìn)行管理。步驟7,所述接口處理器為代理服務(wù)器、注冊(cè)服務(wù)器、重定向服務(wù)器提供各種應(yīng)用接口。步驟8,SIP服務(wù)器為SIP UA提供用戶注冊(cè)服務(wù),用戶代理服務(wù),用戶重定向服務(wù)。步驟81,所述用戶注冊(cè)服務(wù)是為SIP用戶提供注冊(cè)請(qǐng)求服務(wù),并通過用戶定位服務(wù)來維護(hù)該用戶的位置;
步驟82,所述用戶代理服務(wù)是為SIP用戶提供服務(wù)器或客戶機(jī)的服務(wù),不僅接受SIP 消息,還能把消息轉(zhuǎn)發(fā)到下一個(gè)SIP代理服務(wù)器。用戶代理服務(wù)還應(yīng)具有履行驗(yàn)證、授權(quán)、 網(wǎng)絡(luò)訪問控制和路由等功能;
步驟83,所述用戶重定向服務(wù)是為SIP用戶提供下一跳的位置給用戶。所述用戶重定向服務(wù)不提供接收或終止呼叫服務(wù)。步驟9,SIP服務(wù)器程序還提供了擴(kuò)展功能,可以為SIP服務(wù)器提供中各種擴(kuò)展功能(如認(rèn)證服務(wù)器功能、計(jì)費(fèi)服務(wù)器功能等)。上述嵌入式SIP服務(wù)器響應(yīng)SIP消息的過程,步驟描述如下
步驟10,所述用戶注冊(cè)服務(wù)程序接收到所述接口處理器傳送來的注冊(cè)請(qǐng)求,并對(duì)注冊(cè)請(qǐng)求回送響應(yīng)消息。步驟11,所述用戶代理服務(wù)程序接收到所述接口處理器傳送來的SIP消息,并把該SIP消息轉(zhuǎn)發(fā)到下一個(gè)SIP服務(wù)器。所述用戶代理服務(wù)程序應(yīng)具有履行驗(yàn)證、授權(quán)、網(wǎng)絡(luò)訪問控制和路由等功能。步驟12,所述用戶重定向服務(wù)程序提供下一跳的地址給用戶,它映射請(qǐng)求地址到零個(gè)或多個(gè)實(shí)際地址。步驟13,所述接口處理器接收到所述SIP服務(wù)器程序傳送來的SIP消息,創(chuàng)建SIP 事務(wù)對(duì)象,并對(duì)SIP事務(wù)對(duì)象進(jìn)行管理。步驟14,所述消息處理器接收所述消息收發(fā)器初步解析過的SIP消息,并對(duì)該SIP 消息進(jìn)行語法分析,檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法。一個(gè)合法的SIP請(qǐng)求消息至少得包含以下六個(gè)頭域To、From、Via、Cseq、Call-ID、Max-Forward。步驟15,所述消息處理器對(duì)合法的SIP消息進(jìn)行可靠性分析,并為不同的SIP消息提供不同的可靠性策略。步驟16,所述消息收發(fā)器接收到SIP消息,并通過UDP發(fā)送到網(wǎng)絡(luò)層。本發(fā)明的有益效果在于,提出了一種輕型的嵌入式SIP協(xié)議棧,該協(xié)議棧對(duì)SIP消息進(jìn)行兩次解析,降低了 SIP消息在協(xié)議棧解析過程中所消耗的時(shí)間,提高了嵌入式設(shè)備的實(shí)時(shí)性。基于該協(xié)議棧而提出的一種嵌入式SIP服務(wù)器的實(shí)現(xiàn)方法,具有分層結(jié)構(gòu),而且具有很強(qiáng)的可擴(kuò)展性。
圖1嵌入式SIP協(xié)議棧模型6圖2嵌入式SIP服務(wù)器框圖; 圖3嵌入式SIP服務(wù)器分層結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖1和附圖2,對(duì)本發(fā)明做進(jìn)一步的詳細(xì)描述。(以下所使用的函數(shù), 說明見附錄)
本發(fā)明提出了一種輕型的嵌入式SIP協(xié)議棧,并在此基礎(chǔ)上提出一種基于SIP協(xié)議的嵌入式SIP服務(wù)器。嵌入式SIP協(xié)議棧是實(shí)現(xiàn)嵌入式SIP服務(wù)器的基礎(chǔ)。嵌入式SIP協(xié)議棧由消息收發(fā)器、語法編碼解析器、接口處理器三個(gè)部分組成。所述輕型的嵌入式SIP協(xié)議棧只考慮使用UDP實(shí)現(xiàn)SIP消息的接收與發(fā)送。消息收發(fā)器負(fù)責(zé)收發(fā)SIP消息,管理套接字和網(wǎng)絡(luò)連接,以及SIP消息的初步解析,它是整個(gè)SIP協(xié)議棧與網(wǎng)絡(luò)層的對(duì)外接口。該協(xié)議棧只考慮使用UDP實(shí)現(xiàn)收發(fā)消息的功能。消息收發(fā)器的實(shí)現(xiàn)包括四個(gè)模塊UDP模塊、SIP消息接收模塊、SIP消息發(fā)送模塊和SIP消息初步解析模塊。UDP模塊采用面向無連接的傳輸協(xié)議UDP來建立消息收發(fā)器與網(wǎng)絡(luò)層之間連接, UDP模塊使用Udp_ReC()函數(shù)和Udp_knd()函數(shù)向應(yīng)用程序提供統(tǒng)一的消息收發(fā)接口。 Udp_Rec()函數(shù)用于接收網(wǎng)絡(luò)層傳來的UDP數(shù)據(jù)報(bào)并解析該UDP數(shù)據(jù)報(bào),Udp_Send()函數(shù)用于將響應(yīng)SIP消息封裝UDP數(shù)據(jù)報(bào)并發(fā)送到網(wǎng)絡(luò)層。SIP消息接收模塊使用SIP_MeSSage_ReC ()函數(shù)來接收完整的SIP消息。SIP消息發(fā)送模塊使用SIP_Message_knd()函數(shù)來發(fā)送完整的SIP消息。完整的SIP即RFC3^1 所規(guī)定的標(biāo)準(zhǔn)的SIP消息。SIP_Message_Rec ()函數(shù)用于接收來自Udp_ReC()函數(shù)發(fā)送來的SIP消息,SIP_Message_Send()函數(shù)用來向Udp_Send()函數(shù)發(fā)送服務(wù)器傳送來的響應(yīng) SIP消息。初步解析模塊是所述消息收發(fā)器特定的模塊,使用Orig_SIP_MeSSage_ParSe() 函數(shù)將SIP消息按照消息體名或頭域進(jìn)行初步解析,解析為相對(duì)應(yīng)的字符串,并與該字符串建立一一對(duì)映的關(guān)系。消息處理器處于嵌入式SIP協(xié)議棧的中間層,用于處理來自消息收發(fā)器和接口處理器SIP請(qǐng)求消息和SIP響應(yīng)消息。消息處理器的實(shí)現(xiàn)主要包括兩個(gè)模塊語法檢查模塊和可靠性策略模塊。語法檢查模塊使用 Msg_Request_Syntax_Check()函數(shù)和 Msg_Iteponse_Syntax_ CheckO函數(shù)用于檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法。一個(gè)合法的SIP請(qǐng)求消息至少得包含以下六個(gè)頭域To、From、Via、Cseq、Call-ID、Max-Forward。它們是SIP消息的基本構(gòu)成部分,這六個(gè)頭域提供了消息的地址、響應(yīng)的路由信息、詳細(xì)的順序、SIP事務(wù)全局標(biāo)識(shí)以及消息的最大轉(zhuǎn)發(fā)次數(shù)。可靠性策略模塊用以保證SIP協(xié)議消息的可靠性,并為不同的SIP協(xié)議消息提供不同的可靠性策略。主要分為兩類,第一類是INVITE請(qǐng)求消息和ACK響應(yīng)消息的可靠性策略;第二類是其他請(qǐng)求消息和響應(yīng)消息的可靠性策略。然而根據(jù)TCP和UDP傳輸協(xié)議的不同,上述兩類采用不同的的傳輸協(xié)議進(jìn)行傳輸,其SIP消息的可靠性策略也不同。接口處理器處于嵌入式SIP協(xié)議棧的最上層,它是嵌入式SIP協(xié)議棧與應(yīng)用層的對(duì)外接口,接口處理器的實(shí)現(xiàn)主要包括兩個(gè)模塊消息構(gòu)建模塊和SIP消息完全解析模塊。消息構(gòu)建模塊主要用于構(gòu)建SIP消息,該模塊使用SIP_MeSSageJnit ()函數(shù)對(duì) SIP消息進(jìn)行初使化工作。SIP_MESSAGE結(jié)構(gòu)體中包含了構(gòu)建SIP消息所需的各種頭域,并可以通過不同頭域的set函數(shù)和get函數(shù)對(duì)其進(jìn)行設(shè)置和讀取。消息構(gòu)建模塊還可以用于構(gòu)建SDP消息,該模塊使用SDP_MeSSageJnit ()函數(shù)對(duì) SDP消息進(jìn)行初使化工作。SIP_MESSAGE結(jié)構(gòu)體中包含了構(gòu)建SDP消息所需的各種頭域,并可以通過不同頭域的set其進(jìn)行設(shè)置。SIP消息完全解析模塊用于完全解析SIP請(qǐng)求消息或SIP響應(yīng)消息。若上層應(yīng)用程序需要使用請(qǐng)求消息字符串集合或響應(yīng)消息字符串集合中某一個(gè)或者幾個(gè)頭域的值時(shí), 該模塊使用MSg_FUll_ParSe()函數(shù)來實(shí)現(xiàn)對(duì)SIP消息的完全解析。嵌入式SIP服務(wù)器依據(jù)所述的嵌入式SIP協(xié)議棧提出了的分層結(jié)構(gòu)。該嵌入式 SIP服務(wù)器共分為四層。下面結(jié)合附圖3,對(duì)嵌入式SIP服務(wù)器的四層結(jié)構(gòu)做進(jìn)一步的詳細(xì)描述。以下描述為嵌入式SIP服務(wù)器接收SIP消息的過程
(1)第一層,向第二層提供網(wǎng)絡(luò)通信功能,并直接與網(wǎng)絡(luò)層交互。第一層將SIP消息通過UDP模塊發(fā)送出去,并將收到的UDP數(shù)據(jù)報(bào)經(jīng)過該層傳送到第二層。該嵌入式SIP服務(wù)器只考慮UDP傳輸方式。由于語法編碼與解析會(huì)消耗大量的時(shí)間,所以在第一層置入次解析模塊,用于初步解析SIP消息,以增強(qiáng)嵌入式實(shí)時(shí)性。第一層依據(jù)嵌入式SIP協(xié)議棧的消息收發(fā)器來實(shí)現(xiàn),該層的實(shí)現(xiàn)包括四個(gè)模塊 UDP模塊、SIP消息接收模塊、SIP消息發(fā)送模塊和SIP消息初步解析模塊。UDP模塊使用 Udp_Conn ()函數(shù)網(wǎng)絡(luò)層建立UDP連接,使用Udp_Rec ()函數(shù)接收網(wǎng)絡(luò)層傳送來的UDP數(shù)據(jù)報(bào)并解析該UDP數(shù)據(jù)報(bào)。SIP消息收發(fā)模塊使用SIP_Message_Rec()函數(shù)接收來自Udp_ RecO函數(shù)發(fā)送來的完整的SIP消息。SIP消息初步解析模塊使用Orig_SIP_Message_ Parse ()函數(shù)將SIP_MeSSage_ReC ()函數(shù)接收到的完整的SIP消息按照消息體名或頭域進(jìn)行初步解析,解析為相對(duì)應(yīng)的字符串,并與該字符串建立一一對(duì)映的關(guān)系。(2)第二層,把第一層傳上來的標(biāo)準(zhǔn)格式的SIP消息進(jìn)行相應(yīng)的語法檢查和可靠性策略分析。第二層根據(jù)第三層的指示,采用指數(shù)衰減方式對(duì)SIP消息進(jìn)行重傳,以保證 SIP消息傳輸?shù)目煽啃?。消息收發(fā)器使用語法檢查模塊中的使用MSg_RequeSt_SyntaX_CheCk()函數(shù)和 Nsg_Reponse_Syntax_Check ()函數(shù)用于檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法。消息收發(fā)器使用可靠性策略模塊用以保證SIP協(xié)議消息的可靠性,并為不同的SIP協(xié)議消息提供不同的可靠性策略。可靠性策略主要分為兩類,第一類是INVITE請(qǐng)求消息和ACK響應(yīng)消息的可靠性策略;第二類是其他請(qǐng)求消息和響應(yīng)消息的可靠性策略。然而根據(jù)TCP和UDP傳輸協(xié)議的不同,上述兩類采用不同的的傳輸協(xié)議進(jìn)行傳輸,其SIP消息的可靠性策略也不同。(3)第三層,接口處理器處于嵌入式SIP協(xié)議棧的最上層,它是嵌入式SIP協(xié)議棧與應(yīng)用層即其他服務(wù)器的對(duì)外接口。接口處理器需要使用請(qǐng)求消息字符串集合或響應(yīng)消息字符串集合中某一個(gè)或者幾個(gè)頭域的值時(shí)使用MSg_FUll_ParSe()函數(shù)來實(shí)現(xiàn)對(duì)SIP消息的完全解析。(4)第四層,包含多種SIP服務(wù)器。注冊(cè)服務(wù)器負(fù)責(zé)提供用戶位置的登記功能。代理服務(wù)器模塊同時(shí)具備客戶方和服務(wù)器方的能力,負(fù)責(zé)對(duì)用戶呼叫的代理;重定向服務(wù)器模塊負(fù)責(zé)對(duì)用戶呼叫的重定向;第四層還可以根據(jù)需要置入多種服務(wù)器(例如計(jì)費(fèi)服務(wù)器和認(rèn)證服務(wù)器)。以下描述為嵌入式SIP服務(wù)器接收SIP消息的過程
(1)第四層注冊(cè)服務(wù)器負(fù)責(zé)處理REGISTER消息,為用戶代理提供注冊(cè)、登記功能。代理服務(wù)器同時(shí)具有服務(wù)器和客戶機(jī)的功能,它不僅接受SIP消息,還能把SIP消息轉(zhuǎn)發(fā)到下一個(gè)SIP服務(wù)器或者用戶代理。重定向服務(wù)器負(fù)責(zé)對(duì)用戶代理提供下一跳的地址。(2)第三層接口處理器消息構(gòu)建模塊使用SIP_MeSSageJnit ()函數(shù)對(duì)SIP消息進(jìn)行初使化工作。SIP_MESSAGE結(jié)構(gòu)體中包含了構(gòu)建SIP消息所需的各種頭域,并可以通過不同頭域的set函數(shù)和get函數(shù)對(duì)其進(jìn)行設(shè)置和讀取消息構(gòu)建模塊使用SDP_MeSSage Jnit () 函數(shù)對(duì)SDP消息進(jìn)行初使化工作。SIP_MESSAGE結(jié)構(gòu)體中包含了構(gòu)建SDP消息所需的各種頭域,并可以通過不同頭域的set其進(jìn)行設(shè)置。(3)第二層消息處理器接收接口處理器傳送來的SIP消息,消息收發(fā)器使用語法檢查模塊中的使用 Msg_Request_Syntax_Check()函數(shù)和 Msg_Iteponse_Syntax_Check ()函數(shù)用于檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法。消息收發(fā)器使用可靠性策略模塊用以保證SIP協(xié)議消息的可靠性,并為不同的SIP協(xié)議消息提供不同的可靠性策略。主要分為兩類,第一類是INVITE請(qǐng)求消息和ACK響應(yīng)消息的可靠性策略;第二類是其他請(qǐng)求消息和響應(yīng)消息的可靠性策略。然而根據(jù)TCP和UDP傳輸協(xié)議的不同,上述兩類采用不同的的傳輸協(xié)議進(jìn)行傳輸,其SIP消息的可靠性策略也不同。(4)第一層直接與網(wǎng)絡(luò)層交互,將SIP消息通過UDP模塊發(fā)送出去。附錄
Udp_Rec ()函數(shù)UDP接收函數(shù),用于接收UdpRec ()函數(shù)用于接收網(wǎng)絡(luò)層傳來的UDP 數(shù)據(jù)報(bào)并解析該UDP數(shù)據(jù)報(bào)。Udp_Send()函數(shù)UDP發(fā)送函數(shù),用于將響應(yīng)SIP消息封裝UDP數(shù)據(jù)報(bào)并發(fā)送到網(wǎng)絡(luò)層。SIP_Message_Rec ()函數(shù)SIP消息接收函數(shù),用于接收SIP消息。SIP_Message_Send()函數(shù)SIP消息發(fā)送函數(shù),用于發(fā)送SIP消息。Orig_SIP_Message_Parse ()函數(shù)SIP消息初步解析函數(shù),用于初步解析SIP消肩、οMsg_Request_Syntax_Check ()函數(shù)SIP請(qǐng)求消息語法檢查函數(shù),用于對(duì)SIP請(qǐng)求消息進(jìn)行語法合法性檢查。Msg_Reponse_Syntax_Check()函數(shù)SIP響應(yīng)消息語法檢查函數(shù),用于對(duì)SIP響應(yīng)消息進(jìn)行語法合法性檢查。SIP_Message_Init ()函數(shù)SIP消息初始化函數(shù),用于初始化SIP消息。SDP_Message_Init ()函數(shù)SDP消息初始化函數(shù),用于初始化SDP消息。Msg_ full ,Parse ()函數(shù)SIP消息完全解析函數(shù),用于完全解析SIP消息。
權(quán)利要求
1. 一種嵌入式SIP服務(wù)器,包括消息收發(fā)器,用于負(fù)責(zé)收發(fā)SIP消息,管理套接字和網(wǎng)絡(luò)連接、以及SIP消息的初步解析;消息收發(fā)器包括四個(gè)模塊UDP模塊、SIP消息接收模塊、SIP消息發(fā)送模塊和初步解析模塊,其中UDP模塊采用面向無連接的傳輸協(xié)議UDP來建立消息收發(fā)器與網(wǎng)絡(luò)層之間連接,SIP 消息接收模塊用于接收完整的SIP消息,SIP消息發(fā)送模塊用于發(fā)送完整的SIP消息,所述完整的SIP即RFC3261所規(guī)定的標(biāo)準(zhǔn)的SIP消息,SIP消息的初步解析模塊是所述消息收發(fā)器特定的模塊,使用Orig_SIP_Message_ ParseO函數(shù)將SIP消息按照消息體名或頭域進(jìn)行初步解析,解析為相對(duì)應(yīng)的字符串,并與該字符串建立一一對(duì)映的關(guān)系;消息處理器,用于處理來自消息收發(fā)器和接口處理器SIP請(qǐng)求消息和SIP響應(yīng)消息,包括兩個(gè)模塊語法檢查模塊和可靠性策略模塊;語法檢查模塊用于檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法,可靠性策略模塊用于對(duì) SIP消息進(jìn)行可靠性分析,保證SIP協(xié)議消息的可靠性,并為不同的SIP協(xié)議消息提供不同的可靠性策略;接口處理器,包括兩個(gè)模塊消息構(gòu)建模塊和SIP消息完全解析模塊,其中 消息構(gòu)建模塊,用于接收來自其他服務(wù)器的信息,并構(gòu)建SIP消息或SDP消息, SIP消息完全解析模塊,用于完全解析SIP請(qǐng)求消息或SIP響應(yīng)消息,并向其他服務(wù)器發(fā)送;上述嵌入式SIP服務(wù)器接收SIP消息的過程如下 步驟1,所述消息收發(fā)器管理套接字和網(wǎng)絡(luò)連接;步驟2,所述消息收發(fā)器監(jiān)聽UDP端口,即接收用戶數(shù)據(jù)報(bào)所綁定的本地端口,接收UDP 數(shù)據(jù)報(bào),并獲取SIP消息;步驟3,所述消息收發(fā)器對(duì)獲取到的SIP消息進(jìn)行初步解析,即將所述獲取到的SIP 消息按照消息體名或頭域進(jìn)行初步解析,解析為相應(yīng)的字符串,并與其建立一一對(duì)映的關(guān)系;步驟4,所述消息處理器接收所述消息收發(fā)器初步解析過的SIP消息,并對(duì)該SIP消息進(jìn)行語法分析,檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法,一個(gè)合法的SIP請(qǐng)求消息至少包含六個(gè)頭域To、From、Via、Cseq、Call-ID、Max-Forward ;這六個(gè)頭域提供了消息的地址、 響應(yīng)的路由信息、詳細(xì)的順序、SIP事務(wù)全局標(biāo)識(shí)以及消息的最大轉(zhuǎn)發(fā)次數(shù);步驟5,所述消息處理器對(duì)合法的SIP消息進(jìn)行可靠性分析,并為不同的SIP消息提供不同的可靠性策略;步驟6,所述接口處理器創(chuàng)建SIP事務(wù)對(duì)象,并對(duì)SIP事務(wù)對(duì)象進(jìn)行管理; 步驟7,所述接口處理器為其它服務(wù)器提供應(yīng)用接口,其它服務(wù)器包括代理服務(wù)器、注冊(cè)服務(wù)器、重定向服務(wù)器及擴(kuò)展服務(wù)器;步驟8,為SIP UA提供用戶注冊(cè)服務(wù),用戶代理服務(wù),用戶重定向服務(wù); 上述嵌入式SIP服務(wù)器響應(yīng)SIP消息的過程如下步驟9,所述用戶注冊(cè)服務(wù)程序接收到所述接口處理器傳送來的注冊(cè)請(qǐng)求,并對(duì)注冊(cè)請(qǐng)求回送響應(yīng)消息;步驟10,所述用戶代理服務(wù)程序接收到所述接口處理器傳送來的SIP消息,并把該SIP 消息轉(zhuǎn)發(fā)到下一個(gè)SIP服務(wù)器,所述用戶代理服務(wù)程序應(yīng)具有履行驗(yàn)證、授權(quán)、網(wǎng)絡(luò)訪問控制和路由的功能;步驟11,所述用戶重定向服務(wù)程序提供下一跳的地址給用戶,它映射請(qǐng)求地址到零個(gè)或多個(gè)實(shí)際地址;步驟12,所述接口處理器接收到所述SIP服務(wù)器程序傳送來的SIP消息,創(chuàng)建SIP事務(wù)對(duì)象,并對(duì)SIP事務(wù)對(duì)象進(jìn)行管理;步驟13,所述消息處理器接收所述消息收發(fā)器初步解析過的SIP消息,并對(duì)該SIP消息進(jìn)行語法分析,檢查SIP請(qǐng)求消息和SIP響應(yīng)消息的語法,一個(gè)合法的SIP請(qǐng)求消息至少得包含以下六個(gè)頭域To、From、Via、Cseq、Call-ID、Max-I7Orward ;步驟14,所述消息處理器對(duì)合法的SIP消息進(jìn)行可靠性分析,并為不同的SIP消息提供不同的可靠性策略;步驟15,所述消息收發(fā)器接收到SIP消息,并通過UDP發(fā)送到網(wǎng)絡(luò)層。
2.根據(jù)權(quán)利要求1所述的嵌入式SIP服務(wù)器,其特征是所述用戶注冊(cè)服務(wù)器是為SIP 用戶提供注冊(cè)請(qǐng)求服務(wù),并通過用戶定位服務(wù)來維護(hù)該用戶的位置;所述用戶代理服務(wù)器是為SIP用戶提供服務(wù)器或客戶機(jī)的服務(wù),不僅接受SIP消息,還能把消息轉(zhuǎn)發(fā)到下一個(gè) SIP代理服務(wù)器;用戶代理服務(wù)還應(yīng)包括履行驗(yàn)證、授權(quán)、網(wǎng)絡(luò)訪問控制和路由功能;所述用戶重定向服務(wù)器是為SIP用戶提供下一跳的位置給用戶,所述用戶重定向服務(wù)不提供接收或終止呼叫服務(wù)。
3.根據(jù)權(quán)利要求1所述的嵌入式SIP服務(wù)器,其特征是所述擴(kuò)展服務(wù)器,為SIP服務(wù)器提供各種擴(kuò)展功能,包括認(rèn)證服務(wù)器、計(jì)費(fèi)服務(wù)器。
全文摘要
本發(fā)明提出了一種基于輕型的嵌入式SIP協(xié)議棧的嵌入式SIP服務(wù)器,該協(xié)議棧對(duì)SIP消息進(jìn)行兩次解析,降低了SIP消息在協(xié)議棧解析過程中所消耗的時(shí)間,提高了嵌入式設(shè)備的實(shí)時(shí)性。該嵌入式SIP服務(wù)器具有分層結(jié)構(gòu),而且具有很強(qiáng)的可擴(kuò)展性。
文檔編號(hào)H04L29/06GK102571805SQ201210019499
公開日2012年7月11日 申請(qǐng)日期2012年1月21日 優(yōu)先權(quán)日2012年1月21日
發(fā)明者何曉飛, 劉達(dá)明, 康爭光, 張 林, 蔣貴全, 龍昭華 申請(qǐng)人:重慶郵電大學(xué)