小樱 发表于 2022/5/17 08:27

比特彗星区块校验失败丢弃数据引起bt任务下载大小变大的原因 高级设置 bittorrent.separate_sources_for_failed_piece 选项

比特彗星区块校验失败丢弃数据引起bt任务下载大小变大的原因 高级设置 bittorrent.separate_sources_for_failed_piece 选项

问题所在,20G的BT任务,下载了24G的流量


检查任务日志


视乎是1.87版本新增的高级设置 bittorrent.separate_sources_for_failed_piece 选项导致的问题,关掉后就基本不弹出任何错误提示了,下载数据量也OK了。

高级设置 bittorrent.separate_sources_for_failed_piece 该选项作用应该是,从用户A下载一个区块出现校验错误,则同时向B、C、D、E、F等用户去请求下载这区块,,该区块如果从用户C最先下载完成,并且校验通过,则丢弃B、D、E、F的下载数据
关闭该高级选项后则保持和1.86及以前版本做法,检测到用户A传送下载了一个错误的区块则丢弃,如果连续遇到用户A累计传送了三次错误区块,则执行拉黑封禁用户A的对方ip地址。

小樱 发表于 2025/3/19 01:27

2.13测试版,修复封禁3次传输错误数据的peer的算法可能失效
情况1. 如果出错的piece是来自单个peer,那么会将其错误计数加一,三次后封禁。
情况2. 如果出错的piece是从多个peer下载到的数据,那么无法判断是哪个peer传输了错误数据,此时不会增加相关peer的错误计数。
情况2a. 如果开启了 bittorrent.separate_sources_for_failed_piece,将会从多个peer分别单独重新下载这个piece,从而准确判断出错的数据来自哪个peer,并将其错误计数加一,三次后封禁。
情况2b. 如果没有开启 bittorrent.separate_sources_for_failed_piece,那么有可能再次从多个peer下载此分块,再次进入情况2,陷入死循环。

bittorrent.separate_sources_for_failed_piece 开启和关闭都试过
只要和他建立连接,然后一直传一直丢,能下载好几百个G不拉黑他。停止任务重新开始都没用,依旧一直传错误的数据过来
我应该是情况1,试了几次,,,这个 112.90.178.250:23891 qb客户端他现在不给我传烂的数据了,导致测不了

还是说和任意一个其它peer握手后,就算没有下载大小也就会标记关联状态,直到删除任务重新创建才能清理掉这串情况2的关系
是不是因为这个种子任务只有1个区块,所以就会必现(peer握手申请的同一个区块),一些1000区块的BT任务也很有概率触发无限下载,不标记3次拉黑一直传错区块数据的peer,这点论坛也有其他人反馈过
同一个区块ID校验失败3次清除peer和区块的关联状态,让其重新创建关联,有没有可能解决这个问题
要么给多个关联的peer一起ban了,避免一直在循环下载几万次丢弃数据,下载几个TB流量都下载不完成

页: [1]
查看完整版本: 比特彗星区块校验失败丢弃数据引起bt任务下载大小变大的原因 高级设置 bittorrent.separate_sources_for_failed_piece 选项