天天看點

PJNATH介紹 -- 開源的用于NAT穿透的ICE, STUN和TURN

ICE是什麼?

總之,我相信現在是支援這個協定的好時機。ICE一周前通過了WGLC-ed (Work Group Last Call),而且STUN草案也日趨完善(TURN稍微落後一點點)。實際上,我覺得時機是完美的,因為在它們通過RFC-ed (this is not to say that we’re expert in any kind!)之前,我們可以幫助發現這些文檔中的漏洞。我們早點把這些協定實作出來并發現其中的問題,協定也可以及時做相應的改動。

PJNATH – NAT Traversal Helper Library

PJNATH是PJ項目中一個新的庫,它與PJLIB,PJSIP,PJMEDIA這些庫處于同一層次。它由如下部分組成:

一個ICE實作,包括兩部分:傳輸獨立的ICE會話和ICE流傳輸(同一些套接字聯系在一起的ICE)。

将來,我們可能把諸如UPnP或SOCKS這樣的NAT穿透協定也加進來。

為了支援ICE,PJMEDIA和PJSUA這兩個庫需要更新:

在PJMEDIA中,我們添加了一個新的媒體傳輸,叫做pjmedia_ice_trans。

在PJSUA庫中,STUN設定已經被從傳輸設定移動全局設定,并且在媒體設定中添加了使能ICE的設定選項。

它可以工作了嗎?

我想,是的。

我試着在同一個NAT之後運作兩個pjsua,本地位址對被使用。我試着在不同的NAT之後運作兩個pjsua,公共位址對被使用。是以看起來它是可以工作了。

但是這些天測試ICE最主要的困難之一是沒有其它可以免費擷取的ICE實作,是以雖然PJNATH中的實作看起來可以工作,并且它嚴格遵守ICE-15,但在它與其它的實作進行對話之前我們還是不能确定它的相容性到底怎樣。

繼續閱讀