ndncatchunks and ndnputchunks
ndncatchunks和ndnputchunks是一对将文件作为数据段传输的程序。
- ndnputchunks是一个生产者程序,它从标准输入中读取文件,并将其作为NDN数据段提供。它根据NDN命名约定,将版本号和段号组件附加到指定的名称。
- ndncatchunks是一个消费者程序,它获取文件的数据片段,可选地发现文件的最新版本,并将检索到的文件内容写入标准输出。
1. ndncatchunks中的版本发现
如果在用户指定的NDN名称末尾出现版本组件,则将使用提供的版本号,而不需要任何版本发现过程。否则,将发送发现兴趣以获取被请求内容的元数据,从这些元数据中解析数据版本。有关ndncatchunks中版本发现的包格式、命名约定和数据包的更多信息,请参考:Realtime Data Retrieval (RDR) protocol wiki页面。
2. ndncatchunks中的兴趣包管道类型
fixed:保持固定大小的飞行兴趣窗口;窗口大小通过命令行选项确定,默认为1。
aimd:通过增加-增加/增加-减少(AIMD)调整窗口大小。默认情况下,它使用保守的窗口适应,也就是说,每轮运行一次,拥塞窗口最多减少一次。
cubic:调整窗口大小,类似于TCP cubic算法。有关aimd和cubic的详细信息,请参考:用于命名数据网络的实际拥塞控制方案。
默认兴趣管道类型为cubic。
3. 用法举例
发布
下面的命令将在/localhost/demo/gp13前缀下发布GPL-3许可的文本:
ndnputchunks /localhost/demo/gpl3 < /usr/share/common-licenses/GPL-3
要找到发布的版本,你必须启动ndnputchunks与-p命令行选项,例如:
ndnputchunks -p /localhost/demo/gpl3 < /usr/share/common-licenses/GPL-3
此命令将把发布的版本打印到标准输出。若要发布具有特定版本的数据,必须将版本组件附加到前缀的末尾。版本组件必须遵循前面提到的NDN命名约定。例如,下面的命令将发布/localhost/demo/gpl3前缀的版本%FD%00% 00% e1qc %CF%17v:
ndnputchunks /localhost/demo/gpl3/%FD%00%00%01Qc%CF%17v < /usr/share/common-licenses/GPL-3
如果版本组件无效,将生成一个新的格式良好的版本并附加到提供的NDN名称。
接收
要检索已发布文件的最新版本,可以使用以下命令:
ndncatchunks /localhost/demo/gpl3
要获取已发布文件的特定版本,可以在名称的末尾指定版本号。例如,如果已知的版本是%FD%8%ee%81Qc%CF%17v,那么下面的命令将获取文件的准确版本(没有版本发现):
ndncatchunks /localhost/demo/gpl3/%FD%00%00%01Qc%CF%17v
测试
在主机192.168.0.35主机上发布内容名为/test的文件/home/lin/test,主机192.168.0.34以前缀为/test与192.168.0.35连接,主机192.168.0.37以前缀为/test与192.168.0.34连接。
发布者(192.168.0.35):
ndnputchunks /test < /home/lin/test
接收者(192.168.0.37)
ndncatchunks /test