feast
2019-09-23 23:06:32 +08:00
PCP 连接在 P2P 传输中的应用
在 NAT444/DS-Lite 场景中引入 PCP,目的就是解决 CGN 设备接入的终端用户之间的 P2P 应用(电话会议、在线游戏、P2P 传输)问题。PCP 连接在 P2P 传输中的应用如图 6-2 所示。
图 6-2 PCP 连接在 P2P 传输中的应用示意图
PC1/PC2 与 P2P 服务器建立 TCP 连接。
说明:
如下子步骤以 PC1 为例进行介绍,PC2 类似。
PC 建立 P2P 连接,操作系统需要支持 UPnP 协议( Universal Plug and Play ),并推荐使用支持 UPnP 协议的 P2P 软件。
PC1 用户打开 P2P 软件,软件自动向 CPE1 网关设备发送打开 UDP 监听端口的 UPnP 请求报文。
CPE1 设备作为 UPnP Proxy,终结 UPnP 请求;作为 PCP 客户端,向 CGN1 设备发送 PCP 请求,为 PC1 用户获取公网 IP 地址和端口号。
CGN1 设备作为 PCP 服务器,响应客户端的请求,从公网地址池中选取公网资源,建立私网 IP 地址、端口号与公网 IP 地址、端口号的映射关系,并向 CPE1 设备发送 PCP 响应报文(携带给 PC1 用户分配的公网 IP 地址和端口号)。
CPE1 设备将获取的公网 IP 地址和端口号发送给 UPnP 请求用户 PC1,此时用户可以在 P2P 软件中查看到获取的公网 IP 地址和端口号。
PC1 通过获取的公网资源与远端的 P2P 服务器建立 TCP 连接。
PC1 向 P2P 服务器上报本地保存种子文件的信息,并实时上报用户状态。
P2P 服务器收到 PC1 的 TCP 报文,解析请求报文中的应用层信息,记录 PC1 的公网 IP 地址和端口号。
PC1 向 P2P 服务器发起查找文件动作时,服务器将拥有该文件所有用户信息均发给 PC1,其中包括 PC2 的公网 IP 地址和端口号。
PC1 向 P2P 服务器发送下载请求(从 PC2 处进行下载)。
P2P 服务器向 PC2 发送 PC1 的下载请求。
PC2 收到 PC1 下载文件请求,直接与 PC1 建立 UDP 连接,上传报文给 PC1。
PC1 直接从 PC2 下载文件,PC1 和 PC2 的 P2P 传输建立。
目前支持 PCP 的 CPE(路由)可能寥寥无几,不过毕竟都是软件,电脑模拟即可,各位可以先用这个库探测下各地的局端情况,考虑到 NAT44,尽量电脑拨号获取 100.64 段 IP,并关闭防火墙