locked
Need to determine number of call in progress etc RRS feed

  • Question

  • I have a need to determine the number of trunks, ports and how many calls an IVR system can handle. I also need to determine how many ports are busy with a call.

     

    I realize that OCS SS 2007 doesn't really have trunks etc. so I'm unsure how to do this. I can query  for the list of applications and I can tell what ports they are listening on. How can I get the rest of the information?

     

    Could you consider a SIP peer to be analogous to a trunk?

     

    Also how many simultaneous calls can a 2007 implementation handle at once?

     

    Thanks.

    Thursday, June 14, 2007 8:04 PM

Answers

  • "How many simultaneous calls can a 2007 implementation handle at once?"  I don't think we've published any numbers yet.  I think you can reasonably expect to achieve at least as many simultaneous calls as you would for a similar application on MSS 2004 R2 all-in-1 configuration.  The only way to know for sure is to measure it by load testing your application. 

     

    For measuring the number of simultaneous calls, the simplest way is to look at the SpeechService performance counters.  These show aggregates over all applications on the machine, and include the number of active inbound/outbound calls and number of active applications instances. 

     

    trunks/ports are a telephony concept; if you're being asked for these, I doubt that mapping sip peer to trunk would be appropriate.  Surely it's just a straight numerical mapping from #active calls to #trunks ie. max #ports = max(active incoming calls + active outgoing calls), #trunks = Math.Ceiling(#ports/ports-per-trunk). 

     

    If you need to measure #trunks / ports, the best place do to this is on your gateway or TIM, since that is where the information is known.

     

    It doesn't sound to me like the listening ports of your application is relevant to this question.

    Friday, June 15, 2007 9:25 AM

All replies

  • "How many simultaneous calls can a 2007 implementation handle at once?"  I don't think we've published any numbers yet.  I think you can reasonably expect to achieve at least as many simultaneous calls as you would for a similar application on MSS 2004 R2 all-in-1 configuration.  The only way to know for sure is to measure it by load testing your application. 

     

    For measuring the number of simultaneous calls, the simplest way is to look at the SpeechService performance counters.  These show aggregates over all applications on the machine, and include the number of active inbound/outbound calls and number of active applications instances. 

     

    trunks/ports are a telephony concept; if you're being asked for these, I doubt that mapping sip peer to trunk would be appropriate.  Surely it's just a straight numerical mapping from #active calls to #trunks ie. max #ports = max(active incoming calls + active outgoing calls), #trunks = Math.Ceiling(#ports/ports-per-trunk). 

     

    If you need to measure #trunks / ports, the best place do to this is on your gateway or TIM, since that is where the information is known.

     

    It doesn't sound to me like the listening ports of your application is relevant to this question.

    Friday, June 15, 2007 9:25 AM
  • Thanks Anthony.

     

    I've already come to teh conclusion that it will require more than one way to get the information. I can use WMI from a C# program to get the list of applications along with their listening ports etc. I could also get that information from the registry.  I

    I fouund the Perfmon counters and now I need to figure out how to access them from C#.

     

    Thanks for the other information too as it confirmed my thinking. Now I have to convince the client that this is TDM stuff that doesn't apply to SES and SIP.

     

    Friday, June 15, 2007 1:37 PM
  • There are classes in the .Net Framework to read perf counters. 

     

    From your original description it sounds to me like your customer is refering to telephony ports not the application's listening ports - which I hope you're leaving as the default (0) unless you have a reason why you must have incoming SIP INVITES bypass TAP.

    Friday, June 15, 2007 2:04 PM
  • They are being left at the defaults.

     

    If I understand correctly then MSS 2007 will always issue a redirect on incoming calls to a free port. What is the accpetable range of ports?

     

    Do outgoing calls get randomly assigned to a port also? I haven' looked at that.

     

    I'll do some Live Searches and check the docs about how to get at the perf counters.

    Friday, June 15, 2007 5:15 PM
  • When the 1st http request (usually issued by TAP) comes into your application, TAH (Telephony Application Host, the bit of SpeechServer that hosts your application inside ASP.Net) starts listening on a free port (or the configured per-app port).  TAP will redirect all incoming calls for your app to this port.  This port only changes when the Application Pool hosting your application recycles.

     

    "What is the acceptable range of ports?"

    From Speech Server docs ("Configuring Windows Firewall for Speech Server "): 1024 to 65535, ie. practically any port.

     

    "Do outgoing calls get randomly assigned to a port also?"

    Think about TCP; in order for party A to establish a connection to party B, B must be listening on some well known port, but A doesn't.  For inbound calls, party A is a Sip Peer and party B is Speech Server.  For outbound calls it's reversed. 

    Friday, June 15, 2007 7:01 PM
  • I think I'm following this.

     

    By default MSS is listening on 5060. The docs say that the calls come in on these ports and then get redirected to randomly selected ports for the application.

     

    So - Two calls come into Speech Server (listening on the default port). You now need two instances of the application - one for each call. So Speech Server fires up two instances each on a different port. If another call comes in and there is a previous instance on a port that has finished it's call then it will go to the instance on that port. If there are no free instances it will dynamically get another port and another instance will fire up. Or will all calls to that app be on the same port?

     

    How are multiple call handle if a port is assigned to an app? Can multiples run on the same port (sort of like port 80 http requests)?

     

    Thanks for helping me get how this works straightened out in my head.

    Friday, June 15, 2007 10:10 PM
  • Multiple instances of your application reside in the same .Net Application Domain, corresponding to the IIS Application Pool.  Most of the time there is 1 App Domain per application pool (the exception being during recycling, when the old & new live side by side until all calls in the old are complete). 

     

    Within an app domain, Speech Server is listening to a single port.  This port is chosen randomly or is the one configured.  When calls are redirected from TAP (5060) to this port, the SIP Peer will establish a TCP connection to this port, or will re-use an existing connection.  Multiple calls can share the same connection.   

     

    So, in your example of 2 calls coming into SpeechServer for the same application, both calls are redirected to the same port.

     

    You can see the current open connections on your machine using "netstat -a".  You should see entries like "TCP <machine>:<port> <machine>:0 LISTENING" for the listening ports and "TCP <machine>:<port> <remote machine>:<remote port> ESTABLISHED" for the established connections. 

    Tuesday, June 26, 2007 9:04 AM
  • Thanks Anthony.

     

    Thast's exactly what I wanted to know.

    Tuesday, June 26, 2007 12:03 PM