情景

教学环境中局域网分发大文件(如镜像),单文件体积在10G+,如果从某一服务端分发单文件传输虽然可以达到100M/s以上,但是对于网络稳定性要求较高,而且如果并发速度并不理想。同时由于网络环境较为复杂,存在着非同一交换机下的数据传输需求,所以这种C/S模式并不能满足大文件快速分发的要求。

所以希望通过P2P相关技术来使得服务器本身不再是制约因素,传输过程依赖于网络中所有参与者的计算能力以及网络带宽。

本文主要内容参考了P2P技术在大文件共享中的应用研究.pdf

P2P相关技术

分类

  • 集中式P2P网络:有节点保存索引信息
  • 分布式P2P网络:利用flooding,节点较为松散
  • 混合式P2P网络

基于实际情况,我们使用Bit-Torrent来实现混合式P2P网络

Bit-Torrent文件共享系统

组成

  • 种子节点
  • Web服务器
  • Tracker服务器
  • 下载节点

工作过程

  • 种子节点将种子文件上传到web服务器同时连接tracker服务器
  • 下载节点通过浏览web服务器下载种子文件并根据提供的信息连接到相应的Tracker服务器获得节点列表
  • 下载节点间彼此通信并与Tracker服务器交互直至所有节点完成请求文件的下载

本校环境的进一步优化

  • 由于客户端仅进行了centOS的较简安装(仅包含Virtual Host)模块而没有web浏览器,考虑使用传统的sftp来进行种子文件的分发
  • 根据机房的网络拓扑,将会对不同交换机下的分发进行独立的操作,从而使得仅仅受限于网络带宽与硬盘读写速率
  • 对于客户端P2P软件的选择,优先考虑纯命令行的BT软件,预计先尝试transmission-cli作为客户端软件,具体使用说明
  • 对于镜像完整性的校验,有两种解决方案:一种是直接在分发之前对待分发镜像做gpg签名,例如本人公钥为(http://pgp.mit.edu/pks/lookup?op=get&search=0x5969A07D15559C97),然后直接校验即可;一种是传统的利用sha256sum计算SHA256值以验证完整性

一些延伸想法

  • 能否借此机会搭建一个可视化的友好的web界面来管理所有机房中的centOS系统,并且加入类似于远程关机、重启、重启虚拟机上的win10等简单功能,同时融合本文所述的大文件分发功能,远程执行控制命令
  • 如何解决跨交换机下性能骤降的问题
  • P2P模式对于网络带宽的依赖程度以及对网络的影响有待验证并优化,对于较大I/O下的P2P是否会存在问题,论文中速度仅有不到10M/s,在千兆以及万兆网络下的传输是否会存在问题
  • 如果传输存在问题如何及时发现并解决,错误节点的数据是否会污染整个局域网