Hi folks,

tl;dr: to have effective discussions at the Folsom summit, we need to agree
on terminology more concrete than just talking about "L3", which means
something different to different people.  Some proposed definitions are
below.

-----------------------------------------------------------------------------------------------------------


Those of you that were around for the creation of Quantum at the Diablo
summit will remember that one of the biggest challenges was that people
frequently used terms (e.g., "network-as-a-service") for which we all had
different definitions.  I key step to making forward progress was to ban
people from using terms like "network-as-a-service" and be more concrete.

I think we're on the verge of a very similar situation with respect to the
term "L3".  Scoping and defining exactly what we're talking about for each
session will be really important to making progress and avoid talking in
circles.  Therefore, I propose that we ban using the standalone term "L3"
and instead use more concrete terms :)

Let's first try to hash out a set of definitions that are reasonably well
defined and well scoped (i.e., we use terms X and Y such that it is
possible for us to say "that sounds like you're talking about topic Y, but
this is the discussion on X.  Lets hold off talking about that until we
have the session on Y".).  Once we have such a list, we can talk about how
they map to sessions (it may be that two topics are so closely coupled that
they cannot be discussed separately).  This will also help us define
dependencies.

My main rational for splitting things into different items is if I could
see a reasonable deployment that uses one capability but not another.

- IP Address Management (IPAM):
 * How virtual servers as allocated IP addresses based on their network
connectivity (http://en.wikipedia.org/wiki/IP_address_management)
 * Often includes other network identifiers that are also configured on a
virtual server, including MAC address, subnet mask gateways, routes, DNS
servers, etc.
 * This type of functionality is currently provided by Melange, which will
be integrated into Quantum during Folsom.
 * IPAM is needed even if VMs are only connected to L2 Quantum networks
(i.e., it does not required "L3 forwarding" or other logical features
described below).
 * Note: this does NOT specify how these identifiers are "injected" into
the server itself (could be via disk injections, DHCP,
cloud-init+metadata, statically configured by admin)

- DHCP Injection
 * A feature that allows VMs to issue DHCP requests on a Quantum network
and receive a DHCP response that includes IPAM data specific to that VIF
 * In OpenStack, DHCP is used primarily for "injection", since IPAM is the
ultimate source of truth for mapping MAC -> IP address and other network
config (in some cases IPAM + DHCP are combined into a single product).
 * This is separate from IPAM since other injection mechanisms can be used.

- L3 Forwarding
 * Quantum "networks" provide an L2 service model.  There are use cases
that require connecting servers that are not on the same L2 network +
subnets, and are therefore connected only by an element performing L3
forwarding.
 * Note: this L3 forwarding element is a logical abstraction.  We make no
statement how how it is implemented (e.g., by a VM appliance, a physical
router, or something else).
 * These L3 forwarding elements would likely expose some kind of a "routing
table" to describe the rules used to forward between different L2-subnets.
 * A common use case is that an L2-network/subnet is a trust domain
(private tenant networks, tier of a web application), yet communication is
required between trust domains.
 * We separate out firewall and NAT into a separate discussion, below.
 * L3 forwarding has a dependency on understanding the IPAM data for a
particular subnet that it is connected to (e.g., network address/mask,
gateway address)

- NAT
 * A common reason for deploying L3 Forwarding is to separate
L2-networks/subnets that use private or overlapping IP space.  NAT rewrites
packets to map between different address spaces to allow communication.
 * includes source-NAT (SNAT) and destination-NAT (DNAT) rewriting.

 - Floating IPs
 * An existing API exposed in OpenStack (called "elastic IPs" in Amazon
terminology) that allows tenants to setup "public" IPs that map to
"private" IPs.
 * Can be implemented using DNAT rules, but exposes a higher level
abstraction.
 * Has an IPAM component, as "public" IPs are allocated from one or more
pools created by the provider.

- Firewalling
 * Packet filtering performed by analyzing L3/L4 data in the packet and
making a decision to allow or deny the traffic
 * Common forms include "security groups" and ACLs.
 * Firewalling may be applied on a per port basis (security groups, or
"distributed firewall") or at a choke point such as a "L3 forwarding
element" (see above).
 * Firewalling may or may not be "stateful", which refers to the ability to
allow certain packets based on having already allowed other packets deemed
to be part of the same "connection".
 * More advanced firewalling may include the ability to perform other
operations, like mangle the packet, log the packet, etc.
 * Firewalling may be controlled by tenants, cloud operators, or some
combination.

Note: I'm not proposing the above terms as API abstractions, just as
concrete terms we can use in discussion.

I've put this list on the etherpad to help people add comments and thoughts
without this turning into the email thread from hell (it can instead be the
etherpad from hell...): http://etherpad.openstack.org/quantum-folsom

Thanks,

Dan


-- 
~~~~~~~~~~~~~~~~~~~~~~~~~~~
Dan Wendlandt
Nicira Networks: www.nicira.com
twitter: danwendlandt
~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- 
Mailing list: https://launchpad.net/~netstack
Post to     : netstack@lists.launchpad.net
Unsubscribe : https://launchpad.net/~netstack
More help   : https://help.launchpad.net/ListHelp

Reply via email to