“星际跳跃”或“银河快车”——通过NKN传输数据的两种选择

qbjQ3R_x7mhoTz_rccZbzkIRR1EexpeydODJ8lT3OCINRLSJ3uGdjqDs1_2rsL-cQU3ObXIUqzP-Q8PBgpxCIaaBYA0BuMtcx4jPrKaMWnWw5Rqk0RaXUOofVKjnpCHe6SgDqpNX
想象一下你是千年隼号星舰的独角鲸舰长,需要从地球到恩多, 你有两个选择:

  • “星际跳跃”:从月亮到火星,从火星到塔图因,穿过霍斯和纳布,通过各个点之间的接力传递, 最后降落在恩多。 这需要一点时间,但只需要少量燃气并且是安全行驶。
  • “银河快车”:前往最近的超空间航站楼(在月球上),耗费大量燃气,然后 “嘣” 一声巨响,它会在几分钟内将您的宇宙飞船直接推送到恩多。

幸运的是,当我们使用NKN将数据从一个客户端发送到另一个客户端时,您也有类似这两个选择。 在接下来的两章中,我们将深入研究它们工作的细节、不同之处、以及它们如何通过NKN网络更好地服务于不同类型的应用程序。

“星际跳跃”:安全快捷

通过NKN网络路由转发数据包的“正常”方式是使用NKN精心改造的Chord分布式哈希表(DHT)算法。 Chord DHT是安全且可验证的,这意味着鉴于环上寻址的所有节点,邻居和路由的选择是可验证的。 路由的工作原理如下:

  • 有一个非常大的虚拟回环空间
  • 所有NKN节点都被分配一个随机但可验证的NKN地址并映射到环上
  • 发送节点通过计算距离(环上的顺时针方向),找到最接近目的地地址的邻居
  • 所选邻居将数据中继到最靠近目的地的邻居,依次反复,直到数据到达其目的地。

更详细的算法描述可以在“NKN 顾问 Stephen Wolfram访谈实录中文翻译”中查看:


在某些情况下,与现有Internet的默认路由相比,NKN路由模式会增加更多的跳数,也可能增加部分延迟。 在效率和安全性之间存在权衡。 原因是NKN的挖矿奖励基于中继证明,即节点为网络中继的数据量。 因此,为了防止共谋攻击,节点不能操纵邻居或路由这个特性是至关重要的。

但是我们对原始的Chord DHT算法进行了两项增强,以提高其效率而不损失掉安全性和可验证性。

一、延迟优化路由

  • 节点A维护其所有邻居的延迟信息(当前NKN实现中的每个节点通常有50-100个邻居)。此延迟数据不仅基于物理网络延迟,还基于节点本身协议栈处理延迟。因此,NKN延迟度量是每一跳的整体传输质量的精准指标。
  • 当一个最终需要发给Y的数据到达节点A时,节点A可以从3个下一跳邻居(B1,B2,B3)中选择一个。这组邻居由NKN算法确定,并且不能由节点A自己挑选。
  • 节点A选择具有最低延迟的邻居B1 (节点A到节点B1的延迟是23ms,在NKN算法提出的3个候选节点中最低)。节点A将数据转发到节点B1。
  • 所有决策都是在本地进行的,依次反复,直到数据到达最终目的地。

我们发现当今互联网上的默认路由远非最佳。通过选择最低的NKN延迟路线,我们通常可以改善最终用户的互联网体验。除此以外,我们还有另一个改进。

二、并发多路径传输

我们还可以组合多个NKN路由,不仅可以降低延迟,还可以提高聚合带宽。一个很好的应用例子是基于http / https和范围请求的大文件传输。下图说明了组合3个NKN路径的概念,但实际上我们的多客户端SDK支持任意数量的并发NKN路由路径。当一个人使用多个并发路径时,他可以选择通过使用不同路径,发送更多冗余数据来最小化延迟(例如nkn-multiclient:https://github.com/nknorg/nkn-multiclient-js),或者选择最大化吞吐量,通过使用不同的路径发送不同的数据(例如nkn-file-transfer:https://github.com/nknorg/nkn-file-transfer)。

测试结果显示出显著的性能提升。 在2018年末,我们做了一个网络加速器原型,通过在我们的测试网上使用多路径,实现了167% - 273%的速度提升。 而且文件越大,提升效果越好。

在2019年8月,我们使用nkn-file-transfer(https://github.com/nknorg/nkn-file-transfer )对NKN主网上的大型文件传输进行了测试,我们在NKN主网上使用了8条并发(随机和安全)路径,在中国和美国加州的PC客户端之间传输。结果显示我们的文件传输速度可以达到微信的4.6倍,QQ的1.6倍。

“银河快车”:高速直传

但是如果你想要更快的体验呢?想要和超空间跳跃一样快,并且愿意为此支付相应的燃料费用的话,完全可以实现。只是操作模式有所不同,如下图所示。

此模式专为需要最直接和最快速网络连接的应用程序而设计。 关键是用户端直接连接到单个NKN节点,该节点提供到目的地的最直接路线,完全不通过中继。 在这种情况下,客户直接把网络传输费用支付给节点。但这部分流量没有通过NKN的共识,因此不会对节点的挖矿奖励产生影响。

应用1:用于内容分发的nCDN

  • 客户端基于诸如地理位置邻近度,吞吐量,延迟和性能等几个因素选择并连接到节点A.
  • 节点A是nCDN边缘节点,它根据客户端需求缓存内容。
  • 当客户想要观看最新的“星球大战”电影时,节点A发现它的本地缓存​​中没有这部电影。因此,节点A将从源头的媒体存储库获取副本。这只需要发生一次。
  • 节点A将直接向客户提供“星球大战”的本地副本。
  • 如果同一地理区域中还有其他用户也希望观看“星球大战”,则节点A可以直接使用本地副本为其提供服务。
  • 节点A将根据其提供的内容分发业务流量来计费并取得报酬。

应用2:TUNA和通用隧道
TUNA是使用NKN为任何应用程序做通用隧道的简称,是一个建立在NKN之上的平台,允许使用者将基于网络的应用程序转换为服务,并根据使用情况来获取报酬。一些具体的例子是:

  • 通过流媒体播放高质量的游戏,例如,在具有高性能图形显示卡的远程高端服务器上播放诸如DOTA2等游戏
  • 使用Jupyter笔记本,利用远程高性能多核服务器的空闲计算能力,开发先进的机器自学习和人工智能算法
  • 使用远程Web代理或Web加速器加速对网站的访问

为了满足这些应用程序的高带宽和低延迟要求,客户端只需要连接到托管此类服务的NKN TUNA服务器。 TUNA客户端根据某些服务的使用情况通过NKN向TUNA节点付费。 在这种情况下,我们根本不会走NKN“正常模式”下的随机路由! 因此,我们可以支持与即将推出的Google Stadia高清游戏流媒体服务类似的服务。

如果我们再深入一步,您可以看到TUNA充当许多不同应用程序之间的多路复用器,以利用客户端和NKN TUNA节点之间的共同隧道。 因此,虽然所有客户端应用程序都与远程服务器端通信,但是感觉上就像它们都运行在本地同一台计算机上一样。 用户在远端可以获得和在本地一样的使用体验, 这也是TUNA解决方案的引人注目之处。

概要

因此,根据您在NKN网络上使用的应用程序类型,独角鲸舰长的选择很明确。下面的表格提供了一个简单的并排比较:
QQ%E6%88%AA%E5%9B%BE20190827140410

独角鲸舰长:每当你穿越浩瀚的NKN网络宇宙的时候,愿原力与你同在!

关于NKN

NKN是一个完全去中心化,基于网络传输量工作证明,可支持千万级规模节点共识的区块链系统。由NKN所构建的这样一个有经济模型所驱动,社区共建共享的新型点对点网络,为开发者提供了一个开放、便捷、高效和安全的网络连接传输平台。基于NKN开发的各种应用将给终端用户带来各种全新的网络体验。


主页: https://nkn.org
邮箱: [email protected]
论坛: https://forum.nkn.org
Telegram: https://t.me/nknorg
Twitter: https://twitter.com/NKN_ORG
Medium: https://medium.com/nknetwork
Discord: https://discord.gg/yVCWmkC

1 Like