Replacing PBX During A Call In Progress

Home » Asterisk Users » Replacing PBX During A Call In Progress
Asterisk Users 6 Comments

This was asked many years ago but I thought I would check to see if things have changed. Is it possible to take over a call in progress – using a replacement Asterisk server?

In other words, if 2 user agents are connected through an Asterisk PBX, and I tracked the call ID, IP of each UA (and anything else needed), could I
remove the PBX and put a new one in its place (at the same IP address) and resume the call? Somehow keeping the call up on the UA’s and telling Asterisk to just resume a call given specified parameters (so the UA’s wouldn’t notice the change)?

6 thoughts on - Replacing PBX During A Call In Progress

  • One plausible scenario I can think of is if you are running VMware VMs.
    Using the vMotion feature would accomplish subsecond VM live moves.

  • As Andres mentioned you can use VMWare. Another option would be to send a re-invite to both devices and send them to another server.

  • That’s the same VM guest moved to a different VM host (not really what I was looking forward). In this case it’s an entirely new host with Asterisk having no state/session information, but my app would repopulate the session info and try to re-establish the call.

    Given SIP over TCP I suspect the answer is still now (since opening the connection on a new host would result in a new syn handshake, different source port used by Asterisk etc.)

    From: asterisk-users-bounces@lists.digium.com
    [mailto:asterisk-users-bounces@lists.digium.com] This was asked many years ago but I thought I would check to see if things have changed. Is it possible to take over a call in progress – using a replacement Asterisk server?

    One plausible scenario I can think of is if you are running VMware VMs. Using the vMotion feature would accomplish subsecond VM live moves.

    In other words, if 2 user agents are connected through an Asterisk PBX, and I tracked the call ID, IP of each UA (and anything else needed), could I
    remove the PBX and put a new one in its place (at the same IP address) and resume the call? Somehow keeping the call up on the UA’s and telling Asterisk to just resume a call given specified parameters (so the UA’s wouldn’t notice the change)?

  • Can re-invites be sent AFTER the first Asterisk server has been shut down? (If the first Asterisk server is still up then it’s a gracefull transition, but I’m assuming the first Asterisk server is simply unplugged). And can they be sent from a NEW asterisk server?

    From: asterisk-users-bounces@lists.digium.com [mailto:asterisk-users-bounces@lists.digium.com] This was asked many years ago but I thought I would check to see if things have changed. Is it possible to take over a call in progress – using a replacement Asterisk server?

    One plausible scenario I can think of is if you are running VMware VMs. Using the vMotion feature would accomplish subsecond VM live moves.

    In other words, if 2 user agents are connected through an Asterisk PBX, and I tracked the call ID, IP of each UA (and anything else needed), could I remove the PBX and put a new one in its place (at the same IP address) and resume the call? Somehow keeping the call up on the UA’s and telling Asterisk to just resume a call given specified parameters (so the UA’s wouldn’t notice the change)?

  • I doubt there is any chance whatsoever of that working! For a start, you can’t have two machines on the same subnet with the same IP address. It just does not work. And there is all manner of internal state that would have to be replicated onto the new server.

    When the clicky-clicky exchange in the village where I grew up was updated to System Y sometime in the early 1990s, all the phones went dead for about 30
    minutes and calls in progress were cut off.

  • Keepalived + heartbeatd allows you to maintain a a floating IP between two machines. If those two machines had configs, internal state synced, and the IP is configured to float automatically between the two based on which is actively up, would it be possible to not drop a call should the active host go down.

    and

    I doubt there is any chance whatsoever of that working! For a start, you can’t have two machines on the same subnet with the same IP address. It just does not work. And there is all manner of internal state that would have to be replicated onto the new server.

    When the clicky-clicky exchange in the village where I grew up was updated to System Y sometime in the early 1990s, all the phones went dead for about 30
    minutes and calls in progress were cut off.