[Nsi-wg] Release command

Jerry Sobieski jerry at nordu.net
Fri Mar 1 10:51:44 EST 2013


Hi Hans-  Thanks for the comments...I have some response in line...

On 3/1/13 6:46 AM, Hans Trompert wrote:
> Hi Jerry,
>
> I only pick the two most important things to react on:
>
> On 02/28/2013 01:51 PM, Jerry Sobieski wrote:
>> During the released period, the resource can indeed be used for
>> something else - how the "system" keeps track of this is an
>> implementation issue.
> You are assuming a lot of functionality from a NRM/NMS that most of the
> current systems do not have an probably will not have in the (near)
> future. Because of the very diverse traffic profiles in NRENs the
> biggest problem in NREN networks is the traffic engineering, and the NSI
> Release is not helping here.
Not really...NSI does not *assume* anything about the NRMs.   I am only 
pointing out what an NRM *could* be able to do if the developers of that 
NRM were creative and might want to do so... I..e the Release gives the 
NRM this option - it does require that the NRM do anything during a Release.

I find the observation a bit odd on two levels.

A) NSI is not intended to simply reflect what NRMs can or cannot do.  
Indeed, NSI has tried very carefully to *not* define or assume anything 
about the NRMs beyond their general responsibility/authority to manage 
things internally within a domain.   NSI is intended to be an 
_/interdomain/_ framework/protocols that everyone will agree to 
implement regardless of the capabilities of any particular internal 
NRM.   NSI defines the framework and the protocol semantics - what is to 
be accomplished by each primitive.   It is the responsibility of the NSI 
implementors to implement the protocol as specified and adapt/interface 
those NSI primitive semantics to their NRM.   Thus the external 
behaviour and appearance of all NSI agents and domains is consistent 
across all NSI agents.  How the implementors adapt the NSI semantics to 
their particular NRM context is an implementation issue we leave to them 
to solve.  (We don't mean to make this difficult, but there are many 
NRMs that all behave differently - some are probably smarter than 
others, but we don't make a distinction.)

B)  The "Release" is probably the least complex primitive in the CS 
protocol.   A Release() *IS* optional in its usage and in the life cycle 
of a Connection - just as a Cancel() is optional in its usage as well. 
    I.e. a user does *not* need to Release() their Connection prior to 
Cancel()ing the reservation.  They can have an active circuit and 
immdeiately Cancel the reservation, or just do nothing and let it 
expire, and both the active circuit and the reserved resources all goes 
away fine.

However, this does not mean the Release() primitive is optional in the 
protocol implementation.   A PA /must/ implement the Release as it is a 
legitimate and required primitive in the protocol.   (This is the issue 
we are discussing - whether to keep the primitive in the protocol or 
not.)   *IF* a user RA issues a Release command, the PA is bound by the 
standard to recognize it, process it as specified, and change the 
Connection's state to "released".    It is here that the standard has 
left great leeway to the implementors in that we did not specify what 
happens to the resources associated with the Connection during the 
released window.   All we said is that the Connection is no longer In 
Service (i.e. not "Active") and that the Reservation is retained so that 
the Connection can subsequently be re-provisioned.   This actually 
requires very little of the PA implementation - i.e. the NRM may in fact 
not do anything internally...just sits there with an idle Connection in 
place.   Why is this hard or difficult?   In such a case, an NSI Query 
would return a "Released" state...as should any children.   And as 
stated, there is no _/requirement /_for the data plane to be functional 
during a Release'd window - though in many cases might in fact remain 
unchanged.  (Continuing to carry traffic while released I think may pose 
a security issue,...but its a corner case we needn't worry about right now.)

So, as it stands, the NRMs are not required to do much (if anything) to 
effect a "released" state.   The NSA will need to reflect the state, and 
the NSA is expected to progress the Release() down the service tree to 
inform any children, but the NRM pretty much just has to say "Ok...I'll 
ignore alarms until I get the order to reactivate it."  ...  right?

Then - if and only if you want to - you could have your NRM do something 
wonderful or useful with the suspended resources like shunt some best 
effort traffic across that links, or maybe you noticed FEC errors 
increasing but hadn't caused any issues yet, and so you might want to 
adjust power or attenuation to see if they can push them back down...   
NSI does not currently state what you can or cannot do while the 
Connection is Released... only that the data plane is _/not required/_ 
to be functional, and data plane resources should remain allocated so 
that the circuit can be brought back into Active state.  (I don't think 
it even officially asserts that the same resources are required...just 
that the Connection as specified can be re-Activated ...)

I think the Release concept needs re-analysis...potentially even should 
be expanded or redefined.   Maybe it should be renamed to "Suspend()" to 
avert confusion about what it does.   It should be able to be sent up 
the tree as well as down the tree - thus allowing uPAs to request that 
the circuit be idled in order to address a problem and thus giving the 
user a means of gracefully handling an unexpected and/or temporary 
interruption.   This would also allow a problem encountered in one 
domain to be communicated upstream and downstream to other domains 
serving the connection instance.  It probably should have an optional 
restart time or suspension duration - which would allow the RA or PA to 
indicate/know how much time is available or when it must be active 
again...a veritable auto-start for re-provisioning.

All of these have both positive and negative second and third order 
affects on the protocol and framework - and the implementations as well 
- and I assert that these should be thoroughly considered before we take 
a decision and change anything.   Thus (IMO) the change is not critical, 
but is also non-trivial, and so we should not make a rushed decision now 
as we are trying to get v2 out the door.

> I'm fine with the Release being in CS 2.0
> but please make it optional. And please do not make any major changes to
> CS 2.0 any more, this months OGF is the NSI WG last chance of making
> this version final IMHO.
My proposal for today is exactly this: leave it as is for now.

Side comment about "optional" primitives or fields in a standard: Be 
clear on what we mean by "optional" in terms of /implementation/ and 
"optional" in terms of /usage/.   A field may be defined as optional in 
its usage meaning that if it is present it _/must be recognized/_ and 
processed according to the standard, but it is not required to be 
present.   This *requires* an implementation to "implement" the field 
even though it may be optional in its usage.    Alternatively, a field 
or primitive that is described in the standard, _/but is not required to 
be recognized/__/*and* processed in a specific manner/_, is essentially 
a non-standard extension and should not be included at all as part of 
the "standard".

In the standard, there are no optional primitives or fields that need 
not be implemented.  Even if the processing of a specific field is "may 
be ignored" it must nevertheless be recognized and processed in that 
manner. i.e. it *must* be implemented.    This is how we treat Modify() 
in version 2 - as optional in its usage - it *must* recognized, and can 
be processed as: one of two actions: a) it may be ignored and a status 
reflecting such is returned, or b) it can be acted upon to modify the 
parameters associated with a connection. Thus Modify must be 
implemented, even if there is an escape clause that says you can just 
essentially ignore it for now (on the presumption that it is a complex 
task that may take a while to be actually be functionally enabled.)

>
>> We put it on the list of v3 issues and have the discussion then.
> We already have 4 customers who have implemented CS 1.0sc into their
> software. With the introduction of CS 2.0 we will support them to make
> the move from 1.0 to 2.0 as we do not want to keep 1.0 around for to
> long. We have to spend a fair amount of resources on this. Please do not
> expect that we are willing to do this again any time soon to move from
> 2.0 to 3.0. As far as I am concerned, anything that is not in 2.0 right
> now we will have to learn to life without for quite some time (assuming
> you want to avoid forcing people to do all kinds of complex multi
> version aggregation).
This is exactly why I caution the Working Group that *ANY* change to any 
aspect of the standards needs to be VERY CAREFULLY considered in_/all /_ 
its implications before including it, or excluding it.

I don't think anyone is trying to be callous regarding the efforts 
developers invest to get things to work.   They are to be commended for 
diving in early - and you all for lending them assistance - this 
certainly helps define the end result.

But there *will* be changes and enhancements to NSI over the coming 
years.    We can't do it all at once, thus we have a phased approach of 
version 1, then version 2, version 3,...   Hopefully, and I think 
demonstrably, the work is incrementally improving and converging to a 
mature set of protocol primitives that will change less from one version 
to the next.

I would assert that there are still features that even the users would 
like to see matured and evolve.   Some of these changes will affect 
existing code, some will not.  For instance, a Topology Service may be 
relevant to some agents while others will ignore it altogether;  the 
Discovery Service that at least advertises the versions an agent runs is 
an attempt to make the reality of different versions less of an obstacle 
to deployment and development, monitoring and performance verification 
services need to integrate smoothly, and ability to build multi-point 
connections, and integration with SDN environments, or a Modify 
capability that has been tested and proven...    Modify is a good 
example- We delayed that from v1 to v2 because it was a very complex 
process that had *many* implications.  Nevertheless it was deemed a 
necessary feature for emerging service environments...and driven by 
users who wanted the capability.     That is the case now with 
point-to-multipoint, and topology distribution, and monitoring, and I 
will bet you there are some fundamental changes coming that will be 
required to make the whole framework work more reliably - and simpler - 
as we learn more and gain experience as we deploy it.

So I do not advocate moving ahead to each new version as quickly as it 
hits the press.   Production codes and environments are by nature 
conservative in this sense.   And the NSI WG is sensitive to the issue 
of version migration and backward compatibility.    Indeed, we have had 
some heated debates on how to address this particular issue.

One last soapbox comment:  The NSI effort is a "Standards" effort. This 
is not an engineering project.  The NSI objective is to find _/agreement 
and consensus/_  so that we all do these things in the same way - 
everywhere.  We have a group of autonomous organizations with very broad 
set of interests, infrastructure, expertise, policies, and 
requirements.  There is no king to decide how we proceed - as a group we 
all need to reach agreement in order to proceed because to do otherwise 
will not produce a standard.    This becomes a political process as much 
as a technical process.  It requires both a high level of technical 
expertise, an ability to advocate, explain, listen, and compromise, and 
a significant amount of time for the group to reach a common set of 
concepts and processes.    I suspect if you put four smart people in a 
room they may be able to progress faster, but I think the result would 
be far less impressive and you will continue to have other folks 
building islands of incompatible services.     The NSI framework is 
novel because we did/do have an /open/ forum that incorporated some 
novel ideas and for that reason it takes longer than most managers or 
technical folks think is necessary or or are comfortable with. On the 
other hand, we have been taking a technical approach to these 
capabiliteis for 20+ years and still have no common or ubiquitous 
provisioning framework.. So I am very much bullish on NSI even when it 
seems slow and plodding.   So please try to be patient and keep the big 
picture in view.   We *do* need to get v2 out the door asap, but as much 
as anything this so that networks/apps can lean on v2 while we begin 
working on v3 and all the features we still need to address.

Thanks for the input, Hans.
Best regards
Jerry

>
> Cheers,
>      HansT.
> _______________________________________________
> nsi-wg mailing list
> nsi-wg at ogf.org
> https://www.ogf.org/mailman/listinfo/nsi-wg

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.ogf.org/pipermail/nsi-wg/attachments/20130301/8ac1e381/attachment-0001.html>


More information about the nsi-wg mailing list