openVirtex tutorial總結(jié)和理解

第一步 生成實驗拓撲

實驗網(wǎng)絡拓撲
#!/usr/bin/python
from mininet.net import Mininet
from mininet.topo import Topo
from mininet.log import lg, setLogLevel
from mininet.cli import CLI
from mininet.node import RemoteController

CORES = {
  'SEA': {'dpid': '000000000000010%s'},
  'SFO': {'dpid': '000000000000020%s'},
  'LAX': {'dpid': '000000000000030%s'},
  'ATL': {'dpid': '000000000000040%s'},
  'IAD': {'dpid': '000000000000050%s'},
  'EWR': {'dpid': '000000000000060%s'},
  'SLC': {'dpid': '000000000000070%s'},
  'MCI': {'dpid': '000000000000080%s'},
  'ORD': {'dpid': '000000000000090%s'},
  'CLE': {'dpid': '0000000000000a0%s'},
  'IAH': {'dpid': '0000000000000b0%s'},
  }
FANOUT = 4

class I2Topo(Topo):

  def __init__(self, enable_all = True):
    "Create Internet2 topology."

    # Add default members to class.
    super(I2Topo, self).__init__()

    # Add core switches
    self.cores = {}
    for switch in CORES:
      self.cores[switch] = self.addSwitch(switch, dpid=(CORES[switch]['dpid'] % '0'))

    # Add hosts and connect them to their core switch
    for switch in CORES:
      for count in xrange(1, FANOUT + 1):
        # Add hosts
        host = 'h_%s_%s' % (switch, count)
        ip = '10.0.0.%s' % count 
        mac = CORES[switch]['dpid'][4:] % count
        h = self.addHost(host, ip=ip, mac=mac)
        # Connect hosts to core switches
        self.addLink(h, self.cores[switch])

    # Connect core switches
    self.addLink(self.cores['SFO'], self.cores['SEA'])
    self.addLink(self.cores['SEA'], self.cores['SLC'])
    self.addLink(self.cores['SFO'], self.cores['LAX'])
    self.addLink(self.cores['LAX'], self.cores['SLC'])
    self.addLink(self.cores['LAX'], self.cores['IAH'])
    self.addLink(self.cores['SLC'], self.cores['MCI'])
    self.addLink(self.cores['MCI'], self.cores['IAH'])
    self.addLink(self.cores['MCI'], self.cores['ORD'])
    self.addLink(self.cores['IAH'], self.cores['ATL'])
    self.addLink(self.cores['ORD'], self.cores['ATL'])
    self.addLink(self.cores['ORD'], self.cores['CLE'])
    self.addLink(self.cores['ATL'], self.cores['IAD'])
    self.addLink(self.cores['CLE'], self.cores['IAD'])
    self.addLink(self.cores['CLE'], self.cores['EWR'])
    self.addLink(self.cores['EWR'], self.cores['IAD'])

if __name__ == '__main__':
   topo = I2Topo()
   ip = '127.0.0.1'
   port = 6633
   c = RemoteController('c', ip=ip, port=port)
   net = Mininet(topo=topo, autoSetMacs=True, xterms=False, controller=None)
   net.addController(c)
   net.start()
   print "Hosts configured with IPs, switches pointing to OpenVirteX at %s:%s" % (ip, port)
   CLI(net)
   net.stop()

上述代碼為網(wǎng)絡拓撲生成,每個交換機的名字和DPID對應在CORES列表中,%s此時對應為0。并且每個交換機的連接了4個主機,每個主機MAC地址編號取對應交換機DPID后6字節(jié),最后一字節(jié)以主機順序號代替,如SFO交換機連接的第三個主機MAC地址為00:00:00:00:02:03。IP地址都是從10.0.0.1到10.0.0.4。

第二步 運行OVX

在第一步mininet中生成網(wǎng)絡拓撲后,會有提示沒有連接到控制器,運行

$ cd OpenVirteX/scripts
$ sh ovx.sh

則啟動了OVX,并自動連接上mininet

第三步 確定租戶網(wǎng)絡

在配置網(wǎng)絡之前,需要先確定自己要定義的OVX虛擬租戶網(wǎng)絡拓撲結(jié)構(gòu)。

目標租戶網(wǎng)絡

要配置這樣一個租戶網(wǎng)絡,SEA的主機1和LAX的主機2通過SFO互通
可以驗證,在mininet中ping兩個主機會失敗,因為OVX不知道他們的數(shù)據(jù)屬于哪一個網(wǎng)絡,簡單丟棄數(shù)據(jù)包。

第四步 網(wǎng)絡配置

確定好目標,就要一步步配置網(wǎng)絡,使用命令行工具 ovxctl,可以通過JOSN API 對OVX進行配置。先對該工具簡單了解

 $ python ovxctl.py ‐‐help ```

Options:
-h HOST, --hostname=HOST
Specify the OpenVirteX host; default='localhost'
-p PORT, --port=PORT
Specify the OpenVirteX web port; default=8080
-u OVX_USER, --user=OVX_USER
OpenVirtex admin user; default='admin'
-n, --no-passwd Run ovxctl with no password; default false
-v, --version
--help
Available commands are:
addControllers Adds controllers to a virtual switch
connectHost Connect host to a virtual port
connectLink Connect two virtual ports through a virtual link
connectRoute Connect two virtual ports inside a virtual big-switch
createNetwork Creates a virtual network
createPort Create virtual port
createSwitch Create virtual switch
disconnectHost Disconnect host from a virtual port
disconnectLink Disconnect link between two virtual ports
disconnectRoute Disconnect big-switch internal route between two virtual ports
getPhysicalFlowtable Get the physical flowtable of a specified switch or all switches
getPhysicalHosts Get a list of physical hosts
getPhysicalTopology Get the physical topology
getVirtualAddressMapping Get the virtual to physical address mapping for a specified virtual network
getVirtualFlowtable Get the flowtable in the specified virtual network
getVirtualHosts Get list of hosts in virtual network
getVirtualLinkMapping Get the virtual to physical link mapping
getVirtualSwitchMapping Get the virtual to physical switch mapping
getVirtualTopology Get the virtual topology
listVirtualNetworks Get a list of all virtual network tenant ID's
removeNetwork Remove a virtual network
removePort Remove virtual port
removeSwitch Remove virtual switch
setInternalRouting Set big-switch internal routing mechanism
setLinkPath Set the physical path of a virtual link
startNetwork Start a virtual network
startPort Start a virtual port
startSwitch Start a virtual switch
stopNetwork Stop a virtual network
stopPort Shutdown a virtual port
stopSwitch Shutdown a virtual switch

##### 1、創(chuàng)建網(wǎng)絡
``` $ python ovxctl.py ‐n createNetwork tcp:localhost:10000 10.0.0.0 16 ```
表示指定控制器地址為 127.0.0.1,即在該VM上運行,通信端口號為10000,該網(wǎng)絡地址范圍 10.0.0.0/16。該命令會返回一個tanant ID,若為初次建立則為1。

##### 2、創(chuàng)建虛擬交換機

$ python ovxctl.py ‐n createSwitch 1 00:00:00:00:00:00:01:00
$ python ovxctl.py ‐n createSwitch 1 00:00:00:00:00:00:02:00
$ python ovxctl.py ‐n createSwitch 1 00:00:00:00:00:00:03:00

1代表租戶網(wǎng)絡,后面代表對應物理交換機的MAC,此處的OVXSwitch與物理網(wǎng)絡一一對應,還可以一對多,形成OVXBigSwitcg,在后面會有介紹。每創(chuàng)建一個OVXSwitch,會返回一個DPID,具體描述
>For the curious, the structure of the virtual DPID is as follows: first byte is 0x00, the 24-bit ON.Lab OUI (Organizationally Unique Identifier) of a4:23:05, and the final 4 bytes represent a counter (starting at 1) for the number of virtual switches per tenant. For instance, the second virtual switch we create in this virtual network has DPID 00:a4:23:05:00:00:00:02. As before, you should also inspect the OVX log to ensure the virtual switch has been created. 

##### 3、創(chuàng)建虛擬端口

$ python ovxctl.py ‐n createPort 1 00:00:00:00:00:00:01:00 1
$ python ovxctl.py ‐n createPort 1 00:00:00:00:00:00:01:00 5
$ python ovxctl.py ‐n createPort 1 00:00:00:00:00:00:02:00 5
$ python ovxctl.py ‐n createPort 1 00:00:00:00:00:00:02:00 6
$ python ovxctl.py ‐n createPort 1 00:00:00:00:00:00:03:00 5
$ python ovxctl.py ‐n createPort 1 00:00:00:00:00:00:03:00 2

創(chuàng)建虛擬端口要指定tenant ID,物理交換機DPID和物理端口號,在這些信息下虛擬出一個端口,該命令會返回一個端口號,編號從1開始。
根據(jù)一開始的目標租戶網(wǎng)絡,可以輕松確定需要的端口號。
##### 4、創(chuàng)建虛擬鏈路

$ python ovxctl.py ‐n connectLink 1 00:a4:23:05:00:00:00:01 2 00:a4:23:05:00:00:00:02 1 spf 1
$ python ovxctl.py ‐n connectLink 1 00:a4:23:05:00:00:00:02 2 00:a4:23:05:00:00:00:03 1 spf 1

虛擬鏈路完全是在虛擬交換機上配置,所以需要的是兩端的交換機DPID號(第二步中返回信息)和端口號(第三步中返回)信息。因為該條虛擬鏈路可能跨越多條物理鏈路,可以指定路由方式,需要兩個參數(shù),一是首選,一個是備選,OVX目前支持spf(最短路徑),1(手動,通過調(diào)用setLinkPath)
##### 5、連接主機

$ python ovxctl.py ‐n connectHost 1 00:a4:23:05:00:00:00:01 1 00:00:00:00:01:01
$ python ovxctl.py ‐n connectHost 1 00:a4:23:05:00:00:00:03 2 00:00:00:00:03:02

將兩個主機加入了該租戶網(wǎng)絡,需要指定虛擬交換機DPID,虛擬端口號和主機MAC地址。該命令返回主機ID。
##### 6、 take off
``` $ python ovxctl.py ‐n startNetwork 1 ```
該步完成兩項工作,將虛擬交換機連接到控制器,創(chuàng)建網(wǎng)絡時指定了控制器的地址和端口號,這里端口號可以自己指定而不用像6633或6653固定(疑惑),可能與Flooding控制器實現(xiàn)有關;二是握手階段的一些配置,類似于OpenFlow的setconfig,設置缺省數(shù)據(jù)發(fā)送長度。
當然注意的是,OVX相當于底層物理網(wǎng)絡的controller,mininet中的127.0.0.1:6633是指向OVX的,而OVX配置第一部中的127.0.0.1:10000是指向Flooding,也可是其他控制器。
##### 7、 驗證分析
查看流表項 
``` mininet> dpctl dump‐flows ```
該命令要在執(zhí)行了 minimet>h_SEA_1 ping -c3 h_LAX_2 后才能查看,且要注意流表項超時時間較短。
> LAX ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
cookie=0x100000002, duration=4.529s, table=0, n_packets=2, n_bytes=196, idle_timeout=5, idle_age=2, priority=0,in_port=5,vlan_tci=0x0000,dl_src=a4:23:05:01:00:00,dl_dst=a4:23:05:20:00:02 actions=mod_nw_src:10.0.0.1,mod_nw_dst:10.0.0.2,mod_dl_src:00:00:00:00:01:01,mod_dl_dst:00:00:00:00:03:02,output:2
cookie=0x100000003, duration=4.496s, table=0, n_packets=2, n_bytes=196, idle_timeout=5, idle_age=2, priority=0,in_port=2,vlan_tci=0x0000,dl_src=00:00:00:00:03:02,dl_dst=00:00:00:00:01:01 actions=mod_nw_dst:1.0.0.3,mod_nw_src:1.0.0.8,mod_dl_src:a4:23:05:01:00:00,mod_dl_dst:a4:23:05:20:00:04,output:5
SEA ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
cookie=0x100000003, duration=4.544s, table=0, n_packets=2, n_bytes=196, idle_timeout=5, idle_age=2, priority=0,in_port=5,vlan_tci=0x0000,dl_src=a4:23:05:01:00:00,dl_dst=a4:23:05:10:00:04 actions=mod_nw_src:10.0.0.2,mod_nw_dst:10.0.0.1,mod_dl_src:00:00:00:00:03:02,mod_dl_dst:00:00:00:00:01:01,output:1
cookie=0x100000002, duration=4.569s, table=0, n_packets=2, n_bytes=196, idle_timeout=5, idle_age=2, priority=0,in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:01:01,dl_dst=00:00:00:00:03:02 actions=mod_nw_dst:1.0.0.8,mod_nw_src:1.0.0.3,mod_dl_src:a4:23:05:01:00:00,mod_dl_dst:a4:23:05:10:00:02,output:5
*** SFO ------------------------------------------------------------------------
NXST_FLOW reply (xid=0x4):
cookie=0x100000002, duration=4.573s, table=0, n_packets=2, n_bytes=196, idle_timeout=5, idle_age=2, priority=0,in_port=5,vlan_tci=0x0000,dl_src=a4:23:05:01:00:00,dl_dst=a4:23:05:10:00:02 actions=mod_dl_src:a4:23:05:01:00:00,mod_dl_dst:a4:23:05:20:00:02,output:6
cookie=0x100000003, duration=4.541s, table=0, n_packets=2, n_bytes=196, idle_timeout=5, idle_age=2, priority=0,in_port=6,vlan_tci=0x0000,dl_src=a4:23:05:01:00:00,dl_dst=a4:23:05:20:00:04 actions=mod_dl_src:a4:23:05:01:00:00,mod_dl_dst:a4:23:05:10:00:04,output:5

上面為對應的三個交換機上的流表項,每個交換機包含兩個流表項,對SEA,第二條流表,從主機1到主機2,控制器檢查原地址發(fā)現(xiàn)是tenant 1中的主機,發(fā)送packetIn給控制器,控制器根據(jù)虛擬網(wǎng)策略,下發(fā)流表,流表匹配in_port=1,vlan_tci=0x0000,dl_src=00:00:00:00:01:01,dl_dst=00:00:00:00:03:02 ,對應的動作為mod_nw_dst:1.0.0.8,mod_nw_src:1.0.0.3,mod_dl_src:a4:23:05:01:00:00,mod_dl_dst:a4:23:05:10:00:02,output:5,即將IP和MAC地址重寫,從端口5交給SFO;對SFO,同樣控制器下發(fā)流表指導數(shù)據(jù)轉(zhuǎn)發(fā),當匹配上即SEA重寫后的MAC時(in_port=5,vlan_tci=0x0000,dl_src=a4:23:05:01:00:00,dl_dst=a4:23:05:10:00:02 ),對應動作為mod_dl_src:a4:23:05:01:00:00,mod_dl_dst:a4:23:05:20:00:02,output:6,源和目的MAC不變,從端口6轉(zhuǎn)發(fā),可以看出,core OVXSwitch只對數(shù)據(jù)包進行轉(zhuǎn)發(fā)。對LAX,和SEA一樣為邊緣路由器,負責完成OVX到Physical的映射,匹配上dl_src=a4:23:05:01:00:00,dl_dst=a4:23:05:20:00:02 ,對應動作為actions=mod_nw_src:10.0.0.1,mod_nw_dst:10.0.0.2,mod_dl_src:00:00:00:00:01:01,mod_dl_dst:00:00:00:00:03:02,output:2,即將虛擬的IP、MAC地址轉(zhuǎn)換為實際物理地址。
轉(zhuǎn)換的意義何在:1、該部分還需要系統(tǒng)整理,結(jié)合flowVisor、VLAN等優(yōu)缺點,結(jié)合paper闡述。希望在下一個文檔呈現(xiàn)。

注意:由于操作不熟練,強調(diào)一下,為了避免虛擬網(wǎng)絡之間的影響,某個租戶網(wǎng)絡不使用時需要removeNetwork清除掉,當然,mininet退出后使用 mn -c清除數(shù)據(jù)。

###進一步實驗
######1)多租戶網(wǎng)絡

$ python ovxctl.py ‐n createNetwork tcp:localhost:20000 10.0.0.0 16
$ python ovxctl.py ‐n createSwitch 2 00:00:00:00:00:00:01:00
$ python ovxctl.py ‐n createSwitch 2 00:00:00:00:00:00:02:00
$ python ovxctl.py ‐n createSwitch 2 00:00:00:00:00:00:03:00
$ python ovxctl.py ‐n createPort 2 00:00:00:00:00:00:01:00 3
$ python ovxctl.py ‐n createPort 2 00:00:00:00:00:00:01:00 5
$ python ovxctl.py ‐n createPort 2 00:00:00:00:00:00:02:00 5
$ python ovxctl.py ‐n createPort 2 00:00:00:00:00:00:02:00 6
$ python ovxctl.py ‐n createPort 2 00:00:00:00:00:00:03:00 5
$ python ovxctl.py ‐n createPort 2 00:00:00:00:00:00:03:00 4
$ python ovxctl.py ‐n connectLink 2 00:a4:23:05:00:00:00:01 2 00:a4:23:05:00:00:00:02 1 spf 1
$ python ovxctl.py ‐n connectLink 2 00:a4:23:05:00:00:00:02 2 00:a4:23:05:00:00:00:03 1 spf 1
$ python ovxctl.py ‐n connectHost 2 00:a4:23:05:00:00:00:01 1 00:00:00:00:01:03
$ python ovxctl.py ‐n connectHost 2 00:a4:23:05:00:00:00:03 2 00:00:00:00:03:04
$ python ovxctl.py ‐n startNetwork 2

按部就班,創(chuàng)建了tenant ID=2的租戶網(wǎng)絡,該網(wǎng)絡也是在上面實驗的基礎上,只不過使用了不同的虛擬網(wǎng)絡,可以實現(xiàn)隔離。
######2)自定義拓撲
OVX特色之一就是可以自定義拓撲,不用限制于底層網(wǎng)絡,而實現(xiàn)該技術一是OVX模擬了LLDP過程,二就是OVXBigSwitch的實現(xiàn)。OVXBigSwitch是OVXSwitch的一個基類,與物理交換機之間是一對多關系,是底層交換機在租戶網(wǎng)絡的一個集合,對租戶而言只顯示為一個虛擬交換機和虛擬端口,而該OVXBigSwitch兩個虛擬端口之間的路徑叫做SwitchRoute,實際對應底層若干條鏈路。

python ovxctl.py ‐createSwitch 3 00:00:00:00:00:00:05:00,00:00:00:00:00:00:06:00,00:00:00:00:00:00:0A:python ovxctl.py -n createNetwork tcp:localhost:30000 10.0.0.0 16
python ovxctl.py -n createSwitch 3 00:00:00:00:00:00:05:00,00:00:00:00:00:00:06:00,00:00:00:00:00:00:0A:00
python ovxctl.py -n createPort 3 00:00:00:00:00:00:05:00 1
python ovxctl.py -n createPort 3 00:00:00:00:00:00:06:00 2
python ovxctl.py -n createPort 3 00:00:00:00:00:00:0A:00 3
python ovxctl.py -n connectHost 3 00:a4:23:05:00:00:00:01 1 00:00:00:00:05:01
python ovxctl.py -n connectHost 3 00:a4:23:05:00:00:00:01 2 00:00:00:00:06:02
python ovxctl.py -n connectHost 3 00:a4:23:05:00:00:00:01 3 00:00:00:00:0A:03
python ovxctl.py -n createSwitch 3 00:00:00:00:00:00:08:00
python ovxctl.py -n createPort 3 00:00:00:00:00:00:05:00 5
python ovxctl.py -n createPort 3 00:00:00:00:00:00:08:00 6
python ovxctl.py -n connectLink 3 00:a4:23:05:00:00:00:01 4 00:a4:23:05:00:00:00:02 1 spf 1
python ovxctl.py -n createPort 3 00:00:00:00:00:00:08:00 4
python ovxctl.py -n connectHost 3 00:a4:23:05:00:00:00:02 2 00:00:00:00:08:04
python ovxctl.py -n startNetwork 3

該拓撲實現(xiàn)了將 交換機CLE、EWR、IAD虛擬為一個OVXBigSwitch,對應每個物理交換機再虛擬出一個接口,各自連接上一個主機。另外將MCI虛擬化,創(chuàng)建虛擬端口,生成兩者之間的虛擬鏈路。主機h_IAD_1、h_EWR_2、h_CLE_3連接在一個OVXBigSwitch上,而h_MCI_4連接在一個OVXSingleSwitch上,在同一個租戶網(wǎng)絡中。
官網(wǎng)中提到OVXBigSwitch對應的物理交換機沒有數(shù)量限制,但是一個物理交換機不能對應多個虛擬交換機。
### 腳本配置網(wǎng)絡 (take off once again)
如果在命令行一行一行去配置整個網(wǎng)絡,當網(wǎng)絡規(guī)模較大時,工作量會比較大,OVX提供了一個工具embedder,當啟動后就會在8000端口等待JSON文件,并根據(jù)文件自動配置。
#####1)啟動embedder
```$ python utils/embedder.py ```
#####2 ) 腳本文件
"id": "1",
"jsonrpc": "2.0",
"method": "createNetwork",
"params": {
    "network": {
        "controller": {
            "ctrls": [
                "tcp:localhost:10000"
                      ],
            "type": "custom"
                       },
        "hosts": [
            {
                "dpid": "00:00:00:00:00:00:02:00",
                "mac": "00:00:00:00:02:01",
                "port": 1
            },
            {
                "dpid": "00:00:00:00:00:00:05:00",
                "mac": "00:00:00:00:05:02",
                "port": 2
            },
            {
                "dpid": "00:00:00:00:00:00:06:00",
                "mac": "00:00:00:00:06:03",
                "port": 3
            },
            {
                "dpid": "00:00:00:00:00:00:09:00",
                "mac": "00:00:00:00:09:04",
                "port": 4
            }
        ],
        "routing": {
            "algorithm": "spf",
            "backup_num": 1
        },
        "subnet": "192.168.0.0/24",
        "type": "bigswitch"
    }
}

}

上述腳本文件實現(xiàn)了將所有物理主機虛擬為一個交換機,并添加了四個主機。需要注意一些格式。
##### 3)運行腳本
``` $ curl localhost:8000 ‐X POST ‐d @bigswitch.json ```
測試時有一個問題,就是發(fā)現(xiàn)沒有添加進去的主機也能ping通,如下。

mininet> h_SFO_1 ping -c3 h_ORD_2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=41.8 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=1.63 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.135 ms

--- 10.0.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.135/14.531/41.825/19.309 ms
mininet> h_SFO_1 ping -c3 h_ATL_2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=45.4 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=1.41 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.060 ms

--- 10.0.0.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 0.060/15.636/45.439/21.081 ms

文檔中講到
>be able to ping between hosts h_SFO_1, h_IAD_2, h_EWR_3, and h_ORD_4.

但實際上可以做到網(wǎng)絡互通,如前面測試結(jié)果顯示,h_ATL_2并不在虛擬網(wǎng)絡中。
***{可能的原因:ping時其實ping的是主機IP地址,初始網(wǎng)絡時每個交換機下面的主機IP地址都是一樣的,從10.0.0.1到10.0.0.4,而現(xiàn)網(wǎng)絡有點特殊,一是所有的交換機都在同一個tenant 網(wǎng)絡中形成一個big switch,二是添加的四個主機地址全覆蓋。換句話說,像在本文前面網(wǎng)絡,只覆蓋了個別交換機,當不再同一個tenant ID中的交換機下的主機就算IP地址一樣也無法ping通,二是如果同一個tenant 網(wǎng)絡中,該主機地址沒有添加進網(wǎng)絡也無法ping通。回過頭去想,OVX限制一個物理交換機只能屬于一個虛擬網(wǎng)絡}***
上述理解有個本質(zhì)的錯誤,就是OVX中既然能實現(xiàn)地址空間不重疊就是因為邊緣交換機是根據(jù)MAC地址查找所屬的租戶網(wǎng)絡的,進一步還發(fā)現(xiàn)大部分是不能ping通,只有少數(shù)例外。待解答。下面這句話也待理解。
>The only restriction we impose
in OVX is that you cannot partition a single physical switch into multiple virtual switches.

#####補充:虛擬網(wǎng)絡直接拷貝物理網(wǎng)絡

{
"id": "1",
"jsonrpc": "2.0",
"method": "createNetwork",
"params": {
"network": {
"controller": {
"ctrls": [
"tcp:localhost:20000"
],
"type": "custom"
},
"copy-dpid": true,
"hosts": [
{
"dpid": "00:00:00:00:00:00:01:00",
"mac": "00:00:00:00:01:01",
"port": 1
},
{
"dpid": "00:00:00:00:00:00:04:00",
"mac": "00:00:00:00:04:02",
"port": 2
},
{
"dpid": "00:00:00:00:00:00:08:00",
"mac": "00:00:00:00:08:03",
"port": 3
},
{
"dpid": "00:00:00:00:00:00:0B:00",
"mac": "00:00:00:00:0B:04",
"port": 4
}
],
"routing": {
"algorithm": "spf",
"backup_num": 1
},
"subnet": "192.168.0.0/24",
"type": "physical"
}
}

會將物理網(wǎng)絡直接拷貝到虛擬網(wǎng)絡,并且DPID號相同,這種類型網(wǎng)絡的用處暫時還不知道,文檔中只是提到
>The option is especially useful as we already know the physical DPIDs and you’re not always sure of the order in which OVX will create the virtual switches.

文檔后面提到了當網(wǎng)絡在運行而需要對主機修改時,可以用disconnectHost命令,指定網(wǎng)絡號和主機號,該主機號為connectHost時返回的 host ID。

后記:花了很多時間去整理這篇文檔,在整理過程中也有了很多跟深入的理解,但還是有一些疑問,可能是自己網(wǎng)絡設置問題,后續(xù)找個時間驗證。也希望能相互交流。

*筆者 : 袁其杰 ,北京郵電大學IsWIT研究中心研究生,2016.9至今
QQ  441711184*
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,156評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,401評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,069評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,873評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,635評論 6 408
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,128評論 1 323
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,203評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,365評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,881評論 1 334
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,733評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,935評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,475評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,172評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,582評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,821評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,595評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,908評論 2 372

推薦閱讀更多精彩內(nèi)容