网络环境模拟搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lluozh2015/article/details/52148839

原先使用NEWT在Windows端搭建一套网络仿真的环境,现在搭建一套更加精确的网络控制器

网络模拟拓扑图

这里写图片描述

其中,网络控制器需要时一个双网卡的服务器,两个网口eth0和eth1

网桥的搭建

网桥:工作在网络链路层,可以连接不同局域网的网络设备

网络控制器中网桥的搭建:
安装网桥搭建工具bridge-utils:
yum install bridge-utils
配置网桥:
brctl addbr br0
brctl addif br0 eno1
brctl addif br0 eno2
ifconfig br0 xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx up

使用brctool show查看配置是否成功:
这里写图片描述

流量控制模块配置

网桥搭建成功后,现在我们开始流量控制部分

实现工具:
linux2.4以上版本的内核中自带了有netem(net emulation)模块和tc(traffic contrl)模块,前者用于网络仿真,后者用于流量整形控制,都是通过tc命令进行配置

作用:
在性能良好的局域网中,模拟出复杂的互联网传输性能,诸如低带宽、传输延迟、丢包等等情况

实现流程:

这里写图片描述

配置命令:

延时

  • 固定延时
# tc qdisc add dev eno1 root netem delay 100ms
  • 波动性的延时:
tc qdisc change dev eno1 root netem delay 100ms 10ms

将 eno1 网卡的传输设置为延迟 100ms ± 10ms (90 ~ 110 ms 之间的任意值)发送

ping 一下153机器:
这里写图片描述

  • 进一步加强波动性的延时:

设置相关性为30%:

tc qdisc change dev eno1 root netem delay 100ms 10ms 30%

抖动

设置延时抖动为正态分布:

# tc qdisc change dev eno1 root netem delay 100ms 20ms distribution normal

丢包

  • 固定丢包率:
 # tc qdisc change dev eno1 root netem loss 10%

ping 一下153机器:
这里写图片描述
因为ping的时长较短,故丢包率不是很准确

包重复

# tc qdisc add dev eno1 root netem duplicate 1%

将 eno1 网卡的传输设置为随机产生 1% 的重复数据包

包损坏

# tc qdisc add dev eno1 root netem corrupt 0.2%

将 eno1 网卡的传输设置为随机产生 0.2% 的损坏的数据包(内核版本需在 2.6.16 以上)

乱序

  • 按照个数
# tc qdisc change dev eno1 root netem gap 5 delay 10ms

每第5个包马上发送,其他的包间隔10ms发送

  • 按照百分比
# tc qdisc change dev eno1 root netem delay 10ms reorder 10% 25%

10%的包(相关性为25%)马上发送,其他的包间隔10ms发送

带宽
模拟工具:ethtool
命令:

s ethX [speed 10|100|1000] [duplex half|full]  [autoneg on|off] 
  • 如设置100M的带宽:
# ethtool -s eno1 autoneg off speed 100 duplex full
  • 使用ethtool eno1 查看网络带宽

这里写图片描述

  • 查询网口收发包统计
ethtool –S eno1
  • 将ethtool 设置永久保存在网络设备的方法

ethtool 设置可通过 /etc/sysconfig/network-scripts/ifcfg-ethX 文件保存,从而在设备下次启动时激活选项。
例如:ethtool -s eno1 speed 100 duplex full autoneg off
此指令将eno1设备设置为全双工自适应,速度为100Mbs。若要eno1启动时设置这些参数, 修改文件/etc/sysconfig/network-scripts/ifcfg-eno1,添加如下一行:
ETHTOOL_OPTS=”speed 100 duplex full autoneg off”

问题1:

配置OK后出现网络控制器无法连接外网但可ping通局域网,数据接收端可正常连接外网且能ping通局域网的问题,删除网桥后,网络控制器即可访问外网
是否因为网桥的设置出现问题,尝试删除eno1和eno2网口的ip等信息,尝试将eno1和eno2的ip等设置为手动设置,尝试将linux的防火墙关闭,甚至是重装系统,各种尝试均无解的时候,检测网络控制器ping外网时的路由情况traceroute hostname,发现只是在本地连网关都没到达,网络控制器的gateway没有设置(奇怪的是,在linux右上角网络设置界面设置了gateway是无效的),使用命令

route -n

可查看路由情况,此时可以使用命令添加默认gateway

route add default gw 172.18.152.1

网络控制器即可成功的访问外网

删除gateway后实验一下是否此时是网络控制器无法访问外网,使用命令

route del default

此时网络控制器无法访问外网,说明是没有默认网关引起的问题,但是好奇的是为何数据接收端的主机是可以进行外网访问,eno1是不需要走默认gateway?

猜你喜欢

转载自blog.csdn.net/lluozh2015/article/details/52148839
今日推荐