私網(wǎng)穿越技術(shù)在軟交換體系中的應(yīng)用介紹
摘要:分析了在軟交換體系中使用私網(wǎng)及NAT技術(shù)所產(chǎn)生的問(wèn)題,介紹了一種解決軟交換私網(wǎng)穿越問(wèn)題的方法,并對(duì)使用這種方法有可能為軟交換網(wǎng)絡(luò)帶來(lái)的進(jìn)一步影響進(jìn)行了探討。
關(guān)鍵詞:NGN 軟交換 NAT PAT 私網(wǎng)穿越
一、引言
下一代網(wǎng)絡(luò)(Next Generation Network,NGN)是一種基于分組交換技術(shù)的通信網(wǎng)絡(luò),在整體構(gòu)架、信令控制、承載網(wǎng)絡(luò)等方面都與現(xiàn)有的電路交換網(wǎng)絡(luò)存在很大不同。軟交換技術(shù)作為一種在分組網(wǎng)內(nèi)實(shí)現(xiàn)通信話路交換與媒體傳輸?shù)募夹g(shù),將是NGN網(wǎng)絡(luò)的核心技術(shù)。由于軟交換技術(shù)本身就是基于IP分組網(wǎng)的,因此在現(xiàn)有的基礎(chǔ)數(shù)據(jù)網(wǎng)上,完全可以建立起一套軟交換的構(gòu)架。帶來(lái)的好處有:現(xiàn)有的許多基于IP的協(xié)議可以被繼續(xù)利用,大量的網(wǎng)絡(luò)設(shè)備和終端設(shè)備都可以直接被應(yīng)用到軟交換網(wǎng)絡(luò)中。雖然在現(xiàn)有數(shù)據(jù)網(wǎng)的基礎(chǔ)上構(gòu)建軟交換網(wǎng)絡(luò)具有上述的優(yōu)點(diǎn),但也存在許多問(wèn)題,其中私網(wǎng)穿越就是一個(gè)需要解決的問(wèn)題。
二、在軟交換體系中面臨的私網(wǎng)穿越問(wèn)題
1. 私網(wǎng)的概念與NAPT技術(shù)的產(chǎn)生
隨著基于TCP/IP的互聯(lián)網(wǎng)的普及,私有網(wǎng)絡(luò)(簡(jiǎn)稱私網(wǎng))的數(shù)量和規(guī)模也越來(lái)越大。私網(wǎng),就是采用私有的IP地址來(lái)連接各個(gè)網(wǎng)絡(luò)設(shè)備組成的相對(duì)獨(dú)立和封閉的網(wǎng)絡(luò)。這種組網(wǎng)方式在組建各種規(guī)模局域網(wǎng)時(shí)被大量應(yīng)用??梢哉f(shuō),在當(dāng)今的網(wǎng)絡(luò)世界里,使用私網(wǎng)IP地址的網(wǎng)絡(luò)設(shè)備的數(shù)量,要遠(yuǎn)遠(yuǎn)大于擁有合法Internet網(wǎng)IP地址的設(shè)備數(shù)量。為了能夠讓這些設(shè)備可以訪問(wèn)私網(wǎng)外部的資源,NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)技術(shù)也就應(yīng)運(yùn)而生。私網(wǎng)內(nèi)部設(shè)備試圖訪問(wèn)外部網(wǎng)絡(luò)時(shí)NAT技術(shù)可以將其私有的IP地址轉(zhuǎn)換成合法的IP地址。在運(yùn)用NAT的同時(shí),一般還會(huì)運(yùn)用動(dòng)態(tài)的端口轉(zhuǎn)換(PAT)技術(shù),以解決合法IP地址緊缺的問(wèn)題。這種技術(shù)實(shí)現(xiàn)方法是,對(duì)于一個(gè)私網(wǎng)中的所有設(shè)備,共用一個(gè)或多個(gè)合法的IP地址作為出口地址,只有在設(shè)備請(qǐng)求連接外部網(wǎng)絡(luò)時(shí),才為這個(gè)請(qǐng)求分配一個(gè)合法IP地址和一個(gè)端口號(hào),來(lái)進(jìn)行外部連接;當(dāng)這個(gè)請(qǐng)求結(jié)束時(shí),端口號(hào)和IP地址也就隨即被收回。NAT與PAT經(jīng)常被同時(shí)使用,稱為網(wǎng)絡(luò)地址端口轉(zhuǎn)換(NAPT)。NAPT的運(yùn)用,為IP網(wǎng)絡(luò)帶來(lái)了很多好處:如緩解了IPv4構(gòu)架下Internet網(wǎng)絡(luò)的IP地址緊張問(wèn)題,提高了私有網(wǎng)絡(luò)內(nèi)部的安全性和可管理性。由于具有這些優(yōu)點(diǎn),NAPT被大量運(yùn)用到各種私網(wǎng)網(wǎng)關(guān)設(shè)備上,它是絕大多數(shù)網(wǎng)絡(luò)路由器設(shè)備的一個(gè)基本功能,也是網(wǎng)絡(luò)防火墻功能的重要組成部分。
2. NAPT影響軟交換的問(wèn)題
?。?)NAT問(wèn)題
現(xiàn)在假設(shè)我們具有一個(gè)如圖1所示的軟交換網(wǎng)絡(luò),在這個(gè)網(wǎng)絡(luò)中,終端A與終端B在私網(wǎng)內(nèi),只有私網(wǎng)IP地址,而終端C具有獨(dú)立的合法IP地址。為了便于描述,假設(shè)所有終端都是SIP終端,軟交換與終端間的通訊也采用標(biāo)準(zhǔn)的SIP協(xié)議。若終端A向終端B發(fā)起呼叫請(qǐng)求,則會(huì)產(chǎn)生一個(gè)如圖2所示的消息包,這個(gè)消息包在經(jīng)過(guò)路由器的NAPT后,變成圖3所示的消息包(其中1050為NAPT動(dòng)態(tài)分配的端口號(hào))。
由于終端B在向軟交換注冊(cè)時(shí),通過(guò)SIP協(xié)議層的注冊(cè)消息告訴軟交換的是它的私有地址,并且在終端B沒(méi)有主動(dòng)對(duì)外發(fā)起連接請(qǐng)求時(shí),防火墻不會(huì)為其分配可被訪問(wèn)的IP地址和端口號(hào),因此軟交換根本無(wú)法將INVITE消息發(fā)送給終端B,呼叫無(wú)法接續(xù)。
?。?)PAT問(wèn)題
假設(shè)由終端A向終端C發(fā)起呼叫,由于終端C上面沒(méi)有防火墻或路由器,軟交換可以順利地把INVITE消息包轉(zhuǎn)發(fā)到終端C,這個(gè)消息中攜帶SDP信息,用于終端間的媒體協(xié)商。媒體協(xié)商的主要目的就是選擇合適的編解碼器,并建立RTP媒體流的連接。由終端A發(fā)送的INVITE消息中攜帶的SDP信息內(nèi)容如圖4所示(其中10006是終端A建立RTP連接的端口號(hào))。
圖4 INVITE消息中的SDP信息
終端C收到SDP信息后,就會(huì)試圖與192.168.0.3:10006建立RTP連接,很明顯這是一個(gè)私網(wǎng)內(nèi)部的地址,因此通話也自然無(wú)法建立起來(lái)。
從以上分析可以看出,NAPT影響到軟交換通信的主要有兩方面:一方面,私網(wǎng)內(nèi)設(shè)備都采用內(nèi)部IP地址,雖然經(jīng)過(guò)NAPT可以將IP層的地址轉(zhuǎn)換為外部地址,但是對(duì)于更上面的應(yīng)用層消息中的私有IP地址卻無(wú)能為力,稱作NAT問(wèn)題。另一方面,私網(wǎng)設(shè)備只是在向外部主動(dòng)發(fā)起連接時(shí),才會(huì)被分配到合法IP和端口號(hào)。若不做特殊處理,設(shè)備對(duì)外部網(wǎng)絡(luò)來(lái)說(shuō)是不可見(jiàn)的,也無(wú)法接受軟交換發(fā)來(lái)的呼叫請(qǐng)求,這個(gè)可以稱作PAT問(wèn)題?;赟IP協(xié)議的問(wèn)題如此,當(dāng)軟交換與終端間使用其它協(xié)議如H.323,MGCP或H.248協(xié)議時(shí),類似的問(wèn)題也同樣存在。
三、一種私網(wǎng)穿越問(wèn)題的解決方法
1. 解決NAPT穿越問(wèn)題的各種方法
?。?)NAT/ALG方法
此方法通過(guò)在防火墻或路由器上,增加對(duì)VoIP相關(guān)的應(yīng)用層協(xié)議的識(shí)別和處理能力,來(lái)實(shí)現(xiàn)私網(wǎng)穿越。這種方案比較直觀,但是最大缺點(diǎn)就是對(duì)于用戶來(lái)說(shuō),必須更換或升級(jí)他們的路由器或防火墻,并且隨著相關(guān)協(xié)議的發(fā)展和擴(kuò)充,設(shè)備也必須跟著進(jìn)行升級(jí)。
?。?)為私網(wǎng)設(shè)備設(shè)置代理的方法
這種方法不用對(duì)用戶設(shè)備做任何改動(dòng),僅在運(yùn)營(yíng)軟交換網(wǎng)絡(luò)的局端增加一種特殊的Proxy設(shè)備,就可以實(shí)現(xiàn)私網(wǎng)的穿越。筆者認(rèn)為,這種技術(shù)與前面的技術(shù)相比,具有更大的優(yōu)越性。這種Proxy,在進(jìn)行信令的代理和轉(zhuǎn)換的同時(shí),也進(jìn)行媒體流的代理,我們暫且稱其為NAT/FW Proxy。
?。?)其它的一些方案
其它穿越私網(wǎng)的方案,還有MIDCOM 方案、STUN方案、TURN方案等,這些方案與NAT/ALG方案類似,不是需要升級(jí)路由器、防火墻,就是需要升級(jí)終端設(shè)備。
2. 用NAT/FW Proxy解決私網(wǎng)PAT問(wèn)題
以圖1為例,將NAT/FW Proxy設(shè)備添加到軟交換網(wǎng)絡(luò)中,形成的如圖5所示的網(wǎng)絡(luò)結(jié)構(gòu)。添加了NAT/FW Proxy設(shè)備以后,所有私網(wǎng)網(wǎng)關(guān)(路由器或防火墻)后面的終端設(shè)備,都要將注冊(cè)地址從軟交換設(shè)備地址更改為NAT/FW Proxy設(shè)備的IP地址。而NAT/FW Proxy設(shè)備與軟交換設(shè)備之間的交互可以采用SIP,MGCP或者H.248等協(xié)議,這與其代理的設(shè)備類型有關(guān)。
一方面,在設(shè)備向NAT/FW Proxy發(fā)出注冊(cè)信息后,NAT/FW Proxy會(huì)為設(shè)備分配一個(gè)代理信令端口,然后用NAT/FW Proxy的地址替換原注冊(cè)信息中的終端地址(Contact域),并通過(guò)這個(gè)端口向軟交換發(fā)送。這樣,今后無(wú)論是終端發(fā)向軟交換的信令消息,還是軟交換發(fā)向終端的信令消息,都會(huì)經(jīng)過(guò)NAT/FW Proxy,以便于其對(duì)這些信令進(jìn)行特殊處理。另一方面,當(dāng)私網(wǎng)中的終端設(shè)備向NAT/FW Proxy設(shè)備發(fā)出注冊(cè)消息時(shí),安裝在私網(wǎng)外層的私網(wǎng)網(wǎng)關(guān)就會(huì)給這個(gè)連接隨機(jī)分配一個(gè)合法IP地址與端口號(hào),形成一個(gè)“窗口”。NAT/FW PROXY設(shè)備收到注冊(cè)消息后,只要能夠設(shè)法保持這個(gè)“窗口”一直開(kāi)放,然后把這個(gè)端口號(hào)與在設(shè)備上分配的代理端口號(hào)綁定,就相當(dāng)于建立了一條設(shè)備到軟交換之間透明的信令通道,也就解決了NAPT中的PAT問(wèn)題。
保持這個(gè)“窗口”的方法,根據(jù)終端的不同也會(huì)有所區(qū)別。比如對(duì)于SIP終端,可以設(shè)置一個(gè)較小的注冊(cè)有效期,這樣終端設(shè)備就會(huì)不斷的向NAT/FW Proxy發(fā)出注冊(cè)消息。對(duì)于MGCP終端,可以讓NAT/FW Proxy向其不斷發(fā)送AUEP消息,然后由終端發(fā)相應(yīng)消息來(lái)保持“窗口”的開(kāi)放。無(wú)論哪種方式,都要保證終端發(fā)送消息的時(shí)間間隔要小于“窗口”的開(kāi)放時(shí)限。
3. 用NAT/FW Proxy解決私網(wǎng)NAT問(wèn)題
假設(shè)所有終端都是SIP終端,軟交換與終端間的通訊也采用標(biāo)準(zhǔn)的SIP協(xié)議。如圖5中的配置,由于終端A和終端B都是私網(wǎng)中的設(shè)備,因此在向NAT/FW Proxy注冊(cè)時(shí)在私網(wǎng)設(shè)備中被分配了訪問(wèn)外部的端口號(hào),假設(shè)分別為123.44.55.11:1050(終端A)和123.44.55.22:1060(終端B),同時(shí)在NAT/FW Proxy上都被分配了代理信令端口,假設(shè)分別為123.44.55.77:1001(終端A)和123.44.55.77:1002(終端B)。現(xiàn)在由A向B發(fā)起呼叫,INVITE消息通過(guò)私網(wǎng)網(wǎng)關(guān)后到達(dá)NAT/FW PROXY,NAT/FW PROXY會(huì)將這條信令進(jìn)行代理轉(zhuǎn)換,并發(fā)給軟交換。如圖6、圖7所示:
軟交換在收到INVITE消息并做相應(yīng)處理后,準(zhǔn)備將其轉(zhuǎn)發(fā)給B,由于B也是通過(guò)NAT/FW Proxy代理注冊(cè)到軟交換的,因此發(fā)送的消息如圖8所示,由NAT/FW PROXY接收并做代理轉(zhuǎn)換后,發(fā)送給B外層的路由器或防火墻,轉(zhuǎn)換結(jié)果如圖9所示。
防火墻通過(guò)查詢自己維護(hù)的連接列表,就可以把這條信令消息正確的發(fā)送給終端B了。呼叫接續(xù)流程的其它信令消息,轉(zhuǎn)接方式與INVITE類似。
4. 用NAT/FW Proxy實(shí)現(xiàn)媒體流的代理連接
以圖5中終端A呼叫終端C為例,當(dāng)A發(fā)出INVITE消息并到達(dá)NAT/FW Proxy后,NAT/FW Proxy會(huì)為A分配兩個(gè)RTP代理端口,一個(gè)是呼出代理端口,記為A1,另一個(gè)是呼入代理端口,記為A2。NAT/FW Proxy使用A2的端口信息替換原INVITE消息中SDP包中對(duì)RTP端口的描述,并發(fā)給軟交換。當(dāng)軟交換發(fā)回終端C的SDP信息時(shí),NAT/FW Proxy記錄終端C的實(shí)際RTP端口,并用A1的端口信息進(jìn)行替換,發(fā)給終端A。當(dāng)呼叫建立后,終端A一旦開(kāi)始發(fā)送RTP包,就會(huì)在私網(wǎng)設(shè)備上建立一個(gè)臨時(shí)的RTP“窗口”,只要媒體流不斷在發(fā)送(在沒(méi)有話音時(shí)終端也應(yīng)該發(fā)送舒適噪聲的RTP包),這個(gè)“窗口”就一直打開(kāi)。由于設(shè)備A得到的對(duì)端RTP端口實(shí)際是NAT/FW Proxy上的呼出代理端口A1,因此RTP包會(huì)發(fā)向NAT/FW Proxy,NAT/FW Proxy將RTP包再發(fā)給終端C真正的RTP端口。同樣,終端C得到的A的RTP端口實(shí)際是NAT/FW Proxy上的代理端口A2,所以RTP包會(huì)發(fā)向A2,然后由NAT/FW Proxy通過(guò)私網(wǎng)設(shè)備上的臨時(shí)RTP“窗口”將RTP包轉(zhuǎn)發(fā)給終端A。
當(dāng)兩個(gè)設(shè)備分別在兩個(gè)防火墻內(nèi),且都注冊(cè)到一個(gè)NAT/FW Proxy上時(shí),如圖5中終端A呼叫終端B的情況,由于NAT/FW Proxy可以知道兩個(gè)設(shè)備都是注冊(cè)在自己上面的,因此并不需要為每個(gè)終端都分配兩個(gè)代理端口,而只用分配一對(duì)端口。如A1和B1,其中A1既作為終端A的呼出端口,也做為終端B的呼入端口,而B(niǎo)1既做為終端B的呼出端口,也做為終端A的呼入端口。如果終端A和終端B還是處于同一個(gè)私網(wǎng)網(wǎng)關(guān)設(shè)備之下,NAT/FW Proxy完全可以不為它們分配任何代理端口,而是讓它們?cè)谒骄W(wǎng)內(nèi)部直接建立RTP流的連接。
5. 其它問(wèn)題的考慮
以上對(duì)于使用NAT/FW Proxy來(lái)實(shí)現(xiàn)私網(wǎng)穿越的方法的描述,都是基于使用SIP協(xié)議的終端,但實(shí)際上這種方法并不僅限于SIP終端,當(dāng)終端使用H.248,MGCP等協(xié)議時(shí),只要有對(duì)應(yīng)的NAT/FW Proxy支持,也同樣可以實(shí)現(xiàn)私網(wǎng)穿越。
從構(gòu)架上看,需要進(jìn)行私網(wǎng)穿越代理的設(shè)備非常多,一臺(tái)NAT/FW Proxy無(wú)法處理時(shí),完全可以部署多個(gè)NAT/FW Proxy,并讓這些設(shè)備注冊(cè)到不同的NAT/FW Proxy上。如配置一臺(tái)NAT/FW Proxy處理SIP終端的私網(wǎng)穿越,配置兩臺(tái)NAT/FW Proxy來(lái)處理MGCP終端的私網(wǎng)穿越等。
四、在軟交換體系中的擴(kuò)展應(yīng)用
使用NAT/FW Proxy的構(gòu)架,除了能夠?qū)崿F(xiàn)私網(wǎng)穿越的功能外,只要稍加擴(kuò)展,還可以為軟交換體系帶來(lái)其他一些意外收獲。
1.可以保護(hù)軟交換設(shè)備免遭攻擊
在正常的配置情況下,軟交換設(shè)備的地址對(duì)于所有用戶都是可見(jiàn)的,這時(shí)如果有人惡意的對(duì)軟交換發(fā)起某些攻擊,比如DoS攻擊,是比較難以防范的。但是如果要求所有終端都注冊(cè)到NAT/FW Proxy設(shè)備上,通過(guò)NAT/FW Proxy的代理與軟交換發(fā)生聯(lián)系,那么軟交換地址對(duì)外就完全是不可見(jiàn)的了,并且由于NAT/FW Proxy設(shè)備的成本相對(duì)低廉,可以配置多個(gè),即使遭到攻擊,只要讓終端上更換一個(gè)NAT/FW Proxy進(jìn)行注冊(cè)就可以了。
2.防止通信欺詐行為
一般情況下,一旦軟交換為雙方建立起呼叫,那么雙方終端的地址、端口、媒體能力等就完全向?qū)Ψ酵该骰?,這時(shí)如果有人使用一些支持點(diǎn)對(duì)點(diǎn)連接的終端,繞過(guò)軟交換而直接向?qū)Ψ桨l(fā)起連接,則軟交換就無(wú)法進(jìn)行計(jì)費(fèi),也就會(huì)出現(xiàn)通信欺詐行為了。如果按照1中所述,把所有終端都注冊(cè)到NAT/FW Proxy上,那么終端只能通過(guò)NAT/FW Proxy上的代理端口進(jìn)行交互,終端之間透明的只有對(duì)方的號(hào)碼,這樣可以在很大程度上避免欺詐行為的發(fā)生。
3.可以使媒體流授控
假設(shè)所有終端都注冊(cè)在NAT/FW Proxy上,則終端之間的媒體流也都要經(jīng)過(guò)NAT/FW Proxy進(jìn)行轉(zhuǎn)接,如果增強(qiáng)NAT/FW Proxy的功能,就完全有可能解決在軟交換體系中媒體流不授控的問(wèn)題,如可以實(shí)現(xiàn)按流量計(jì)費(fèi),可以控制用戶帶寬防止未授權(quán)的媒體流連接(比如視頻媒體流),可以獲得媒體流的QoS信息,甚至可以滿足國(guó)家安全部門(mén)對(duì)敏感通話監(jiān)聽(tīng)的要求。
但是,要實(shí)現(xiàn)如上的這些好處,也是要付出代價(jià)的,那就是整個(gè)軟交換網(wǎng)絡(luò)的媒體流都要匯聚到各個(gè)NAT/FW Proxy所在的位置,大大增加了這部分網(wǎng)絡(luò)的負(fù)擔(dān),同時(shí)在一定程度上也減弱了軟交換由于控制與承載分離而帶來(lái)的許多靈活性。
五、結(jié)束語(yǔ)
本文介紹了一種通過(guò)設(shè)置特殊的代理服務(wù)器,來(lái)解決軟交換網(wǎng)絡(luò)中私網(wǎng)穿越問(wèn)題的方法,現(xiàn)在這種方法已經(jīng)開(kāi)始被應(yīng)用。相信隨著軟交換網(wǎng)絡(luò)的規(guī)模不斷擴(kuò)大,這種私網(wǎng)穿越的方法會(huì)被越來(lái)越多的應(yīng)用到軟交換網(wǎng)絡(luò)當(dāng)中去。