成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

OpenStack L3網絡QOS的實現思路

云計算 OpenStack
ML2-QOS只能做二層網絡的流量限制,對于floating-IP級別的并不能生效,我們還是需要一個L3-QOS,來實現針對floating-IP和router設置QOS,且能夠設置上行和下行流量。

 在L版的ReleaseNotes里面我們看到Neutron已經支持了 ML2-QOS 特性, 這個特性可以讓我們針對L2-Port和L2-Net做流量QOS設置, 這是一個非常實用的特性,在之前的版本中,對于虛機網絡流量QOS,我們只能通過Flavor來去設置QOS, Flavor-QOS不是很靈活,這會讓我去維護很多個Flavor來保證不同的QOS需求。

但是ML2-QOS只能做二層網絡的流量限制,對于floating-IP級別的并不能生效,而且ML2-QOS依托于OpenVswitch本身的特性, 且OpenVswitch的QOS只能設置單向流量(虛機上行流量)。

我們還是需要一個L3-QOS,來實現針對floating-IP和router設置QOS,且能夠設置上行和下行流量。

TC是基礎

在Linux系統上,無論去使用怎樣的工具,本質上都要使用TC來做流量控制。 如上面所說,針對floating-IP和router的QOS設置,我們必須讓TC規則作用在對應的Net-namespace上:

使用HTB來控制虛機的上行流量,使用Ingress來控制虛機的下行流量:

此處需要注意的是,TC的版本不能太低,否則TC不能支持在namespace下設置規則,如果你是ubuntu系統, 建議至少使用這個版本IProute2_4.1.1-1ubuntu1_amd64。

實現原理請參考這個腳本:

  1. #!/bin/bash 
  2.  
  3.  
  4. # kb or k: Kilobytes 
  5.  
  6. # mb or m: Megabytes 
  7.  
  8. # mbit: Megabits 
  9.  
  10. # kbit: Kilobits 
  11.  
  12. # To get the byte figure from bits, divide the number by 8 bit 
  13.  
  14.  
  15. # ex: tc_htb.sh restart qg-f5f0ed64-84 qrouter-d5b5b595-9ae2-49e9-8fd9-6ddbf6195702 
  16.  
  17.  
  18. TC=/sbin/tc 
  19.  
  20. if [ -n "$3" ]; then 
  21.  
  22. TC="/sbin/tc -n $3" #tc utility, IProute2-ss150706 
  23.  
  24. fi 
  25.  
  26. IF=$2 # Interface 
  27.  
  28. UPLD=1mbit # VM UPLOAD Limit 
  29.  
  30. DEF_UPLD=2mbit # VM UPLOAD Limit 
  31.  
  32. DNLD=10mbit # VM DOWNLOAD Limit 
  33.  
  34. DEF_DNLD=20mbit # VM DOWNLOAD Limit 
  35.  
  36. IP=192.168.252.168 # VM IP 
  37.  
  38. GW_IP=192.168.252.141 # Router GW IP 
  39.  
  40. HTB_U32="$TC filter add dev $IF protocol all parent 1: prio 1 u32" 
  41.  
  42. INGRESS_U32="$TC filter add dev $IF protocol all parent ffff:" 
  43.  
  44. start() { 
  45.  
  46. # UPLOAD TRAFFIC 
  47.  
  48. $TC qdisc add dev $IF root handle 1: htb default 1000 
  49.  
  50. $TC class add dev $IF parent 1: classid 1:1000 htb rate $DEF_UPLD #burst 100kb 
  51.  
  52. $TC qdisc add dev $IF parent 1:1000 handle 1001: sfq perturb 10 
  53.  
  54. $TC class add dev $IF parent 1: classid 1:1 htb rate $UPLD #burst 100kb 
  55.  
  56. $TC qdisc add dev $IF parent 1:1 handle 2: sfq perturb 10 
  57.  
  58. $HTB_U32 match IP src $IP/32 flowid 1:1 
  59.  
  60. # DOWNLOAD TRAFFIC 
  61.  
  62. $TC qdisc add dev $IF ingress 
  63.  
  64. $INGRESS_U32 prio 1 u32 match IP dst $GW_IP/32 police rate $DEF_DNLD burst 512kb mtu 64kb drop flowid :1 
  65.  
  66. $INGRESS_U32 prio 2 u32 match IP dst $IP/32 police rate $DNLD burst 256kb mtu 64kb drop flowid :1 
  67.  
  68.  
  69. rm() { 
  70.  
  71. $TC qdisc del dev $IF parent 1:1 
  72.  
  73. $TC filter del dev $IF protocol all parent 1: prio 1 
  74.  
  75. $TC class del dev $IF parent 1: classid 1:1 
  76.  
  77. $TC filter del dev $IF protocol all parent ffff: prio 2 
  78.  
  79.  
  80. stop() { 
  81.  
  82. $TC qdisc del dev $IF root 
  83.  
  84. $TC qdisc del dev $IF ingress 
  85.  
  86.  
  87. restart() { 
  88.  
  89. stop 
  90.  
  91. sleep 1 
  92.  
  93. start 
  94.  
  95.  
  96. show() { 
  97.  
  98. echo '==================================' 
  99.  
  100. $TC -s -d -p qdisc show dev $IF 
  101.  
  102. echo '==================================' 
  103.  
  104. echo -e '\n' 
  105.  
  106. echo '==================================' 
  107.  
  108. $TC class show dev $IF 
  109.  
  110. echo '==================================' 
  111.  
  112. echo -e '\n' 
  113.  
  114. echo '==================================' 
  115.  
  116. $TC -s -d -p filter show dev $IF 
  117.  
  118. echo '----------------------------------' 
  119.  
  120. $TC filter show dev $IF parent ffff: 
  121.  
  122. echo '==================================' 
  123.  
  124.  
  125. case "$1" in 
  126.  
  127. start) 
  128.  
  129. echo -n "Starting bandwidth shaping: " 
  130.  
  131. start 
  132.  
  133. echo "done" 
  134.  
  135. ;; 
  136.  
  137. stop) 
  138.  
  139. echo -n "Stopping bandwidth shaping: " 
  140.  
  141. stop 
  142.  
  143. echo "done" 
  144.  
  145. ;; 
  146.  
  147. restart) 
  148.  
  149. echo -n "Restarting bandwidth shaping: " 
  150.  
  151. restart 
  152.  
  153. echo "done" 
  154.  
  155. ;; 
  156.  
  157. rm) 
  158.  
  159. echo -n "Rm bandwidth shaping: " 
  160.  
  161. rm 
  162.  
  163. echo "done" 
  164.  
  165. ;; 
  166.  
  167. show) 
  168.  
  169. echo "Bandwidth shaping status for $IF:" 
  170.  
  171. show 
  172.  
  173. echo "" 
  174.  
  175. ;; 
  176.  
  177. *) 
  178.  
  179. pwd=$(pwd) 
  180.  
  181. echo "Usage: $(/usr/bin/dirname $pwd)/tc.bash {start|stop|restart|show}" 
  182.  
  183. ;; 
  184.  
  185. esac 
  186.  
  187. exit 0 

將上面的實現原理整合到自己維護的Neutron源碼中。

使用案例

除了在底層支持L3-QOS外,還需要在Neutron-api層面支持設置具體屬性值, 比如創建一個具有帶寬限制的router或者floatingIP:

  1. $ Neutron router-create aaaa --ha True --ingress_rate 14mbit --ingress_burst 512kb --egress_rate 12mbit --egress_burst 512kb 
  2.  
  3. Created a new router: 
  4.  
  5. +-----------------------+--------------------------------------------------------------------------------------------------------+ 
  6.  
  7. | Field | Value | 
  8.  
  9. +-----------------------+--------------------------------------------------------------------------------------------------------+ 
  10.  
  11. | admin_state_up | True | 
  12.  
  13. | bandwidth | {"ingress_rate""14mbit""egress_rate""12mbit""egress_burst""512kb""ingress_burst""512kb"} | 
  14.  
  15. | distributed | False | 
  16.  
  17. | external_gateway_info | | 
  18.  
  19. | ha | True | 
  20.  
  21. | id | d2e8813a-6619-4784-a08a-2a2725fe2fb5 | 
  22.  
  23. | name | aaaa | 
  24.  
  25. | routes | | 
  26.  
  27. | status | ACTIVE | 
  28.  
  29. | tenant_id | 5e30ecc3c3434f24aa56801467ef1688 | 
  30.  
  31. +-----------------------+--------------------------------------------------------------------------------------------------------+ 
  32.  
  33. $ Neutron floatingIP-create --egress_rate 5mbit --egress_burst 150kb 
  34.  
  35. Created a new floatingIP: 
  36.  
  37. +---------------------+---------------------------------------------------+ 
  38.  
  39. | Field | Value | 
  40.  
  41. +---------------------+---------------------------------------------------+ 
  42.  
  43. | bandwidth | {"egress_rate""5mbit""egress_burst""150kb"} | 
  44.  
  45. | fixed_IP_address | | 
  46.  
  47. | floating_IP_address | 192.168.252.161 | 
  48.  
  49. | floating_Network_id | 9946adcc-041e-4c0f-91b6-96a9fb6254c0 | 
  50.  
  51. | id | 432f7dd6-b171-4de1-8e43-8069c42ee5a5 | 
  52.  
  53. | Port_id | | 
  54.  
  55. | router_id | | 
  56.  
  57. | status | DOWN | 
  58.  
  59. | tenant_id | 5e30ecc3c3434f24aa56801467ef1688 | 
  60.  
  61. +---------------------+---------------------------------------------------+ 

修改已有router的帶寬規則,并讓其生效:

  1. $ Neutron router-update --admin-state-up False --ingress_rate 8mbit --ingress_burst 256kb 
  2.  
  3. $ Neutron router-update --admin-state-up True 

注意這個過程中,連到這個router的所有機器都會斷網

修改已有floatingIP的帶寬規則,并讓其生效:

  1. $ Neutron floatingIP-disassociate --ingress_rate 7mbit --ingress_burst 256kb 
  2.  
  3. $ Neutron floatingIP-associate 

注意這個過程中,floatingIP是從解綁到綁定

本文源自OpenStack中國社區與云頭條、ZDNet\Solidot、CSDN、51CTO、infoQ、科技茱比、特大號、IDC圈等Top合作媒體聯合舉辦的“我要直播奧斯汀”(http://www.openstack.cn/?p=4396)活動

保護期(2016.1.19-2016.1.26)內非合作媒體不得轉載。

責任編輯:xinxiaoliang
相關推薦

2015-01-20 13:19:52

OpenStack網絡層數據鏈路層

2017-09-21 13:46:50

VXLANL3網絡Overlay

2021-10-20 19:14:30

緩存CacheCPU

2013-03-15 10:28:26

PTNLTEVPN

2010-08-19 09:39:00

L3路由交換技術

2023-01-31 09:12:16

CPU芯片緩存

2022-08-26 14:58:43

區塊鏈比特幣架構

2011-12-21 10:54:56

惠普激光打印機

2017-05-04 15:36:54

Openstack Q實現實踐

2011-12-07 14:20:40

惠普激光打印機

2011-11-01 10:48:30

OKI激光打印機

2009-03-16 14:41:10

2010-08-30 13:18:18

QoS

2021-03-30 09:35:12

網絡安全動態速覽安全教育

2020-12-22 14:03:07

網絡安全物聯網

2013-01-30 15:50:46

2018-01-10 07:37:02

網絡技術IT

2023-12-15 09:46:19

2024-04-23 13:10:29

2021-04-27 14:11:02

自動駕駛AI人工智能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 黄色在线免费观看视频 | 亚洲精品字幕 | 久久久久久久久一区 | 国产在线97 | 日本久久久久久 | 国产精品国产精品国产专区不蜜 | 精品一区二区不卡 | 久久人人爽人人爽 | 老司机成人在线 | 国产小网站 | 欧美精品一区二区免费 | 天天草天天射 | 久久狠狠 | 亚洲精品免费在线 | 亚洲精品欧洲 | 乱一性一乱一交一视频a∨ 色爱av | 一级a性色生活片久久毛片波多野 | 久久亚洲欧美日韩精品专区 | 成人黄色在线视频 | 亚洲精品一二三 | 一区二区三区视频 | 午夜一区二区三区在线观看 | aaa精品| 香蕉久久a毛片 | 亚洲国产一区二区视频 | 日韩亚洲一区二区 | 久久在线精品 | 久久综合99 | 在线观看视频h | 欧美日韩大陆 | 国产激情视频网站 | 99久久精品免费看国产免费软件 | 成人不卡| 欧美黑人又粗大 | 亚洲精品一二三区 | 欧美激情视频一区二区三区免费 | 亚欧精品一区 | 在线免费中文字幕 | 久久九 | 国产精品伦理一区二区三区 | 中文字幕色站 |