- 积分
- 16840
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
测试qos过程2 D* W$ c+ l* ]! `; K. }4 X
测试环境介绍
! V6 m0 A4 ~1 H, L* \- e
8 N7 X) Q6 Q& e4 n创建两个网络,每个网络下创建一台虚拟机,将两个网络绑在同一个路由器下面,通过iperf测试两台虚拟机之间的带宽。 G- ?2 X! f0 f5 a: p) b
N- W. m. T/ c0 m' o" I1 o
首先创建两个网络,分别是t2cloud_net1(172.160.1.0/24)和t2cloud_net2(172.160.2.0/24),两个网络下各创建一台虚拟机,分别是qosvm1和qosvm2。 d' O* @8 P- g' \
/ x5 _! l3 ?( \9 j8 ^" ^5 }
接下来创建路由器router,将两个网络绑定在路由器下,路由器出口选择外部网络external_net。5 |; S7 Y8 Q. Q% _ X" e6 r
& T; L0 I/ X, M3 g7 v5 \% h( [
网络拓扑如下$ o3 q! O! p$ d0 T/ |8 m
7 Y* q- n+ l7 y6 d5 e
. V7 D2 Q' y9 _) M9 I
接下来要做的就是查询虚拟机网卡对应port的信息,以qosvm1为例。& P: e' ^9 B, K6 A4 Q
- O$ E- E- R1 _6 e% v4 A! e \" _neutron port-list |grep 172.160.1.
; S* L: t" G& G+ b1 ]. Y6 a' X! x% v4 ?2 B
; p, l. q: u; w3 Y: M172.160.1.1为网关地址,172.160.1.2和172.160.1.3为两个dhcp服务地址,172.160.1.4为qosvm1虚拟机地址。
& ^8 ~, O2 c) o& \
5 `& t7 r' x- d查看虚拟机所在节点
' N7 f" z* j: q3 I9 S6 Z
' x3 l1 V2 U% enova list--all |grep qos
' S2 b; m% t; ^; c0 t1 p& C: S6 A3 t$ L2 M/ O! p
nova show b40056c3-b9ce-4031-8125-96a7a79f74a2; T6 k( X% @! B: E& y* I
. w" y% m9 Y7 m
可以看到qosvm1虚拟机在sr-computer-27计算节点上: Z" s9 T& R2 T0 V( K- h. N! B
# t1 b% U1 N' B* e; h, a' E
9 j0 @! m0 c4 @; Q, S; I登录到sr-computer-27计算节点上,查看网络对应的网桥和虚拟机网卡tap设备号(neutron中一个网络对应物理机上的一个网桥,虚拟机网卡对应网桥上一个tap设备)。
) F6 M; \0 v, p/ J, F
d) L$ j$ j D7 N' Qneutron net-list |grep t2cloud_net1# ?! n% ?' D& _8 {) O8 X4 ?
% L% P6 y7 W, L& V5 x V
brutl show) v& F8 k. q" e( C8 s- }- q p! A( u
0 q' T8 R" O7 M' l- T
8 F; J9 {* l" |: o+ k查询路由器所在物理节点
& _' \) R" T* B1 p
6 ?) t. u# W. Jneutron router-list|grep router
# Y4 r/ S$ x8 {% M! K$ G) D& G4 L: r6 @: ^- W. V5 l% r% d+ b
neutron l3-agent-list-hosting-router 7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f4 |5 p* l6 W. E+ t$ B' O
6 i9 w% ^$ }5 R4 H! T8 _4 N$ D. I: t可以看到路由器在sr-compuer-28节点上
) ?# ^# L: z3 N5 L, w1 N% A* a2 |, ?& p& y: J
! h* \3 J+ s" Y" Dqosvm2也采用上述方法来获取相关信息。/ i7 a5 x3 C6 e/ ?; k7 s
( f' B% `) ]/ S6 X' R总结一下上面查询的结果
& u0 g8 W8 _' |7 @ x0 Z J# V1 j
虚拟机qosvm1在计算节点sr-computer-27上,网卡对应tap设备tap9873a7ae-41,所在网络对应网桥为brq307fde1c-61,网桥出口vxlan-85。+ X a; r' A/ n* n8 ~" u
: ]6 D. f7 B |7 v& U虚拟机qosvm2在计算节点sr-computer-32上,网卡对应tap设备tap0b55bd71-2f,所在网络对应网桥为brqf8fd20d0-e6,网桥出口vxlan-6。. A" u. U$ i; R9 m# e3 t
+ r6 _: F8 {& Z* W% h
路由器router在节点sr-computer-28(计算+网络混合节点)上,对应名称为qrouter-7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f,连接net1设备为tapa64b82b1-e4,连接net2设备为tap460865e7-03,暂时不考虑dhcp服务。6 D; ?' ~) h5 c: V" Y( x
8 r: ^$ r- @# I根据查询结果,以下是简化的拓扑图* W5 f* @4 |. z
6 }* Y- Z! h3 l; G: D3 ~
: i2 s* `9 p& f. Z
带宽测试+ _& f7 Z* u h# H
qosvm1如果与qosvm2通信,需要经过网络节点上的虚拟路由来转发. c, h7 z; A* l* n8 h/ ~7 f+ J
* W6 q+ m: f. k6 b首先不做任何限制,用iperf来测试qosvm1和qosvm2之间的网络带宽,qosvm1(172.160.1.4)做client端,qosvm2(172.160.2.4)做server端。
" v: a$ u# n4 p& C8 N2 b: D0 I$ m, s4 Y5 W
在server端运行iperf -s) |6 \5 W" o4 y% \% l
1 ^& ~2 E: S8 I' _- G% f
然后client运行 iperf -c 172.16.2.4 -i 1 -t 5 –r
d8 _0 I; K" z7 w0 \; U% {, b: }( I& @# l* Y/ |; `# K
实际测试中可以运行更长时间,得出一个更稳定的值; r2 h" _# j, ?( L6 z
/ j$ [$ q2 m& u; D
6 a& u5 A9 \% I" @& s不做任何限制的情况下,qosvm1对qosvm2的上传带宽为596Mbits/sec,下载带宽为693Mbits/sec
; E7 z& M3 a: p& }5 S' p) t; z8 P: x# f) t0 q1 x5 x
对计算节点sr-computer-27 上的tap9873a7ae-41设备进行限制,限制上传带宽100Mbps,下载带宽200Mbps* o/ w8 z+ H2 w
7 r" k8 S1 } {# u" ~% I/ J+ N首先创建qos策略% P( u) P$ Q( C
7 c, @) C" V7 v9 Sneutron qos-policy-create --shared t2cloud_qos* T' G$ w- [' |4 G7 P/ B7 y
1 {0 s/ \6 A; j# H. K8 G' N( O! O
* h/ {7 a6 [& q% Z然后创建对应规则,分别限制上传带宽和下载带宽
! }+ s# I* @: C& w% K+ v/ ~ }) N \8 m) Q
neutron qos-bandwidth-limit-rule-create --max-kbps=100000 --max-burst-kbps=100000 t2cloud_qos --direction ingress
* |8 ^9 B" y- W( a5 O, D5 W) T! b2 ` @; H& Z. m
neutron qos-bandwidth-limit-rule-create --max-kbps=200000 --max-burst-kbps=200000 t2cloud_qos* ?% Q7 s6 Y0 ^7 \2 `1 R* Q' J
( I6 [5 I& z3 R1 T) c3 N; F$ \. Y0 I3 D. `4 L% D; ~" w
需要注意的是,端口的ingress对应虚拟机的上传带宽,egress对应虚拟机的下载带宽% ?8 Q% b, D" O9 O+ G
7 ^/ k; p( f+ m2 N将qos规则与虚拟机对应的port绑定
$ M" _8 G7 ?/ \ x, j% [4 h/ _/ z! B# l3 V O% g& X9 H& s2 g# h
neutron port-list |grep 172.160.1.4
, ]) b% e6 t. W7 U5 J' ^
! Z9 {9 ~5 `' D$ A1 q: vneutron port-update --qos-policy 0be11a7d-97e3-4dd9-a74e-616e7bdf65c99873a7ae-41ad-4b30-8c3e-1167a7e1c3bd
# ]* r0 M& y' Z; [4 C# i- p$ a2 ^3 a* L1 V3 G( I4 B6 C, a
neutron port-show 9873a7ae-41ad-4b30-8c3e-1167a7e1c3bd" K% y! I$ `5 p7 z
) K' ]6 v4 a$ K% a8 y
$ h: Z! Y7 H- d9 O因为neutron 的qos最终是通过linux tc来实现。可以使用tc命令查看设置是否生效
" U! C8 D, P1 V2 y( \# ]
1 R" L/ Q# @8 _* ~tc qdiscshow dev tap9873a7ae-41& l( E: @6 o7 n5 r
8 C d+ L: l2 _& y; btc filtershow dev tap9873a7ae-41 parent ffff:7 F+ L/ n! P- e
' x8 q& |& X. v; M! Q0 l G) r- H
2 y( E( u. [4 K! c1 z1 q' b9 o再次用iperf测试带宽) w7 r* s+ `5 `: R9 |, x
! `( N7 ?$ z7 ?' h7 b" _0 p
可以看出,稳定值基本限制在qos限制的范围内
, z" D+ L0 {4 F( }- [" m
# r' V1 G% J. F( \7 x测试总结! A/ v) y8 \' a4 P: v
以上测试了qos中最简单的场景,通过限制虚拟机网卡对应tap设备来限制虚拟机之间的通信带宽,过程中有过一些困惑和问题,现总结如下:
k9 S H9 J2 W% Y) s \
7 R& y4 Q8 H0 y' y& T: r1 b5 JIperf使用tcp测试带宽,短时间内的数据不是特别准确,特别是带宽上限的测试,因此尽可能测试时间长点,得出一个稳定的带宽值
& Y+ t7 z3 X9 c8 M% W' b. D% v6 ] G( M' `
关于max-kbps和max-burst-kbps的理解,max-kbps比较容易理解,就是最大带宽,max-burst-kbps在tc里面会转成字节单位burst,指的是令牌桶的大小,如果桶中有多余的令牌,允许短暂的突发流量通过,也就是说令牌桶越大,也就允许更多的突发流量通过。- S; W$ s. q g J6 x
- d5 R3 L& t Q
neutron还可以对一个网络设置qos1,这样所有创建在该网络下的虚拟机都会使用该qos1,如果对虚拟机再单独设置qos2,那么对于该虚拟机来说,只有qos2生效。目前对网络设置的qos只会作用于虚拟机对应的port,不会影响其他port(例如dhcp)。
% l# u. {' P6 ]. }# e
' r$ y4 l' [, t, e& w9 ~* Z& M" d$ j5 `# Y6 |) k2 I9 @
|
|