3. 相关技术说明

3.1. P2P技术

  IT 界通用的 P2P 概念为:点对点技术(peer-to-peer, 简称 P2P )又称对等互联网络技术,是一种网络新技术,依赖网络中参与者的计算能力和带宽,而不是把依赖都聚集在较少的几台服务器上。P2P 网络通常用于通过 Ad Hoc 连接来连接节点。这类网络可以用于多种用途,各种档案分享软件已经得到了广泛的使用。P2P 技术也被使用在类似 VoIP 等实时媒体业务的数据通信中。

  常见的应用了P2P技术的产品,大致可分为两类。

  一类是资源分享类,这一类产品的最大特点是只提供静态的资源,这些资源都是事先已经存在的,可以通过分片技术提供网状的 C/S 结构。如 BT 下载,当大量用户下载同一个资源时,每个用户既可以是资源的提供者,又可以是资源的获得者,再如 PPTV、PPS 为类电影播放软件,当大量用户点播同一部电影时,每个用户既是从别的用户那里下载媒体数据的客户端又是给其它用户提供数据的服务端;

  第二类是实时通信类,这类产品主要是通过 NAT 穿透技术,将原本无法建立通信的两个端连接起来,实现实时通信,如即时通信软件。

  本产品属于第二类,通过 P2P 技术,在客户端与设备端间建立实时通信的连接,传输各类交互、控制消息及音视频媒体流。

  使用 P2P,将带来以下好处:

  • 唯一 ID 号(可加访问密码)取代繁杂的 IP 和端口映射,不管内网外网,统一通过 ID 号进行寻址访问,进行双向交互。
  • 真正实现物联网终端即插即用
  • 设备端和客户端直接通讯,不需要通过服务器中转,私密性更好
  • 节约 95% 以上的服务器流量,运营成本大大降低
  • 由于是端到端直接通讯,减少了服务器转发时延,延时更小,实时性更好

3.2. 可靠传输

  众所周知,UDP 协议是不可靠传输协议,当 UDP 包数据在互联网中传输时,如果发生丢包,发送端将不会重发,而在建立 P2P 传输时,为了穿透网关,通常都需要用 UDP 方式来传输,这就势必导致在 P2P 的传输过程中,要么只是简单地使用 UDP 协议,而导致丢包不重传,要么就在 UDP 协议的基础上,自己开发一层可靠传输的协议。

  本产品采用第二种方式,在 UDP 协议层上,附加一层可靠传输协议,其特点是:

  • 使用可靠传输,有丢包重传机制
  • 使用滑动窗口机制,带宽或波动变化时,动态调整窗口大小
  • 使用可快速适应带宽的慢启动机制
  • 可防止 UDP 拥塞,同时最大限度利用带宽
  • 与直连的 TCP 相比,性能达到95%以上

3.3. 业务无关性P2P传输技术

  业务无关性 P2P 传输技术,又可以称之为协议透明 P2P 传输技术。简单地说,就是指 P2P 技术只负责数据传输,一个 P2P 连接就如同一个 TCP 连接一样,在其上承载的数据可以是任意的,P2P 连接只是作为发送端和接收端的一个桥梁,具体的数据与 P2P 传输层无关。

  同时由于使用了 UDP 可靠传输技术,因此可以象使用 TCP 传输一样使用 P2P 传输。

  举个简单的例子,不使用 P2P 技术,仅使用 TCP 传输时,客户端与服务端使用以下连接方式:

  如上图所示,客户端创建一个 Socket ,使用端口 A ,连接服务端的侦听端口 B ,从而创建一个 TCP 连接。

  而使用业务无关性 P2P 技术建立连接的方式如下:

  如上图所示,客户端创建一个使用端口 A 的 Socket ,并且调用 T2uCli (即
P2P 客户端)创建一个代理 TCP 侦听端口 C ,在创建代理 TCP 侦听端口 C 时,告诉 T2uCli ,要连接服务端的侦听端口 B , T2uCli 随后立即与 T2uSvr (即 P2P 服务端)创建一个 P2P 连接。然后,客户端就象之前直接连接服务端侦听端口 B 一样,连接 T2uCli 的侦听端口 C ,使用原来的协议和流程与侦听端口 C 进行交互, T2uSvr 会立即创建使用端口 D 的 Socket 与服务器侦听端口 B 建立 TCP 连接,并且将客户端发过来的数据原封不动地转发给服务端。

  从上面的过程可以看出,使用业务无关性 P2P 技术,客户端和服务端的程序都可以在不作修改的情况下,直接从原来只支持 TCP 传输转换到可以使用 P2P 传输,如 telnet,http 服务可以在不做任何修改的情况下,使用 P2P 方式进行传输。

  使用业务无关性 P2P 技术可以有以下几个好处:

  • 在原使用 TCP 方式进行传输的服务端不需要做任何修改,客户端做少量修改的情况下,就可以切换到使用 P2P 方式进行传输,从而大量减少开发工作量
  • 由于 P2P 层只负责数据传输,并且是透明的数据传输,因此可以适应几乎所有使用 TCP 协议的 C/S 程序,如 telnet,ssh,http 以及其它使用厂商私有协议开发的应用。

  服务端与 T2uSvr 既可以在同一个设备上,也可以分离在不同设备上,从而使一些无操作系统,无法添加程序的设备(如一些单片机设备),可以简单地使用一个外置的装有 T2uSvr 的设备,就可以实现 P2P 传输。

3.4. 分布式云平台服务

  虽然我们的单台 P2P 服务器就具备30万设备在线服务能力,但由于国内运营商之间的网络带宽限制,以及国内与国外网络环境间的带宽瓶颈,单台服务器或单机房集群显然无法满足让遍布球的客户都有很好的用户体验。

  为此,我们构建了具有跨机房、跨数据中心能力的分布式云平台服务架构。区别于单一机房内多服务器集群架构对服务器间高带宽低网络通信时延的硬性要求,我们的架构可以跨机房部署并可适应跨机房时机房间带宽较小的环境。

  我们已在全球部署了数十台 P2P 云服务器,设备端在接入云服务器时,会自动就近选择通信最快的服务器,从而使设备无论所处何地,都有良好的 P2P 穿透传输体验。