找回密码
 注册
查看: 662|回复: 0

openstack测试neutron qos小测试

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2023-2-2 12:00:19 | 显示全部楼层 |阅读模式
测试qos过程
& F4 f0 X! Q$ \! p3 S3 k; B' W! W! U测试环境介绍& u  H$ p+ {! X6 L( j

& o6 j6 i9 e; R! p* B0 e创建两个网络,每个网络下创建一台虚拟机,将两个网络绑在同一个路由器下面,通过iperf测试两台虚拟机之间的带宽。
: E, ~7 L, B% z7 F; F9 u! Z% Q$ E7 A" }3 t, J- v
首先创建两个网络,分别是t2cloud_net1(172.160.1.0/24)和t2cloud_net2(172.160.2.0/24),两个网络下各创建一台虚拟机,分别是qosvm1和qosvm2。. [/ i  Z+ t0 i

' x; p/ s% d# W; \+ K% E接下来创建路由器router,将两个网络绑定在路由器下,路由器出口选择外部网络external_net。
* s) Z( m7 D. x7 e
' q: U' P5 K1 O& N网络拓扑如下
  D( h& g. W5 j4 d" q; v5 N# c& p; R2 _0 G
, W! D* `( |0 s" ^( }
接下来要做的就是查询虚拟机网卡对应port的信息,以qosvm1为例。! g. Y5 h" E& X2 c- F1 v

1 U$ D1 m# ?- t7 m/ qneutron port-list |grep 172.160.1.# }# b" W/ S( O# f, u; ]

3 G) W* f$ z+ N6 t' j) B3 s  O6 X6 V) u9 G& _
172.160.1.1为网关地址,172.160.1.2和172.160.1.3为两个dhcp服务地址,172.160.1.4为qosvm1虚拟机地址。. ~+ D! g' r& D: M5 V
) q9 `0 Q( x( S3 F+ z9 h
查看虚拟机所在节点
2 Q: V. g9 h1 J2 V8 l5 @! U
1 |9 V& H, k* W- P9 unova list--all |grep qos
# J7 i& C$ c0 k9 E% @% J
8 x1 G2 p9 R; }" |/ Gnova show b40056c3-b9ce-4031-8125-96a7a79f74a27 ~: N0 w* s* @4 ?- I3 w

: \* U6 G5 T9 `. ]/ w) t可以看到qosvm1虚拟机在sr-computer-27计算节点上. G5 b% E/ E/ {) e( g
! f4 Z/ Q* |3 ^3 d
6 e9 t2 o, ]& \, i" _
登录到sr-computer-27计算节点上,查看网络对应的网桥和虚拟机网卡tap设备号(neutron中一个网络对应物理机上的一个网桥,虚拟机网卡对应网桥上一个tap设备)。4 K7 \0 M" T2 }7 Z+ g7 m% g1 g2 M
  `. c2 ]$ I1 V
neutron net-list |grep t2cloud_net1
" o8 H' E/ {% l" s+ l. p' s4 ^  F
2 H2 U& V( x1 V2 K+ t# e# wbrutl show8 g" O  u" f+ |/ K& t
" M  P7 a0 b+ P$ p1 @& q1 k% q

  J* s) a6 _0 l查询路由器所在物理节点
% t1 W3 {( \# s% H0 f) F
# t; O+ C  V& q- L6 q& dneutron router-list|grep router! d9 W+ E" ^4 \6 b
& _! ~5 h2 F5 h
neutron l3-agent-list-hosting-router 7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f
% ]6 u/ j5 J# U  {$ s- i& S; k# y& M% c: o, ^9 p- O, k
可以看到路由器在sr-compuer-28节点上
  X+ T( x8 o$ H0 X* I% {
  e. M, V( L" v9 H, P
1 J  L' Y) g* w9 a) ~$ qqosvm2也采用上述方法来获取相关信息。
& b" v5 Q% g( `# B4 [$ n- Z( @" ?4 `6 x$ o: ]% ^
总结一下上面查询的结果) b9 Y8 R' @& f+ }2 Q7 Z
9 F' Z7 X0 X" ~% ^! y! O
虚拟机qosvm1在计算节点sr-computer-27上,网卡对应tap设备tap9873a7ae-41,所在网络对应网桥为brq307fde1c-61,网桥出口vxlan-85。
5 Y; ^4 b' s6 H* h# A! v4 a5 e; o/ C; S9 i
虚拟机qosvm2在计算节点sr-computer-32上,网卡对应tap设备tap0b55bd71-2f,所在网络对应网桥为brqf8fd20d0-e6,网桥出口vxlan-6。2 w4 a4 `1 O+ n
- E' @9 [9 e9 e/ H
路由器router在节点sr-computer-28(计算+网络混合节点)上,对应名称为qrouter-7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f,连接net1设备为tapa64b82b1-e4,连接net2设备为tap460865e7-03,暂时不考虑dhcp服务。
8 {" N( f2 U/ e5 s' ^# R+ W3 n0 F9 k" x; c) h
根据查询结果,以下是简化的拓扑图
% i$ {4 L. M2 z. O& R
! S7 s+ H7 g) V* r2 @* m* h1 }0 w1 i
" H7 J  R* w4 J& Y( I! X带宽测试. }4 x) {# E8 C1 w. W9 ^& w1 u, m
qosvm1如果与qosvm2通信,需要经过网络节点上的虚拟路由来转发& ~% A8 T) t% A, i9 A, U9 o
& Z; {+ K  p4 U" ]# S2 h; |
首先不做任何限制,用iperf来测试qosvm1和qosvm2之间的网络带宽,qosvm1(172.160.1.4)做client端,qosvm2(172.160.2.4)做server端。
% a* b( ^9 x3 }6 J6 Y! g( a% ^4 V: i
在server端运行iperf -s9 g8 K. a3 {. U- l
* I% \* P: v, q' R. ]/ O
然后client运行 iperf -c 172.16.2.4 -i 1 -t 5 –r
# c- ~( v8 Z3 t$ J. x6 ^( ~
4 f2 S1 I6 z0 N8 h0 s8 I0 ~. A实际测试中可以运行更长时间,得出一个更稳定的值# y) B8 e, u  j/ {; A4 y

% f2 W4 v& ~% ]9 P. k4 v+ ^
; }$ |' ]9 _, S1 v4 i) N- a不做任何限制的情况下,qosvm1对qosvm2的上传带宽为596Mbits/sec,下载带宽为693Mbits/sec  l: I4 A: r+ L* H: O- @
, E) _/ g. V% r. X# h- w; l
对计算节点sr-computer-27 上的tap9873a7ae-41设备进行限制,限制上传带宽100Mbps,下载带宽200Mbps. H: n8 N9 Z' r3 I4 c) R
# ^7 T9 T. y# ^7 \- V
首先创建qos策略8 X( ^- k; E+ v6 H

; Y  U4 s- y9 N' u& f/ bneutron qos-policy-create  --shared t2cloud_qos! [( w. n: b/ _" S1 S' g2 [
% w9 i  P6 U: F; @! D% Q. P) V

6 Y. X+ I$ y7 h" u0 T4 ]% M然后创建对应规则,分别限制上传带宽和下载带宽
6 [4 T5 @) d4 q6 x
8 V$ V9 r! ?6 C. Yneutron qos-bandwidth-limit-rule-create --max-kbps=100000 --max-burst-kbps=100000 t2cloud_qos --direction ingress
1 h4 @( p- P0 }" F  L' F; c) B  U  v5 ~
neutron qos-bandwidth-limit-rule-create --max-kbps=200000 --max-burst-kbps=200000 t2cloud_qos* _! T+ e+ J/ ]% S

1 P4 A' k5 _! h1 f( I% r' }  c
需要注意的是,端口的ingress对应虚拟机的上传带宽,egress对应虚拟机的下载带宽9 I! u1 U( {' n2 U6 u  u8 {, G

- o) |0 @; D7 d) ]% W6 h将qos规则与虚拟机对应的port绑定
$ a5 [" `! a# y% F' C: s3 F* p0 U, J( |3 K% Z
neutron port-list |grep 172.160.1.4! [+ q2 H" U+ U0 i8 h. x' t! u" b" _

7 Q8 {9 Z9 F* n; P9 Vneutron port-update --qos-policy 0be11a7d-97e3-4dd9-a74e-616e7bdf65c99873a7ae-41ad-4b30-8c3e-1167a7e1c3bd
2 C0 F9 l  l( E( G$ f
' _1 V( Z& ]5 Q8 pneutron port-show 9873a7ae-41ad-4b30-8c3e-1167a7e1c3bd
! t! ~. l1 z- S: ~) ^, |$ k
& c, Z9 V, P' F" \
( o( p2 \, E2 j0 G) F; c因为neutron 的qos最终是通过linux tc来实现。可以使用tc命令查看设置是否生效; ~; X$ g9 Y8 t! `# G8 B

/ p( n; T! F( J! C# E! G% mtc qdiscshow dev tap9873a7ae-41
9 {5 ~* @6 R9 Q- A& p( d
7 M& a  H& B9 z. U5 H  J1 ytc filtershow dev tap9873a7ae-41 parent ffff:. c3 `1 Z2 b3 B' }1 G2 O! L) `. \  H

% l/ r9 t: p8 C6 j" q/ R  N9 @' r8 r; U5 I8 E) u/ }7 j- ]
再次用iperf测试带宽
$ i- {% c! B9 N$ V
' k2 M: j0 f# I3 l可以看出,稳定值基本限制在qos限制的范围内6 p( s, H; a, K; E9 E

: Q7 T  A& s2 M9 n7 {: m' s% ]测试总结
6 |3 b/ l/ \7 w/ b8 u2 C  o( ^% R$ j以上测试了qos中最简单的场景,通过限制虚拟机网卡对应tap设备来限制虚拟机之间的通信带宽,过程中有过一些困惑和问题,现总结如下:
& Y# a; x, m0 A' f! M  l8 f  I+ Z1 f  g/ X( [% n. p! b
Iperf使用tcp测试带宽,短时间内的数据不是特别准确,特别是带宽上限的测试,因此尽可能测试时间长点,得出一个稳定的带宽值
. Y3 ]  ?8 E( f
5 K/ c* ]) @6 j  o$ G关于max-kbps和max-burst-kbps的理解,max-kbps比较容易理解,就是最大带宽,max-burst-kbps在tc里面会转成字节单位burst,指的是令牌桶的大小,如果桶中有多余的令牌,允许短暂的突发流量通过,也就是说令牌桶越大,也就允许更多的突发流量通过。
/ p1 K4 h  c) W, G
5 S/ ^/ S3 J+ D, H2 Ineutron还可以对一个网络设置qos1,这样所有创建在该网络下的虚拟机都会使用该qos1,如果对虚拟机再单独设置qos2,那么对于该虚拟机来说,只有qos2生效。目前对网络设置的qos只会作用于虚拟机对应的port,不会影响其他port(例如dhcp)。
1 q5 e; K: p& W7 H! U1 i
1 e4 O  l  }3 ^, s
8 D3 q$ ^/ K5 C* m2 _2 ~; C
您需要登录后才可以回帖 登录 | 注册

本版积分规则

返回首页|Archiver|手机版|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )

GMT+8, 2026-6-12 02:21 , Processed in 0.012757 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表