NS2仿真分析无线网络的攻击防御(2)

牙说:继续上一篇博文进行翻译。

4. NS和我们的工作

我们试图评估黑洞攻击在无线Ad-hoc网络中的影响。 为了实现这一点,我们已经使用NS 网络模拟 [14]程序模拟了一个含有黑洞节点的无线自组网络场景。为了模拟无线自组织网络中的黑洞节点,我们实现了一种将数据包吸引到自身之后丢弃数据包的新协议。在本章中,我们介绍了NS以及我们对这个软件的改变。

4.1 NS网络模拟器

NS是一个事件驱动的网络模拟器程序,加利福尼亚州伯克利大学开发,其中包括许多网络对象,如协议,应用程序和流量来源行。 NS是VINT项目软件的一部分[15],自从1995年以来一直由DARPA资助。

   图13 NS-2模式

在仿真层,NS使用OTcl(面向对象的工具命令语言)编程语言来解释用户仿真脚本。 OTcl语言实际上是面向对象的Tcl语言扩展。 Tcl语言与C ++编程语言完全兼容。在顶层,NS是用户TCL脚本的解释器,它们与C++代码一起使用,在第五章将详细介绍TCL语言的使用。

如图13 [16]所示,用户编写的OTcl脚本由NS解释。 当OTcl脚本被解释时,NS同时创建两个主要的分析报告。 其中之一是NAM对象,显示模拟的视觉动画。另一个是由模拟中所有对象的行为组成的跟踪对象。它们都是由NS创建的文件,与NS一起使用的NAM软件使用.nam文件。 Latter是一个“.tr”文件,其中包含文本格式的所有模拟轨迹。(牙注:翻译不好,词大致达意)

在本研究中,我们使用了ns一体式的2.29版本,并使用Cygwin在Windows环境中安装了该软件包。 在版本2之后,NS通常使用NS-2,在我们的论文中,我们将其称为NS-2 我们在文本编辑器中编写了“.tcl”文件,并使用Unix操作系统的“cat”,“awk”,“wc”和“grep”命令分析了“.tr”文件的结果。 AODV协议的黑洞行为的实现阶段是使用C ++编写的。

4.2 在NS中实现新的路由协议以模拟黑洞行为

在[17]中描述了NS-2中新的Manet单播路由协议的实现。在我们的工作中,我们已经使用了使用AODV协议的无线自组织网络中显示黑洞行为的节点(牙注:这句话非常绕口,考验语文水平……)。 由于节点表现为黑洞,因此它们必须使用可以参与AODV消息传递的新路由协议。 下面详细介绍这种新的路由协议的实现:

NS中的所有路由协议安装在“ns-2.29”的目录中。 我们复制此目录中AODV协议,并将目录的名称更改为“blackholeaodv”

我们把这个目录中标记为“aodv”的所有文件的名称将更改为“blackholeaodv”,如blackholeaodv.cc,blackholeaodv.h,blackholeaodv.tcl,blackholeaodv_rqueue.cc,blackholeaodv_rqueue.h等,除了“ aodv_packet.h“。 我们的工作重点是AODV和黑洞AODV协议将相互发送相同的AODV数据包。 因此,我们没有将“aodv_packet.h”文件复制到blackholeaodv目录中。

我们目录中的所有文件所有类,函数,结构体,变量和常量名称都改变了(牙注:改变大概是说改aodv为blackholeaodv吧),而不包括属于AODV packet.h代码的结构体名称。我们设计了aodv和blackholeoadv协议来发送对方的aodv数据包。 这两个协议实际上是一样的。

在上述更改之后,我们更改了NS-2共享的两个常见文件,将新的blackholeaodv协议集成到模拟器中。以下是更改说明:


图16  blackholeaodv“协议代理添加在”\ tcl \ lib \ ns-lib.tcl“中

第一个修改的文件是“\ tcl \ lib \ ns-lib.tcl”,其中协议代理程序被编码为一个过程。 当节点使用blackholeaodv协议时,该代理在模拟开始时进行调度,并分配给将使用blachholeadodv协议的节点。 blackholeaodv的代理程序如图14所示。

在“ns-2.29”的根目录中修改的第二个文件是“\ makefile”。 在所有实现准备好之后,我们必须再次编译NS-2来创建对象文件。 我们将图15中的下面的行添加到“\ makefile”中。


图17 “/makefile”中添加的部分

到目前为止,我们已经实施了一个新的路由协议,被标记为blackholeaodv。 但是,这种新的路由协议还没有实现黑洞行为。 要将黑洞行为添加到新的AODV协议中,我们在blackholeaodv / blackholeaodv.cc C ++文件中进行了相同的更改。 我们将在blackholeaodv / blackholeaodv.cc文件中描述我们在AODV和Black Hole AODV协议下的工作机制的这些改变。

当通过“aodv / aodv.cc”的“recv”功能接收到数据包时,它将根据其类型处理数据包。 如果数据包类型是许多AODV路由管理数据包中的任何一个,它将数据包发送到下面我们将要解释的“recvAODV”函数下。如果接收到的数据包是数据包,通常AODV协议将其发送到目标地址,但是作为黑洞,它会丢弃所有数据包。 在下面的代码中,第一个“if”条件提供如果它是目标时节点接收数据包的情况,“else”条件会丢弃所有剩余的数据包。 If语句如图16所示。


图16 接收或者丢弃数据包的情况

如果分组是AODV管理分组,则“recv”函数将其发送到“recvblackholeAODV”功能。 “recvblackholeAODV”功能将检查AODV管理包的类型,并根据包的类型将其发送到具有“case”语句的适当函数。 例如; RREQ数据包发送到“recvRequest”函数,RREP数据包发送到“recvReply”函数等,“recvblackholeAODV”函数的case语句如图17所示。


图17 用于选择AODV控制消息类型的案例语句

在我们的情况下,我们将考虑RREQ功能,因为黑洞行为是在恶意节点接收到RREQ数据包时进行的。 当恶意节点接收到RREQ数据包时,它会立即发送RREP数据包,就好像它有足够的能力快速到达目的地。恶意节点通过这样的方式欺骗节点。AODV协议的最大序列号是4294967295(32位无符号整数值中的最大值)。为了达到最好的欺瞒效果,恶意节点将发送的RREP数据包的序列号设置为4294967295,跳数设置为1。

黑洞攻击的伪RREP消息如图18所示。


图18 黑洞攻击的虚假RREP消息


所有更改完成后,我们重新编译所有NS-2文件以创建对象文件。 完成编译后,我们有一个新的测试台来模拟AODV协议中的黑洞攻击。 在下一章中我们将介绍模拟和仿真结果。


5.黑洞攻击模拟及其影响

   在本章中,首先,我们将简要介绍Tcl语言来了解仿真场景,接着展示了如何测试黑洞的实现以及展示黑洞攻击的模拟来演示其效果。然后我们将评估黑洞攻击在Ad-Hoc网络中的影响。

5.1 NS中的TCL语言

   TCL是加州大学伯克利分校的John Ousterhout开发的强大的解释性编程语言。 [18] TCL是一个非常强大和动态的编程语言。Tcl是一个真正的跨平台语言,易于部署而且具有高扩展性。

   Tcl语言最显着的优点是与C语言完全兼容,Tcl库可以直接与C程序进行互操作。我们将在下一节中描述我们设计用于实施黑洞攻击的Tcl代码。

5.2 测试黑洞AODV

为了更加直观地显示实验结果,我们使用了NAM应用程序进行观测。比较黑洞节点的的效果,我们使用了两个模拟:在第一种情况下,我们没有使用任何黑洞AODV节点(开展黑洞攻击的恶意节点称为黑洞节点),在第二种情况下,我们在模拟中添加了一个黑洞攻击节点,然后我们使用NAM比较了模拟的结果。

5.2.1 模拟参数和测试指标

为了从模拟节点中获得等价准确的结果,我们使用了UDP协议。在使用UDP协议的时候,即使数据包丢失,源节点也会持续不断地发送数据包,但是如果是TCP协议,它就会断开连接。使用UDP,我们可以观察到仿真期间发送节点和接收节点之间的连接流动,还能够分开发送和接收的数据包,因为在仿真期间UDP连接不会丢失。 如果使用TCP协议,我们不能对发送或接收的数据包进行计数,因为如果没有收到TCP ACK数据包,则启动TCP连接的节点将在一段时间后完成连接。

我们生成一个具有7个节点的小型网络,并在节点2和节点5之间建立UDP连接,附加通过UDP连接生成常量数据包的CBR(Constant Bit Rate)。CBR数据包的大小选择为512字节长,数据速率设置为1M字节/s(牙注:有疑问……/s?)。场景大小为79m x 659m的持续时间设置为20s,CBR的连接在时刻1s开始并且持续到仿真结束。我们手动定义了节点的适当位置以显示数据流,并且还向节点1引入一个运动,以显示网络中的数据流的变化。 Tcl脚本包含第一次模拟的黑洞AODV,如附录A所示。(牙注:附录见最后

5.2.2 模拟评估

在没有黑洞AODV节点的第一种情况下,当我们使用NAM查看模拟的动画时,节点5和节点4之间的连接是正常的不连接,图19显示了从节点2到节点5的数据流。当节点1移动离开节点2的传播范围时,通过节点3建立了新的连接。新的连接路径如图20所示。

19 节点2和节点5通过节点1和节点6建立的数据流

19 节点2和节点5通过节点3和节点4建立的数据流

    在第二种情况下,注释掉Tcl脚本中的三个语句,如图21所示,我们可以轻松地将Black Hole行为添加到Node0中。第一个语句“$ ns node-config -adhocRouting blackholeAODV”是添加黑洞AODV行为到从此点创建的节点。 但是我们只将节点0定义为黑洞AODV,并且在节点0再次使用第三个语句之后,我们必须更改为AODV协议。 第二个声明只是向Node0发出通知,将其定义为黑洞节点。


图21 在Tcl脚本中创建和配置节点

节点0为黑洞AODV节点,它吸收从节点2到节点5的连接中的数据包。图22显示了黑洞AODV节点如何吸收流量。


图22 节点0(黑洞节点)吸收节点2到节点5的数据包

因为我们不能轻易地看到黑洞AODV Node在大量节点和连接中的影响,在实际的仿真中进行实验之前,我们必须在具有少量节点的小型模拟中测试实现。


5.3 黑洞攻击的测试

5.3.1 模拟参数和测量指标

在偶数节点(包括0(零))和奇数节点之间建立UDP连接,我们使用了20个节点,节点18和节点19没有连接到网络中的任何其他节点

在这些情况下,偶数节点(节点0 - 节点16)是发送节点,奇数节点(节点1 - 节点17)是接收节点,偶数节点将分组发送到下一个奇数节点,例如 节点0到节点1,节点2到节点3,节点4到节点5等等。我们可以对任何2个节点之间的发送和接收分组进行计数。我们将 UDP代理连接到偶数节点,并且NULL代理附加到奇数节点。

这个场景中,18个节点之间共有9个连接,并且所有这些连接总是位于相同的节点之间。 但是,在每种情况下,每个单个节点都被放置在不同的坐标上并且有着不同的运动表现,这有助于我们使用相同的节点得到不同的结果,。节点位置和移动由NS的第三方应用程序“./setdest”随机生成,并保存在模拟根目录的“/ scenario”目录中。 使用“./setdest”的参数命名每个场景,例如 “scen1forAODV-n20-t500-x750-y750”,“./setdest”应用程序会在750 x 750米的平面空间中,在500秒内,随机选择速度,从20个节点之间产生一个从随机起点移动到随机目的地的场景。

我们附加通过UDP连接生成常量数据包的CBR(常数比特率)应用程序。 场景的持续时间为500秒,CBR连接在场景的第一秒开始,持续到场景的450秒。在本实验中,CBR参数如下:

包大小:512bytes

数据速率:10Kbits

在这个仿真中,我们没有使用随机包。

连接类型由NS的第三方应用程序“./cbrgen”生成,并在模拟根目录的“/ scenario”目录中保存为名为“cbr”的文件。 附录A中注释的for循环将创建相同的cbr连接。

仿真中的节点由Tcl语言的“for”循环语句生成。 创建节点的这些语句如图23所示。第一个循环创建图24中配置的前19个节点。“$ ns_ node-config - adhocRouting blackholeAODV”语句将节点配置的路由协议更改为NS中实现的“blackholeAODV”。在这句语句后面的第二个循环创造了最后一个节点。改变“$ val(nnaodv)”变量,我们可以根据需要创建AODV和Black Hole AODV节点。

23 使用循环创建无线节点

24 无线节点配置

我们的模拟文件以其模拟数字和“BlackHole”定义命名,例如“sim1forBlackHole.tcl”用于模拟1.为了比较具有黑洞AODV节点的模拟与没有的模拟文件,我们更改了“ $ val(nnaodv)“变量为20,并在”$ ns_ node-config -adhocRouting blackholeAODV“语句前放置注释”#“,然后我们将Tcl脚本复制到同一目录中,用“AODV”更改”BlackHole“定义的文件名,例如“sim1forAODV.tcl”用于模拟1.黑洞AODV的第一个模拟文件的内容,如附录A所示。

5.3.2 检查跟踪文件并获取结果

我们从Tcl脚本的输出跟踪文件中获取模拟结果,该文件具有.tr扩展名。 跟踪文件包括模拟中的所有事件,例如发送数据包,哪个节点生成它们,哪个节点已经接收到那个类型的数据包被发送,如果它被丢弃为什么被丢弃等等。在我们的模拟中,我们使用特别用于无线网络的“new-trace”文件格式,并包括详细的事件信息。 新追踪文件示例如附录B所示。

为了从跟踪文件获得结果,我们只需要字段1中的事件种类,字段4中的节点id(-Ni)和跟踪级别(-Nl),字段5中的源地址,目标地址和数据包类型。要识别 以上来自跟踪文件的信息,我们使用UNIX的“cat”命令,并将其输出写入文件以供模拟的所有跟踪文件使用。 在所有输出中,我们只需要:

字段0中的事件信息的“s”值,以计算发送节点发送的CBR数据包数量

字段0中的事件信息的“r”值,以计算接收节点接收到的CBR数据包数量

node id”值为字段4中的节点id信息,用于发送节点或接收节点

“MAC”值在字段4中的跟踪级别信息,以过滤MAC级别(牙注:过滤mac级别是什么意思?)

字段5中的源地址和目的地地址信息的“源地址”和“目的地址”值,以计数从发送节点到接收节点的数据包。

cbr:字段5中的数据包类型,用于过滤cbr包(牙注:过滤cbr包是什么意思?

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值