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的转发

相关文章
相关标签/搜索