On Thu, Feb 19, 2015 at 02:25:18PM -0800, Gurucharan Shetty wrote:
> On Thu, Feb 19, 2015 at 11:16 AM, Ben Pfaff <b...@nicira.com> wrote:
> > This commit adds preliminary design documentation for Open Virtual Network,
> > or OVN, a new OVS-based project to add support for virtual networking to
> > OVS, initially with OpenStack integration.
> >
> > This initial design has been influenced by many people, including (in
> > alphabetical order) Aaron Rosen, Chris Wright, Jeremy Stribling,
> > Justin Pettit, Ken Duda, Madhu Venugopal, Martin Casado, Pankaj Thakkar,
> > Russell Bryant, and Teemu Koponen.  All blunders, however, are due to my
> > own hubris.
> >
> > Signed-off-by: Ben Pfaff <b...@nicira.com>

Thanks for finding typos, I've now fixed those.

> > +    <li>
> > +      Some CMS systems, including OpenStack, fully start a VM only when its
> > +      networking is ready.  To support this, <code>ovn-nbd</code> notices 
> > the
> > +      new row in the <code>Bindings</code> table, and pushes this upward by
> > +      updating the <ref column="up" table="Logical_Port" db="OVN_NB"/> 
> > column
> > +      in the OVN Northbound database's <ref table="Logical_Port" 
> > db="OVN_NB"/>
> > +      table to indicate that the VIF is now up.  The CMS, if it uses this
> > +      feature, can then react by allowing the VM's execution to proceed.
> > +    </li>
> > +
> > +    <li>
> > +      On every hypervisor but the one where the VIF resides,
> > +      <code>ovn-controller</code> notices the new row in the
> > +      <code>Bindings</code> table.  This provides 
> > <code>ovn-controller</code>
> > +      the physical location of the logical port, so each instance updates 
> > the
> > +      OpenFlow tables of its switch (based on logical datapath flows in 
> > the OVN
> > +      DB <code>Pipeline</code> table) so that packets to and from the VIF 
> > can
> > +      be properly handled via tunnels.
> > +    </li>
> I wonder how much of a problem this delay in propagation of state to
> other hypervisors will be.
> At least with containers, where startup time is non-existent, it would
> mean that every container application written should be smart enough
> to retry connecting to another application in a different host.

I don't know how much of a problem it will be.  Do you (or anyone) have
an idea about that?  I kind of feel like proceeding on the assumption
that it will be OK, and then invoking a backup plan if not.

But I'm actually much more concerned about what seems to me a bigger
problem with containers.  As I understand it, containers get created and
destroyed (not just booted and shut down) very frequently.  Creating and
destroying a VM and its VIFs takes a long round trip through the whole
CMS.  I'm worried that's going to be slow.

> > +    <column name="name">
> > +      The logical port name.  The name used here must match those used in 
> > the
> > +      <ref key="iface-id" table="Interface" column="external_ids"
> > +      db="Open_vSwitch"/> in the <ref db="Open_vSwitch"/> database's <ref
> > +      table="Interface" db="Open_vSwitch"/> table, because hypervisors use 
> > <ref
> > +      key="iface-id" table="Interface" column="external_ids"
> > +      db="Open_vSwitch"/> as a lookup key for logical ports.
> > +    </column>
> The above fits nicely if you want to run containers on hypervisors
> too. Since the document clearly mentions that we only want to start by
> integrating with CMS - openstack for VMs, that is alright. But, if we
> want to run multiple containers inside each tenant VM, and then
> provide individual IP addressability and policies on each of the
> container interface, then we probably should update
> IntegrationGuide.md to include the concept of "sub-interfaces" - where
> each VM VIF can represent multiple container interfaces. Openstack
> currently does not support such a concept, but it may make sense to
> have the infrastructure in OVN for it while designing. This will be
> useful in a world that contains containers, VMs and physical machines
> interconnected with each other.

I'd really appreciate it if you'd propose something to start that off,
then we can workshop it on the list.  I don't feel comfortable with
container networking yet.

> > +  <table name="ACL" title="Access Control List (ACL) rule">
> > +    <p>
> > +      Each row in this table represents one ACL rule for the logical 
> > switch in
> > +      its <ref column="switch"/> column.  The <ref column="action"/> 
> > column for
> > +      the highest-<ref column="priority"/> matching row in this table
> > +      determines a packet's treatment.  If no row matches, packets are 
> > allowed
> > +      by default.  (Default-deny treatment is possible: add a rule with 
> > <ref
> > +      column="priority"/> 0, <code>true</code> as <ref column="match"/>, 
> > and
> > +      <code>deny</code> as <ref column="action"/>.)
> > +    </p>
> > +
> > +    <column name="switch">
> > +      The switch to which the ACL rule applies.
> > +    </column>
> > +
> Shouldn't a ACL rule apply to a logical port instead of a logical switch?

It does, or rather, it can match on the logical ingress and egress ports
within a particular logical switch.

I can see how this looks a little confusing.  Does writing it this way
help?

    <column name="switch">
      The switch to which the ACL rule applies.  The expression in the
      <ref column="match"/> column may match against logical ports
      within this switch.
    </column>

I've tentatively made that change.
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to