[Nsi-wg] Issue 55 in ogf-nsi-project: correlationId is unneeded and complicates implementation significantly

ogf-nsi-project at googlecode.com ogf-nsi-project at googlecode.com
Tue Dec 6 03:27:44 CST 2011


Status: Accepted
Owner: ----
Labels: Type-Review Priority-Medium FoundInVersion-1.0 FixedInVersion-1.1

New issue 55 by thost... at gmail.com: correlationId is unneeded and  
complicates implementation significantly
http://code.google.com/p/ogf-nsi-project/issues/detail?id=55

Description of Issue:

The correlationId attribute in the WSDL messages is unneeded. Furthermore  
it requires correct implementations to persistently keep track of the  
correlationsIds of active requests.

Discussion of Issue:

The WSDL adds a correlationId to track the correspondence between a request  
and the subsequent update for the status. However this correspondence is  
unneeded as the request already contains information about the connection  
in question.

However having the correlationId requires both the requester and provider  
to keep a persistent (as in on-disk) record of currently active requests,  
in order to be crash and restart safe, i.e., the service must be able to  
respond to requests that came before it crashed/restarted. The  
correlationId also means that state updates are not idempotent as the  
client can only receive a request (state update) once. However it cannot be  
guaranties that a message with a state update will only be send once due to  
the coordination of message dispatching and updating this information  
persistently, where there will always be a window which can lead to  
inconsistency, where the message must be retransmitted.

Having to keep track of requests in this way, is called a state-full  
protocol (note that this does not mean a non state-full protocol doesn't  
have any state), and is usually considered a bad idea do implementation  
complexity and poor scalability in high-performance systems (arguably this  
is not what we have though), as it makes load balancing and redundancy  
significantly more tricky.

Furthermore it must be remembered that not all requests will have a  
callback. E.g., a provision before start time (i.e., auto-provision)  
followed by subsequent terminate request, will result in a callback for  
terminate, but not for the provision request. Here the client must then  
clear all pending correlationIds, complicating the implementation (the  
client side issues are simple though).

All this is further complicated by the fact that we haven't established if  
it is the provider or requester which is responsible for ensuring that  
correct connection state is updated.


Resolution of Issue:

Remove correlationId from the WSDL. This will make the state update  
messages (reserveConfirmed, etc.) idempotent, meaning they can be repeated.  
The requester will then update any state references about the remote  
connection to fit with the last received message (this also has problems,  
but none that doesn't exist in the current protocol).



More information about the nsi-wg mailing list