service
通信服務(wù)
您現(xiàn)在的位置:服務(wù)詳情

電信SIP業(yè)務(wù)
電信SIP業(yè)務(wù)
中國是特色社會(huì)主義國家,其特色表示在社會(huì)生活的方方面面,其中包括我們的三種3G標(biāo)準(zhǔn),電信和聯(lián)通的固網(wǎng)布局,也體現(xiàn)在各式各樣的網(wǎng)絡(luò)接入。為滿足特色的需要,我們需要完成具有特色社會(huì)主義的服務(wù)平臺(tái),至少滿足以下需求:
1.滿足最基本條件:負(fù)載均衡、冗余備份、穩(wěn)定性、可用性、可擴(kuò)展性。
2.中國網(wǎng)絡(luò)特點(diǎn):因歷史原因形成的天然網(wǎng)絡(luò)屏障,各種二級(jí)運(yùn)營商林立,各種封殺,各種端口限制、流量限制、協(xié)議封殺等,以及各種網(wǎng)絡(luò)設(shè)備、防火墻的奇形怪狀問題。
下面我們直接從整個(gè)系統(tǒng)的架構(gòu)開始分析:
SIP服務(wù)架構(gòu)采用兩層模式,相對(duì)用戶而言,第一層是SIP Outbound Proxy,下面簡稱OB。OB需根據(jù)運(yùn)營商和地域不同,部署在全國各地,具體部署策略一方面是需要考慮成本,另一方面需要考慮所部點(diǎn)的覆蓋面,這也決定了用戶登錄時(shí)OB服務(wù)器的分配策略。
其主要作用是:
1.扛用戶連接,根據(jù)之前博文描述《移動(dòng)互聯(lián)網(wǎng)SIP在線狀態(tài)方案分析》建議用戶與服務(wù)器之間使用TCP連接,因此OB首要任務(wù)是接受用戶請(qǐng)求。
2.連接?;睿还苁褂?/span>TCP還是UDP,都需要進(jìn)行?;?,具體方案可參見前博文《移動(dòng)互聯(lián)網(wǎng)SIP在線狀態(tài)方案分析》。
3.轉(zhuǎn)發(fā)服務(wù),OB是outbound proxy服務(wù),只是接收請(qǐng)求并根據(jù)SIP request-line進(jìn)行轉(zhuǎn)發(fā)。
第二層是SIP APP Server, 這些是應(yīng)用服務(wù)器的總稱,可根據(jù)業(yè)務(wù)需要添加各類應(yīng)用服務(wù)器,比如用于IM的聊天服務(wù)器,即所有MESSAGE消息通過此服務(wù)器進(jìn)行轉(zhuǎn)發(fā);用于視頻通信的SIP Proxy;用于處理自助服務(wù)的B2BUA;也可以添加用于支持PSTN的計(jì)費(fèi)和路由服務(wù)等。下面簡稱APP。因OB是部署到不同地域、不同運(yùn)營商的網(wǎng)絡(luò)中,為保證OB與APP的連接速度,需要將APP部署BGP機(jī)房。同時(shí)APP服務(wù)器不需要直接向用戶服務(wù),為保證APP服務(wù)器的安全,需要添加防火墻并設(shè)置白名單。
通過兩層架構(gòu),將核心業(yè)務(wù)層與用戶分離開來,SIP 消息的傳輸是先到用戶已連接的OB,然后OB根據(jù)不同的業(yè)務(wù)轉(zhuǎn)到對(duì)應(yīng)的APP,如果是需要轉(zhuǎn)到被叫的,APP服務(wù)先從DB中獲取被叫的Location信息,然后將消息轉(zhuǎn)發(fā)到被叫所在OB,OB再轉(zhuǎn)發(fā)給最終用戶進(jìn)行處理。由此帶來的好處就是高擴(kuò)展性,APP可根據(jù)業(yè)務(wù)需求進(jìn)行無限擴(kuò)展,同時(shí)可以對(duì)APP進(jìn)行熱替換升級(jí),而不影響用戶正常使用。以下討論一些實(shí)際問題:
1.OB和APP服務(wù)器的分配策略:
通常有兩種方法,一是有一個(gè)配置服務(wù)器,由用戶主動(dòng)去取配置,此時(shí)就可根據(jù)用戶的IP信息獲取對(duì)應(yīng)的服務(wù)器。不過此種方法通常不夠準(zhǔn)確,一些小的借網(wǎng)運(yùn)營商出口通常不在當(dāng)?shù)爻鞘?,如果是移?dòng)終端建議加上手機(jī)號(hào)碼和GPS經(jīng)緯度綜合計(jì)算。同此配置服務(wù)也需要收集OB和APP的負(fù)載信息及存活信息,以實(shí)現(xiàn)動(dòng)態(tài)分配和負(fù)載均衡。注意不要讓配置服務(wù)變成一個(gè)單點(diǎn)。
另一種方法是使用DNS動(dòng)態(tài)解析,此方法在網(wǎng)上已有較多介紹,此處就不再敷述。其分配方法可參考以上策略。
2.OB服務(wù)端口選擇:
不建議使用默認(rèn)5060端口,較多的防火墻會(huì)對(duì)5060端口上數(shù)據(jù)進(jìn)行過濾。建議使用如443這樣的端口,多數(shù)防火墻不會(huì)去解析此端口數(shù)據(jù)。
3.應(yīng)對(duì)端口封殺
較多的企業(yè)辦公網(wǎng)絡(luò)都有端口限制,并且限制規(guī)則各式各樣,針對(duì)此類問題,在OB上監(jiān)聽多個(gè)常用端口,客戶端先嘗試一個(gè)默認(rèn)端口(解決80%的問題),如果失敗再啟用多端口檢測,連接成功哪個(gè)就用哪個(gè)。
4.應(yīng)對(duì)攻擊
這里提到的攻擊是指來自外部的,比如屢試不爽的DDOS攻擊。當(dāng)遇到這種情況那就只能自求多福了,但此架構(gòu)分為兩層,對(duì)攻擊者而言只能針對(duì)某一區(qū)域的OB服務(wù)器攻擊,最壞情況就是某區(qū)域停止服務(wù),并不會(huì)導(dǎo)致整個(gè)系統(tǒng)全部癱瘓。
5.用戶有效性
圖中的一個(gè)用戶有兩個(gè)連接分別連到兩個(gè)OB服務(wù)是指一個(gè)SIP UA可以有多個(gè)連接,分別連接到不同的OB,且兩個(gè)連接都是有效的,這是通過sip contact header中的 reg-id來標(biāo)識(shí)的,具體用法見RFC5626。但由此帶來的流量也Double了,是否有用就需要根據(jù)業(yè)務(wù)情況權(quán)衡了。