【1】FreeSWITCH 是什么?
FreeSWITCH是一個開源的電話交換平台。
世界上第一個跨平台的、伸縮性極好的、免費的、多協議的電話軟交換平台。
從技術上講,FreeSWITCH是一個B2BUA。
FreeSWITCH是一個背靠背的用戶代理,用來幫助通信的雙方進行實時的語音視頻通信。
【2】FreeSWITCH背靠背用戶代理
(1)代理服務器(Proxy Server)
設想Bob和Alice是經人介紹認識的,而他們還不熟悉,Bob想請Alice吃飯就需要一個中間人(M)傳話,而這個中間人就叫代理服務器。
(2)重定向服務器(Redirect Server)
它以類似於這樣的方式工作──中間人M告訴Bob,我也不知道Alice在哪里,但我愛人知道,要不然我告訴你我愛人的電話,你直接問她吧,我愛人叫W。
這樣,M就成了一個重定向服務器(把Bob對他的請求重定向到他的愛人,這樣Bob接下來要直接聯系他的愛人),而他的愛人W是真正的代理服務器。
這兩種服務器都是UAS,它們主要是提供一對欲通話的UA之間的路由選擇功能。
(3)注冊服務器(Register Server)
試想這樣一種情況:Alice還是個學生,沒有自己的手機,但它又希望Bob能隨時找到她。於是,
當她在學校時就告訴中間人M說她在學校,如果有事找她可以打宿舍的固定電話;
如果她要回家,也通知M說有事打家里電話;
或許某一天她要去姥姥家,也要把她姥姥家的電話告訴M。
總之,只要Alice換一個新的位置,它就要向M重新“注冊”,以讓M能隨時找到她,這時候M就相當於一個注冊服務器。
(4)背靠背用戶代理(Back-to-Back UA,B2BUA)。
需要指出,其實RFC 3261並沒有定義B2BUA的功能,它只是一對UAS和UAC的串聯。
FreeSWITCH就是一個典型的B2BUA,為了理解B2BUA,我們來看上述故事的另一個版本。M和W是一對恩愛夫妻。M認識Bob而W認識Alice。
M和W有意撮合兩個年輕人,但見面時由於兩人太靦腆而互相沒留電話號碼。
事后Bob想知道Alice對他感覺如何,於是打電話問M,M不認識Alice,就轉身問愛人W(注意這次M沒有直接把W的電話給Bob)。
W緊接着打電話給Alice,Alice說印象還不錯,W就把這句話告訴M,M又轉過身告訴Bob。
這樣,M和W一個面向Bob,一個對着Alice,他們兩個合在一起,稱為B2BUA。
其實這里UAC和UAS的概念也不是那么重要,重要的是要理解這個背靠背的用戶代理。
因為事情還沒有完,Bob一聽說Alice對他印象還不錯,開心得不得了,便想請抽空請Alice吃飯,他將這一想法告訴M,M告訴W,W又告訴Alice。
然后Alice問去哪里吃啊,W又只好問M,M再問Bob……在這對年輕人掛斷電話之前,M和W只能“背對背”不停地工作。
從圖B2BUA可以看出,四個人其實全是UA。
當然,雖然FreeSWITCH是B2BUA,但也可以經過特殊的配置,實現一些代理服務器和重定向服務器的功能,甚至也可以從中間劈開,兩邊分別作為一個普通的UA來工作。
這沒有什么奇怪的,在SIP世界中,所有UA都是平等的。具體到實物,則M和W就組成了實現軟交換功能的交換機,它們對外說的語言是SIP,而在內部它們使用自己家的語言溝通。
Bob和Alice就分別成了我們常見的軟電話,或者硬件的SIP話機。
Good Good Study, Day Day Up.
順序 選擇 循環 總結