开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

首页   >   博客   >   ProudNet

ProudNet P2P / UDP 通信功能

2017-4-21 16:37

ProudNet 具有强大的P2P通信功能。除了一般的P2P打洞和Relay功能,ProudNet还具有以下特点:

  • 提供即时P2P通信功能。

  • 对于特别灵敏或是有缺陷的NAT设备也能工作。

  • 解决了慢速网络中P2P流量过载的问题

  • 支持多种类型的P2P打洞功能:Full cone、restrict、prot restricted、symmetric NAT等。

  • 支持基于可靠消息传输的P2P通信

在ProudNet中,当用户请求创建或加入P2P组后( Proud.CNetServer.CreateP2PGroup或 Proud.CNetServer.JoinP2PGroup ),P2P组中任一Peer可以马上开始发送P2P消息。但是在P2P打洞成功完成之前,客户端之间的消息只能通过Server进行中转,在通过Server中转消息的同时,P2P打洞也会在后台运行。一旦P2P打洞成功,通讯方式立即切换为直接的P2P通信。这样当游戏启动时,无需等待打洞完成也可以进行消息通信。

对于使用P2P进行位置同步的MMORPG游戏中,也可以安全地重复建立/断开P2P连接的动作。

某些型号的NAT设备会因为处理内部地址到外部址的映射出错而丢失地址映射信息。ProudNet采用特有的UDP Socket使得在NAT设备丢失地址映射信息时也能正常工作。

对于使用ADSL或ADSL2+的家庭网络环境中,即使打洞成功,也可能出现流量过载的情况。 这时电脑或NAT设备会无法正常工作,ProudNet 也提供了针对性的解决方案,当某一Peer因为大量的Multicast而流量激增时,ProudNet能够检测出来并使multicast消息通过服务器Relay。

ProudNet为NAT打洞提供了“端口预测方法”,使得“对称NAT”设备的打洞成为可能,只是存在端口映射过多的缺点。为了降低负面影响,ProudNet会缓慢进入到“使用端口预测”的打洞,这样对于某些NAT设备可能需要更多时间(通常是好几十秒)。但是这样并不会有问题,因为在这打洞成功前的几十秒内,客户端之间可以通过服务器的Relay功能进行通信。

ProudNet 只在必要时才进行打洞。因而对于地址限制个数存在限制的NAT设备,能够降低发生地址映射信息丢失的可能。例如,如果一个客户端连接到的P2P网络中的客户端之间相互不需要通信,那么ProudNet就不会进行P2P打洞。这也正好能够解释为什么在调用Proud.CNetServer.CreateP2PGroup Proud.CNetServer.JoinP2PGroup 之后, Proud.RmiContext.m_relayedProud.CNetClientInfo.m_RelayedP2PProud.CNetPeerInfo.m_RelayedP2P 的值仍是false,而开始P2P通信之后,它们的值将变成true。


ProudNet的UDP通信性能

ProudNet 在使用UDP协议时,通过以下技巧来提升通信性能:

  • 消息合并

  • 预防MTU失败

使用ProudNet时,对于Latency在1毫秒以下的LAN环境,少量通信会增加ProudNet的负荷。当消息量增加或是处于高Latency的WAN网络环境时,通过消息合并功能,ProudNet的消息处理负荷也不会显著增加。

网络流量与RMI调用次数的关系

如果是通过Internet在超过100公里距离的主机间通信,那么网络数据包需要通过很多的网关设备。每个网关设备都有一个最大报文长度(MTU)的设置。如果发送的ICMP报文的长度大于设备的MTU长度,则会发生ICMP报文分片。但是通常为了避免ICMP攻击,很多设备会关闭ICMP响应,这种情况下MTU会因为无法检测ICMP分片而失败 。ProudNet提供了针对这种情况的解决方案。

在100km以上距离的网络通信中,需要通过多数的多机种Gateway装置数据包。各Gateway已指定了能够进行相互不同的可担负的MTU size,但发送数据包一方如果超过了已定义的MTU大小则会发生ICMP packet fragment数据包,其结果会切断主机间的UDP通信。

0 0

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册帐号

个人分类

标签

阅读排行

评论排行

推荐博客

最新博客

返回顶部