telecom • networking • design

an EventHelix.com blog


Leave a comment

IMS subscriber to PSTN subscriber call flow

IP Multimedia Subsystem is an IP based signaling system for setting up and tearing down multimedia sessions. SIP based signaling is used to setup these sessions.

We have covered call flows for an IMS to IMS and PSTN to IMS calls. We now look at the call flow for a IMS to PSTN subscriber call.

The call is routed via the BGCF (Border Gateway Control Function) to the MGCF (Media Gateway Control Function). The MGCF uses one context with two terminations in IM-MGW (Media Gateway). The termination RTP1 is used towards IMS Core network subsystem entity and the bearer termination TDM1 is used for bearer towards PSTN CS network element.

The call flow is complex and it is analyzed with multiple diagrams. Some of the diagrams are presented here:

IMS to PSTN sequence diagram

A detailed call flow describing all message interactions in a IMS to PSTN call

IMS to PSTN high level flow

A high level view that abstracts out individual component details and just presents the flow between the UE, IMS Core and the PSTN.

IMS to PSTN UE collaboration diagram

Here we examine the call flow from the UE point of view. The call flow is represented as a collaboration diagram.

Link: IMS subscriber to PSTN subscriber call flow

All documents:


1 Comment

Optimize C and C++ Code

Optimize C and C++ codeWith the advent of mobile devices, optimizing code has become even more important. Faster applications not only improve the user experience, they also improve battery life.

Optimizing C++ and C Code discusses several techniques that will help improve the performance.

  1. Premature optimization is the root of all evil
  2. Adjust structure sizes to power of two
  3. Place case labels in narrow range
  4. Place frequent case labels first
  5. Break big switch statements into nested switches
  6. Minimize local variables
  7. Declare local variables in the inner most scope
  8. Reduce the number of parameters
  9. Use references for parameter passing and return value for types bigger than 4 bytes
  10. Don’t define a return value if not used
  11. Consider locality of reference for code and data
  12. Locality of reference in multi-dimensional arrays
  13. Prefer int over char and short
  14. Define lightweight constructors
  15. Prefer initialization over assignment
  16. Use constructor initialization lists
  17. Do not declare “just in case” virtual functions
  18. In-line 1 to 3 line functions
  19. Avoid cascaded function calls
  20. Prefer preincrement over postincrement
  21. Define move constructors in C++11
  22. Use hardware accelerators and SIMD hardware
  23. Use profile guided optimization