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

openstack测试neutron qos小测试

[复制链接]

1

主题

0

回帖

12

积分

管理员

积分
12
QQ
发表于 2023-2-2 12:00:19 | 显示全部楼层 |阅读模式
测试qos过程
9 |( Q) g, W3 q* m% O7 P+ g测试环境介绍* Y1 d  e8 V8 H9 k; A" i) R4 d

: u2 Y( Z: |# [6 u0 U+ m! l创建两个网络,每个网络下创建一台虚拟机,将两个网络绑在同一个路由器下面,通过iperf测试两台虚拟机之间的带宽。
9 ?* q8 u- ^, [* b! {
. M4 n2 N& s& P  z1 z首先创建两个网络,分别是t2cloud_net1(172.160.1.0/24)和t2cloud_net2(172.160.2.0/24),两个网络下各创建一台虚拟机,分别是qosvm1和qosvm2。
5 Y9 q/ H* d# y* ?' x! s4 \' u; D: r% r/ ]/ f) w; A, i
接下来创建路由器router,将两个网络绑定在路由器下,路由器出口选择外部网络external_net。
5 Q( ]* h3 H* u( {. T" i2 d# w4 P) i3 c9 m
网络拓扑如下; B" ?2 a6 M) k( J1 N* w5 a! S; k
( {2 G3 z  R8 w% b

0 n/ N& C7 T1 D接下来要做的就是查询虚拟机网卡对应port的信息,以qosvm1为例。
3 p& ^5 S5 p9 L  T, E" O
$ H2 ]; d3 f1 B( Y% ?7 N6 |( yneutron port-list |grep 172.160.1.
; K8 U$ g* M( h& g. v6 U" U0 `

* }* \5 u' S8 B/ d0 y2 j; x172.160.1.1为网关地址,172.160.1.2和172.160.1.3为两个dhcp服务地址,172.160.1.4为qosvm1虚拟机地址。
, M5 T* ~7 G$ d% Y, U
. z. V" \- B6 |+ m" Y查看虚拟机所在节点
- i9 c' a  @& `: h2 q% l
  D! g7 m1 K, S' r3 Onova list--all |grep qos
- Q) R" Z, K2 ?! m6 Q( _& Y
' O3 C+ f6 C; w; Hnova show b40056c3-b9ce-4031-8125-96a7a79f74a2
# H1 z: B) i0 p9 B" i' {( l. b4 I# W2 D
可以看到qosvm1虚拟机在sr-computer-27计算节点上/ q) z1 ]5 p  R% ~6 ~- _& n
+ a  L7 l3 O7 A

* m( i0 W8 o2 N/ K/ I# K登录到sr-computer-27计算节点上,查看网络对应的网桥和虚拟机网卡tap设备号(neutron中一个网络对应物理机上的一个网桥,虚拟机网卡对应网桥上一个tap设备)。
6 Q; j! i$ N; Y& D  t' _' f" `. Y3 _1 a5 x' @
neutron net-list |grep t2cloud_net1; q, z; [% a6 c; _- T/ i; l! R7 S

. c7 [% J% y0 m) m% P  F1 g! f: Qbrutl show
" w5 N7 B) `* ~. N# q: ]! f3 D3 D, P5 f) J* F
3 k3 h8 \8 j/ C
查询路由器所在物理节点1 r& |* R6 T, C+ l  R
! v5 [* z- l3 d, E  k- O; G
neutron router-list|grep router% F# Q" U* I# S5 T
" L- z7 C; ]! {0 f
neutron l3-agent-list-hosting-router 7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f$ v% M/ [( r! u# I) t

4 v0 _8 `% V- j! B8 V) t: U7 y可以看到路由器在sr-compuer-28节点上7 ]5 N8 ~2 P6 i  M  A( }9 c

: I1 m7 G, }5 t. R! O  z! B
) z7 H9 _+ g# W, G7 zqosvm2也采用上述方法来获取相关信息。
" U/ M" D5 U/ C: I( t9 g( P
6 d' a3 B" Y' ^总结一下上面查询的结果% ~! e( [' n2 ~% z2 v6 `3 C
: Y; L2 M" D% `- N- `9 y
虚拟机qosvm1在计算节点sr-computer-27上,网卡对应tap设备tap9873a7ae-41,所在网络对应网桥为brq307fde1c-61,网桥出口vxlan-85。4 C) q4 R. [$ _( ^6 Y7 R  c0 F
) |9 h+ f% {8 D- T
虚拟机qosvm2在计算节点sr-computer-32上,网卡对应tap设备tap0b55bd71-2f,所在网络对应网桥为brqf8fd20d0-e6,网桥出口vxlan-6。  {9 m9 |$ r8 _

  l, G6 p; G# j/ ?0 J# H路由器router在节点sr-computer-28(计算+网络混合节点)上,对应名称为qrouter-7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f,连接net1设备为tapa64b82b1-e4,连接net2设备为tap460865e7-03,暂时不考虑dhcp服务。
1 t/ ^" M+ x9 v- U' C3 N& P, E5 X0 f" |
根据查询结果,以下是简化的拓扑图
) I; ~. D9 q7 n$ ^
. |- d' n4 r5 U; h/ {# ~; {
& |- R( H# A; h' Q带宽测试7 d9 q0 E) ?) k: @) t
qosvm1如果与qosvm2通信,需要经过网络节点上的虚拟路由来转发4 B' l/ T: v/ v3 H3 Q& A' h% E

! c7 f* ~  f% x3 r/ D$ a0 {首先不做任何限制,用iperf来测试qosvm1和qosvm2之间的网络带宽,qosvm1(172.160.1.4)做client端,qosvm2(172.160.2.4)做server端。
% n' i, V6 v8 v0 O
1 h. C, z( k, n8 u, U在server端运行iperf -s2 o8 q. l5 Q. N- \% |

3 E! D" g) z+ h- d9 ~8 n然后client运行 iperf -c 172.16.2.4 -i 1 -t 5 –r# I9 y  w+ M$ Q9 H8 @; ~

0 [7 F& s. a. ?, c实际测试中可以运行更长时间,得出一个更稳定的值9 H3 Z0 c7 D# g9 R$ h. G

- v& C+ Z- x. f% z3 d% h* o; J9 ?; ?) w& M2 m( q
不做任何限制的情况下,qosvm1对qosvm2的上传带宽为596Mbits/sec,下载带宽为693Mbits/sec
4 s/ X" t: K  |$ @7 Z6 d/ v) N* m% J: G' I
对计算节点sr-computer-27 上的tap9873a7ae-41设备进行限制,限制上传带宽100Mbps,下载带宽200Mbps7 W8 z0 H+ W) O) X( Q/ S+ Y

  Z. u1 }$ D5 A4 w+ T) i: a4 l首先创建qos策略) ~  i- o+ c$ U2 A8 \

' @; o% D* V. e8 i6 C; J& }neutron qos-policy-create  --shared t2cloud_qos
, j; Q6 l; @  B! {' D( q1 M+ }) _; A, u4 z0 _9 L/ q
7 l2 C6 `0 O! S1 E5 ?% V: O: W% H$ j
然后创建对应规则,分别限制上传带宽和下载带宽  s4 `( h  N5 l  ~( q

: \6 l; q* a. c4 |! n9 Vneutron qos-bandwidth-limit-rule-create --max-kbps=100000 --max-burst-kbps=100000 t2cloud_qos --direction ingress
, n0 d' \+ t7 I0 c3 G
4 e% q" f+ Q% Eneutron qos-bandwidth-limit-rule-create --max-kbps=200000 --max-burst-kbps=200000 t2cloud_qos3 q  H- a5 u+ O- ]6 k, b0 ~% b
( l! I1 h+ Q0 E3 T& |" s' v% c

& x! ~3 l6 B* S  T* b$ ~" }+ O# B6 P需要注意的是,端口的ingress对应虚拟机的上传带宽,egress对应虚拟机的下载带宽+ b& z6 }  Z, ~
1 ]& V/ H, k* I( J  M% |+ \
将qos规则与虚拟机对应的port绑定
, M5 y5 R5 r$ |! Y% M
  `$ j6 f9 ]* ^. hneutron port-list |grep 172.160.1.4
1 J3 \- c9 d0 ?, z. M$ J) \' s. }3 j6 M; e0 h
neutron port-update --qos-policy 0be11a7d-97e3-4dd9-a74e-616e7bdf65c99873a7ae-41ad-4b30-8c3e-1167a7e1c3bd1 ^$ F( [6 {4 J" N. o7 v

# k9 ]2 L! v6 v7 Y! K/ Bneutron port-show 9873a7ae-41ad-4b30-8c3e-1167a7e1c3bd  N# v, n5 i1 T& A6 f
9 U4 y& _& u! `$ b7 `; ?

% b8 ]* ~5 f) w. s( C: t因为neutron 的qos最终是通过linux tc来实现。可以使用tc命令查看设置是否生效
$ T+ ^- E* j8 k- R7 g
! A' J1 }! J, H0 v" r" Otc qdiscshow dev tap9873a7ae-416 w/ @0 P5 w0 E: J% A

# c+ a$ v! G( T, btc filtershow dev tap9873a7ae-41 parent ffff:$ i" \1 y* @% r- \* U6 n

9 c$ E/ k8 `2 v* @  o: w. J1 B4 `* R
再次用iperf测试带宽
* l# ?2 C" V: ?6 {2 d1 P, H1 {7 p) o$ Z9 U$ o; Q+ O* {
可以看出,稳定值基本限制在qos限制的范围内% @/ c/ o+ A2 Z: u- x# m

9 D  `! k* T6 o- N测试总结* @+ }# E5 @" S% P! x5 o: t1 \1 t* ]
以上测试了qos中最简单的场景,通过限制虚拟机网卡对应tap设备来限制虚拟机之间的通信带宽,过程中有过一些困惑和问题,现总结如下:( I. z! Y3 {9 r* ~' l

6 O7 Q( z: K6 o2 A" L( o+ j0 J9 ]% r. RIperf使用tcp测试带宽,短时间内的数据不是特别准确,特别是带宽上限的测试,因此尽可能测试时间长点,得出一个稳定的带宽值
2 w; ~2 H( Q6 ^- E! O3 K% {. s' K: M) Z/ R- b
关于max-kbps和max-burst-kbps的理解,max-kbps比较容易理解,就是最大带宽,max-burst-kbps在tc里面会转成字节单位burst,指的是令牌桶的大小,如果桶中有多余的令牌,允许短暂的突发流量通过,也就是说令牌桶越大,也就允许更多的突发流量通过。
! T$ c$ q- C* Q" t# V6 w& \0 L4 }  @# Q' q. T. G$ a5 q
neutron还可以对一个网络设置qos1,这样所有创建在该网络下的虚拟机都会使用该qos1,如果对虚拟机再单独设置qos2,那么对于该虚拟机来说,只有qos2生效。目前对网络设置的qos只会作用于虚拟机对应的port,不会影响其他port(例如dhcp)。' p, W" W; \# N0 |+ X$ Z8 i

7 A% z# \3 O& |" m0 j1 e/ n& D- t& T3 L& r2 l
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

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