溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ovs-vsctl emer-reset命令需要慎用的原因是什么

發(fā)布時(shí)間:2021-12-30 11:37:56 來(lái)源:億速云 閱讀:163 作者:柒染 欄目:云計(jì)算

ovs-vsctl emer-reset命令需要慎用的原因是什么,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

在重置OVS時(shí),會(huì)用到以下命令
1、ovs-vsctl emer-reset
2、ovs-vsctl init
3、rm -rf /etc/openvswitch/*
但這個(gè)ovs-vsctl emer-reset命令會(huì)觸發(fā)一個(gè)BUG,導(dǎo)致無(wú)法恢復(fù)流表信息,甚至引起網(wǎng)絡(luò)回環(huán)。
這個(gè)BUG在ocata版本中出現(xiàn),到現(xiàn)在的queens版本也還有,但在之前的mitaka版本卻沒(méi)有。
下面來(lái)看下示例

在ocata版本中
[root@test01 neutron]# ovs-ofctl dump-flows br-tun
NXST_FLOW reply (xid=0x4):
cookie=0x9aec1bf161d6039e, duration=59133.523s, table=0, n_packets=3, n_bytes=416, idle_age=37761, priority=1,in_port=1 actions=resubmit(,2)
cookie=0x9aec1bf161d6039e, duration=59125.488s, table=0, n_packets=2, n_bytes=433, idle_age=37761, priority=1,in_port=2 actions=resubmit(,4)
cookie=0x9aec1bf161d6039e, duration=59125.463s, table=0, n_packets=0, n_bytes=0, idle_age=59125, priority=1,in_port=3 actions=resubmit(,4)
cookie=0x9aec1bf161d6039e, duration=59133.521s, table=0, n_packets=0, n_bytes=0, idle_age=59133, priority=0 actions=drop
cookie=0x9aec1bf161d6039e, duration=59133.518s, table=2, n_packets=1, n_bytes=42, idle_age=37766, priority=1,arp,dl_dst=ff:ff:ff:ff:ff:ff actions=resubmit(,21)
cookie=0x9aec1bf161d6039e, duration=59133.515s, table=2, n_packets=2, n_bytes=374, idle_age=37761, priority=0,dl_dst=00:00:00:00:00:00/01:00:00:00:00:00 actions=resubmit(,20)
然后執(zhí)行ovs-vsctl emer-reset 命令
再看流表,發(fā)現(xiàn)已清空
[root@test01 neutron]# ovs-ofctl dump-flows br-tun
cookie=0x0, duration=9.061s, table=0, n_packets=0, n_bytes=0, idle_age=9, priority=0 actions=NORMAL
查看 openvswitch-agent.log,則認(rèn)為OVS is Dead,但是OVS還是正常運(yùn)行的
這個(gè)會(huì)引發(fā)網(wǎng)絡(luò)故障甚至在復(fù)雜網(wǎng)絡(luò)環(huán)境中影響到物理交換機(jī)所透?jìng)鞯牟糠稚a(chǎn)與測(cè)試VLAN相關(guān)業(yè)務(wù),造成事故。

解決:重啟 neutron-openvswitch-agent 后,流表恢復(fù)正常。(但不一定)

再看M版

在計(jì)算節(jié)點(diǎn)查看 br-tun 的流表

root@test1:~# ovs-ofctl dump-flows br-tun
NXST_FLOW reply (xid=0x4):
cookie=0x8452729fc5c996cb, duration=16.012s, table=0, n_packets=0, n_bytes=0, idle_age=16, priority=1,in_port=1 actions=resubmit(,2)
cookie=0x8452729fc5c996cb, duration=12.923s, table=0, n_packets=0, n_bytes=0, idle_age=12, priority=1,in_port=4 actions=resubmit(,4)
cookie=0x8452729fc5c996cb, duration=12.230s, table=0, n_packets=0, n_bytes=0, idle_age=12, priority=1,in_port=3 actions=resubmit(,4)
cookie=0x8452729fc5c996cb, duration=16.012s, table=0, n_packets=0, n_bytes=0, idle_age=16, priority=0 actions=drop
......

執(zhí)行 ovs-vsctl emer-reset

再查看流表,又恢復(fù)了

查看 openvswitch-agent.log,openvswitch-agent 認(rèn)為 OVS is restarted. OVSNeutronAgent will reset bridges

同樣的操作,在M版能自動(dòng)恢復(fù)流表,而在O版卻報(bào)錯(cuò),應(yīng)該算是neutron-openvswitch-agent的一個(gè)bug,這是一個(gè)需要慎用的命令。

補(bǔ)充:openvSwitch工作原理
  openvSwitch是一個(gè)高質(zhì)量的、多層虛擬交換機(jī),使用開(kāi)源Apache2.0許可協(xié)議,由 Nicira Networks開(kāi)發(fā),主要實(shí)現(xiàn)代碼為可移植的C代碼。它的目的是讓大規(guī)模網(wǎng)絡(luò)自動(dòng)化可以通過(guò)編程擴(kuò)展,同時(shí)仍然支持標(biāo)準(zhǔn)的管理接口和協(xié)議(例如NetFlow, sFlow, SPAN, RSPAN, CLI, LACP, 802.1ag)。此外,它被設(shè)計(jì)位支持跨越多個(gè)物理服務(wù)器的分布式環(huán)境,類似于VMware的vNetwork分布式vswitch或Cisco Nexus 1000 V。Open vSwitch支持多種linux 虛擬化技術(shù),包括Xen/XenServer, KVM和VirtualBox。
  openvswitch是一個(gè)虛擬交換軟件,主要用于虛擬機(jī)VM環(huán)境,作為一個(gè)虛擬交換機(jī),支持Xen/XenServer,KVM以及virtualBox多種虛擬化技術(shù)。在這種虛擬化的環(huán)境中,一個(gè)虛擬交換機(jī)主要有兩個(gè)作用:傳遞虛擬機(jī)之間的流量,以及實(shí)現(xiàn)虛擬機(jī)和外界網(wǎng)絡(luò)的通信。
  內(nèi)核模塊實(shí)現(xiàn)了多個(gè)“數(shù)據(jù)路徑”(類似于網(wǎng)橋),每個(gè)都可以有多個(gè)“vports”(類似于橋內(nèi)的端口)。每個(gè)數(shù)據(jù)路徑也通過(guò)關(guān)聯(lián)一下流表(flow table)來(lái)設(shè)置操作,而這些流表中的流都是用戶空間在報(bào)文頭和元數(shù)據(jù)的基礎(chǔ)上映射的關(guān)鍵信息,一般的操作都是將數(shù)據(jù)包轉(zhuǎn)發(fā)到另一個(gè)vport。當(dāng)一個(gè)數(shù)據(jù)包到達(dá)一個(gè)vport,內(nèi)核模塊所做的處理是提取其流的關(guān)鍵信息并在流表中查找這些關(guān)鍵信息。當(dāng)有一個(gè)匹配的流時(shí)它執(zhí)行對(duì)應(yīng)的操作。如果沒(méi)有匹配,它會(huì)將數(shù)據(jù)包送到用戶空間的處理隊(duì)列中(作為處理的一部分,用戶空間可能會(huì)設(shè)置一個(gè)流用于以后碰到相同類型的數(shù)據(jù)包可以在內(nèi)核中執(zhí)行操作)。

備注:
新建一個(gè)橋(交換機(jī)),命名為s1:
ovs-vsctl add-br s1
注意:在進(jìn)行OVS設(shè)置時(shí)很容易造成虛擬交換機(jī)與物理交換機(jī)構(gòu)成二層環(huán)路(比如虛擬交換機(jī)包含兩塊網(wǎng)卡,而這兩塊網(wǎng)卡都連接到物理交換機(jī)上,就是一個(gè)環(huán)路),一旦有廣播報(bào)文,比如ARP請(qǐng)求,就會(huì)引發(fā)廣播風(fēng)暴,使網(wǎng)絡(luò)癱瘓。因此,應(yīng)該把虛擬交換機(jī)開(kāi)啟STP支持,避免廣播風(fēng)暴:
ovs?vsctl set bridge 交換機(jī)名 stp_enable=true

附常用OVS操作
1.添加網(wǎng)橋:ovs-vsctl add-br 交換機(jī)名
2.刪除網(wǎng)橋:ovs-vsctl del-br 交換機(jī)名
3.添加端口:ovs-vsctl add-port 交換機(jī)名 端口名(網(wǎng)卡名)
4.刪除端口:ovs-vsctl del-port 交換機(jī)名 端口名(網(wǎng)卡名)
5.連接控制器:ovs-vsctl set-controller 交換機(jī)名 tcp:IP地址:端口號(hào)
6.斷開(kāi)控制器:ovs-vsctl del-controller 交換機(jī)名
7.列出所有網(wǎng)橋:ovs-vsctl list-br
8.列出網(wǎng)橋中的所有端口:ovs-vsctl list-ports 交換機(jī)名
9.列出所有掛接到網(wǎng)卡的網(wǎng)橋:ovs-vsctl port-to-br 端口名(網(wǎng)卡名)
10.查看open vswitch的網(wǎng)絡(luò)狀態(tài):ovs-vsctl show
11.查看 Open vSwitch 中的端口信息(交換機(jī)對(duì)應(yīng)的 dpid,以及每個(gè)端口的 OpenFlow 端口編號(hào),端口名稱,當(dāng)前狀態(tài)等等):ovs-ofctl show 交換機(jī)名
12.修改dpid:ovs-vsctl set bridge 交換機(jī)名 other_config:datapath-id=新DPID
13.修改端口號(hào):ovs-vsctl set Interface 端口名 ofport_request=新端口號(hào)
14.查看交換機(jī)中的所有 Table:ovs-ofctl dump-tables ovs-switch
15.查看交換機(jī)中的所有流表項(xiàng):ovs?ofctl dump?flows ovs-switch
16.刪除編號(hào)為 100 的端口上的所有流表項(xiàng):ovs-ofctl del-flows ovs-switch “in_port=100”
17.添加流表項(xiàng)(以“添加新的 OpenFlow 條目,修改從端口 p0 收到的數(shù)據(jù)包的源地址為 9.181.137.1”為例):
ovs-ofctl add-flow ovs-switch “priority=1 idle_timeout=0,in_port=100,actions=mod_nw_src:9.181.137.1,normal”
18.查看 OVS 的版本信息:ovs-appctl –version
19.查看 OVS 支持的 OpenFlow 協(xié)議的版本:ovs-ofctl –version

關(guān)于ovs-vsctl emer-reset命令需要慎用的原因是什么問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI