易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 665|回复: 0
收起左侧

openstack测试neutron qos小测试

[复制链接]
发表于 2023-2-2 12:00:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
测试qos过程
; O; w6 r3 {1 y5 ^! t测试环境介绍
* Q; l1 \4 S2 n* Z
- A' x( |( N* @( b/ m创建两个网络,每个网络下创建一台虚拟机,将两个网络绑在同一个路由器下面,通过iperf测试两台虚拟机之间的带宽。
0 ~; P7 z' S$ \) s4 z5 u" H; i0 s. J2 E! O% C3 ~: B2 W5 K
首先创建两个网络,分别是t2cloud_net1(172.160.1.0/24)和t2cloud_net2(172.160.2.0/24),两个网络下各创建一台虚拟机,分别是qosvm1和qosvm2。" w- e! ?3 C/ m7 S: Y! P

( J/ b* c8 \! [/ c9 Y* C1 {3 A接下来创建路由器router,将两个网络绑定在路由器下,路由器出口选择外部网络external_net。3 _$ |9 ]1 x( z, i8 @$ p7 Y& u6 [

- O/ A% A& t# S  K' ]网络拓扑如下/ Z4 a% W) C& d0 I

( N: y5 }2 E* L/ ~
/ C, F1 y: j5 s  ~0 Q* E& \5 Z2 ?接下来要做的就是查询虚拟机网卡对应port的信息,以qosvm1为例。# W- {1 G9 T  z7 M4 e

, d" o5 U. P; e0 j+ @. |+ ^( Yneutron port-list |grep 172.160.1.! V9 F1 d7 _6 w# g" x
( V5 |2 V- l/ R" l

& \$ S! X5 m8 [6 K172.160.1.1为网关地址,172.160.1.2和172.160.1.3为两个dhcp服务地址,172.160.1.4为qosvm1虚拟机地址。
' F! a4 j8 Q0 s* O/ Z, y7 b0 i2 M. `# Q" x3 _! ?  Y: p
查看虚拟机所在节点
/ U9 ?1 [5 l2 ~' ~( N
! d8 T9 ~7 l/ F  a$ Znova list--all |grep qos) o' O+ E1 F- z: T' q1 M( W0 [5 B
  L  w3 c8 c# }$ Z
nova show b40056c3-b9ce-4031-8125-96a7a79f74a21 j% `7 ~$ ^/ N& S! r+ @' ~' f

4 p* Z: p! v. s6 ?# M可以看到qosvm1虚拟机在sr-computer-27计算节点上5 O, g  P  |7 S" Q- Z1 i

9 }$ ]7 Q" E8 f1 D2 w+ ^+ g' n9 D( `5 _5 l! Z
登录到sr-computer-27计算节点上,查看网络对应的网桥和虚拟机网卡tap设备号(neutron中一个网络对应物理机上的一个网桥,虚拟机网卡对应网桥上一个tap设备)。. X) A* ~  ~: J3 D8 q# V

! Z" A9 P6 q9 v! tneutron net-list |grep t2cloud_net1; z  L% H- e$ _% B3 H
  J5 m9 K7 h! n
brutl show
+ S$ y% e% E( D
; {4 Z( J8 k7 ~! L5 q$ g9 ~5 S
. k, t0 m  w5 Z! g9 n查询路由器所在物理节点6 d7 E% E: Z* `: z  ^7 r* x

9 p1 X& ]  l2 [* Z2 h# [4 ]neutron router-list|grep router5 Y& m& l& G7 i) @- Y

* a% j+ A0 _4 b8 z* Gneutron l3-agent-list-hosting-router 7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f
. B) c+ @, d2 {' T; ]7 V* n8 ^* k* x. u7 \
可以看到路由器在sr-compuer-28节点上2 R5 O& g$ b& m5 R

) X; M; X: t' X: z8 T/ e2 t3 e. N/ Z2 R
qosvm2也采用上述方法来获取相关信息。: {7 W5 A  |5 W- c% T
' |* f' ~7 d+ c& `) u7 s
总结一下上面查询的结果
% n" ~1 R1 L+ l3 g. T3 ?& ~  r1 h3 B3 C7 W8 A, a* O9 ~
虚拟机qosvm1在计算节点sr-computer-27上,网卡对应tap设备tap9873a7ae-41,所在网络对应网桥为brq307fde1c-61,网桥出口vxlan-85。
. }) @% b% `+ w2 i+ }3 s
/ q% p& I& V* R! L5 ?2 ]  M虚拟机qosvm2在计算节点sr-computer-32上,网卡对应tap设备tap0b55bd71-2f,所在网络对应网桥为brqf8fd20d0-e6,网桥出口vxlan-6。6 K) r& R& Q3 ^  U. p2 s( y

8 ]5 ]6 |+ l' ], c( i0 R2 U3 v路由器router在节点sr-computer-28(计算+网络混合节点)上,对应名称为qrouter-7aa3ebbe-34a3-47e8-ab06-2e7f89b6053f,连接net1设备为tapa64b82b1-e4,连接net2设备为tap460865e7-03,暂时不考虑dhcp服务。$ F. V; V" u# _6 D% t

" M& z' ~! s  n9 r3 P根据查询结果,以下是简化的拓扑图) d' p7 W2 r% q9 h- H  C! H
, `5 o$ s0 [/ Q2 v

- f1 J" W( H/ b7 [* r带宽测试3 ]. ^3 ?2 }; b$ E( ^+ @3 P/ s
qosvm1如果与qosvm2通信,需要经过网络节点上的虚拟路由来转发- \$ ~" z6 w; L1 e- z

4 ^. S2 Z. m* ^7 x- S" n* W首先不做任何限制,用iperf来测试qosvm1和qosvm2之间的网络带宽,qosvm1(172.160.1.4)做client端,qosvm2(172.160.2.4)做server端。1 m' O' f- [1 }8 Q& X% S
0 h) T6 n9 ]0 T  @! n9 A* v
在server端运行iperf -s
# A: a! H" s! i, D5 U! A  u0 K% {8 v* v7 }+ j
然后client运行 iperf -c 172.16.2.4 -i 1 -t 5 –r
* r( Y0 U% @) l% y& X# r  m. }( b% }
实际测试中可以运行更长时间,得出一个更稳定的值+ U4 f3 D, A" v3 h
' p! k; t% N1 S, X
3 _7 \9 [( E2 l# u2 B- M, u
不做任何限制的情况下,qosvm1对qosvm2的上传带宽为596Mbits/sec,下载带宽为693Mbits/sec
7 n8 l* n0 j: e. M# z$ X1 y' a) F
/ j3 U, x, Z- E对计算节点sr-computer-27 上的tap9873a7ae-41设备进行限制,限制上传带宽100Mbps,下载带宽200Mbps
! a0 f7 ^/ _% ^+ f6 [; T% H4 V" f0 ^" F+ }4 {
首先创建qos策略" O* V, m: R6 o4 x! F" W) t

1 }: F3 Y  S& Y* sneutron qos-policy-create  --shared t2cloud_qos. P6 b! O1 S6 C& l

& r# {5 o& }1 x1 m" _5 [  i6 V" T$ k' T' v% r4 i
然后创建对应规则,分别限制上传带宽和下载带宽6 x/ E9 R: p6 h& G; z' t" E8 M
: K( O& h% G: R
neutron qos-bandwidth-limit-rule-create --max-kbps=100000 --max-burst-kbps=100000 t2cloud_qos --direction ingress
/ [4 O! j1 L% z+ ?$ i" L5 n0 @. v4 n& ]. ~# f: C( m
neutron qos-bandwidth-limit-rule-create --max-kbps=200000 --max-burst-kbps=200000 t2cloud_qos
% _( s  B0 R( n  V0 T4 q" g8 x& Q  \" t; ?; N$ g2 y0 f+ G
5 Q' c/ f6 ^2 O: Q( \
需要注意的是,端口的ingress对应虚拟机的上传带宽,egress对应虚拟机的下载带宽& J' f% @& ^# r) t0 h% ?. Q2 ?
( A6 W: {3 x3 z% l+ D, e
将qos规则与虚拟机对应的port绑定* N  q1 b/ Q: c7 C
" @5 ~+ }& l8 N6 e$ Y0 [+ [
neutron port-list |grep 172.160.1.4
1 O, D3 I4 w1 k7 E9 x
- M( x2 T1 q& p2 ?neutron port-update --qos-policy 0be11a7d-97e3-4dd9-a74e-616e7bdf65c99873a7ae-41ad-4b30-8c3e-1167a7e1c3bd
" T1 X$ Z; X; ]$ w% {0 T  L
$ a/ Y% A4 h( W$ q" |1 B! {neutron port-show 9873a7ae-41ad-4b30-8c3e-1167a7e1c3bd# D' v( ?5 }% M) K1 u0 k  _
9 q" j( Z3 r" }+ u

% g0 Q# |2 ~: P因为neutron 的qos最终是通过linux tc来实现。可以使用tc命令查看设置是否生效, [/ |6 k+ N9 i- z$ f- b
8 A. Q0 I& M$ u
tc qdiscshow dev tap9873a7ae-41" f3 p/ X* }3 ^5 X
2 u5 c& v- o% O4 q: I1 u
tc filtershow dev tap9873a7ae-41 parent ffff:) w2 ]( k; e% s* u

1 A8 Y8 _9 m$ O5 ?7 y8 u9 K1 o( N) I
再次用iperf测试带宽
$ H# O" r# K' l+ d. U, G: J9 q! ~3 _
可以看出,稳定值基本限制在qos限制的范围内
# @) e, ]4 ^! L: e
9 h1 L( j  v" K0 ^8 M; o6 j测试总结9 _, d& X, D9 W  H
以上测试了qos中最简单的场景,通过限制虚拟机网卡对应tap设备来限制虚拟机之间的通信带宽,过程中有过一些困惑和问题,现总结如下:
( Z" w, h8 n" {% P! k9 J8 i3 L" p( R& b7 N
Iperf使用tcp测试带宽,短时间内的数据不是特别准确,特别是带宽上限的测试,因此尽可能测试时间长点,得出一个稳定的带宽值
. L. Z+ }. r" o- Q; \0 p' B4 T# w
关于max-kbps和max-burst-kbps的理解,max-kbps比较容易理解,就是最大带宽,max-burst-kbps在tc里面会转成字节单位burst,指的是令牌桶的大小,如果桶中有多余的令牌,允许短暂的突发流量通过,也就是说令牌桶越大,也就允许更多的突发流量通过。
; A- R$ x+ L* F0 k. }9 n! B9 ^, Z9 I* ^1 @; C( R7 j) O' m' D
neutron还可以对一个网络设置qos1,这样所有创建在该网络下的虚拟机都会使用该qos1,如果对虚拟机再单独设置qos2,那么对于该虚拟机来说,只有qos2生效。目前对网络设置的qos只会作用于虚拟机对应的port,不会影响其他port(例如dhcp)。+ C" E, Q  K2 ]7 g" ~

$ P+ _. g: W8 W
; V/ i4 A! s; B8 e1 I1 Z2 f' w/ H% e
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 点击这里给我发消息

GMT+8, 2026-4-8 15:23 , Processed in 0.039076 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

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