A quick look at the NSI protocol
NSI uses Asynchronous and Synchronous SOAP messages as a transport mechanism between instances. It is important that the SOAP messages meet and can be validated by the schemas that are specified in the NSI protocol documents.
One of the more difficult to understand aspects of NSI is the Asynchronous Callback mechanism. Below is a diagram attempting to explain how an Asynchronous request in NSI functions. This diagram is from the NSI v2.0 protocol definition document. MTL is Message Transport Layer.
This diagram shows the request with an immediate ACK reply. The Provider agent starts processing the request after the ACK has been sent. Once the Provider agent has completed it sends the Asynchronous reply, and the Requester Agent ACKs the reply.
NSI messages have 2 components to them. The NSI Header, and the actual message / method to be called. All NSI messages must have the NSI header. The header consists of the requesterNSA the providerNSA, a replyTo SOAP endpoing, a correlationId to relate asynchronous messages back back and forth, and a protocol version. Optionally there is a sessionSecurityAttr which can also be specified.
There are 3 state machines inside of NSI (LifeCycle, Provisioning, Reservation), each state machine tracks different aspects of NSI connections.