自分でOpenStockを書くQoS機能(1)
2977 ワード
この記事のアドレス:http://blog.csdn.net/spch2008/article/details/9279445
起因:OpenStockソースコードは何日か見ました.そこで、何かを探して作ってみたいです.NVPはQoS機能があることが分かりましたが、Portに対してはちょっと複雑です.
それを簡略化して、Interfaceに対するQoS機能を作る.InterfaceのQoSにはいくつかのコマンドが必要です.簡単にできます.
1.まずコマンドでQoS項目を作成します.
2.QoS-Port-Bindingデータベースを作成し、port_を記録する.idとqos_idバインディング関係
3.仮想マシンを作成する時、ノバはQuautumが暴露したAPIを呼び出して、結合関係をデータベースに書き込みます.
4.ovas-agentは、リモート呼び出し関数(パラメータportuuid)によりovas-pluginにQoSルールを取得します.
5.ovas-agentはInterfaceに規則を施行する.
開発環境:
1. OpenStock Fバージョンで開発します.
2. 制御ノードnova-control、 一つのネットワークノードnova-network、一つの計算ノードnova-comput
起因:OpenStockソースコードは何日か見ました.そこで、何かを探して作ってみたいです.NVPはQoS機能があることが分かりましたが、Portに対してはちょっと複雑です.
それを簡略化して、Interfaceに対するQoS機能を作る.InterfaceのQoSにはいくつかのコマンドが必要です.簡単にできます.
ovs-vsctl set interface vif0.0 ingress_policing_rate=1000
ovs-vsctl set interface vif0.0 ingress_policing_burst=100
ingress_policing_rate: ( kbps)
ingress_policing_burst: ingress_policing_rate
プロセス:1.まずコマンドでQoS項目を作成します.
root@nova-network:~# quantum qos-create --name spch2008 --rate 1000 --burst 100
Created a new ovsqos:
+-----------+--------------------------------------+
| Field | Value |
+-----------+--------------------------------------+
| burst | 100 |
| id | 41d1c686-3298-40bf-a114-b20e7c4e370c |
| name | spch2008 |
| rate | 1000 |
| tenant_id | 9b320e2822da4461967232e938d92d18 |
+-----------+--------------------------------------+
2.仮想マシンを起動すると、qosパラメータが入ってきます.nova boot --flavor 1 --image 4d3175cf-9d82-44de-862b-f94bd6e71fb7
--key_name mykey instance003 --security_groups default
--interface_qos 41d1c686-3298-40bf-a114-b20e7c4e370c
3.仮想マシンの表示root@nova-compute1:~# ovs-vsctl list Interface
_uuid : 2542b505-c895-4e16-9dfc-535c1a922109
admin_state : up
cfm_fault : []
cfm_mpid : []
cfm_remote_mpids : []
duplex : full
external_ids : {attached-mac="fa:16:3e:d8:e1:7e", iface-id="d92f45e9-9c41-424d-9410-2dc5bd82aeca", iface-status=active,
vm-uuid="0062f57a-1fda-444b-a7a5-63dafa8b87d4"}
ingress_policing_burst: 100
ingress_policing_rate: 1000
lacp_current : []
link_resets : 2
link_speed : 10000000000
link_state : up
mac : []
mtu : 1500
name : "qvod92f45e9-9c"
ofport : 8
options : {}
other_config : {}
statistics : {collisions=0, rx_bytes=1336, rx_crc_err=0, rx_dropped=0, rx_errors=0, rx_frame_err=0, rx_over_err=0, rx_packets=14,
tx_bytes=0, tx_dropped=0, tx_errors=0, tx_packets=0}
status : {driver_name=veth, driver_version="1.0", firmware_version="N/A"}
type : ""
考え方:1.QoS-Rulesデータベースを作成し、QoSルールを書き込み、メインキーqos_id2.QoS-Port-Bindingデータベースを作成し、port_を記録する.idとqos_idバインディング関係
3.仮想マシンを作成する時、ノバはQuautumが暴露したAPIを呼び出して、結合関係をデータベースに書き込みます.
4.ovas-agentは、リモート呼び出し関数(パラメータportuuid)によりovas-pluginにQoSルールを取得します.
5.ovas-agentはInterfaceに規則を施行する.
開発環境:
1. OpenStock Fバージョンで開発します.
2. 制御ノードnova-control、 一つのネットワークノードnova-network、一つの計算ノードnova-comput