Asterisk User Location Information

Is there a mechanism for distributing user location information between Asterisk boxes that have identical configurations?

What do you mean by ‘location’?

I’m referring to the Contact: field in the SIP packet. You know… the place the AOR is bound too… the actual physical location where the user can be found.

Just think about it generally. If you have two asterisk boxes and you have two users and each is registered to a different asterisk box, asterisk has no knowledge of the other and therefore can’t round the call.

Sounds like you may need to start looking towards OpenSER as your primary proxy with Asterisk used to provide various enhanced services when needed.

As far as I know the only way for Asterisk to be aware of a ‘location’ is if that endpoint is registered with that Asterisk server. Although I am still not quite following what the problem is you are trying to solve.

As I understand, what you need is for endpoints to be able to call each other regardless of which Asterisk they are registered with. Correct?

If this is the case, then you would need a global numbering plan, or at least numbers unique to each Asterisk instance. Then, you may use DUNDi to dial across the network and ‘dynamically’ find the correct endpoint. So, for simplicity sake you may have something like this:

  • Asterisk A - Extensions 3000 through 3999
  • Asterisk B - Extensions 4000 through 4999
  • Asterisk C - Extensions 5000 through 5999
  • etc

Then, if DUNDi is configured properly you could do private network dialing as follows:

  • From Asterisk A

exten => s,1,[url=http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+DUNDiLookup]DUNDiLookup/url
exten => s,2,Dial(SIP/${DUNDDEST})

Does that solve the issue?

I’m not sure if that solves the issue or not. Our users aren’t going to have nicely mapped extensions. They’re going to have real world phone numbers that are in no particular order. Does your idea still work in that scenario.

If we have numbers unique to each asterisk instance, we have a single point of failure I think. If each Asterisk box has fixed extensions, the user can’t register with another Asterisk system unless they re-provision their phone.

And as for what we’re trying to do… uhm… basic redundancy so that we have more than one Asterisk box. Quite a simple concept.

Yes, it is possible, although a little more ‘fiddly’ in terms of configuration and on-going management.

This goes back to providing redundancy between Asterisk servers in terms of something like this page:

voip-info.org/wiki/index.php … over+case1

Where you have two Asterisk servers clustered for each logical instance. So if you have 5 servers you would have 5 clusters of two servers each, one being in failover mode.

It may be that you need a redundant SIP proxy (something like OpenSER) to be the central point with Asterisk hanging around that. This type of configuration is often times used by service providers, including the likes of FWD.

voip-info.org/wiki/view/Asterisk+at+large

The link at:
voip-info.org/wiki/index.php … over+case1

doesn’t address asterisk user location redundancy at all as far as I can see. 5 clusters of 2 servers each? Ok… fine… how does that address the user location issue?

Yes, we could use SER as a proxy, and have Asterisk send calls to it when it doesn’t know about the user, but how does SER know what Asterisk box to route the call to?

I’m absolutely amazed that more people aren’t asking about how to get this to work. I mean c’mon! If you have more than one Asterisk box your going to have this problem!

[quote=“dgarstang”]The link at:
voip-info.org/wiki/index.php … over+case1

doesn’t address asterisk user location redundancy at all as far as I can see. 5 clusters of 2 servers each? Ok… fine… how does that address the user location issue?[/quote]

It does not. You said redundancy was a key concern, which this addresses. It is DUNDi that federates the PBX to provide the location capabilities as already explained.

It is the other way around, SER is the primary entry point, and it sends calls to the Asterisk as needed. In fact, your endpoints would also register with SER.

How does it know? The way you configure your routing in SER and Asterisk.

Indeed, it is addressed all the time, the details are on the Wiki and posted in this very thread.

The article looks like it addresses pstn redundancy, not asterisk redundancy, and certainly not asterisk user locations.

We don’t want to use SER as the primary point where phones register. SER has limitations here. If a phone registers with SER and the SER box goes down, when the phone places a call, using DNS SRV it can go to another SER box. SER refuses the call as the phone isn’t registered with it. Asterisk will let an unregistered phone make calls a long as it sends the right auth credentials.

We also lose the message waiting indicator light functionality as Asterisk no longer has direct access to the location of the peer. We must have this functionality.

As long as the phones register with asterisk I don’t see how SER can know how to route calls.

THE DETAILS ARE NOT! Arrgh! I can’t find a single bloody article that addresses multiple asterisk boxes and global user location info. If I search these forums for ‘user location’ i don’t get a single match.

The details are there, but you may not like what they say. There are more details here:

voip-info.org/wiki/view/Aste … +Solutions

Many solution providers use a SER/Asterisk combo to acheive scale and redundancy. Also, we are confusing two issues here that are actually addressed seperately:

  • Redundancy
  • Location/Resource Discovery (DUNDi/ENUM)

They are seperately addressed with various solutions, but of course need to be considered jointly to design a system.

People keep talking about doing failover with load balancers etc. Why? I don’t understand this. This is exactly the type of thing SRV is supposed to address.

And… lets say we have two users, 1001 and 1002 registered with SER. User 1001 dials user 1002. SER routes the call to the asterisk farm.

Oh wait! Which one does it send the packets to? It doesn’t really matter as all the asterisk boxes will have the same extensions.conf, but if it uses forward() and the asterisk box is down, it will fail. If it tries to fork and call t_relay() it can’t because the asterisk boxes AOR is asterisk, not 1002.

The SER docs say that it fully supports DNS SRV. HOW? The freekin docs don’t say HOW it supports it. Do I just call forward (domain.com)??? God this is irritating.

Right now I’m dealing with Polycom phones that are supposed to support SRV. I’ve got the DNS records with the same priority and weight to allow round-robin. Half the damn time the phones just send an ACK when Asterisk asks for proxy credentials, and half he time it works. I am so sick of crappy software.

As for SER knowledge, I do not know that much, so can not help there.

If it were easy you would not be able to make the big bucks.