自分でOpenStockを書くQoS機能(1)

2977 ワード

この記事のアドレス:http://blog.csdn.net/spch2008/article/details/9279445
起因: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_id
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