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

openstack测试neutron qos小测试

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2023-2-2 12:00:19 | 显示全部楼层 |阅读模式
测试qos过程: Y8 E& L4 o1 A1 e3 M
测试环境介绍( n. W/ ~( m0 {/ l5 a: Y

' w8 k  p7 p) h6 i创建两个网络,每个网络下创建一台虚拟机,将两个网络绑在同一个路由器下面,通过iperf测试两台虚拟机之间的带宽。
( {; Z: O8 g7 P
6 G. `" x+ f3 {( B$ L首先创建两个网络,分别是t2cloud_net1(172.160.1.0/24)和t2cloud_net2(172.160.2.0/24),两个网络下各创建一台虚拟机,分别是qosvm1和qosvm2。* a  A2 |# Q4 x% N$ e4 @
  ?" N2 D! R# i, m2 H* w  B
接下来创建路由器router,将两个网络绑定在路由器下,路由器出口选择外部网络external_net。
+ V! ?4 G6 |  D( y$ d3 y4 @( a2 l  n
网络拓扑如下+ I1 F) I/ N6 J

0 G( V' f, q; j
) u, w+ g2 g% s$ y" X1 z8 e接下来要做的就是查询虚拟机网卡对应port的信息,以qosvm1为例。+ @5 ^# o- _& i5 p+ U7 Q
* Y# _0 ~0 O1 ?
neutron port-list |grep 172.160.1./ l( P2 a# s$ J8 \: e' Z

1 Q: y; p( x8 p
9 o& ^/ x# {& ]& p8 M# a. m* z172.160.1.1为网关地址,172.160.1.2和172.160.1.3为两个dhcp服务地址,172.160.1.4为qosvm1虚拟机地址。
2 l& @, z6 T5 ~/ s4 ?
% f+ u# y3 @) B" |4 Q( I# O查看虚拟机所在节点
9 _# L9 v  G$ R8 M) j& N( `# L8 d$ F/ s' e' _8 p( {
nova list--all |grep qos4 D4 E7 ^* i  }5 X" G4 }  A
  }6 o; B- r8 k7 S
nova show b40056c3-b9ce-4031-8125-96a7a79f74a23 g( v# c* S8 m6 R6 \

& o; @" _5 P! q# J, y! t可以看到qosvm1虚拟机在sr-computer-27计算节点上
6 Z: x. q$ O: ?$ a" f' z7 d0 U- J* D4 |  p% k4 b* I

5 i' ~. g8 E: h: y1 r% ]6 b" p登录到sr-computer-27计算节点上,查看网络对应的网桥和虚拟机网卡tap设备号(neutron中一个网络对应物理机上的一个网桥,虚拟机网卡对应网桥上一个tap设备)。* ^# z0 A2 Z! U! d+ S

  L5 p! O; @1 A  Gneutron net-list |grep t2cloud_net1
  |3 H  {3 q- H7 N$ J/ {6 W* {* E8 C7 ?# n' V
brutl show" R* u, T$ I8 T- q0 L

6 ]% h! ?- L' C' `/ {3 x
8 r# Y% O) i' v" k6 ^) _8 w查询路由器所在物理节点
* ~. x+ O- Y* P$ l1 \/ _8 k( c, M& R$ w: ]% H5 |
neutron router-list|grep router
5 V) f: O6 K: q3 ^2 t% i$ B% T. \% k% U# ]
neutron l3-agent-list-hosting-router 7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f
, E6 V2 {& b( [  B+ E# ~
% Q: |; U9 w& r: `" V可以看到路由器在sr-compuer-28节点上
! B3 j* u9 H8 y/ n* A$ j& h+ ~- `# B6 g# ^

6 p! ]( o( {, i& Sqosvm2也采用上述方法来获取相关信息。
9 y) C/ P3 u4 X
( @- I9 x* V1 B: B& J/ ]$ Z总结一下上面查询的结果
% P2 ^9 w+ N3 J! \& e0 ?9 @- J8 i& D! c' X
虚拟机qosvm1在计算节点sr-computer-27上,网卡对应tap设备tap9873a7ae-41,所在网络对应网桥为brq307fde1c-61,网桥出口vxlan-85。! w' a" v6 y( P) `! `

% V* P+ }8 O* ^5 M# y' U虚拟机qosvm2在计算节点sr-computer-32上,网卡对应tap设备tap0b55bd71-2f,所在网络对应网桥为brqf8fd20d0-e6,网桥出口vxlan-6。
3 v" W7 s3 S# `0 o
" d& ^* ?& H- u) U% ]: `; m路由器router在节点sr-computer-28(计算+网络混合节点)上,对应名称为qrouter-7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f,连接net1设备为tapa64b82b1-e4,连接net2设备为tap460865e7-03,暂时不考虑dhcp服务。% P+ j& B$ \3 I: W7 L/ k; d

' x. s5 `! m+ u) ]+ N. F8 X( [# C根据查询结果,以下是简化的拓扑图1 H5 T' `8 A% ?( d5 O. k8 |
: ?4 P8 Z- q3 y& ^: c& U

/ n- T  _& H2 O+ V' \2 S% ]) `1 F带宽测试2 N- W/ f' S2 l8 t" ]
qosvm1如果与qosvm2通信,需要经过网络节点上的虚拟路由来转发
* a+ F* f$ k6 F* ?* y" J. w: b/ t
* c) p& d! T+ s6 v/ N$ t8 t- s& |首先不做任何限制,用iperf来测试qosvm1和qosvm2之间的网络带宽,qosvm1(172.160.1.4)做client端,qosvm2(172.160.2.4)做server端。! }" e4 F, N, r
" S+ [; I/ f+ G5 d0 n$ @/ M6 P
在server端运行iperf -s' K/ |, v/ y- l! N* b
7 }* D' F/ ?1 v9 }2 r6 F
然后client运行 iperf -c 172.16.2.4 -i 1 -t 5 –r. g5 b2 R+ p1 M8 j* I

% [: l/ A. C$ @: K  b8 S实际测试中可以运行更长时间,得出一个更稳定的值# `0 @9 j) V: N/ ^' ?
2 {6 y" r! M. ]; }; {- _7 i
0 O& t/ G* ?3 |; z
不做任何限制的情况下,qosvm1对qosvm2的上传带宽为596Mbits/sec,下载带宽为693Mbits/sec
; ~  s* e2 u/ m2 u9 k6 ^! _8 y( @6 G3 N* q  ?6 G3 X
对计算节点sr-computer-27 上的tap9873a7ae-41设备进行限制,限制上传带宽100Mbps,下载带宽200Mbps4 k& b5 \8 |9 D1 a, M
1 m1 G" Y2 ~4 K( I9 X4 v3 v% G+ T3 O
首先创建qos策略* @0 o9 U) W; {9 \" O+ o

- p) U7 P+ A6 `, o8 Gneutron qos-policy-create  --shared t2cloud_qos
: V9 ?& I9 a3 _* p! Y! ?$ x
! W6 h( w# F: v' n$ J: K9 W1 W* R9 _# B4 B" `* |  J; G
然后创建对应规则,分别限制上传带宽和下载带宽
, i7 V; o! D/ m4 f5 a, E' y3 V- p, [8 ?- n3 ~; ?, x
neutron qos-bandwidth-limit-rule-create --max-kbps=100000 --max-burst-kbps=100000 t2cloud_qos --direction ingress
2 ~* }4 M( H- u3 _) p
" Q" ~4 f7 ^; w' Q$ w! ]/ Zneutron qos-bandwidth-limit-rule-create --max-kbps=200000 --max-burst-kbps=200000 t2cloud_qos
: X- w2 A  |2 `* e* \5 F' v+ S  }1 e

' G" j$ H( l+ h需要注意的是,端口的ingress对应虚拟机的上传带宽,egress对应虚拟机的下载带宽6 G, n$ o* u$ B# X

1 v& z8 C6 u. |, q将qos规则与虚拟机对应的port绑定
4 y( P( i2 U( \& P
; _$ b# T& u' a: o. tneutron port-list |grep 172.160.1.4
* {# C3 _  U  F7 p# {3 ~
9 [1 _2 r1 t1 N6 r5 Mneutron port-update --qos-policy 0be11a7d-97e3-4dd9-a74e-616e7bdf65c99873a7ae-41ad-4b30-8c3e-1167a7e1c3bd% j) X2 K0 J4 M  j$ r$ p3 J
- {3 X2 _+ ?, q5 U! G
neutron port-show 9873a7ae-41ad-4b30-8c3e-1167a7e1c3bd
) C& h: j6 W; o+ n' ?# t5 [
! X5 P% n4 c0 z" Q, D5 _* E( H: h) T/ u1 E. }0 e
因为neutron 的qos最终是通过linux tc来实现。可以使用tc命令查看设置是否生效
' _9 F, d- M0 [0 O) j& }* _9 [; {. H% A6 I5 u$ k9 r0 ]
tc qdiscshow dev tap9873a7ae-419 i0 y: k" A( ^' k4 I' E3 S

8 r1 A: B* u1 k7 u6 u# btc filtershow dev tap9873a7ae-41 parent ffff:( t' l. E& e' [3 ^) t4 @
& {! b% B  I2 l4 b* h, d
8 s5 R5 o/ N, K2 A- J! Y
再次用iperf测试带宽; t% C- }4 N4 l" P  ^" x
- j2 G# E( d/ V- S
可以看出,稳定值基本限制在qos限制的范围内
: Z- J% \/ s* I) `- b6 W% |; m$ v
测试总结1 b1 O5 `) Z1 {; o6 g7 e
以上测试了qos中最简单的场景,通过限制虚拟机网卡对应tap设备来限制虚拟机之间的通信带宽,过程中有过一些困惑和问题,现总结如下:& N8 O( v; O; V: t9 [: ?3 u

+ ~6 {, b( y. |" x0 ZIperf使用tcp测试带宽,短时间内的数据不是特别准确,特别是带宽上限的测试,因此尽可能测试时间长点,得出一个稳定的带宽值5 Z( Z% q8 ~/ }2 f
" _4 I, B! ]% A& ^
关于max-kbps和max-burst-kbps的理解,max-kbps比较容易理解,就是最大带宽,max-burst-kbps在tc里面会转成字节单位burst,指的是令牌桶的大小,如果桶中有多余的令牌,允许短暂的突发流量通过,也就是说令牌桶越大,也就允许更多的突发流量通过。
5 `, U. }" r3 J: {$ ]  V: ?! {/ b- `; I* e
neutron还可以对一个网络设置qos1,这样所有创建在该网络下的虚拟机都会使用该qos1,如果对虚拟机再单独设置qos2,那么对于该虚拟机来说,只有qos2生效。目前对网络设置的qos只会作用于虚拟机对应的port,不会影响其他port(例如dhcp)。
! _0 A# ]" Q1 \% [- Y! ~" v( B# T- x  W5 ^9 l
- M0 Q2 Q) ^( [
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-6-12 00:14 , Processed in 0.014570 second(s), 22 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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