- 积分
- 16843
在线时间 小时
最后登录1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?开始注册
x
qos基础
/ q2 M6 _( Z0 K- C在Linux系统上,无论去使用怎样的工具,最终都要使用TC来做流量控制。TC利用队列规定建立处理数据包的队列,并定义队列中的数据包被发送的方式, 从而实现对流量的控制。Linux内核中支持的队列主要有:
: a% J) }% J) R0 W1 q7 t2 K; ETBF(Token Bucket Flow令牌桶过滤器)
- i4 I5 g% A0 d5 g, {, w8 N3 Ppfifo_fast(Third Band First In First Out Queue先进先出队列)+ M, u' E3 O% j4 t1 u
SFQ(Stochastic Fairness Queueing随机公平队列)8 ?2 i1 v6 [5 V) c% c
HTB(Hierarchy Token Bucket分层令牌桶)等。
3 ~% J: B6 t4 X- _+ @% E6 u+ m: h# R4 s7 T/ m" U
一。内容
- ?# R8 m! a( Y4 mopenstack在L版中支持网络qos,这是一个非常实用的功能,以前的版本中,对于虚机网络流量qos,我们只能通过Flavor来设置qos,这需要去维护很多个Flavor来保证不同的qos需求,因此Flavor-qos非常不灵活。
4 l: O2 i! Q& FNeutron中qos限制发送数据采用TBF队列。 X) s. K* k6 Q9 t% G9 d
以下是通过限制端口来达到限速目的,也就是将qos规则绑定在虚拟机网卡对应的tap设备上限速。主要设置两个参数,一个是rate带宽,一个是burst,neutron命令中分别对应max-kbps和max-burst-kbps
5 b$ N" G* X& {4 y! a5 U
1 P* f( y4 r" Q* a' C0 b二。配置
9 H8 C$ W8 }$ B3 j1.修改neutron-server的neutron.conf配置! T9 {, O- Q, C! l6 m; a5 [+ y3 l) ]
# vi /etc/neutron/neutron.conf+ b9 ~+ x$ V" n' L% K$ ~
[DEFAULT]1 D0 i1 a5 M p- j6 i6 O+ |5 q- Z
service_plugins =neutron.services.qos.qos_plugin.QoSPlugin
+ f2 M' b7 ?2 X4 I+ {2.修改neutron-server的ml2_conf.ini配置
& h1 B* p1 I C. G- i! s# vi /etc/neutron/plugins/ml2/ml2_conf.ini+ g8 ~9 U8 N* V$ t7 i+ L
[ml2]
0 s( I1 j1 M6 t0 Dextension_drivers = qos, b: q' b6 U8 a0 N. L
3.修改neutron-linuxbridge-agent的linuxbridge_agent.ini配置
% [) Q; e7 v9 s, T# vi /etc/neutron/plugins/ml2/linuxbridge_agent.ini5 F3 h* O) d$ z) u
[agent]6 M) z; n0 s) s9 a, z7 y! J
extensions = qos
% O+ }- q* V+ t5 R. C& \0 E三。规则
' @' ?( j7 W8 h3 r1.bandwidth limit rule! ]/ k- e) u2 f% Q/ H6 @
2.minimum bandwidth rule0 }1 l! v6 Z5 Y
四。使用
4 `4 N. L/ B( g- e- s% J9 M- m1.创建qos-policy,并给policy设置rule/ U! t2 e7 L% K$ Z6 Y+ r
neutron qos-policy-create bw-limiter
0 R! O. m- @3 X$ n! Pneutron qos-bandwidth-limit-rule-create bw-limiter --max-kbps 3000 --max-burst-kbps 300; ?7 ]! U* c- V
2.给port或网络设置qos-policy; E0 h2 E$ T6 o6 J0 E5 _
neutron port-create --qos-policy bw-limiter
- m6 _' m9 ~* l) [$ Qneutron port-update --qos-policy bw-limiter | --no-qos-policy$ q5 d' h5 |2 X3 D
neutron net-create --qos-policy bw-limiter
& D/ S) P: \* V G3 Y* `neutron net-update --qos-policy bw-limiter | --no-qos-policy. i2 m0 n. i# g
使用举例:. R' w' r! n9 U7 D F; H; G0 H
# tc -s qdisc show dev tap77f1557f-fd ; R7 J! n0 N- ]/ W
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 15 c8 K" Z1 I7 p! U
Sent 91481254 bytes 69639 pkt (dropped 0, overlimits 0 requeues 0)
: Y& Z7 G; s3 c3 tbacklog 0b 0p requeues 09 e9 H+ o& ?8 ?% L2 C, [
qdisc ingress ffff: parent ffff:fff1 ----------------. [3 d4 B9 C# J& ]2 l: c
Sent 155682 bytes 2195 pkt (dropped 835, overlimits 0 requeues 0)( L# L3 S4 x4 b! y; p4 M
backlog 0b 0p requeues 0; R6 [3 ^5 f1 x; R% a4 z1 h% `
# tc filter show dev tap77f1557f-fd parent ffff:- J' ]+ V1 p6 A9 B- W& y! B0 S
filter protocol all pref 49 basic
7 B* Y+ E1 ~! J) H2 Sfilter protocol all pref 49 basic handle 0x1
% p! w/ d$ ?! @5 Y ]police 0x5 rate 30Kbit burst 3Kb mtu 64Kb action drop overhead 0b' F9 y% F! c, E9 n; e r# g& S+ g
ref 1 bind 1" U1 X* ~7 P/ v
% f s: Z' L# p: { G
|
|