Ubuntu搭建DTN2仿真平台(详细过程记录)

基于Ubuntu搭建DTN2仿真平台

软件安装

编译安装 dtn2 之前要保证 gcc 编译器是 3.3 版本以上(但其实如果用低于4.9版本的gcc编译make时会报错提示缺少-fstack-protector-strong,不好处理),并且需要安装了 TCL8.3 以 上版本及 BerkeleyDB4.2 以上版本,还需要先安装 oasys 才能安装 dtn2 。

本人是是在容器里的Ubuntu系统下安装的,与直接在Ubuntu系统安装相同,所用的文件: tcl8.5.12-src.tar.gz、Berkeley DB 5.3.21.tar.gz、 oasys-1.6.0.tgz、 dtn-2.9.0.tgz

软件下载

下载的dtn2网址(目前唯一可用):https://sourceforge.net/projects/dtn/
下载版tcl网址:https://nchc.dl.sourceforge.net/project/tcl/Tcl/
下载oasys网址:https://master.dl.sourceforge.net/project/dtn/oasys/
下载Berkeley DB:我在博客下的旧版本,也可去官网下载新版本,但不确定能否支持http://www.oracle.com/technetwork/products/berkeleydb/downloads/index.html

安装过程

将所有压缩包解压后放到/usr/local/目录下,然后依次安装:

  1. 安装 tcl :

注意: 后面要安装的1.6.0版本的oasys安装要求tcl版本低于8.6,只检索从8.5到8.3版本,检索不到就会安装失败。 我一开始安装8.6版本的tcl,官网很方便下载,到安装oasys时发现错误,因此又重新下载安装的8.5版本。官网各版本都有,但是很多版本我都无法下载,8.5.12版本也是尝试多次才成功的。

     $cd tcl8.5.12/unix 
     $./configure
     $make 
     $sudo make install 
     //不报错就是顺利安装成功,如果缺少如gcc,或者make等软件,apt-get安装上再来一次就ok。
  1. 安装 db
     $cd db-5.3.21/build_unix 
     $../dist/configure 
     $make 
     $sudo make install
  1. 安装 oasys

安装之前先运行下面的命令,进行一些补丁的安装:
$sudo apt-get install mercurial autotools-dev libdb-dev tcl-dev libxerces-c2-dev build-essential
另外1.5版本的oasys 可能需要加载补丁文件 fix-aclocal-oasys_v1.5.patch,1.6版本不需要额外加载

  $cd oasys-1.6.0
  $./configure 
  $make
  $sudo make install
 注意:tcl版本要低于8.6,gcc版本要低于5,我的gcc是系统默认的5版本,因此需要降级,简单方法如下

在原有5版本gcc基础上,我安装了4.8
sudo apt-get install gcc-4.8
sudo apt-get install g+±4.8
装完后在/usr/bin目录下
$ ls -l gcc*
在这里插入图片描述

表明当前存在版本5与版本4.8,但是发现gcc 链接到gcc-5, 需要将它改为链接到gcc-4.8 :

  $sudo mv gcc gcc.bak
  $sudo ln -s gcc-4.8 gcc

再次查看链接,已经改变:(且系统内有两种版本gcc,可以随时采用此方式换回高版本)
在这里插入图片描述
查看gcc版本:
在这里插入图片描述
表明当前系统中的gcc版本成功改为4.8啦!

同理对g++进行操作
$ ls -l g++* //根据列表展示应该也是g++链接到g++5
则需要将g++链接改为g++ -4.8

  /usr/bin$sudo mv g++ g++.bak
  /usr/bin$sudo ln -s g++-4.8 g++
  1. 安装 dtn
  $cd dtn-2.9.0 
  $./configure 
  $make 
  $sudo make install

注意:

  1. 此时dtn的安装需要gcc不低于4.8版本,否则会报error:
    unrecognized command line option ‘-fstack-protector-strong’ ,此错误需要手动修复
    the “-fstack-protector-strong” option was not added to the GCC compiler until version 4.9. Upgraded my GCC to the latest available fixed the issue.表明4.9以上版本的gcc自带。
    可以按照前面讲的方法改变链接再把gcc版本切回高版本。再次编译安装,就可以成功。
  2. 安装dtn时可能会提示要安装xerces
    只需要根据提示,在./configure后面加相应–disable 的参数即可解决。

基础运用

  1. 环境配置
    dtn2有两种配置方式:使用dtn.conf文件初始化配置以及利用控制台更改配置。先对配置文件进行简单配置,有其它需求再到控制台改动配置。
    先选择一个目录,用于保存dtnd的一些需求文件,linux用户名为ubuntu,我选择/home/ubuntu/dtn,dtn文件夹是自己创建的,还要在dtn下创建bundles以及db文件夹。然后从dtn安装目录下/daemon/dtn.conf拷贝到/home/ubuntu/dtn目录下,接下来编辑此文件。
    #daemon consloe configuration(守护进程控制台配置)
    保持默认,不需要改动
    #storage configure(存储配置)
    (a)存储方式有三种,我们选择berkeleydb,语法storage set type berkeleydb
    (b)目录改为自己创建的目录/home/ubuntu/dtn
    dtn以及bundles目录系统会根据上面配置目录自己找到
    #routing configuration(路由配置)
    (a)路由算法有多种,默认为静态路由:route set type static
    静态路由需要全部手动配置后面的link、route
    (b)还要设置本地节点EID,作为节点名字route local_eid"dtn://node1.dtn"
    #TCP convergence layer configuration(tcp汇聚层配置)
    (a)interface汇聚层保持默认配置
    (b)为对等节点添加链接,基于IP的链接,下一跳应该包含一个DNS主机名或一个IP地址,后面加冒号跟端口号,端口号默认4556,语法为:
    $link add link1 192.168.10.11:4556 ONDEMAND tcp
    ©添加路由,语法route add dtn://node2.dtn/* link1通过设定链接和路由来定位其它的dtn节点,表示到dtn://node2.dtn节点下一跳要经192.168.10.11。
    #路由设置可以空着后面再设置,剩余设置也可以先保持默认
  2. 启动dtn应用
    (1)初始化数据库
    安装程序后第一次启动dtnd需要先初始化数据库:
    $ cd dtn-2.9.0/
    $ daemon/dtnd -C/home/ubuntu/dtn/dtn.conf --init-db
    执行后可以看到守护进程启动,下次启动守护程序不需要再初始化数据库,直接启动就可以 $ daemon/dtnd -c /home/ubuntu/dtn/dtn.conf 或者用以下命令可以看到更多详细信息:$ daemon/dtnd -c /home/ubuntu/dtn/dtn.conf -I info
    (2)执行ping命令
    $ cd dtn-2.9.0/apps/dtnping
    $ ./dtnping localhost//ping localhost
    $ ./dtnping dtn://node2.dtn/ping //ping node2节点
    (3)执行dtnsend命令
    假设两台机器建立连接,A机器为dtn://node1.dtn,B机器为dtn://node2.dtn, ip地址配好,dtn.conf均配置好对等节点的静态路由及链接,启动dtnd显示守护进程,用dtnping测试连通效果。再分别开一个终端用于启动应用程序dtnsend以及dtnrecv,发送端:
    $ cd dtn-2.9.0/apps/dtnsend
    $ ./dtnsend -s dtn://node1.dtn/me -d dtn://node2.dtn/testing -t m -p “hello,I am A”
    接收端:
    $ cd dtn-2.9.0/apps/dtnrecv
    $ ./dtnrecv dtn://node2 dtn/testing
    (4)有任何不懂的命令均可以在控制台输入help获取帮助,输入help [command]可以列出相应命令的用法,例如: help link会列出ink的全部命令及用法解释,link dump可以显示全部链接,route dump也会显示全部路由信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FlowerMin

还是一枚学生,希望多多鼓励~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值