2020-10-03 14:24:16 +08:00
2020-02-20 14:31:35 +08:00
2020-09-10 09:43:59 +08:00
2020-10-08 14:49:51 +08:00
2020-09-18 10:12:05 +08:00

  • mNFD

    基于NFD 0.6.6 改造,新增如下功能:

    1. 支持开启自定义包验证(包括分别控制Interest和Data的验证);
    2. 支持Interest包设置不缓存标记(会跳过缓存查询)
    3. 支持标识间互译(目前有内容标识、身份标识)

    安装

    • require

      • boost

        sudo apt install libboost-all-dev
        
      • ndn-cxx0.6.6

      • jsoncpp => json解析库

        sudo apt install libjsoncpp-dev
        
      • hiredis => redis客户端库(包验证过程中通过redis查询证书)

        sudo apt install libhiredis-dev
        
      • redis-server

        mNFD中支持对每个到来的兴趣包( Interest Packet )和数据包( Data Packet )进行签名验证,本地的redis-server中存储了证书信息,所以mNFD在进行包验证的过程中需要去和本地的redis-server通信查询证书信息。

        # 如果没有安装,则直接执行下面的命令安装(执行完毕redis-sever就已经安装成功,并且作为服务启动了)
        sudo apt install redis-server
        
        
        # 如果需要关闭redis-server,可以执行如下命令
        sudo service redis-server stop
        
        # 如果需要启动redis-server,可以执行如下命令
        sudo service redis-server start
        
    • 编译安装

      ./waf configure
      ./waf 
      sudo ./waf install
      
    • 配置文件说明

      mNFD的自定义配置和NFD的配置文件合并了,配置文件路径为 /usr/local/etc/ndn/nfd.conf,自定义部分的配置如下:

      ; 自定义配置
      custom {
          ; 路由器默认身份
          default_identity /Router/qjm253
      
          ; 包验证相关配置
          packet_verify {
              ; 是否开启包验证
              verifyPkt yes
      
              ; 是否开启验证兴趣包
              verifyInterest yes
      
              ; 是否开启验证数据包
              verifyData yes
      
              ; 包验证时使用的redis服务的端口(建议默认)
              redisPort 6379
      
              ; 包验证时使用的redis服务的ip(建议默认)
              redisIp 127.0.0.1
      
              ; 设置验证通过时证书延长的时间
              ; 1. 如果证书条目是持久的,则不影响
              ; 2. 如果证书条目有过期时间,则:
              ;   1) 第一次验证通过延长 plusTimeAfterVerifySuccess ms
              ;   2) 在间隔 plusTimeAfterVerifySuccess ms 之后,再次验证通过,则延长 plusTimeAfterVerifySuccess ms
              plusTimeAfterVerifySuccess 300000
          }
      
          ; 互译相关配置
          iit {
              supportPktType {
                  0
                  1
                  2
              }
          }
      
          ; 导出日志到区块链相关配置
          log_to_block_chain {
              ; 是否开启记录日志到区块链
              enableLogToBlockChain yes
      
              ; 记录日志到区块链是通过写入共享内存,然后外部程序读取共享内存内容转发给区块链来实现的
              ; 共享内存的名字
              logToBlockChainShareMemoryName MIN-MIR-WARNING-LOG-TO-BLOCKCHAIN
      
              ; 共享内存的大小,只能是2^n => 这样可以使用位运算而不是模运算来计算索引
              logToBlockChainShareMemorySize 4194304
          }
      
          ; 在中间路由器加多个签名配置
          multi_signature {
              ; 是否开启中间路由器加签名
              enableRouterAddSignature no
              ; 最多允许的中间路由器签名数量
              maxRouterSignatureNum 4
          }
      }
      
    • 多跳签名使用说明:

      • 在mNFD配置文件中配置开启中间路由器加签名(默认不开启),并设置最大允许的路由器签名数量(默认为4);

      • 可以通过以下示例代码获得中间路由器的签名:

        // 获取多跳签名Tag
        auto tag = interest.getTag<ndn::lp::MultiSignatureTag>();
        
        // 判断多跳签名tag是否存在
        if(tag) {
            // 遍历MultiSignatureTag中的所有签名
            for (auto &signatureSection : tag->getSignatures()) {
          		std::cout << signatureSection.signatureInfo.getKeyLocator() << std::endl;
        	}
        } else {
        
        }
        
        // SignatureSection 结构体的定义如下
        struct SignatureSection {
            Block signatureValue;
            SignatureInfo signatureInfo;
        };
        
    • 如何新增或者删除配置

      如果需要调整配置文件定义,删除或者新增配置,则需要修改根目录下的 nfd.conf.sample.in 文件,使用 waf 进行编译的时候会根据这个文件在生成 build/nfd.conf.sample 文件。

    补充

S
Description
No description provided
Readme 2.5 MiB
Languages
C++ 92.4%
Python 7%
XSLT 0.3%
Shell 0.2%