PJNATH介绍 -- 开源的用于NAT穿透的ICE, STUN和TURN

本文涉及的产品
公网NAT网关,每月750个小时 15CU
简介: 原文地址:http://blog.pjsip.org/2007/04/06/introducing-pjnath-open-source-ice-stun-and-turn/ ICE是什么? 对于那些不熟悉ICE的人而言,ICE可能是一种最全面的用于穿透NAT和多媒体通信的方法。

原文地址:http://blog.pjsip.org/2007/04/06/introducing-pjnath-open-source-ice-stun-and-turn/

ICE是什么?

对于那些不熟悉ICE的人而言,ICE可能是一种最全面的用于穿透NAT和多媒体通信的方法。它提供了一种找到两个终端之间最好路径的方法,它还解决了NAT所带来的各种各样的问题,比如两个终端处在同一个NAT后面(and no hairpin is available),两个终端都处在对称NAT后面(在这种情况下,将使用一个中继器)。详情请参看draft-ietf-mmusic-ice-15.txt

这是个了不起的协议!首先,它不靠自身来运行,ICE使用STUN(Session Traversal Utlities for NAT, 其最新的草案是draft-ietf-behave-rfc3489bis-06)协议来做连通性检测。对于转播,它使用TURN(Obtaining Relay Addresses from Simple Traversal Underneath NAT,其最新的草案是draft-ietf-behave-turn-03)来做同样的检测。这三者加起来,总共有103+61+44=208页协议文档。我想这就为什么是"Simple"这个词被从STUN这个首字母缩略语中移除的原因。

总之,我相信现在是支持这个协议的好时机。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 – Open Source NAT Traversal Helper supporting STUN, TURN, and ICE(点击该链接可以转到相应的文档)

PJNATH是PJ项目中一个新的库,它与PJLIB,PJSIP,PJMEDIA这些库处于同一层次。它由如下部分组成:

将来,我们可能把诸如UPnP或SOCKS这样的NAT穿透协议也加进来。

为了支持ICE,PJMEDIA和PJSUA这两个库需要升级:

  • 在PJMEDIA中,我们添加了一个新的媒体传输,叫做pjmedia_ice_trans。
  • 在PJSUA库中,STUN设置已经被从传输设置移动全局设置,并且在媒体设置中添加了使能ICE的设置选项。

它可以工作了吗?

我想,是的。

我试着在同一个NAT之后运行两个pjsua,本地地址对被使用。我试着在不同的NAT之后运行两个pjsua,公共地址对被使用。所以看起来它是可以工作了。

此外,从上周开始,我一直在做测试,发现并解决了一些bugs。而且在测试过程中,我发现协商很快就完成了,对于不同的ADSL线上的两个终端,这个时间大约是100ms,即便是SDP应答被代理延迟(ICE在SDP应答被调用者收到之前就可以开始检查)。

但是这些天测试ICE最主要的困难之一是没有其它可以免费获取的ICE实现,所以虽然PJNATH中的实现看起来可以工作,并且它严格遵守ICE-15,但在它与其它的实现进行对话之前我们还是不能确定它的兼容性到底怎样。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
目录
相关文章
|
7天前
|
网络协议 安全 网络架构
NAT穿透技术、穿透原理和方法
【10月更文挑战第19天】 NAT穿透技术、穿透原理和方法
38 7
|
6月前
|
网络安全
百度搜索:蓝易云【NAT穿透详解】
综上所述,NAT 穿透是一种克服使用 NAT 的网络环境下连接障碍的技术,常用的方法包括端口映射和反向代理。通过这些方法,可以实现与位于 NAT 后面设备的通信,并允许外部网络与内部设备进行连接。
67 0
|
算法 C#
《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
118 0
|
Web App开发 网络协议 网络架构
WebRTC 之 NAT 穿透
网络地址转换协议。由于IPv4地址过于稀缺,不足以分配给每一台设备一个IP,本就不多的IP地址被列强占据大部分,再扣去保留地址,剩下的寥寥无几。不过好在有NAT,可以支撑我们能在因特网中冲浪
582 0
|
网络协议 网络架构 索引
P2P之UDP穿透NAT的原理与实现 - 增强篇
为了方便操作,推荐你使用一个远程登陆软件,可以直接在一台机器上操作所有的相关的计算机,这样很方便,一个人就可以完成所有的工作了。呵呵,本人就是这么完成的。欢迎有兴趣和经验的朋友来信批评指正,共同进步。
3181 0
|
网络协议 SDN 网络架构
用TCP穿透NAT(TCP打洞)的实现
1. TCP穿透原理:     我们假设在两个不同的局域网后面分别有2台客户机A和 B,AB所在的局域网都分别通过一个路由器接入互联网。互联网上有一台服务器S。     现在AB是无法直接和对方发送信息的,AB都不知道对方在互联网上真正的IP和端口, AB所在的局域网的路由器只允许内部向外主动发送的信息通过。
4509 0
|
Web App开发 网络协议 算法
NAT 穿透
之前在WebRTC简介中,我们简单地讲了WebRTC中是如何进行NAT穿透的,但是我觉得当时讲的还不够详细,所以打算通过此文更加深入的总结NAT穿透技术,其中涉及到NAT,STUN协议,TURN协议,ICE协议。
《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
c#实现P2P文件分享与传输系统  二、设计 - 续(NAT穿透)   首先要抱歉,因为这些日子较忙,没有写文章,这个系列拖了很久,现在开始继续。      上一篇文章介绍了p2p系统Tracker Server和Peer,以及文件描述符,本篇接着讲NAT Server的部分。
1354 0