天天看點

SIP通過BGW穿越防火牆的問題

       今天,某個廠商和我聊了SIP穿越防火牆的問題。,所謂的BGW是指應用層網關,這是穿越防火牆的一種方式。在他們的BGW上,隻能支援SIP的INVITE動态申請端口,并不支援Re-inivite,也就是說,SIP在話路建立後,申請端口後,就需要話路一直占有這個端口,過了一段時間間隔之後,如果不在使用這個端口,端口就會被釋放,有可能被另外一個端口使用。        為了規避情況的出現,在保持的場景下,一旦發生穿越防火牆的問題下,廠商使用了有别于标準SIP定義的方式。傳統方式下,保持有兩種實作方式,一種是發送位址為0.0.0.0的SDP描述;一種是發送媒體屬性為inactive的SDP描述。但在這兩種情況下,事實上終端是不發送媒體流的。一旦保持時間過長,BGW上的申請的端口會被釋放,導緻媒體流接回的Reinvite發送後,穿越防火牆失敗。        為了解決這個問題,廠商的方案是保持發送的Re-invite的位址是127.0.0.1。那麼如果不需要通過防火牆,那麼對端得到這個位址後,不發送媒體流。那麼如果通過BGW,BGW将這個位址轉換成BGW位址,是以在保持後,對端一直向BGW發送媒體流,保證BGW上通道一直被占用,直到對端挂斷。  

繼續閱讀