Hi everyone-
The connection modification capability for version 2.0 was initially
presented as a simple enhancement to extend the scheduled end time.
Or perhaps to increase the bandwidth, on an existing reservation.
This was supposed to be a very limited functional tweek for v2.0.
But then we decide "hitless" was a requirement; And then we added
"path preservation" as a requirement. It was *assumed* that we
needed a unique Modify() primitive to do this... probably because
prior tools have them... Suddenly,
we are re-defining
the entire state machine (yet again), and making it
still more complex, in order to make this "simple" enhancement.
This increasing complexity is actually counter to what we were
trying to do in Oxford: to
simplify the state machine. And
in general, counter to good protocol design. I think the existing
state machine has been thoroughly vetted and is adequate for the
protocol, and that we should consider functions like "Modify" as
higher layer constructs that should be implemented using the
existing atomic primitives we already have. Things like protection
circuits, and diversity attributes, and the like will all pose
similar challenges - and we cant keep changing the state machine
everytime someone has a "simple" feature they can't live without...
Given the developing complexity, we should step back and
re-evaluate a) the urgency for Modify(), b) the means/scope of
implementing it, and c) the timeline it will require to "do it
properly".
I would like to also propose an alternative "shadow" approach to
provide a modify capability in version 2.0:
In a shadow approach, we build a simple second "shadow" connection
reservation, and then perform a Release()-Provision() sequence to
cut over to the modified service instance when ready. This shadow
approach uses only existing protocol primitives and existing state
machine. (This is similar to John's talk about "bridge and
roll"... but without a bridge:-)
Currently, a separate circuit approach like this would require
separate STPs as endpoints for the modified connection reservation.
However, given virtual STPs (e.g. VLANs), a shadow connection would
not *really* need to terminate at the same source or destination STP
to be useful - i.e. the A and Z endpoints of a modified connection
could be different VLANs without imposing any detectable performance
hit on end-to-end data flow (!) - the sending system simply begins
using a new tag when the shadow provisioning is completed. (This
requires the end systems agents to know this will occur, but,
strictly speaking, this is entirely feasible.) The shadow path
would likely even be along the same geographic route - i.e. the
packets would transit all the same network infrastructure, just with
different tags. Given this situation, the need to "modify" an
*existing* connection, particularly with ethernet based STPs, seems
somewhat unnecessary if you can simply request another connection
with the desired new attributes along the same path and start using
it whenever you please...
Being pragmatic though, there are many applications that will not be
able to change their termination point, thus the source/destination
STPs should be simultaneously acceptable for both the shadow
connection as well as the working connection. Likewise, other
resources (say bandwidth) may not be sufficient to reserve a
completely separate upgraded Connection, and so the path finders
ought to be able to "double-book" resources assigned to the working
connection to be used by the shadow connection. Since the working
conenction and the shadow connection should never both be active,
this double booking will never cause a conflict. This ability for
shadows to double-book resources of their working counterpart
provides the functionality we initially wanted: simply upgrading the
existing path.
We can easily indicate when we wish to create a shadow Reservation
within the existing protocol: We simply specify an existing
ConnectionID in a Reservation Request. If the ReservationRequest
specifies an existing Reservation rather than a new Reservation,
then a [new] shadow Reservation/Connection is to be created and
linked to the original "working" reservation. Thus, an otherwise
normal Connection is identified as a "shadow" connection solely by
the link to a working Connection. When a reservation is
confirmed, if it links to a working connection, the RA will
immediately replace the working with the shadow and Terminate the
working reservation. In the one case where the working connection
is Active, the shadow will remain in its Reserved state as if it had
passed the start time and was awaiting a provision request. When a
Release occurs for the working connection, a check is made to see if
a shadow is linked to it. If so, the shadow will then replace the
working, and the working connection is Terminated.
This process does not change the NSI-CS protocol or the state
machine. It incur [minor] code additions to the existing
primitives, but does not change the event driven state transitions.
Pathfinders should to also be enhanced to double-book shadow
resources.
This "shadow" approach has this major advantage: Since it is
essentially just building a second reservation, it does not require
changing the fundamental NSI-CS protocol or the state machine. All
the "modification" processing is implemented using existing
primitives and state transitions. The cost to the user is minimal:
a single *potential* brief hit as the A and Z endpoints are switched
to the [new/modified] connection. And since the user initiated the
modify() in the first place, and will need to adjust the behaviour
of the application to take advantage of the new characteristics, it
does not seem unreasonable to expect the user to be able to deal
with a hiccup - if it occurs.
Finally, as a general recommendation: Modifying the existing
primitives and the associated state machine should be a
last
resort. Any new feature should have a very strong case for
modifying the NSI-CS state machine, and alternatives that do not do
so should be strongly encouraged. We should only modify the NSI
core protocols in order to simplify them, delivering additional
features through higher level service constructs wherever possible.
Thoughts?
Jerry
On 7/2/12 11:06 PM, John MacAuley wrote:
Peoples,
Here is the new and improved NSI CS state machine fresh off the presses and ready for your viewing pleasure. Please study it and prepare questions for the Wednesday call. We would like to close on this action ASAP.
Thank you,
John.
_______________________________________________
nsi-wg mailing list
nsi-wg@ogf.org
https://www.ogf.org/mailman/listinfo/nsi-wg