SIP Load Balancing Became an Architecture Problem, Not a Proxy Rule
Once dialog state, media anchoring and backend health mattered, forwarding INVITEs round-robin was the easy part.
Once dialog state, media anchoring and backend health mattered, forwarding INVITEs round-robin was the easy part.
A two-PBX lab clarified the boundary between SIP routing at the proxy and dialplan or application behavior inside the PBX.
Call setup rate, concurrent calls and media work stress different parts of a voice platform.
FreeSWITCH forced me to separate the concepts I understood from Asterisk from the implementation details I had simply memorized.
A healthy total session count can hide a load-balancing problem if one FreeSWITCH node carries nearly all calls while another remains idle.
A call can establish, carry clean audio, and still fail at BYE when the dialog route set, backend affinity, or media cleanup path is wrong.
A multi-worker voice stack can keep serving calls after one FreeSWITCH node fails, so one global up/down flag hides degraded capacity.
WebRTC forced me to deal with WSS, ICE, DTLS-SRTP and browser security assumptions instead of treating a browser as just another SIP phone.
Distributing initial INVITEs is easy; keeping in-dialog requests on a valid path is where the architecture starts to matter.
A FreeSWITCH process may remain alive while its worker integration stops reporting useful state to the signaling layer.