SIP Architecture in GNU Telephony
How GNU Telephony adopted the Session Initiation Protocol (RFC 3261) and engineered GNU SIP Witch to achieve non-transcoding peer-to-peer voice communications.
The Problem with Traditional SIP PBX Systems
In typical commercial deployments of SIP (such as traditional Asterisk or proprietary PBX switches), the PBX acts as a Back-to-Back User Agent (B2BUA). The PBX accepts the incoming SIP INVITE, terminates the audio stream on local DSP or CPU buffers, and establishes a separate outgoing call leg to the callee.
While this B2BUA design allowed PBXs to connect disparate physical networks (such as bridging analog copper loops to T1/E1 digital trunks), it severely degraded performance in pure IP networks and completely broke end-to-end media encryption.
The GNU SIP Witch Routing Philosophy
David Sugar designed GNU SIP Witch to function as a pure SIP registrar, proxy, and redirect server rather than a media-terminating PBX:
- Direct Endpoint Signaling: SIP Witch negotiates connection parameters and forwards the SIP SDP between caller and callee.
- Direct Media Paths: The RTP stream flows directly between the two client devices without traversing the SIP Witch server.
- Zero Transcoding Overhead: Because the server does not process voice packets, a single low-power CPU can handle tens of thousands of active extensions.
- End-to-End ZRTP Preserved: Because media packets are never decrypted or re-packetized by the server, Phil Zimmermann’s ZRTP protocol operates unimpeded.