91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Openstack中計算節點鏈路是什么

發布時間:2021-12-29 15:55:06 來源:億速云 閱讀:156 作者:小新 欄目:云計算

這篇文章主要為大家展示了“Openstack中計算節點鏈路是什么”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Openstack中計算節點鏈路是什么”這篇文章吧。

計算節點虛擬機實例信息如下:

NAME       NETWORK(fixed_ip,floating_ip)                fixed_ip_mac       device   
hyp-vm1    net-hyp=192.168.66.2          122.114.124.21 fa:16:3e:23:91:7b  tap156d4a84-8f
hyp-vm2    net-hyp=192.168.66.4          -              fa:16:3e:61:d8:b7  tap9b3f4311-42
liyang-vm  net-liyang0993=192.168.100.3  122.114.124.45 fa:16:3e:6c:c9:bb  tap0620d5f8-02

(虛擬機ip與網卡信息可以從 dashboard 以及 計算節點的virsh管理工具 收集,此處略)

[root@compute home]# brctl show
bridge name    bridge id         STP enabled  interfaces
qbr0620d5f8-02 8000.e2ac0a53cb2b no           qvb0620d5f8-02  tap0620d5f8-02
qbr156d4a84-8f 8000.62f2e45acb48 no           qvb156d4a84-8f  tap156d4a84-8f
qbr9b3f4311-42 8000.9ea9c59ddd0b no           qvb9b3f4311-42  tap9b3f4311-42

虛擬機是直連linux bridge的,且每個虛擬機擁有獨立的qbr.

qbr是neutron 安全組 具體實現的地方,留待專題說明.

而每個 qbr的 qvb設備 都與 br-int上某對應qvo設備以對等設備的形式直連,參見下文:

[root@compute home]# ovs-vsctl show
1db94f48-8307-4bad-b109-30897062c4e4
    """br-tun 信息略"""
    Bridge br-int
        fail_mode: secure
        Port patch-tun
            Interface patch-tun
                type: patch
                options: {peer=patch-int}
        Port br-int
            Interface br-int
                type: internal
        Port "qvo156d4a84-8f"
            tag: 2
            Interface "qvo156d4a84-8f"
        Port "qvo9b3f4311-42"
            tag: 1
            Interface "qvo9b3f4311-42"
        Port "qvo0620d5f8-02"
            tag: 2
            Interface "qvo0620d5f8-02"
    ovs_version: "2.4.0"

這里舉例說明一下: 如何創建對等設備, linux網橋 , 開啟并設置對等接口的混雜模式,并設置屬主(add-port/addif to ovs/bridge)

ip link add qvb0620d5f8-02 type veth peer name qvob0620d5f8-02
brctl add-br qbr0620d5f8-02
ifconfig qvb0620d5f8-02 promisc up 
ifconfig qvob0620d5f8-02 promisc up
ovs-vsctl add-port  br-int qvob0620d5f8-02 -- set Port qvob0620d5f8-02 tag=2
ovs-vsctl add-port  qbr0620d5f8-02  qvb0620d5f8-02

這樣就實現ovs虛擬交換機br-int與linux bridge - qbr 之間的鏈路互通 .

在linux bridge(安全組網橋),br-int交換機,以及兩者之間的鏈路建立之后我們把注意力放在br-int對 虛擬機(liyang-vm,tap0620d5f8-02網卡的屬主)inbound/outbound流量的處理上.

我們已經知道,在br-int上:
Port "qvo0620d5f8-02"
    tag: 2
    Interface "qvo0620d5f8-02"
那么這些信息作何解釋? tag=2 是什么? tag 指的是 vlan tag,經此端口的流量,出則mod_vlan_vid,入則 strip_vlan.但是VLAN ID為什么是2?
此處vlan tag 是本地vlan(在當前計算節點),而不是全局的(即整個集群).

liyang-vm 連接的是私有網絡 net-liyang0993

[root@controller ~(keystone_admin)]# neutron net-list | grep liyang
| 6a169cca-282d-4bea-a99e-d725ac1721b9|net-liyang0993|1a7ed44b-e61d-4f98-aa47-d9123827acc2 
192.168.100.0/24|

[root@controller ~(keystone_admin)]# neutron net-show 6a169cca-282d-4bea-a99e-d725ac1721b9

+---------------------------+--------------------------------------+
| Field                     | Value                                |
+---------------------------+--------------------------------------+
| admin_state_up            | True                                 |
| id                        | 6a169cca-282d-4bea-a99e-d725ac1721b9 |
| name                      | net-liyang0993                       |
| provider:network_type     | vxlan                                |
| provider:physical_network |                                      |
| provider:segmentation_id  | 10                                   |
| router:external           | False                                |
| shared                    | False                                |
| status                    | ACTIVE                               |
| subnets                   | 1a7ed44b-e61d-4f98-aa47-d9123827acc2 |
| tenant_id                 | c9baab896503480b80919a4f0762dcf8     |
+---------------------------+--------------------------------------+

我們知道該私有網絡 VLAN Tag 是根據配置的VNI范圍(參考 /etc/neutron/plugin.ini : vni_ranges =10:100) 選取的最小的可用值.
那么我猜想鏈路中必須有 br-int port 的 vlan-tag 以及 后續的br-tun tunnel_id 以及 provider:segmentation_id 之間的轉換處理,留待后續探究.

接上文繼續探索 br-int,我們查看 br-int 上的 flow rules:

[root@compute ~]# ovs-ofctl dump-flows br-int
NXST_FLOW reply (xid=0x4):
cookie=0x0, duration=145733.004s, table=0, n_packets=238070, n_bytes=37626893, 
idle_age=0, hard_age=65534, priority=1 actions=NORMAL
cookie=0x0, duration=145732.923s, table=22, n_packets=0, n_bytes=0, idle_age=65534,
hard_age=65534, priority=0 actions=drop

很平常的兩條流表規則:
(1) 根據優先級,優先對流量執行Normal轉發.
(2) table 的數值不同代表當前規則屬于不同的流表, 處理不同的流量 [ 流量歸類,按表批量處理 ] ;

然后我們在看看br-int上的patch-tun,br-tun上的patch-int 端口.

ovs虛擬交換機之間的會連是通過 patch-ports 來實現的,下面舉例說明 br-int 如何與 br-tun如何實現鏈路互通.

[root@compute ~]#ovs-vsctl -- --if-exists del-port patch-tun -- add-port br-int \
                 patch-tun -- set Interface patch-tun type=patch options:peer=patch-int
[root@compute ~]#ovs-vsctl -- --if-exists del-port patch-int -- add-port br-tun \
                 patch-int -- set Interface patch-int type=patch options:peer=patch-tun

參考: http://blog.scottlowe.org/2012/11/27/connecting-ovs-bridges-with-patch-ports/
此處兩個互添 patch port 的語句將br-int 與 br-tun連接到一起

接著繼續往下看 br-tun上的端口與flow rules(參考后文流表規則),先梳理一下再細說:

首先,br-tun上的ofport信息如下:

[root@compute home]# ovs-ofctl show br-tun
OFPT_FEATURES_REPLY (xid=0x2): dpid:000056bb20081443
n_tables:254, n_buffers:256
capabilities: FLOW_STATS TABLE_STATS PORT_STATS QUEUE_STATS ARP_MATCH_IP
actions: output enqueue set_vlan_vid set_vlan_pcp strip_vlan mod_dl_src 
mod_dl_dst mod_nw_src mod_nw_dst mod_nw_tos mod_tp_src mod_tp_dst
 1(patch-int): addr:12:cc:14:b8:9a:67
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
 2(vxlan-0aa0006b): addr:42:9e:52:f8:0c:9a
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
 LOCAL(br-tun): addr:56:bb:20:08:14:43
     config:     PORT_DOWN
     state:      LINK_DOWN
     speed: 0 Mbps now, 0 Mbps max
OFPT_GET_CONFIG_REPLY (xid=0x4): frags=normal miss_send_len=0

其次 , 需要了解, br-tun流表規則中不同的table 編號表示當前規則所屬的表,表示不同的作用.
具體詳見源碼(neutron/plugins/openvswitch/common/constants.py)說明:

PATCH_LV_TO_TUN = 1
GRE_TUN_TO_LV = 2
VXLAN_TUN_TO_LV = 3
LEARN_FROM_TUN = 10
UCAST_TO_TUN = 20
FLOOD_TO_TUN = 21
CANARY_TABLE = 22

然后我們開動對br-tun上的流表規則的分析.

下面我們逐條分析流表規則:

table=0,priority=1,in_port=1 actions=resubmit(,1)

如果是priority=1,table 0,且從ofport=1的端口進入的流量 重新提交到table 1處理

table=0,priority=1,in_port=2 actions=resubmit(,3)

如果是priority=1,table 0,且從ofport=1 的端口進入的流量 重新提交到table 3處理

table=0,priority=0 actions=drop

為table 0設置默認流表規則:DROP

table=1,priority=1,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=resubmit(,20)

如果是priority=1的單播(unicast)流量,那么重新提交到 table 20處理.
dl_dst=01:00:00:00:00:00/01:00:00:00:00:00   匹配多播(含廣播) Ethernet幀
dl_dst=00:00:00:00:00:00/01:00:00:00:00:00   匹配單播 Ethernet幀

table=1,priority=1,dl_dst=01:00:00:00:00:00/01:00:00:00:00:00 actions=resubmit(,21)

如果是廣播流量那么重新提交到table 21處理

table=2,priority=0 actions=drop

為table 2設置默認流表規則:DROP

table=3,priority=1,tun_id=0xa actions=mod_vlan_vid:1,resubmit(,10)

如果是從網絡節點經vxlan隧道(隧道編號 0xa)傳到當前計算節點的流量,將其vlan修改為1,重提給 table 10處理.
特別說明: 此處建立了 tunnel_id 與 本地 vlan間的轉換關系即 tunnel 0xa 對應 local vlan(LV) 1.

table=3,priority=1,tun_id=0xb actions=mod_vlan_vid:2,resubmit(,10)

同上

table=3,priority=0 actions=drop

為table 3設置默認流表規則:DROP

table=10,priority=1 actions=learn(table=20,hard_timeout=300,priority=1,NXM_OF_VLAN_TCI[0..11
],NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[],load:0->NXM_OF_VLAN_TCI[],load:NXM_NX_TUN_ID[]->NXM_NX_T
UN_ID[],output:NXM_OF_IN_PORT[]),output:1

此處開篇幅講解 ovs 的 `learn` action:
ovs-ofctl man手冊的說法是 將learn(**) 里面的 ** 作為一條流規則添加/修改
個人看法: 用以模仿物理交換機的學習功能,物理交換機的的經過學習知道對特定特征的流量怎么處理;而對應地ovs
這個虛擬交換機則是一條流表規則(匹配特定特征的流量,并規定一個處理動作) ; 因此 ** 部分參數,至少包含一個匹配規則與一個action ;
learn 中匹配規則說明 示例:
NXM_OF_VLAN_TCI[0..11] 表示匹配 TCI信息的低12位,即VLAN ID域.
NXM_OF_ETH_DST[]=NXM_OF_ETH_SRC[] 表示學習當前數據包的mac地址.
output:NXM_OF_IN_PORT[] 表示 新加流表規則的處理出包的操作(將其再次從入口`ovs port`返回)
load:NXM_NX_TUN_ID[]->NXM_NX_TUN_ID[] 表示新加流表規則 處理出流量時會將其 tunnel id修改為當前流表的 tunnel id.
hard_timeout 表示交換機entry過期時間,一般 learn 必須要加選項,保證定時更新 entry;
如前所示,learn是在table 20(mac學習表)中動態添加flow,因此在table=20的所有flows中,符合格式"table=20,hard_timeout=300, priority=1,vlan_tci={tci}/{mask},dl_dst={mac} actions=load:0->NXM_OF_VLAN_TCI[],load:0xa->NXM_NX_TUN_ID[],output:{port}"的 流表都是通過學習動態添加的流表規則 ; 不符合該格式的流表是br-tun/table-20創建之初添加的初始流表,這是需要注意的地方.

參考:
http://www.tuicool.com/articles/am6n2iB
http://www.cnblogs.com/CasonChan/p/4754486.html
http://www.cnblogs.com/popsuper1982/p/3810271.html
http://blog.csdn.net/gaopeiliang/article/details/45720785
http://m.blog.csdn.net/blog/canxinghen/46761591

table=20,priority=1,vlan_tci=0x0001/0x0fff,dl_dst=fa:16:3e:c3:23:47 
actions=load:0->NXM_OF_VLAN_TCI[],load:0xa->NXM_NX_TUN_ID[],output:2

table=20,priority=1,vlan_tci=0x0002/0x0fff,dl_dst=fa:16:3e:11:3f:0f 
actions=load:0->NXM_OF_VLAN_TCI[],load:0xb->NXM_NX_TUN_ID[],output:2

匹配 table=20,priority=1,vlan id=2 且訪問私有網絡網關(虛擬路由 qrouter-e0014375-0cb7-44b1-84cb-f7f49dd59344下內網網關 qr-f7f87f9f-54 mac fa:16:3e:11:3f:0f )的流量.

`load` 是什么處理?  load:src[start:end]->dst[start:end] 或 load:value-> dst[start:end]
 作用就是將 load后的第一個參數(->前) 或 參數按(start1:end1)位取出的部分 加載入 第二個參數的start2:end2 (賦值操作);
下面說兩個 Ethernet 幀中的 特殊域:
NXM_OF_VLAN_TCI:VLAN幀的tci域,2字節,見下文;此處 load:0->NXM_OF_VLAN_TCI[] 表示清空(priority,cfi,vlan-id),即strip_vlan;
NXM_NX_TUN_ID: Ethernet網幀的tunnel-id域; 此處 load:0xb->NXM_NX_TUN_ID[] 表示設置 tunnel id 為0xb ,跟后文set_tunnel:0xb 一樣,個人猜想應該是ovs版本歷史變更問題導致的兩種形式并存;


此處開篇幅細說 vlan_tci:
首先什么是vlan tci ? (引自 http://blog.csdn.net/kulung/article/details/6442804)
VLAN-TAG 包含2字節的 TPID(標簽協議標識) 以及 2字節的 TCI(標簽控制信息)
TPID 標識 IEEE 類型,常見的格式是: 802.1Q, 802.{N}{A..Z};
TCI 信息又包含 子域 信息:
 priority :  3bit ,表示0-7 優先級;
 cfi,即 Canonical Format Indicator 占1bit ,0表示規范,1表示不規范;
 vlan id: 占12bit 表示 0~4095,這就是 vlan 最多 4096個的原因 ;

回頭看此處 vlan_tci 表示的是 {tci}/{mask} 格式,那這是什么意思呢? ovs-ofctl man 手冊解釋說: tci與mask 位數
相同(16bit)且 mask的每bit 控制 流表 匹配tci對應bit時使用的的匹配機制:精準匹配或模糊匹配(wildcast,等于*)
那么此處  0x0002/0x0fff 表示精確匹配vlan id=2(0x0fff : 后12位 fff),不限制格式(0x0fff: 中間的一位是0表示不限格式, 0x0fff高3位全0,表示0-7優先級的幀皆可匹配) 的 vlan幀 ;

繼續 :

table=20,priority=0 actions=resubmit(,21)

為table 20設置默認流表規則: 重新提交到 table 21處理

table=21,dl_vlan=1 actions=strip_vlan,set_tunnel:0xa,output:2

如果是從 br-int 送入 br-tun的流量 , vlan tag=1 那么去vlan-tag 且設置tunnel_id 0xa 輸出到 ofport=2的端

口(即隧道端口 )

table=21,dl_vlan=2 actions=strip_vlan,set_tunnel:0xb,output:2

如果是從 br-int 送入 br-tun的流量 , vlan tag=2 那么去vlan-tag 且設置tunnel_id 0xb 輸出到 ofport=2的端

口(即隧道端口)

table=21,priority=0 actions=drop

為table 21設置默認流表規則:DROP

br-tun流表至此算是講解完了, 那么br-tun 的流表規則表達的是一套怎樣的數據處理系統呢? 可以參考下圖:

Openstack中計算節點鏈路是什么

那么此處再講解 計算節點與網絡節點之間vxlan隧道的建立:

[root@compute neutron]# ovs-vsctl -- --if-exists del-port vxlan-0aa0006b -- add-port \
                        br-tun vxlan-0aa0006b -- set Interface vxlan-0aa0006b type=vxlan \ 
                        options:remote_ip=10.160.0.107 options:in_key=flow  \ 
                        options:out_key=flow    options:local_ip=10.160.0.106
[root@network neutron]# ovs-vsctl -- --if-exists del-port vxlan-0aa0006a -- add-port \
                        br-tun vxlan-0aa0006a -- set Interface vxlan-0aa0006a type=vxlan \
                        options:remote_ip=10.160.0.106 options:in_key=flow  \
                        options:out_key=flow    options:local_ip=

其中: compute/10.160.0.106 network/10.160.0.107 皆為相關節點的管理ip.

以上是“Openstack中計算節點鏈路是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

磴口县| 宁蒗| 奇台县| 汾西县| 卫辉市| 漳浦县| 罗江县| 扎赉特旗| 通化县| 佛坪县| 获嘉县| 吴忠市| 五指山市| 琼中| 江口县| 武强县| 韶关市| 宜城市| 江川县| 民乐县| 杭州市| 荣成市| 铅山县| 兴仁县| 田阳县| 夹江县| 大渡口区| 山阳县| 翼城县| 米泉市| 新营市| 财经| 汉源县| 静安区| 科技| 荆州市| 沭阳县| 留坝县| 兰考县| 贵南县| 漳州市|