1
0
mirror of https://github.com/SunnyQjm/NDNDeployment.git synced 2026-06-03 08:16:47 +08:00
2019-03-29 21:12:19 +08:00
2019-03-28 18:43:44 +08:00
2019-03-28 19:00:19 +08:00
2019-03-28 19:00:19 +08:00
2019-03-28 19:00:19 +08:00
2019-03-28 19:00:19 +08:00
2019-03-28 19:00:19 +08:00
fix
2019-03-29 16:21:09 +08:00
2019-03-28 19:00:19 +08:00
2019-03-28 19:00:19 +08:00
2019-03-28 19:00:19 +08:00
2019-03-28 19:00:19 +08:00
2019-03-29 21:14:30 +08:00
2019-03-28 19:00:19 +08:00
2019-03-31 13:02:42 +08:00
zip
2019-04-01 15:33:00 +08:00
2019-03-28 18:43:44 +08:00
2019-03-28 18:43:44 +08:00
2019-09-15 10:55:49 +08:00
2019-03-28 18:43:44 +08:00
2019-03-29 21:14:30 +08:00
2019-03-31 14:12:47 +08:00
2019-03-31 14:12:47 +08:00
zip
2019-04-01 15:33:00 +08:00
zip
2019-04-01 15:33:00 +08:00
zip
2019-04-01 15:33:00 +08:00
2019-03-28 18:43:44 +08:00
zip
2019-04-01 15:33:00 +08:00
zip
2019-04-01 15:33:00 +08:00
2019-03-28 18:43:44 +08:00
2019-03-28 18:43:44 +08:00
2019-03-28 18:43:44 +08:00

IP_NDN_STACK 部署脚本

  • 安装环境

    sudo ./deploy-nfd.sh
    

    执行上面的代码安装nfd所需要的环境,以及 ip-ndn-stack 项目所需要的依赖库

  • 准备网络拓扑配置信息

    网络的基本拓扑信息放在 lab_topology_raw.json 当中,其中每一个节点的信息格式如下(包含本节点的网卡信息和邻居的信息):

    {
            "name":"/ndn/edu/pkusz/pkun1",
            "network":"/ndn",
            "site":"/edu/pkusz",
            "router":"/pkun1",
            "id":0,
            "ip":"lab.pkusz.qjm253.cn",
            "mapPort":9751,
            "username":"pkun1",
            "password":"26035354",
            "nics":[
                {
                    "name":"enp2s0f0",
                    "mac":"a0:36:9f:85:bc:8c"
                },
                {
                    "name":"enp2s0f1",
                    "mac":"a0:36:9f:85:bc:8d"
                },
                {
                    "name":"enp2s0f2",
                    "mac":"a0:36:9f:85:bc:8e"
                },
                {
                    "name":"enp2s0f3",
                    "mac":"a0:36:9f:85:bc:8f"
                },
                {
                    "name":"enp3s0",
                    "mac":"00:24:1d:2c:f0:09"
                }
            ],
            "nbs":[
                {
                    "name":"/ndn/edu/pkusz/pkun3",
                    "network":"/ndn",
                    "site":"/edu/pkusz",
                    "router":"/pkun3",
                    "nicIndex":0
                },
                {
                    "name":"/ndn/edu/pkusz/pkun2",
                    "network":"/ndn",
                    "site":"/edu/pkusz",
                    "router":"/pkun2",
                    "nicIndex":1
                },
                {
                    "name":"/ndn/edu/pkusz/main2",
                    "network":"/ndn",
                    "site":"/edu/pkusz",
                    "router":"/mainn2",
                    "nicIndex":2
                }
            ]
        }
    

    在使用之前需要调用nodejs脚本来初始化,基于 lab_topology_raw.json 生成 lab_topology.json

    如果 lab_topology.json 存在且不需要更新,可以不用执行下面的脚本

    node dealLabTopology.js lab_topology_raw.json | jq '.' > lab_topology.json
    

    如果要执行上述操作,但是没有安装Nodejs,需要先安装Nodejs,安装方法详见Nodejs包管理器安装方法

  • NFD启动以及face创建

    • 启动NFD
      nfd-start
      
    • 为当前节点创建Face(是根据lab_topology.json中配置的各个节点间的关系配置的)
      sudo ./createFace.sh <nodeName>
      
      其中,nodeName为当前节点的标示名(即lab_topology.json配置文件中节点的name字段)
  • 静态路由配置

    静态路由的配置,可以选择手动,也可以使用协助脚本(协助脚本只是简化工作)

    ./static_route_config.sh <ip> <faceId>
    

    假设ip等于 192.169.1.4faceId为 256,则执行 ./static_route_config.sh 192.169.1.4 256 等效于执行下面几行命令

    sudo nfdc route add prefix /IP/pre/192.169.1.4 nexthop 256
    sudo nfdc route add prefix /IP/192.169.1.4 nexthop 256
    sudo nfdc route add prefix /IP/TCP/pre/192.169.1.4 nexthop 256
    sudo nfdc route add prefix /IP/TCP/192.169.1.4 nexthop 256
    

脚本说明

  • deploy-nfd.sh

    该脚本用于安装nfd所需环境、nlsr和进行面向nfd开发的ndn-cxx库。

    • 使用

      sudo ./deploy-nfd.sh
      
  • dealLabTopology.js

    • require

      该脚本是nodejs脚本,需要node环境,安装方法详见Nodejs包管理器安装方法

    • 用处

      网络拓扑的原始配置在 lab_topology_raw.json 中记录,我们不会直接使用这个配置脚本,需要用 dealLabTopology.js 进行处理之后得到 lab_topology.json。后续只会使用lab_topology.json

    • 使用

      node dealLabTopology.js lab_topology_raw.json | jq '.' > lab_topology.json
      
  • createFace.sh

    • 用处

      该脚本用于根据lab_topology.json创建Face接口(lab_topology.json中包含当前节点与其邻居的关系,以及网口名字,MAC地址等)

    • 使用

      sudo ./createFace.sh <nodeName>
      

      其中,nodeName为当前节点的标示名(即lab_topology.json配置文件中节点的name字段(例: /ndn/edu/pkusz/node6

  • static_route_config.sh

    • 用处

      该脚本用于配置静态NDN路由(需要提前配置好face接口),用于最小原型的测试(在不跑动态路由协议的情况下,可以用静态路由暂且进行测试),静态路由和动态路由则一而选即可。

    • 使用

      ./static_route_config.sh <ip> <faceId>
      

      假设ip等于 192.169.1.4faceId为 256,则执行 ./static_route_config.sh 192.169.1.4 256 等效于执行下面几行命令

      sudo nfdc route add prefix /IP/pre/192.169.1.4 nexthop 256
      sudo nfdc route add prefix /IP/192.169.1.4 nexthop 256
      sudo nfdc route add prefix /IP/TCP/pre/192.169.1.4 nexthop 256
      sudo nfdc route add prefix /IP/TCP/192.169.1.4 nexthop 256
      
  • start-nlsr.sh

    • 用处

      该脚本会杀死当前nlsr进程(如果存在的话),读取lab_topology.json配置文件,生成nlsr配置文件(包含节点信息,以及邻居信息),然后启动nlsr进程。(该脚本启动的是动态路由协议,使用这个脚本就用不上上面的静态路由配置了)

    • 使用

      sudo ./start-nlsr.sh <nodeName>
      

      其中,nodeName为当前节点的标示名(即lab_topology.json配置文件中节点的name字段(例: /ndn/edu/pkusz/node6

  • nlsr_advertise_helper.sh

    • require

      运行该脚本之前需要先启动nlsr进程

    • 用处

      该脚本用于周知全网,本节点要处理IP(指定IP后会生成四个前缀)

    • 使用

      sudo ./nlsr_advertise_helper.sh <ip>
      
      
      

      假设ip等于 192.169.1.4,则执行 ./nlsr_advertise_helper.sh 192.169.1.4 等效于执行下面几行命令

      sudo nlsrc advertise /IP/pre/192.169.1.4
      sudo nlsrc advertise /IP/192.169.1.4
      sudo nlsrc advertise /IP/TCP/pre/192.169.1.4
      sudo nlsrc advertise /IP/TCP/192.169.1.4
      
  • easy-ndn.sh

    • require

      执行这个脚本之前需要先启动nfd进程,需要先编译项目,得到ip_ndn_stack_cpp可执行文件

    • 用处

      该脚本将createFace.shstart-nlsr.shnlsr_advertise_helper.sh结合起来使用,执行该脚本完成下面的工作 1. 创建Face接口 2. 生成nlsr配置文件,启动nlsr进程 3. 周知前缀 4. 启动ip_ndn_stack_cpp进程

    • 使用

      sudo ./easy-ndn.sh <nodeName> <ip> <configPath>
      

      使用实例:

      sudo ./easy-ndn.sh /ndn/edu/pkusz/node2 192.169.1.1 ../config/part1.json
      
S
Description
No description provided
Readme 2.6 MiB
Languages
Shell 96.6%
JavaScript 3.4%