BitVoice

Proof

How BitVoice is tested, and what has not been tested

A phone system is only as good as the calls it does not drop. This page says what every change must pass, what BitVoice is checked against, and what it has not been tried with yet.

On every change

  • The Go tests, with the race detector, on Linux against both SQLite and PostgreSQL, on Windows and on macOS (continuous integration)
  • Fuzzing of the SIP, SDP, STUN and SRTP parsers, and of the ISDN facility decoder
  • Every setting has a screen: a test walks the whole configuration and fails if any setting is not named in the web interface, so nothing quietly becomes file-only
  • Browser tests in Chromium that drive every screen as a person would, and make real WebRTC calls between browser phones and the engine with the sound checked in both directions

Checked against other people's software

PartChecked against
IAX2 trunksA real Asterisk 23: registration, calls both ways with sound, busy
T1/E1 PRI and BRIlibpri 1.6.1, both sides: calls, caller names, redirecting numbers, hold, transfers handed to the network (DMS-100 release link transfer too), advice of charge, BRI point to point and multipoint
MFC-R2OpenR2 (the library Asterisk uses), every variant offered, calls both ways
SS7libss7, ITU and ANSI: link alignment, link tests, calls both ways, circuit resets and blocking
G.723.1ffmpeg, which BitVoice runs to convert it when that is switched on
SIP over WebSocketJsSIP and SIP.js softphones registering and calling each other through BitVoice
Let's EncryptPebble, the test authority from the Let's Encrypt project
MP3 hold musicminimp3's C decoder, sample for sample
GSM and G.726ffmpeg: GSM decoded sample for sample as ffmpeg does, G.726 streams exchanged with it
P25 (lab track)A real ISSI capture from NIST's public-domain tester, and the standard's own encryption examples
TTY (lab track)spandsp's V.18 Baudot, both ways
Real-time text and text to 911 (lab track)Wireshark's RTP, RFC 2198 and MSRP dissectors
Caller photos and clips (lab track)Files tagged by ExifTool: their time and GPS read back
Signed NG911 log events (lab track)A JWS signed by OpenSSL
NENA i3 web services (lab track)NENA's published OpenAPI definitions (the NENA911 repositories): Policy Store, logging service, discrepancy reports, geocode and MSAG conversion, ADR, locator, dequeue, test calls, bad actors; EIDOs against NENA's EIDO schema
Text to 911 over TLS (lab track)Wireshark, decrypting the session with its TLS keys
Recordings of callers' live video (lab track)ffmpeg and ffprobe: every picture decodes, with its own time, after loss and reordering
Serial ports (ALI links)A pseudo-terminal standing in for the cable, on Linux and macOS

Not yet tried for real

These are built and tested against stand-ins, but not yet with the real thing. Reports from anyone who tries them are welcome on GitHub.

  • Real desk phones: the automatic set-up (Yealink, Poly, Grandstream, Snom, Fanvil, Cisco, Mitel and Aastra, Sangoma, Algo, CyberData) is checked against each maker's published formats, not yet on the phones themselves
  • SIP carriers in production, the outbound dialer's answering-machine detection on real lines, and T.38 fax through real carriers
  • Telephony cards and PRI switches, including transfers handed to the phone company on real lines
  • Skinny, MGCP and H.323 equipment; hotel systems (FIAS) against a real property-management system; SNMP managers
  • Let's Encrypt itself (as against its test authority), TURN through real NATs, and Meta's live WhatsApp and Messenger APIs
  • Published capacity figures on stated hardware
  • The public-safety lab track with a live ESInet, a text control centre, a selective router's CAMA trunks, a P25 system, or a CAD: built and tested against stand-ins, waiting on a design partner's lab

Not built

  • SS7 link sets of several links, a signal transfer point, and the SS7 database lookups (number portability, toll-free)
  • MFC-R2's China variant: OpenR2's own one contradicts itself, so there is nothing sound to test against
  • P25 Phase 2 half-rate voice (AMBE+2): patented until 2028