在当前部署的openstack测试环境中遇到网络延时的问题,当测试PC(虚拟机)和BTS进行通信的时候,发现相对于物理机,虚拟机的UDP速度慢了约30%,这种状况非常影响测试时间,比如某个case在虚拟机中消耗时间20分18秒,在以前物理机中消耗时间14:30秒。
影响网络速度的因素有很多,从虚拟机到BTS之间经历多种物理设备,虚拟设备,网络数据包转换功能,等,按顺序排列有虚拟机,虚拟机上linux网桥,两层OVS网桥,两次vlan号转换,一层物理网卡,两次物理交换机,再到BTS。而以前物理机是通过一个物理交换机直连BTS。
以前环境如图:
虚拟机测试环境如图:
为了找出致使UDP延迟的原因,按照以下顺序逐一排查各个设备和功能。
1、排除两个物理机的影响
将BTS和宿主机(host)直接连到同一个交换机,经测试,跑case消耗的时间为见明显变化。
2、测试linux网桥是否影响网速
直接手动创建一个虚拟机,将虚拟机网卡搭建在linux网桥上,网络拓扑如图:
搭建过程:
1、 创建linux网桥
brctl addbr lbr
2、 将物理网卡搭到linux网桥上,分配IP,激活网桥,释放物理网卡
brctl addif lbr eth0
ifconfig lbr 192.168.255.xxx
ifconfig lbr up
ifconfig eth0 0
3、 使用virt-manger创建虚拟机,创建时指定桥接到刚创建的linux网桥上
创建虚拟机后,可以ifconfig看到多了一个vnet0的网络设备,brctrlshow可以看到这个网络设备连到lbr网桥,
登录虚拟机看eth0的物理地址,发现就是vnet0物理地址,即虚拟机的虚拟网卡已经连到了linux网桥。
经过测试,case这这种环境下耗时15:06秒。
背景知识:
linux网桥
Bridge(桥)是 Linux 上用来做 TCP/IP 二层协议交换的设备,与现实世界中的交换机功能相似。Bridge设备实例可以和Linux 上其他网络设备实例连接,既attach 一个从设备,类似于在现实世界中的交换机和一个用户终端之间连接一根网线。当有数据到达时,Bridge会根据报文中的MAC 信息进行广播、转发、丢弃处理。
参见