网络模拟和分析工具--Mahimahi的安装教程

发布于:2022-12-15 ⋅ 阅读:(647) ⋅ 点赞:(0)

目录

一、Mahimahi 功能介绍

(一)、记录和重放HTTP流量—Record and replay HTTP traffic

1.RecordShell

2.ReplayShell

(二)、模拟多种网络条件—Emulate numerous network conditions

1.DelayShell—固定传输延迟

2.LinkShell—固定/可变链路速率

3.LossShell—随机丢包

(三)、使用未修改的客户端应用程序—Use unmodified client applications

二、Mahimahi 安装预备知识

(一)安装环境介绍

(二)基础知识

1、需要用到的Linux命令                   

2、普通用户权限设置

三、Mahimahi 安装教程

(一)安装方法

1、方法一

2、方法二 

(二)安装细节

1、安装vim

2、如果报错:could not creat work tree ….,

3、安装git

4、安装apt

5、安装automake

6、安装apache2

7、安装protobuf 3.6

8、安装apx

9、安装openssl

10、安装xcb

11、更新gcc、g++到8.4.0以上

(三)安装测试


一、Mahimahi 功能介绍

Mahimahi 是用于网络模拟和分析的工具。

fb22d90a368a4bc68134b809d867a625.jpeg

其核心功能主要有以下三点:

(一)、记录和重放HTTP流量—Record and replay HTTP traffic

实现这一功能主要依靠Mahimahi的两种Shell模式:

1.RecordShell

        用于记录浏览器的实时HTTP请求和响应报文,并完整地存储到本地磁盘。

2.ReplayShell

        用于重放记录的内容。

        (即在模拟网络下重复进行RecordShell所记录的HTTP请求和相应过程)

(二)、模拟多种网络条件—Emulate numerous network conditions

该模式下提供三种Shell模式,用来模拟不同的链路条件:

1.DelayShell—固定传输延迟

        指定单项延迟时间;

2.LinkShell—固定/可变链路速率

        模拟时变链路(如蜂窝链路)和具有固定链路速度的链路。

        LinkShell 工作原理:通过追踪数据链路上的数据包来模拟链路;

        LinkShell 工作过程:

        (1).当数据包(从Internet或LinkShell)到达链路时,根据其预期方向,它将直接被放入两个数据包队列之一:上行链路队列或下行链路队列。

                上行链路跟踪文件(uplink trace file):模拟从LinkShell的容器到Internet的链接

d1d98de84c4941778667d6af088428e4.jpeg

                下行链路跟踪文件(downlink trace file):模拟从Internet到LinkShell容器的链接。

22218460a7dc4618850781e80b98e710.jpeg

       (2).LinkShell 跟踪每个队列中的数据包,并在跟踪文件中记录跟踪到的数据包的信息。

        

        跟踪文件记录的是(在模拟网络下)传递一份数据包的时间,而这个数据包的大小为MTU(即网络传输最大报文包的大小)。

        跟踪文件一行只能记录1500byte 大小的信息,但是一行能记录几个总计为1500byte 的数据包的信息。

        LinkShell 可以嵌套在DelayShell中,以灵活地创建用户所需的链路条件。

        LinkShell 支持实时图形化,以可视化某一进程下的网络使用。

        LinkShell 支持的图表可以展示数据传输速率、数据包在离开或进入LinkShell容器的上、下行链路链路时的排队延迟。

3.LossShell—随机丢包

        在离开或进入LinkShell容器的上、下行链路链路时,将数据包以给定的速率(0和1之间)随机丢失

(三)、使用未修改的客户端应用程序—Use unmodified client applications

        可以使用商业浏览器(如谷歌浏览器、Mozilla Firefox和Safari)记录和重网站。

        此外,包括虚拟机和移动设备模拟器在内的其他客户端应用程序可以在Mahimahi的每个工具中不经修改地运行。

        (也就是说在Mahimahi模拟的网络环境下可以运行其它应用或工具)

        可在模拟的网络条件下执行应用程序叠加使用RecordShell来重放HTTP流量。

        Mahimahi 提供的每一种shell既可以彼此独立并行又能相互嵌套从而提供更大的实验灵活性。


 

二、Mahimahi 安装预备知识

(一)安装环境介绍

        本文使用的是VMware Workstation Pro虚拟机,并在Linux操作系统下安装的Mahimahi。Linux镜像文件版本为Ubuntu 16.04.7。

(二)基础知识

        (这一部分可以选择性跳过)

1、需要用到的Linux命令                   

Ctrl + Alt + T  进入终端
pwd    查看当前目录
cd  进入目录;如"cd /home"表示进入home目录,目录前要加"/"
sudo passwd root  设置root账户的初始密码,root账户是默认的,不需要再创建
sudo useradd -m abc

创建用户名为abc的普通用户;

sudo是允许系统管理员让普通用户执行root命令的一个工具(获取权限);

-m 表示自动建立用户的登入目录;这里会需要输入管理员的密码,但不是你想给新用户设置的密码

sudo passwd aaa  输入用户aaa的密码
su root  (从普通用户)进入root用户
su abc      从root用户切换到普通用户abc,abc是用户名

                    

                 

示例:

(1)设置root用户密码

94d04c38f7784d5f8463480c88be026a.png

 (2)创建普通用户2e157e88bac84e2b8b0aedaf2cad18bd.png

1f572813efc84d97b459e83d0cc127f6.png

2、普通用户权限设置

如果不设置,就会报错:abc is not in the sudoers file

5853343a8e86437aa66de522e7220110.png

 fd24b7ba94f541698e242fd0a9a7fc18.png

 按"i"键进入编辑模式

写完之后要输入“:wq!”,用来保存已经增加的权限信息,像这样:

202ff7fc99e04ed29d66116b9b20ce1f.png

        输入完成后会自动退出的

三、Mahimahi 安装教程

下图为Mahimahi官网要求的安装必备工具,后面会介绍这些工具的安装方法。

a3ad2b13c17540be8a30d1eec5cdbe6c.png

(一)安装方法

1、方法一

0c2d50e893714c55b66ecd58f492f6e2.png

2、方法二 

765cc1adbecf40b4b7f403d42bf8e4d4.png

注:

鄙人在尝试第一种方法的时候没有成功,又没有找到出错的原因,于是使用了第二种方法。

如果大家第一种方法都没成功的话,可以尝试第二种方法。

接下来我将附上第二种方法安装成功的小tips。

接下来进入最关键也是最容易出错的环节

4d7fb2db4be24af3a7146439f456eade.jpeg

(二)安装细节

1、安装vim

        apt install vim

否则会报错:

afee970e44d549d0bb3d13aacf66206a.png

2、如果报错:could not creat work tree ….,

在执行 "git clone https://github.com/ravinet/mahimahihttps://github.com/ravinet/mahimahi"时报错,如下图:

f4de56e99f2f47b88b5a262f75457519.png、出错原因:当前目录没有权限(具体是什么权限,我不知道)

解决方法:

(1)切换到有权限的目录下去执行安装代码

(2)给一个目录赋予权限,然后继续执行安装代码

        如:给home目录赋予权限

        sudo chmod 777 /home

de1589e28f3745bbb7ffb9225e1360cc.png

3、安装git

        apt install git

a28d4d8a72b446dda9d1e4e6bf59e38d.png

4、安装apt

系统自带,不用安装

5、安装automake

fac13203a39b4c0faaf10a790a8ee215.png

否则会报错:

 1088687d3f074061bfe5af3384b1d65f.png

6、安装apache2

(第一行是更新apt-get可以不用敲)

ffdd8c02698a4316a7d28a7bee84f63e.png

不安装则会报错:

apache2 is required

7、安装protobuf 3.6

027185ee19864f85a2ef0a1f9e1680b5.png

0e993cb0ad874fd2a9e6923744c88f73.png

c144ea33c1544cdc902e2658b35919c0.png

 不安装则会报错:

cannot find protoc, the Protocol Buffers compiler

8、安装apx

在root账户下执行:

e8a04d005e9149a99844d65bde58c789.png

9、安装openssl

07047665229c4e508f16495ebb791fd5.png

 不安装则会报错:

no package ‘libcrypto’ found

no package ‘libssl’ found

10、安装xcb

6bccebb47de84bb898eeeffe976082d5.png

不安装则会报错:

no package ‘xcb-present’ found

11、更新gcc、g++到8.4.0以上

5fb44e80b6884962a16c58c74f4dc868.png

安装完后要不断检查gcc、g++版本,确保编译的时候使用的是8.4.0以上的版本

如果发现系统默认的是旧的版本,则更改权重,让系统优先使用新的版本

e7c28741c74b44f29b3a544f96fd57e6.png

 不更新到8.4以上的话则会报错:

271b38fabfb7425ea1d4a56155116e5f.png

 报错原因:

        Ubuntu 16.04.7自带的gcc、g++版本为4,而这个版本的编译器在执行安装代码“make”的时候会出现格式冲突,因而要手动升级gcc、g++版本(据说要升级到8以上版本才行,我只试了4、5、6、8几个版本没有试7),同时要注意设置权限来让系统使用新版

检查gcc、g++版本

gcc -v 

g++ -v

gcc --version     

g++ --version

12、安装pango、cairo 

(执行sudo以后的代码就行了)

8220170e69c848858852df35c1c1a54a.png

(三)安装测试

        安装好以上部件,Mahimahi 的第二种方法的全部代码就能顺畅地执行了,最后,测试一下安装是否成功:

mm-delay 20

bc0228660b244845aaea7d941595dc53.png

出现下面的结果就说明安装成功啦

 58663703a1bd4b8d90a1ca78ba796ed8.png

034263bdc57f4b4a934d15d09e01d366.jpeg

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到