1
intelmd 2019-09-23 23:03:03 +08:00 via Android
?
|
2
feast OP 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,并关闭防火墙 |
4
feast OP 工具 github.com ¥ libpcp ¥ pcp,MSVC+cmake 编译
虽然作为中国 IP 资源最丰富的运营商,电信很多地方仍然是执行了 CGN NAT 改造,一方面应对长期 IPv4 枯竭的压力,二方面通过 CG-NAT 使得单个 IP 得以成百上千倍的复用,预留了足够的用户发展空间,不过 CGN 改造对玩 PT NAS 的肯定是噩梦,尽管目前还可以通过按闹分配的方式投诉获得 IP,不过鉴于任何行得通路子在中国必定会被搞臭的经验,靠这种费时费神的方式肯定是不行的了,那么似乎 CGN ( 100.64 )下完全就没办法了? IETF 实际上在引入 CGN 的时候就同步开发了新的解决方案,即 PCP (RFC 6887)端口控制协议,由于该协议比较新,大多数设备不支持,所以目前可能这个东西能够使用的地方非常少,不过既然有,那就大胆探测下局端是否支持,目前看来,比较老的 ME60 都有相关支持软件,唯一的问题可能就是局端有没有配置(粗略看了下华为,似乎不是默认打开的),所以以后投诉如果有机会联系到工程师最好让打开 PCP,这个比回退工单相信阻力要小很多,以下摘抄自华为手册 |
5
feast OP “ME60 VSU 系列单板 PCP 功能许可证”
感觉华为收费又会把这个搞砸,so,各位还是投诉吧 |
6
loveqianool 2019-09-23 23:24:13 +08:00
附言呀,贴吧直播吗?
|
7
Buges 2019-09-23 23:41:43 +08:00 via Android
那么问题来了,这个类似 UPnP 的玩意有啥正当的用途?
直接以“我要用 p2p 应用”的理由不被驳回就见鬼了... |
8
feast OP 你大可认为该项功能毫无卵用,可是能在 CGN 上开一个 TCP 端口是非常有意义的
|
9
wheat0r 2019-09-24 01:04:23 +08:00
信我,让运营商去直接配设备的成功率远小于要一个公网 IP。
另一个方面,就我观察,现在的运营商没几个用 CGN 地址段的,全是 10.0.0.0/8,能找运营商要 100.64 ,为什么不直接要一个公网地址。 |
10
Buges 2019-09-24 10:09:28 +08:00 via Android
@feast 我没说毫无卵用...至少得给个正当用途,或者说,说服工程师给你配置的理由吧。
闹公网 ip 的人还要自称用监控之类的原因呢... |
11
cdh1075 2019-09-25 13:25:34 +08:00
要一整个 ip 浪费,以后如果能每人给 100 个公网 ip 的端口就完美了
|
13
feast OP @Buges 我不讨论投诉策略,怎么投诉那是你自己的事,每个人想法都不同,况且我这个东西并不需要投诉,你只要试下局端是否打开,我给的建议仅仅是你遇到坚决不给回退公网的地方的最后尝试方法,P2P 这东西本身就不受待见
|
16
ragnaroks 2019-09-26 10:36:50 +08:00
联通的光猫和局端支持,以测试通过,ed2k 高 ID
|
17
bibiisme 2019-09-26 13:50:47 +08:00 via Android
@wheat0r 你用的是移动?电信联通全是 100.64 的,而且就算是移动现在也全是 CGN 了。
|
19
LBL584520 2019-10-06 20:02:25 +08:00 via iPhone
@feast 感谢回复!
Windows7 平台下有吗? 我不会操作 linux,也没有 lunix 平台 (工具 github.com ¥ libpcp ¥ pcp,MSVC+cmake 编译) ?? ( linux 下 autogen.sh && make 即可)?? 不是学计算机的 只是对计算机略感兴趣的一个普通人,非专业人士 |
20
feast OP @LBL584520 抽空编译了个,依赖 VS2005 运行 imgchr.com/i/ugySun
|
21
LBL584520 2019-10-07 20:52:45 +08:00
搞了半天 装 vs 2005
先是 “无法启动此程序,因为计算机中丢失 MSVCP80.dl 。尝试重新安装该程序以解决此问题" 然后 网上搜索了下 ------------------------------------------------------------------ 结果没上面的这个错误,又弹出了另外的 R6034 An application has made an attempt to load the C runtime library without using a manifest. This is an unsupported way to load Visual C++ DLLs. You need to modify your application to build with a manifest. ----------------------------------------------------------------- ----------------------------------------------------------------- 看了半天还是 搞不定!! 抓狂 ing !!! |
22
LBL584520 2019-10-07 20:59:05 +08:00
|
24
feast OP |
26
feast OP @LBL584520 imgchr.com/i/uWR4OS 奇怪?????
|
27
LBL584520 2019-10-08 12:52:31 +08:00 via iPhone
@feast 这下要等我过几天回家来试了,猜测还是可能弹出 什么运行错误的框框。。。
不知道那种可以随时拷贝到别的机子上 可以直接运行 的.exe 单文件便携版或者绿色版,或者安装包是怎么做的? 是不是麻烦的多? |
28
feast OP @LBL584520 真 TMD 诡异,这个跟其他用不上的 exe 放一起就直接报 R6034,我怀疑微软 DLL 里面直接用的后缀进行通配判断,极为坑爹
|
29
bibiisme 2019-10-09 13:03:04 +08:00 via Android
mtk 路由器的 padavan upnp 里有个 nat-pmp&pcp,不知道是不是一个玩意
|
30
feast OP @bibiisme 就是一个东西,不过 PCP 是运营商级别的,PMP 还要通过 IGD xml 协议进行交互( L3 )无论是性能开销还是安全性( PCP UDP 类 L2 ),都不如
|
31
bibiisme 2019-10-09 17:09:04 +08:00 via Android
@feast 如果运营商支持 pcp,PADAVAN 开了 pcp 后,路由器下面设备只需要支持普通的 upnp 还是也要配置 pcp ?
|
33
feast OP @bibiisme 你跟 PCP GW 申请端口后,看映射情况,移动居多的对称型 NAT 是 5 元组的,只能开一个主动的端口( PEER ),会在网关开个端口对应到你所给的 IP 端口,这个 IP 应该就是 PCP 请求包的 IP,也就是说如果你有 NAT 路由,可能就是对应到路由获取的 CGN 内网 IP 上的
|
34
feast OP @bibiisme 目前看这情况,移动就算开了 PCP 说实话也没多少卵用,最大的问题是 PCP 华为是收费的,NAS 能用 IPv6 还是用 v6 吧,毕竟郑智任务
|
36
lentrody 2019-12-21 04:21:21 +08:00
根本没有 PCP server 和网关,应该就不需要测了吧……
https://s2.ax1x.com/2019/12/21/QjF6AS.png |