On 10/21/14 12:33 PM, Tom Herbert wrote:
Agreed, but I think there are a few more probably.
Tom,
I think so too - just need to get the specific requirements written down
and get some consensus.
- MUST contain an VNID field. This field MUST be large enough to scale to
100's of thousands of virtual networks
In even moderate sized deployments hierarchical assignment of VNIDs,
sub-VNs, fragmentation in the space, classed VNIDs might be used--
this probably should be reflected in requirements to allow for that (I
have pointed this out previously).
Are you suggesting that the numeric requirement should be higher? 32
bit? 64 bit?
I'm trying to tease out some fairly specific requirements that can
influence the dataplane encapsulation. Could be to have a larger initial
number of bits, or the ability to expand on the size of the VNID over
time. Part of this this in with the security question below.
I believe the bigger item missing around VNID is security. Isolation
between VNs isolation is a critical requirement, so it follows that
the VNID must be adequately secured to protect against spoofing or
corruption.
I understand your concern, but I'm trying to get some actual
requirements written down.
An example requirement in this space would be that the encapsulation
format should have the option of providing some keyed hash (or similar)
which covers at least the VNID to make it harder for an attacker to
spoof NVO3 packets.
One can get similar security by having a larger VNID space which is
sparsely populated. A 32 bit VNID plus 64 bit of hash isn't that
different than a 96 bit VNID unless the hash also covers the inner
packet (which would be expensive).
In the world of solutions one can envision a variable length VNID which
can be broken up into flexible parts:
- ID
- key ID (to allow for smooth rekeying)
- keyed hash
But that might be overkill.
Currently I don't quite know how to phrase a requirement without talking
about potential solutions. We could have a nebulous requirement that the
dataplane encapsulation format MUST allow the addition of higher
assurance mechanisms that prevent off-path attackers (those that can not
intercept NVO3 packets flying by) from injecting NVO3 packets.
- ??? QoS field inside the NVO3 overlay header or not ???
I would add that a congestion control mechanism in the encapsulation
layer might also be considered.
"considered" doesn't sound like a requirement. Did you have something
specific in mind?
There has been discussion in the IETF about requiring at least some form
of circuit breaker for tunneling protocols. But the proposals I've seen
(from Bob Briscoe and folks) seem to need nothing from the tunnel encaps
protocol (might yse the ECN bits in the outer IP header). We could list
some "heads up" non-requirements in the draft such as "The encapsulation
protocol should not prevent adding circuit breakers for congestion
control" even though we do not yet know what that would imply.
- MUST/SHOULD facilitate ECMP in unmodified routers in the underlay
Is it reasonable to require UDP based encapsulation to support this,
or at least that any protocol can easily be encapsulated within UDP
(like being done for GRE/UDP)?
A UDP encaps would be the easy way to solve it. But first of all the WG
needs to decide whether this should be a requirement on the encapsulation.
(Others participants might have other requirements on the encapsulation
format. My main message is the focus on the encaps requirements which seems
to be quite few.)
With respect to encapsulation protocol requirements, I would propose
that extensibility (ability to associate meta data with the
encapsulation) is also a requirement.
I guess we would need a bit more detail to get to a requirement which
helps in the selection.
For instance, is it sufficient to have 2 bits of meta-data? Or do we
need the ability for a large variable-length list of meta-data (with
e.g. a userid in the form of a NAI plus a certificate and CRLs ...) I'm
exaggerating to push on the size question.
Also, some of the meta-data discussion has been about vendor-specific
meta-data.
If we have a multi-protocol encaps (see below) then vendor-specific
meta-data can be handled by the vendors getting a code point and doing
their own header between the NVO3 and the inner Ethernet/IP header. That
avoids us having a standardization discussion about how much size to
allocate for some proprietary meta-data that we don't even know about.
Thus if there is meta-data that needs to be standardized, then I think
we should discuss that specific meta-data and the resulting requirements
on the dataplane encapsulation.
The implementation and operational requirements in
draft-ietf-nvo3-dataplane-requirements should IMHO belong in a different
document. Some might already be covered in the architecture document. And
others might need to be refined as we specify more details for the NVO3
solution.
One other thing that should be clarified: The protocol of the
encapsulated packet is described in the req. draft as
"Tenant frame: Ethernet or IP based upon the VNI type".
This is a requirement for a multi-protocol encapsulation which is
good, but seems restrictive in the protocols carried and implies that
protocol is inferred from VNID as opposed the to requiring/allowing
the encapsulation layer to have a protocol field.
The WG should entertain whether supporting some protocol type in the
encapsulation is a requirement or not.
The short list of requirements is silent on that front.
And as you've pointed out, if there is such a requirement, then the next
question is whether it is an Ethernet type or an IP protocol field (or
both).
Erik
_______________________________________________
nvo3 mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/nvo3