1、BT原理

普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。 BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。

根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为种子

种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的索引

下载者要下载文件内容,需要先得到相应的种子文件,然后使用BT客户端软件进行下载。

下载时,BT客户端首先解析种子文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。

下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。

一般的HTTP/FTP下载,发布文件仅在某个或某几个服务器,下载的人太多,服务器的带宽很易不胜负荷,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,下载速度就越快。同时,拥有完整文件的用户也会越来越多,使文件的寿命不断延长。

产品实现

       Power Cache采用标准的P2P下载和服务方式,在监控发现热点资源后,Cache创建一个大小尺寸动态增长的空文件,与内外网P2P用户交换下载内容块(碎片),在下载的同时,如果有内网用户请求已经缓存的内容碎片,Cache会直接提供服务,实现边下载边服务。

 

 

2、BT加速的原理

1)cache根据bt getpeer报文判断那个bt文件为热门资源,判断为热门资源后,就会去外网BT服务器下载种子和获致peer列表。

2)修改peer list,将cache加入进peer list,并处于最高等级;

BT在没有下载完成时,也是可以伪造成BT服务器给下载PC发送peer列表,让PC到cache上下载资源。

 

 

3、cache在禁止下载时间,针对BT应用会如何操作

1)对于启用下载时间段控制后,BT不主动从外网下载BT资源,占用出口带宽.

2)但是在cache禁止下载BT的时间内,cache还是会从内网用户下载BT的过程中,得知某一些BT种子为热门资源,此时cache为了从内网下载此资源,就必须要获取资源列表,就是我们通常用说的下载种子。下载种子的同时还会有一bt封装的所致手报文,来同步peer,针对BT资源列表是必须的到外网的BT服务器上去下载,无法从内网的用户机上下载种子。下载完种子后,cache是不会再到BT服务器上去下载资源,也不会去外网的其它PC下去下载资源。BT都种子都是很小的,一般才几百KB,只会占用出口很少的流量 (基本可以忽略不计),不会对出口带宽造成压力。

 

@如何查看缓存文件是否下载完成

BT的文件可以在缓存文件中查看到正在下载,或下载完成的标志。

 

4、P2P下载队列有几千个,是否正常

P2P的下载机制与普通HTTP和视频文件的下载机制不同,需要使用一个种子文件。如果种子文件中所枚举的服务器仍有可以连接的,将会一直尝试从此服务器进行下载;直到所有服务器都无法连接,P2P才会停止该文件下载,并将文件删除。

 如果出现P2P下载队列有几千个,并且很多文件下载时间超过30天或更高,则说明该文件无法下载,需要手工删除文件。

 

5、禁止BT下载的方法

目前web界面没有相应的开关,可以通过命令行操作:(以下以Cache服务IP:192.168.33.118,BT数据存储目录:/data3为例)

1)通过SSH或键盘、显示器方式登陆设备底层;

2)停止缓存服务:/etc/init.d/xcached stop

3)备份设备当前缓存配置文件:cp /opt/xcache/conf/application.properties/opt/xcache/conf/application.properties.bak

4)通过vi编辑器,修改设备缓存配置:vi /opt/xcache/conf/application.properties

      

       如上图,将downloader.bt.enabled=true 修改成 downloader.bt.enabled=false;将downloader.bt.path=后面的参数全部清除,添加到"downloader.http.path="后面,如下图:

     

5)保存缓存文件配置;

6)删除原有/data3目录下的缓存数据库记录:

./bin/config.sh cache cleanfiles 192.168.1.118 /data1 (删除主机192.168.1.118的 /data1硬盘数据库记录 ,该命令格式为:./bin/config.sh cache cleanfiles [host] [disk])

7)删除/data3缓存文件:rm -rf /data3/*

8)重启缓存服务:/etc/init.d/xcached start

 

 

6、CACHE P2P种子缓存命中的条件

P2P种子缓存命中的条件:

1、种子文件info 包含HTTP下载信息.

目前大部分P2P种子文件info 都是UDP的方法,http在国内都被运营商禁用。

2、torrent 种子是通过HTTP协议下载,而不是通过IM下载的。

3、每个Torrent 都有一个hash值,种子hash值在缓存数据库列表内才能cache。

行业:(酒店、教育、企业、金融、政府、运营商)

功能点:BT缓存

问题类型:常见咨询

关键词:P2P;种子

是否涉密:否