Tuesday, October 5, 2010

Structure of SIP Protocol Stack

  1. fairly independent processing stages
  2. element "containing" a layer means elements compliance with the rules defined by that layer
  3. lowest layer is "syntax and encoding" layer
    1. encoding is specified using BCNF (Backus-Naur form grammar)
  4. second layer is "transport layer"
    1. defines how a client sends requests and receives responses
    2. defines how a server receives requests and sends responses
    3. all SIP elements contain a transport layer

  5. third layer is "transaction layer"
    1. transaction is a 
      1. request send by client transaction (using transport layer) to a server transaction
      2. along with all the responses to that request send by the server transaction back to the client
    2. handles application layer retransmissions
    3. matching of responses to request
    4. handles application layer timeouts
    5. statefull proxies, and User Agents have a transaction layer
    6. stateless proxies don't have a transaction layer
    7. Transaction layer has two components, which are represented by a finite state machine constructed to process a particular requests
      1. Client Component (client transaction)
      2. Server Component (server transaction)
  6. the fourth layer is "transaction user"
    1. each of the SIP entities except a stateless proxy is a transaction user
      1. when a TU wishes to send a request it creates a client transaction instance and passes it the request, along with destination IP address, port, and transport to which to send the request
      2. a TU that creates a client transaction can also cancel it, using a CANCEL request, which constitute its own transaction, but references the transaction to be canceled
      3. on canceling the server stops further processing, revert to the state that existed before the transaction was initiated, and generate a specific error response to that transaction
  7. the SIP elements, UA clients and servers, stateless and stateful proxies, and registrar, contains a core that distinguish them from each other. Cores except for the state less proxies are TU. 


No comments: