- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
qos基础( l6 J4 S3 ?; \3 z6 o' K
在Linux系统上,无论去使用怎样的工具,最终都要使用TC来做流量控制。TC利用队列规定建立处理数据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。Linux内核中支持的队列主要有:* u: F7 a- m: L; {8 H8 L
TBF(Token Bucket Flow令牌桶过滤器)
$ c I/ D8 J9 w8 ?6 a) e3 a) Z- Qpfifo_fast(Third Band First In First Out Queue先进先出队列). n+ y. G! H! \# _- F6 o& F; d8 x
SFQ(Stochastic Fairness Queueing随机公平队列)# Q0 d5 L8 z/ N3 g+ l
HTB(Hierarchy Token Bucket分层令牌桶)等。* s, a% P6 e% r q
: o) f8 [# O- T! E1 P; V3 ]) F
一。内容
8 C7 l7 ~* G! u! Lopenstack在L版中支持网络qos,这是一个非常实用的功能,以前的版本中,对于虚机网络流量qos,我们只能通过Flavor来设置qos,这需要去维护很多个Flavor来保证不同的qos需求,因此Flavor-qos非常不灵活。4 d5 K N F( g
Neutron中qos限制发送数据采用TBF队列。: S. w' _4 K; u3 e3 n
以下是通过限制端口来达到限速目的,也就是将qos规则绑定在虚拟机网卡对应的tap设备上限速。主要设置两个参数,一个是rate带宽,一个是burst,neutron命令中分别对应max-kbps和max-burst-kbps* h/ g( [- x1 C( C7 ?
2 X4 k z8 }2 d5 \5 d) d二。配置3 h* }9 ^; ]( v9 q
1.修改neutron-server的neutron.conf配置" f, r L' L: [% P( L, I, D
# vi /etc/neutron/neutron.conf3 v- i, r$ Z/ P C. \: C
[DEFAULT]9 A1 o8 I7 H' T: i: l7 W) Q
service_plugins =neutron.services.qos.qos_plugin.QoSPlugin9 U5 z: J1 A/ S Q7 a o
2.修改neutron-server的ml2_conf.ini配置# I! f3 m" j+ F/ `* w% Q' [
# vi /etc/neutron/plugins/ml2/ml2_conf.ini
3 u( |6 S# i5 p# F& g0 {6 `, C[ml2]
! V5 p# s0 t; x" A: |extension_drivers = qos2 l- G H/ f7 [# V9 r2 o9 U
3.修改neutron-linuxbridge-agent的linuxbridge_agent.ini配置
) r, o8 ~1 ], E: x/ T7 W. s3 ^# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini4 f; A/ q/ J t
[agent]) t4 ~ j' u! v, R( g) D# \
extensions = qos
# @& A. \) T/ N# {( J6 L5 m/ \0 ~$ u三。规则/ t9 l4 D* G8 {& G( ^7 O7 x
1.bandwidth limit rule
) j- }" ]- h; \# g2 X2.minimum bandwidth rule
b: C7 U6 U1 H; Y' j四。使用
8 j/ I; h) E9 ]- P5 {+ v8 S1.创建qos-policy,并给policy设置rule
* r0 p- J1 @' E# Fneutron qos-policy-create bw-limiter
( k p, M( h# G5 u- Rneutron qos-bandwidth-limit-rule-create bw-limiter --max-kbps 3000 --max-burst-kbps 300- y; ~7 ]0 I* x
2.给port或网络设置qos-policy
7 z# e0 E, M3 ], ?$ F' Bneutron port-create --qos-policy bw-limiter
) }' U0 x4 V8 J* B* j( fneutron port-update --qos-policy bw-limiter | --no-qos-policy
9 G- c: Q/ D5 x! q: lneutron net-create --qos-policy bw-limiter
& \$ [+ r" I# o3 @/ Y9 ~3 Y; eneutron net-update --qos-policy bw-limiter | --no-qos-policy' ]% S: H: ~$ e$ a
使用举例:
. S4 Y" z# }. G5 |, D# tc -s qdisc show dev tap77f1557f-fd 5 Y, `6 ]! l) ~1 L! x# a E. _
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap 1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1# S6 v* S6 \$ f
Sent 91481254 bytes 69639 pkt (dropped 0, overlimits 0 requeues 0)$ _3 {7 H; y, {9 O7 M5 _( }
backlog 0b 0p requeues 00 V% w# Z0 P1 d6 _" I
qdisc ingress ffff: parent ffff:fff1 ----------------/ \" ]5 H% s/ H, n
Sent 155682 bytes 2195 pkt (dropped 835, overlimits 0 requeues 0)
_- M0 r7 X0 C2 e% ^backlog 0b 0p requeues 0
& F7 F, ?: u! S% \4 z# tc filter show dev tap77f1557f-fd parent ffff:2 h S: j9 T: @* m9 e
filter protocol all pref 49 basic
4 H2 t" f% B$ efilter protocol all pref 49 basic handle 0x1& x3 F& T" S% [; }
police 0x5 rate 30Kbit burst 3Kb mtu 64Kb action drop overhead 0b
( D" K: S$ x0 Q' G3 c# Lref 1 bind 1
. d' d, C- |" S* e
% f, a! f3 n, O' `/ F |
|