- 积分
- 16844
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
测试qos过程
2 x3 l& D2 ?: p' _/ W4 c测试环境介绍' ^5 y( h" D8 R4 t+ k& a
; w7 I3 ~% \ A) v" K0 L# ~创建两个网络,每个网络下创建一台虚拟机,将两个网络绑在同一个路由器下面,通过iperf测试两台虚拟机之间的带宽。
0 L: A" |: Z; n& I) j$ V! m! N" c
- u+ F2 s3 H r, d6 T. I3 ^首先创建两个网络,分别是t2cloud_net1(172.160.1.0/24)和t2cloud_net2(172.160.2.0/24),两个网络下各创建一台虚拟机,分别是qosvm1和qosvm2。( }! H1 O4 B8 h
* q4 K6 ?/ a$ {' F; s) k
接下来创建路由器router,将两个网络绑定在路由器下,路由器出口选择外部网络external_net。, m) e# Z: `$ s0 z9 {
# L0 [9 B; U1 s( F8 z+ y) q$ n网络拓扑如下
3 H8 M) g+ j4 A; U7 v- R+ y5 n% V* D( A% e
! K5 S# g1 t0 D8 Z. W" Z
接下来要做的就是查询虚拟机网卡对应port的信息,以qosvm1为例。" O2 q+ Q) y$ Z' t
+ J$ Z& c+ I! \ o$ } k4 C0 n* e
neutron port-list |grep 172.160.1.6 R( e: _) a$ d- V, {1 s. {
) v. Y' ?8 i5 y: X! h7 Q; u" d' [, i7 {7 ?; A
172.160.1.1为网关地址,172.160.1.2和172.160.1.3为两个dhcp服务地址,172.160.1.4为qosvm1虚拟机地址。
- w7 b9 Y; j6 M& e I" E& o) e
" `6 R {% K# n8 I/ O查看虚拟机所在节点
6 D# ?! B/ U( d0 \' f; m, F1 V6 v& p$ n, @$ a$ f- F# n: o
nova list--all |grep qos$ |3 D- P4 b1 X5 u+ Y
, {3 I) V2 J6 k2 unova show b40056c3-b9ce-4031-8125-96a7a79f74a2: x; E& Y0 ~4 U5 @
# G( f9 `3 K3 u+ Y% `" ?: [8 S
可以看到qosvm1虚拟机在sr-computer-27计算节点上$ ^3 v5 Q# m) B% y- J$ s
1 n% }* A8 Z X* l) T/ X* Z- I: C
# U& d4 v) s/ C& }% W/ `登录到sr-computer-27计算节点上,查看网络对应的网桥和虚拟机网卡tap设备号(neutron中一个网络对应物理机上的一个网桥,虚拟机网卡对应网桥上一个tap设备)。4 S& i0 B6 j$ R( I8 X( U
, Y# P' d7 M5 X; c
neutron net-list |grep t2cloud_net14 G$ Y3 |4 L- |2 t& O/ Q7 G8 J
' I" ^- R; _1 q5 b, x5 c kbrutl show
9 ~8 P1 Z7 U! \
% N0 c$ r0 C$ p Q# x
% {! Z- E2 w' E* o$ U查询路由器所在物理节点
1 d2 z8 X5 X. C* E* z* ~2 \! P+ l8 Z [- I# }
neutron router-list|grep router
) R% I) i$ U5 _, s8 R; c6 H9 _& u# K. K% B2 R' V9 G" A1 R
neutron l3-agent-list-hosting-router 7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f
6 |; L+ K7 E1 v+ @# [
4 h6 V8 G" V% m* _3 h/ G9 L6 _1 k可以看到路由器在sr-compuer-28节点上5 b* C& D1 c0 n8 h% e+ d
- N. U& p9 ` B7 \
6 r/ M" q5 F+ V" X4 A& s0 y" K* sqosvm2也采用上述方法来获取相关信息。
/ r% w8 l: S0 P0 p. J; q* F& S: G' _1 C& P8 d* l+ t
总结一下上面查询的结果
_0 d! V$ o( ~; F3 y" E f' T
8 U7 N& h6 p" e/ r虚拟机qosvm1在计算节点sr-computer-27上,网卡对应tap设备tap9873a7ae-41,所在网络对应网桥为brq307fde1c-61,网桥出口vxlan-85。
- ^7 V3 ^1 {8 W* d
" d9 d" u+ e. o; P4 X虚拟机qosvm2在计算节点sr-computer-32上,网卡对应tap设备tap0b55bd71-2f,所在网络对应网桥为brqf8fd20d0-e6,网桥出口vxlan-6。0 t& B; v: e8 f, ^4 A0 q! V+ A4 C
8 J& i+ o# Z8 Q1 \" v5 K9 E
路由器router在节点sr-computer-28(计算+网络混合节点)上,对应名称为qrouter-7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f,连接net1设备为tapa64b82b1-e4,连接net2设备为tap460865e7-03,暂时不考虑dhcp服务。) J0 U/ \6 s6 p6 v2 p1 z$ c
5 A/ \/ s( p8 h3 E# M. ?
根据查询结果,以下是简化的拓扑图% }3 ?4 U+ I" R' L7 Q" m6 Z
( C" \0 k+ h' o. x/ S4 R# ^* J% S8 A
: b% Q0 b( A" Y' g3 t# n# A1 r
带宽测试
5 B: J/ `( _$ E5 ~" N mqosvm1如果与qosvm2通信,需要经过网络节点上的虚拟路由来转发. M" ^6 w- _- @; G, q2 w: ?
/ H. o& s2 [. h
首先不做任何限制,用iperf来测试qosvm1和qosvm2之间的网络带宽,qosvm1(172.160.1.4)做client端,qosvm2(172.160.2.4)做server端。
1 O8 r- N5 R9 J+ q0 _! |4 l, W7 q2 w, P! u8 [
在server端运行iperf -s
, P4 N8 A2 D; Q: a0 [' i* B/ }& S: j1 l) R
然后client运行 iperf -c 172.16.2.4 -i 1 -t 5 –r
& F1 V, w) o. X8 F4 K. L' t( O( A' v1 o& B2 @" j
实际测试中可以运行更长时间,得出一个更稳定的值
/ o' y+ o4 q1 m: P& V! ^; Y; y3 {9 y1 T% n$ N0 ^' a5 w
) i% b+ `6 N/ U4 }0 s8 }不做任何限制的情况下,qosvm1对qosvm2的上传带宽为596Mbits/sec,下载带宽为693Mbits/sec
. J6 w8 |7 k7 S6 Q! M% c: K8 z4 G' Y9 M6 X4 x# w
对计算节点sr-computer-27 上的tap9873a7ae-41设备进行限制,限制上传带宽100Mbps,下载带宽200Mbps
Y. R4 N" u# t& ?( X0 m# s' L/ g8 F3 w) l; _
首先创建qos策略3 _, p( r, z; _0 k, n+ K# c
! Z4 k) E" s Oneutron qos-policy-create --shared t2cloud_qos, A) u* B/ l5 x
0 S/ G0 `. b& i) S3 b N+ l/ b- r' l0 h
然后创建对应规则,分别限制上传带宽和下载带宽1 E/ j" P1 \2 i
8 J/ H. t; P5 M6 oneutron qos-bandwidth-limit-rule-create --max-kbps=100000 --max-burst-kbps=100000 t2cloud_qos --direction ingress2 b% [4 b. u* z. q8 u/ S F' @2 S
$ V/ w y8 ]0 n% E& G! [' a
neutron qos-bandwidth-limit-rule-create --max-kbps=200000 --max-burst-kbps=200000 t2cloud_qos
) v8 _2 ?4 Y6 W! `3 |2 V& |& F0 c- q ?5 p% W4 J# Z' v3 g3 s
# @( R/ V) A* i$ c& g2 a
需要注意的是,端口的ingress对应虚拟机的上传带宽,egress对应虚拟机的下载带宽
. O$ C* U8 J' q: W6 Z9 y% C/ Z, N) Y6 V& p, S' v' X3 U# o
将qos规则与虚拟机对应的port绑定/ j) Q# f+ h8 K( B: ]) M
6 c0 \# n9 b) _+ D9 u/ S2 E. Pneutron port-list |grep 172.160.1.4- A9 C& }& h" |# r8 u; C1 O' R
- s8 e* \( h( b
neutron port-update --qos-policy 0be11a7d-97e3-4dd9-a74e-616e7bdf65c99873a7ae-41ad-4b30-8c3e-1167a7e1c3bd1 S6 ~; G' q9 `6 B# ]) U/ j
X2 X E; ?0 Cneutron port-show 9873a7ae-41ad-4b30-8c3e-1167a7e1c3bd% o' Z4 o% G1 f0 X; }8 k( i1 b; Y+ j
- D9 L9 s3 v' H2 U% D" S+ Z& h3 z, ~- s* X5 o: {
因为neutron 的qos最终是通过linux tc来实现。可以使用tc命令查看设置是否生效
4 j2 D% E) J! J, N) X6 r8 t
0 k) L) {) |2 x0 F8 B/ \tc qdiscshow dev tap9873a7ae-41! T& q0 I- f* ]* I
6 }+ q3 o$ p% M X. G3 _
tc filtershow dev tap9873a7ae-41 parent ffff:
0 X/ T8 p: C/ _- Q$ Z2 c( }
, e' Q* ~. H. N# G7 k0 p- d9 ]1 ]: s4 g
再次用iperf测试带宽9 ]: q, l* k+ [/ g0 a
- }# Z/ c1 U7 }
可以看出,稳定值基本限制在qos限制的范围内: A, e0 w) Y7 J' Y) G' T0 D5 ]" W
8 H5 O8 H: }* F: Y5 K测试总结* Z/ p) c9 A8 w! L
以上测试了qos中最简单的场景,通过限制虚拟机网卡对应tap设备来限制虚拟机之间的通信带宽,过程中有过一些困惑和问题,现总结如下:
+ e# {8 m" F d' L$ r, H6 b. R; v& _! c( p. j, @! ]8 C8 u
Iperf使用tcp测试带宽,短时间内的数据不是特别准确,特别是带宽上限的测试,因此尽可能测试时间长点,得出一个稳定的带宽值
# d7 p& x1 O+ c+ P: ~
1 S/ q$ `- f' y, B- A1 P8 c; Y( t! G关于max-kbps和max-burst-kbps的理解,max-kbps比较容易理解,就是最大带宽,max-burst-kbps在tc里面会转成字节单位burst,指的是令牌桶的大小,如果桶中有多余的令牌,允许短暂的突发流量通过,也就是说令牌桶越大,也就允许更多的突发流量通过。
( V& |% ^0 C/ f2 Z( d1 `% D- @* b
, _ i8 Z" S. O/ M$ l0 H( pneutron还可以对一个网络设置qos1,这样所有创建在该网络下的虚拟机都会使用该qos1,如果对虚拟机再单独设置qos2,那么对于该虚拟机来说,只有qos2生效。目前对网络设置的qos只会作用于虚拟机对应的port,不会影响其他port(例如dhcp)。
5 Y+ H7 L0 |! ]
6 m/ H1 A% _4 H2 a5 I& n d$ A8 { \/ h, Q \9 I* E6 q
|
|