TCP与UDP模拟实验学习笔记
2012-11-29 12:25
411 查看
程序和相关解释可以参考:http://nile.wpi.edu/NS/ ,为英文文档。
本文假设已有课本教材和相关代码。
这个实验的仿真网络结构图包含:两个传输节点/路由器和数据接收端。传输节点到路由器的传递延迟是10ms,路由器到接收端是20ms。链路的管理机制是DropTail机制(丢掉队列尾部以实现更好的QoS 服务)。s1到d之间有一条FTP的联机,建构在TCP之上,接收TCP的数据后,会回复ACK封包给发送端。s2到d之间有一条CBR(const bit rate)的联机,建构在UDP之上。
TCL的程序代码略。
在目录文件下运行:
会生成仿真过程记录文件(out.tr)和一个NAM记录文件(out.nam),通过弹出的nam窗口,运行,可以观察网络仿真的过程(发包/回ACK等)。
本实验的重点应该是分析数据(out.tr)吧,下面是对自己的一些理解,花了一定的时间,不过可能还是有一些理解的不到位。
记录的格式字段包括--事件/时间/发送节点/接收节点/包的类型/包大小/封包的标记标注/封包属于哪一个数据流/封包的来源端/封包的目的端/封包的序号/封包的ID。共12个字段。
out.tr中按时间记录了网络中的所有封包,包括tcp/cbr/ack类型,封包的来源端和目的端的格式为a.b,a代表结点编号,b表示端口号。 封包的序号(seq number)好像表示网络层包的序号,封包的id是标识一个包的。
1.0--3.1表示从结点1的端口0发送包到结点3的端口1,中间会经过路由器的转发(被路由器接收并转发)。每个封包都会发两次?!。tcp报文大小为1040byte,cbr为1000byte???
awk语言是一行一行的来读取数据文件,要注意它的工作流程。在此不多做介绍。
使用awk对out.tr的数据做简单分析,分析的物理量包括:端点到端点的延迟/抖动率/封包的遗失率/吞吐量。
1.端点到端点的延迟
顾名思义,是计算包从发送端到接收端之间的时间,比如从节点1到节点3之间经过的时间,前面分析过大约是30ms左右的时间,会在队列中等待,导致延迟时间会大于30ms,比如38.7ms等,等待的时间不同,导致延迟时间不同,这个不同就是抖动率。
awk中一段程序为:
这里的“r”表示接收包的意思,其时间表示接收该包的时间,out.tr中的每一行表示一个包,一个包肯定会被路由器转发(接收),当被目的端接收时就会覆盖掉路由器的这个end_time[packet_id],从而得到packet_id包的接收时间。接收时间-发送时间就可以得到这个包的延时,该延时表示端点到端点的延时。
使用gnuplot工具可以画出每个包的延时(横轴为包的发送时间,纵轴位延时时间),图当然可以画的更细致/更好看一些。画图的代码为:
2.抖动率(jitter)
如前所述,抖动就是因为在队列中的等待时间或者在链路上的传输时间不一样,导致的每个封包的延迟时间不一样。这个物理量可以描述网络的稳定情况,抖动率越大,表示网络越不稳定。抖动率的计算公式为:(封包n2的延时-封包n1的延时)/(n2封包的序列号-n1封包的序列号) ???。 awk程序略。
使用类似的画图程序(这里,如果前面做了一些绘图环境的设置,想要重置环境的话,使用reset命令即可),可以得到抖动率的统计图为:
3.封包的遗失率
其含义是:丢失包占发送包的比例。awk程序中统计的是,发送包的数量和丢失包的数量。
4.吞吐量
表示单位时间内,某个节点发送和接收的数据量。
实验中统计的是,from结点2 to 节点3在不同接收时刻的吞吐量。公式为:th=pkt_byte_sum[j]/(end_time[j]-start_time)*8/1000;单位是kbps。
模拟图为:
本文假设已有课本教材和相关代码。
这个实验的仿真网络结构图包含:两个传输节点/路由器和数据接收端。传输节点到路由器的传递延迟是10ms,路由器到接收端是20ms。链路的管理机制是DropTail机制(丢掉队列尾部以实现更好的QoS 服务)。s1到d之间有一条FTP的联机,建构在TCP之上,接收TCP的数据后,会回复ACK封包给发送端。s2到d之间有一条CBR(const bit rate)的联机,建构在UDP之上。
TCL的程序代码略。
在目录文件下运行:
ns lab3.tcl
会生成仿真过程记录文件(out.tr)和一个NAM记录文件(out.nam),通过弹出的nam窗口,运行,可以观察网络仿真的过程(发包/回ACK等)。
本实验的重点应该是分析数据(out.tr)吧,下面是对自己的一些理解,花了一定的时间,不过可能还是有一些理解的不到位。
记录的格式字段包括--事件/时间/发送节点/接收节点/包的类型/包大小/封包的标记标注/封包属于哪一个数据流/封包的来源端/封包的目的端/封包的序号/封包的ID。共12个字段。
out.tr中按时间记录了网络中的所有封包,包括tcp/cbr/ack类型,封包的来源端和目的端的格式为a.b,a代表结点编号,b表示端口号。 封包的序号(seq number)好像表示网络层包的序号,封包的id是标识一个包的。
1.0--3.1表示从结点1的端口0发送包到结点3的端口1,中间会经过路由器的转发(被路由器接收并转发)。每个封包都会发两次?!。tcp报文大小为1040byte,cbr为1000byte???
awk语言是一行一行的来读取数据文件,要注意它的工作流程。在此不多做介绍。
使用awk对out.tr的数据做简单分析,分析的物理量包括:端点到端点的延迟/抖动率/封包的遗失率/吞吐量。
1.端点到端点的延迟
顾名思义,是计算包从发送端到接收端之间的时间,比如从节点1到节点3之间经过的时间,前面分析过大约是30ms左右的时间,会在队列中等待,导致延迟时间会大于30ms,比如38.7ms等,等待的时间不同,导致延迟时间不同,这个不同就是抖动率。
awk中一段程序为:
if ( flow_id == 2 && action != "d" ) { if ( action == "r" ) { end_time[packet_id] = time; } }
这里的“r”表示接收包的意思,其时间表示接收该包的时间,out.tr中的每一行表示一个包,一个包肯定会被路由器转发(接收),当被目的端接收时就会覆盖掉路由器的这个end_time[packet_id],从而得到packet_id包的接收时间。接收时间-发送时间就可以得到这个包的延时,该延时表示端点到端点的延时。
使用gnuplot工具可以画出每个包的延时(横轴为包的发送时间,纵轴位延时时间),图当然可以画的更细致/更好看一些。画图的代码为:
set terminal gif set output "cbr_delay.gif" plot "cbr_delay"图为:
2.抖动率(jitter)
如前所述,抖动就是因为在队列中的等待时间或者在链路上的传输时间不一样,导致的每个封包的延迟时间不一样。这个物理量可以描述网络的稳定情况,抖动率越大,表示网络越不稳定。抖动率的计算公式为:(封包n2的延时-封包n1的延时)/(n2封包的序列号-n1封包的序列号) ???。 awk程序略。
使用类似的画图程序(这里,如果前面做了一些绘图环境的设置,想要重置环境的话,使用reset命令即可),可以得到抖动率的统计图为:
3.封包的遗失率
其含义是:丢失包占发送包的比例。awk程序中统计的是,发送包的数量和丢失包的数量。
4.吞吐量
表示单位时间内,某个节点发送和接收的数据量。
实验中统计的是,from结点2 to 节点3在不同接收时刻的吞吐量。公式为:th=pkt_byte_sum[j]/(end_time[j]-start_time)*8/1000;单位是kbps。
模拟图为:
相关文章推荐
- ns 2.35 柯志亨书-实验3笔记-TCP UDP模拟
- NS 2.35 柯志亨书-实验3笔记-TCP UDP模拟 ——计算FTP不同参数:时延、抖动、吞吐率、丢包率awk代码
- s 2.35 柯志亨书-实验3笔记-TCP UDP模拟 ——计算CBR不同参数:抖动、吞吐率、丢包率awk代码
- 黑马程序员_学习笔记:15) 网络编程:Socket(udp、tcp)
- 黑马程序员________Java中UDP和TCP网络编程学习笔记
- JAVA学习笔记Day24——javaTCP UDP网络编程Socket总结
- Java 网络编程 TCP vs UDP -Java学习笔记(31)
- 《Unix网络编程》学习笔记 1 (TCP UDP 简单认识 摘抄)
- Golang 学习笔记:HTTP, TCP/IP, UDP
- 学习笔记一:TCP与UDP通信协议
- python网络编程学习笔记(2)--TCP和UDP区别(补充)
- 黑马程序员_UDP和TCP简单的通信代码和注释学习笔记
- 19. JAVA 网络编程 Part 1 (IP与InetAddress类、URL与URLConnection类、URLEncoder与URLDecoder类、TCP&UDP)---- 学习笔记
- Unix网络编程学习笔记之第2章 TCP和UDP
- 网络编程(UDP/TCP)+JAVA学习笔记-DAY26
- UDP和TCP的学习笔记
- 实验:传输层:UDP协议 学习笔记
- 网络编程学习笔记(使用select函数的TCP和UDP回射服务器程序)
- Socket/UDP/TCP学习笔记
- (原创)TCP-IP学习笔记之UDP(用户数据报协议)