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