- 积分
- 16840
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
qos基础
( t7 r) p" F3 X# n$ l6 [* z! L, O在Linux系统上,无论去使用怎样的工具,最终都要使用TC来做流量控制。TC利用队列规定建立处理数据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。Linux内核中支持的队列主要有:
" f; q! Q6 ?" `1 [TBF(Token Bucket Flow令牌桶过滤器)3 _' g/ M9 o* L& D
pfifo_fast(Third Band First In First Out Queue先进先出队列)
3 Y( w! B4 y& b- B$ Z7 \& p9 FSFQ(Stochastic Fairness Queueing随机公平队列)/ J; k; s+ Y' R+ L7 A6 I
HTB(Hierarchy Token Bucket分层令牌桶)等。
# P6 Q2 P2 x: m# ?& U% o& A M# h1 B7 R+ s' p0 H* D
一。内容
) N, K; N* i6 e Yopenstack在L版中支持网络qos,这是一个非常实用的功能,以前的版本中,对于虚机网络流量qos,我们只能通过Flavor来设置qos,这需要去维护很多个Flavor来保证不同的qos需求,因此Flavor-qos非常不灵活。
& y8 v7 I& U0 hNeutron中qos限制发送数据采用TBF队列。# y+ o* E3 W7 z- ]4 A, r
以下是通过限制端口来达到限速目的,也就是将qos规则绑定在虚拟机网卡对应的tap设备上限速。主要设置两个参数,一个是rate带宽,一个是burst,neutron命令中分别对应max-kbps和max-burst-kbps+ U/ G# X8 H4 W+ s1 r( \' o
, I; {# D* z2 r# C: x8 K二。配置
( D$ K E; g% X/ F' m+ C1.修改neutron-server的neutron.conf配置! ?" b5 A3 R1 o6 |& ]
# vi /etc/neutron/neutron.conf
0 J/ @, [( s. ~3 T; j[DEFAULT]
# S$ F3 _" i0 a3 B% c; C# T( A R5 Gservice_plugins =neutron.services.qos.qos_plugin.QoSPlugin
1 \6 B3 ~0 ?/ C( r4 s y2.修改neutron-server的ml2_conf.ini配置
5 ]3 t6 v* B1 G% I R- ^# vi /etc/neutron/plugins/ml2/ml2_conf.ini$ }8 U+ b9 b& \
[ml2]4 s4 ^: V6 m( Y ]' V6 m! m
extension_drivers = qos7 V8 [* Q! U, T/ g: ~
3.修改neutron-linuxbridge-agent的linuxbridge_agent.ini配置
! P$ d1 [- ?. w$ O1 g" |6 Q# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini
0 Z; Y; w" o B) P% {; t[agent]
3 B% U2 b7 f4 I: ^" ?6 B- Sextensions = qos+ y; {& j+ k8 w. b$ ?* v* ~
三。规则3 R# T( E% r+ W7 w$ _
1.bandwidth limit rule
2 g. R$ o" d- D2 F. F7 A0 [* X$ }2.minimum bandwidth rule
% @# `2 Q* C' m0 L( K7 B四。使用- ?6 G- X# U0 M8 v7 A$ E
1.创建qos-policy,并给policy设置rule' g2 O( B" \' V, ?
neutron qos-policy-create bw-limiter3 T- K) Q" Z/ u) j- b4 h& W
neutron qos-bandwidth-limit-rule-create bw-limiter --max-kbps 3000 --max-burst-kbps 300
: @3 E6 L7 |/ W% e3 V% e6 Y2.给port或网络设置qos-policy
2 X- u& I2 S/ g* xneutron port-create --qos-policy bw-limiter
. [$ A7 ?7 F" w* l8 U4 n/ eneutron port-update --qos-policy bw-limiter | --no-qos-policy
; A& i$ u, [, C5 s4 gneutron net-create --qos-policy bw-limiter
2 i: @" D% _- ~neutron net-update --qos-policy bw-limiter | --no-qos-policy
6 h+ E7 t: y1 l x$ V+ T使用举例:7 @' p$ G+ _& m* G8 A& C$ x
# tc -s qdisc show dev tap77f1557f-fd : X6 [6 |+ I* C ^5 Q- u
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 10 Q* Z f9 x8 o- M
Sent 91481254 bytes 69639 pkt (dropped 0, overlimits 0 requeues 0)2 m% |5 r0 r. D& _1 Q
backlog 0b 0p requeues 0
$ H' D: N( B5 _! O$ y: t7 iqdisc ingress ffff: parent ffff:fff1 ----------------. {# D/ B) }+ _0 H) _( ^0 [
Sent 155682 bytes 2195 pkt (dropped 835, overlimits 0 requeues 0). K2 l+ m0 k3 W( w
backlog 0b 0p requeues 0
# Q( f0 z5 }, _9 Y: b$ T# tc filter show dev tap77f1557f-fd parent ffff:
3 ]+ u" F& T- I) d9 V2 Jfilter protocol all pref 49 basic( H* z2 @5 M. ~" n; _" O
filter protocol all pref 49 basic handle 0x1
7 `3 O: o4 s/ s2 X! Qpolice 0x5 rate 30Kbit burst 3Kb mtu 64Kb action drop overhead 0b- _9 Z/ X' H( r- p
ref 1 bind 1
- G2 @7 u7 Q2 Y" R+ Q4 L$ o% R: L" [2 p" e1 O3 h* i& J
|
|