ovn-sb 摘要

一、Database Structurenode

  • Physical network table中包含了和chassis nodes有關的全部信息,包括用於overlay所需的IP地址,支持的tunnel類型以及security key。其中Chassis table和Encap table都是physical network tables
  • Logical network table包含logical switches,logical routers,ACLs,firewall rules以及全部用於描述packet如何流經logical network的logical datapath flow。logical network的數據可能很大,所以爲了提升擴展性,每一個chassis只保存它參與的logical network的有關的數據。
  • Logical-physical bindings 用於鏈接logical component和physical component。其中代表了logical component當前所在的chassis以及在tunnel encapsulation中表明的logical entities的value。
  • MAC_Binding table用於追蹤那些使用ARP和ND動態發現的IP address - Ethernet address bindings。一般虛擬機的IP-to-MAC是位於Port_Binding table中的,所以MAC_Binding中主要用於發現physical network中的bindings

 

二、SB_Global TABLE編程

其中的nb_cfg是配置的序號。當CMS或者ovn-nbctl更新northbound database時,它會更新其中的NB_Global table的nb_cfg列。接着當ovn-northd更新southbound database和northbound database同步時,它也會同步SB_Global中的nb_cfg網絡

 

三、Chassis TABLE併發

 這個表中的每一行都表明了物理網絡中的一個hypervisor或者gateway(a chassis)。每一個chassis都經過ovn-controller/ovn-controller-vtep來添加或者更新它本身對應的行,而且保留其餘行的拷貝用於確認如何到達其餘hypervisor。component

 

四、Encap TABLErouter

Chassis table中的encap column會引用這個table中的某行,用於標識OVN應該怎樣將logical dataplane packets傳輸到該chassis。遞歸

 

五、Logical_Flow TABLE生命週期

這個表中的每一行都表明了一個logical flow。ovn-northd用logical flow填充本表,用以實現OVN_Northbound中的L2和L3拓撲邏輯。每一個hypervisor再經過ovn-controller將logical flow轉換成OpenFlow flows並將其裝入Open vSwtich。ip

logical flow和OpenFlow flow很像,主要區別在於logical flow使用的是logical ports和logical datapaths,而不是physical ports和physical datapaths。logical flow和physical flow之間的轉換有助於確保logical datapaths間的隔離性。(同時logical flow這一抽象模型有助於減輕OVN中心組件的負擔,由於它們再也不須要爲每一個chassis單獨計算並安裝physical flow了)rem

若是沒有匹配的flow,默認的行爲是drop packet

 

Architectural Logical Lift Cycle of a Packet

下文的描述可能讓人產生都是OVN本身執行的這些操做,事實上OVN(利用ovn-controller)經過OpenFlow和OVSDB對Open vSwitch進行編程,讓它來代替執行的。

OVN首先將packet傳入logical datapath的logical ingress pipeline,接着它會將packet輸出到一個或多個logical port或者logical multicast groups中。對於每一個logical output port,OVN將packet傳輸給datapath中的logical egress pipeline,它可能會drop the packet或者將它送往目的地。在兩個pipeline之間,OVN可能會將packet封裝到tunnel中並傳輸到remote hypervisor。

更詳細的說,首先,OVN會對Logical_Flow table進行搜索,尋找一條正確的logical_datapath,它的pipeline爲ingress,table_id爲0,以及和該packet匹配。若是沒有找到,OVN會drop the packet。若是OVN找到了不少條,則選擇其中具備最高優先級的一條。接着OVN會以規定的順序執行該行對應的action。其中的next和output action比較特殊。

next action會讓上述的執行過程重複遞歸地執行,不一樣的是OVN會查詢table_id 1而不是0。當遞歸結束時,會接着執行next以後的action。

output action一樣會引入遞歸。它的具體做用取決於output field當前的value。假設ouput指向一個logical port。首先OVN會比較inport和outport,若是二者相等,默認output不作任何操做。通常來講,二者是不一樣的,packet會進入egress pipeline,而且丟棄reg0 ... reg9,這些寄存器信息和connection tracking state,從而不管egress pipeline是否在不一樣的hypervisor中都可以保持一致的行爲。

當執行egress pipeline時,OVN會再次對Logical_Flow進行搜索,找尋正確的logical_datapath,一樣table_id爲0,匹配該packet,不一樣的是,此時尋找的是egress類型的pipeline。若是沒要找到匹配的flow,那麼output不作任何操做。不然OVN執行matching flow中的action。

在egress pipeline中,next action和ingress pipeline中的相同,而output action則直接將packet傳輸到output port。

 

六、Port_Binding TABLE

該表中的每一行都綁定了一個logical port和它的具體實現。對於大多數的logical ports,這意味着和某個physical location綁定,例如綁定一個logical port到運行在某個hypervisor中的某個虛擬機的VIF。其餘的logical ports,例如logical patch port,沒有具體的physical location,可是它們的binding依然能夠在這個表中出現。

對於OVN_Northbound database中的每一個Logical_Switch_Port記錄,ovn-northd都會在這個表中建立一條記錄。而且ovn-northd填充而且維護除了chassis column中的每一列。

ovn-controller/ovn-controller-vtep會填充chassis column,當它經過監聽本地的Open_vSwitch database發現logical port就位於本身所在的hypervisor中。

 

七、MAC_Binding TABLE

該表中的每一行表明一個IP地址以及經過ARP(對於IPv4)或者ND(對於IPv6)發現的Ethernet address。這個表主要用於發現和physical network的綁定關係,由於虛擬機的IP-to-MAC一般是靜態綁定到Port_Binding table中的。

概況來講,logical router的MAC binding的生命週期以下所示:

  1. 在hypervisor 1中,一個logical router發現有一個packet須要發往IP地址爲A的router port。經過查找logical flow table以後,它發現A缺乏靜態的IP-to-MAC binding,而經過get_arp發現它缺乏動態的IP-to-MAC binding。
  2. 經過OVN logical arp action,logical router會建立併發送一個廣播ARP請求到router port而且丟棄IP packet
  3. 和router port相連的logical switch將ARP請求轉發到它的全部ports
  4. hypervisor2中和該logical switch相連的虛擬機若是擁有請求中的IP地址,它就會建立一個APR reply而且將其單播到發出請求的logical router port的Ethernet address
  5. logical switch將ARP reply轉發到logical router port
  6. logical router的flow table執行put_arp action。ovn-controller會在MAC_Binding table中增長一行用於記錄IP-to-MAC binding
  7. 在hypervisor1中,ovn-controller從OVN southbound database中獲取了更新過的MAC_Binding table。下一個經過logical router發往A的packet將直接送往bound Ethernet address

 

八、Datapath_Binding TABLE

這個表中的每一行表明了一個logical datapath,它實現了和它相關的Port_Binding中的ports之間的logical pipeline。事實上,給定的logical datapath中的pipeline實現的不是一個logical switch就是一個logical router。

這個表的主要目的是爲logical datapath提供physical binding。一個logical datapath沒有physical location,所以它的physical binding信息是有限的:只有tunnel_key。該表中的其餘數據並不影響packet的轉發

相關文章
相關標籤/搜索