基于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也会显示全部路由信息。

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

  1. Moveit + Gazebo:搭建双臂仿真平台(方案一)

    环境ubuntu20.04 ROS-noetic 国内少有搭建Moveit和Gazebo联合仿真的教程,对于搭建双臂等复杂的仿真平台更是鲜有资料,因此想要把自己的见解分享出来供大家参考,共同提高. 本 ...

  2. Moveit+Gazebo:搭建双臂仿真平台(方案二)

    演示视频:Moveit+Gazebo:搭建双臂仿真平台(方案二)_哔哩哔哩_bilibili 实现效果如上图所示,有两个rviz界面分别展示两条臂的运动,gazebo中同步rviz中的运动. 先说一下 ...

  3. iverilog搭建简易仿真平台

    iverilog搭建简易仿真平台 对于xsim和modelsim这种仿真测试平台,对操作系统要求过于严格,为了实现远程verilog编译仿真调试,我选择了linux+iverilog+gtkwave来 ...

  4. uboot移植到IMX6ULL平台详细过程

    uboot移植到IMX6ULL平台详细过程 文章目录 uboot移植到IMX6ULL平台详细过程 1.解压 2 编译 NXP 官方开发板对应的 uboot 3 烧写验证与驱动测试 1.SD 卡和 EM ...

  5. 16.04linux 安装微信,Ubuntu 16.04安装微信的过程记录

    微信没有出Linux的版本,但是可以通过以下方式解决: 1.使用网页版,除了没有公众号之后,一切都没问题,包括传文件等. 2.使用第三方版本,只不过这个是桌面应用,原理是通过网页API集成的,稳定性还 ...

  6. VS调试dll详细过程记录

    VS调试dll详细过程记录 还可以参考博客: https://blog.csdn.net/u014738665/article/details/79779632 在我们写的程序中有时候调用dll,并且 ...

  7. wintogo详细过程记录

    wintogo详细过程记录 大概步骤 详细过程 大概步骤 下载win10镜像 用DAEMON Tools Lite软件加载win10镜像 用wintogo软件制作win10系统 安装启动win10系统 ...

  8. linux终端版微信,Ubuntu 16.04安装微信的过程记录

    微信没有出Linux的版本,但是可以通过以下方式解决: 1.使用网页版,除了没有公众号之后,一切都没问题,包括传文件等. 2.使用第三方版本,只不过这个是桌面应用,原理是通过网页API集成的,稳定性还 ...

  9. 树莓派计算模块CM4搭建软路由OpenWrt+OpenClash过程记录

    本文记录了我通过树莓派CM4计算模块搭建OpenWrt软路由的过程以及遇到的问题和解决方法,其中仍有部分问题,因个人接触网络与linux知识不够深入,无法解决.如果有任何建议,欢迎交流,也希望这篇文章 ...

最新文章

  1. import configparser config.read(config_path) 报错 UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x
  2. 案例 | 新零售如何精细化运营?百联全渠道经验谈
  3. matlab句柄函数@和C++ 中的引用 很像
  4. 使用Java解决您的数据科学问题
  5. AWS Loft的数据库周
  6. mpvue 从零开始 女友初成长 0
  7. jQuery中each的用法之退出循环和结束本次循环
  8. C ++ 内存 | C/C++的动态内存管理_1
  9. 人工智能 信道估计 深度学习_深度学习人体姿态估计算法综述
  10. 用python画图代码-Python科学画图代码分享
  11. 生物信息学 | GEO介绍与安装
  12. srt格式导入pr乱码_PR软件导入字幕文件后显示乱码如何解决
  13. 剽悍一只猫---新书分享
  14. java-01背包(动态规划)
  15. 计算机组成原理——磁盘存储器的技术指标
  16. 补零不能提高频率分辨率的原因
  17. 最新版 swapidc自适应模板
  18. Softmax分类器基本实现
  19. 经纬度度分秒与十进制之间的转换
  20. 谈移动OA系统的特点和发展趋势

热门文章

  1. ActiveMQ:消息中心基本介绍
  2. speedoffice(PPT)怎么添加艺术字体
  3. Unity3D数学之坐标系,向量与四元素
  4. 国能准能集团研发矿山数字孪生系统 填补国内采矿行业空白
  5. NLP之TEA:基于python编程(jieba库)实现中文文本情感分析(得到的是情感评分)之全部代码
  6. HC-05和JDY-33通信 hc05蓝牙模块
  7. 系统架构设计笔记(87)—— 计算机病毒与防治
  8. Java多线程_多线程的补充
  9. 【已解决】xlive.dll没有被指定在windows运行如何解决
  10. 俄罗斯政府承诺全力保护卡巴斯基利益