Skip to content
View killdashnine's full-sized avatar

Block or report killdashnine

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Content in all repositories owned by your account will be closed.
Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
killdashnine/README.md

Matthias van der Vlies

Telecom infrastructure engineer. Carrier-grade signalling and media in Rust: SS7/SIGTRAN, IMS/VoLTE, SIP, SMPP.

The public work is one protocol per crate, each written against its own spec, plus the runtime that ties them together.

SS7 and SIGTRAN

Crate What it does Spec
mtp2 signal-unit framing, link state machine ITU-T Q.703 v d
m2pa MTP2 peer-to-peer adaptation over SCTP RFC 4165 v d
m3ua MTP3 user adaptation, ASP and SG state machines RFC 4666 v d
mtp3 MTP3-user SAP and point codes, the seam every MTP3 user binds to ITU-T Q.704 v d
sccp connectionless and connection-oriented SCCP ITU-T Q.711 to Q.716 v d
sua SCCP user adaptation over SCTP RFC 3868 v d
tcap transaction and component sublayers ITU-T Q.771 to Q.775 v d
itu-isup ISUP messages and parameters, a direct MTP3 user (SI=5) ITU-T Q.763 v d
inap INAP CS-1 operations, a TCAP user Q.1218, ETSI EN 300 374-1 v d
gsm_map MAP operations, BER encode and decode 3GPP TS 29.002 v d
gsm_cap CAMEL Application Part 3GPP TS 29.078 v d
tpdu SMS transfer-layer PDUs 3GPP TS 23.040, 23.038, 24.011 v d
smpp34 SMPP codec with an async client and server SMPP 3.4 v d
async-sctp tokio SCTP over the Linux kernel stack, Rust and Python RFC 4960 v d

All MIT. The stack composes: MTP2 or M2PA under MTP3, M3UA or SUA for SIGTRAN transport, SCCP above that, TCAP above SCCP, then MAP, CAP or INAP as the application part.

Runtime

SIPhon is the SIP and media side, scriptable in Python.

  • siphon-sip: proxy, B2BUA and IMS platform. v pypi
  • siphon-rtp: RTP and SRTP media engine, transcoding, DTLS.
  • siphon-sigtran: SIGTRAN runtime over the crates above, M3UA and M2PA transport, MTP3 routing, SCCP.
  • siphon-smpp: SMPP addon, inbound and outbound, scriptable.
  • siphon-http: scriptable HTTP namespace.
  • caddy-siphon: Caddy with layer4, for fronting SIP over TLS and WSS.
  • pipecat-siphon: pipecat FrameSerializer for the media WebSocket.

Upstream

How I test this stuff

Codecs get validated against known-answer vectors from the spec, never round-trips. A shared encode/decode bug passes a round-trip happily, and then you find it on someone else's network.

Wireshark is the second opinion. Emit what our encoder produces, text2pcap it, and assert the dissector reads back the IEs we intended. It does not share our bugs, so it catches what a round-trip cannot. A field that comes back [Malformed] is our problem until proven otherwise.

No unwrap or expect outside tests. Clippy with -D warnings, green, before anything lands.

Elsewhere

realtime-telecom.nl · siphon-sip.org · LinkedIn

Pinned Loading

  1. siphon-project/siphon-sip siphon-project/siphon-sip Public

    SIPhon — High-performance SIP proxy, B2BUA, and IMS platform with Python scripting

    Rust 54 8

  2. Real-Time-Telecom-B-V/smpp34 Real-Time-Telecom-B-V/smpp34 Public

    Pure-Rust SMPP 3.4 codec, async client and server

    Rust 3

  3. siphon-project/siphon-rtp siphon-project/siphon-rtp Public

    SIPhon - RTP engine

    Rust 3

  4. siphon-project/pipecat-siphon siphon-project/pipecat-siphon Public

    A pipecat FrameSerializer for the siphon-rtp media WebSocket: binary L16 audio plus a JSON control envelope, with the negotiated wire rate honoured in both directions.

    Python 1

  5. siphon-project/siphon-sigtran siphon-project/siphon-sigtran Public

    SIGTRAN/SS7 runtime: M3UA/M2PA transport, MTP3 routing, SCCP GTT with E.214 conversion, content routing, and MAP/CAP dialogue termination on the published SS7 codec crates

    Rust 1

  6. siphon-project/siphon-smpp siphon-project/siphon-smpp Public

    SMPP 3.4 addon for siphon — a scriptable smpp namespace (inbound + outbound binds)

    Rust