Skip to content

Commit 17bd345

Browse files
committed
Add end-to-end SS7 traffic evidence
1 parent a8c7c1f commit 17bd345

30 files changed

Lines changed: 2040 additions & 32 deletions

.gitattributes

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
*.sh text eol=lf
2+
*.c text eol=lf
3+
docs/evidence/** -text

README.md

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ Repository: <https://github.com/araditc/sigtran.net>
1515
SIGTRAN.NET is currently in a **public release-candidate** track. Version
1616
`1.0.0-rc.1` has been published and restored from NuGet.org.
1717

18-
Native Linux SCTP and external SCTP/M3UA peer evidence are retained and now feed
19-
the SDK readiness APIs through a common verification catalog. Stateful M3UA,
20-
M2PA, SCCP, TCAP, and MAP SMS runtimes are available. Full stable-product
21-
readiness remains gated on end-to-end independent-peer evidence,
22-
operator-sized performance evidence, trusted signing, and stable release
23-
execution.
18+
Native Linux SCTP, external SCTP/M3UA, and cross-implementation full-stack MAP
19+
SMS traffic evidence are retained. Stateful M3UA, M2PA, SCCP, TCAP, and MAP SMS
20+
runtimes are available. Full stable-product readiness remains gated on
21+
operator/vendor profile interoperability, independent M2PA evidence,
22+
operator-sized performance evidence, production operations, trusted signing,
23+
and stable release execution.
2424

2525
For release history and governance, see:
2626

@@ -53,6 +53,8 @@ The current RC engineering track focuses on:
5353
reconnect, metrics, and graceful-shutdown evidence.
5454
- External SCTP/M3UA peer validation with PCAP, SDK trace, peer log, and TShark
5555
comparison evidence.
56+
- Cross-implementation MAP SMS traffic through TCAP, SCCP, M3UA, and native SCTP
57+
with retained PCAP, traces, field comparison, and digest evidence.
5658
- Stateful SCCP, TCAP, and MAP SMS service layers.
5759
- M2PA as a parallel MTP2 path.
5860
- Byte-level tests and protocol validation.
@@ -69,9 +71,9 @@ The current RC engineering track focuses on:
6971
| M3UA | Codec, routing, ASP state, long-running `IMtp3Network` runtime, bounded queues, heartbeat supervision, reconnect/failover hooks, diagnostics, and external peer evidence are available. |
7072
| SCTP | Native Linux SCTP evidence validates stream id, PPID, receive metadata, reconnect, metrics, graceful shutdown, and external peer traffic. |
7173
| M2PA | RFC 4165 codec and stateful `IMtp2Link` runtime provide alignment, proving, 24-bit sequencing, acknowledgement, retrieval retention, congestion handling, processor-outage recovery, metrics, and transport replacement. Independent peer evidence remains. |
72-
| SCCP | Stateful `ISccpService` supports UDT/XUDT/LUDT, GT translation, routing, bounded segmentation/reassembly, UDTS return policy, metrics, cancellation, and MTP3 receive ownership. External peer evidence remains. |
73-
| TCAP | Concurrent `TcapDialogueManager` provides transaction correlation, Begin/Continue/End/Abort, tracked invokes, Result/Error/Reject outcomes, shared timeout scanning, bounded queues, cleanup, snapshots, and metrics. External peer evidence remains. |
74-
| MAP | Stateful client/server SMS workflows cover SRI-SM, MO/MT ForwardSM, ReportSM-DeliveryStatus, and AlertServiceCentre with operation profiles, result/error correlation, typed dispatch, cancellation, and metrics. Independent peer evidence remains. |
74+
| SCCP | Stateful `ISccpService` supports UDT/XUDT/LUDT, GT translation, routing, bounded segmentation/reassembly, UDTS return policy, metrics, cancellation, and MTP3 receive ownership. Independent C-peer UDT evidence is retained; operator/vendor profile evidence remains. |
75+
| TCAP | Concurrent `TcapDialogueManager` provides transaction correlation, Begin/Continue/End/Abort, tracked invokes, Result/Error/Reject outcomes, shared timeout scanning, bounded queues, cleanup, snapshots, and metrics. Independent C-peer transaction evidence is retained; operator/vendor profile evidence remains. |
76+
| MAP | Stateful client/server SMS workflows cover SRI-SM, MO/MT ForwardSM, ReportSM-DeliveryStatus, and AlertServiceCentre with operation profiles, result/error correlation, typed dispatch, cancellation, and metrics. All five operations have cross-implementation repository-profile evidence; operator/vendor profile evidence remains. |
7577
| Tooling | Byte-level tests, protocol diagnostics, trace comparison, and interoperability evidence are core project principles. |
7678

7779
---
@@ -161,6 +163,7 @@ Start here:
161163
- [Phase 50 TCAP dialogue manager](docs/PHASE50_TCAP_DIALOGUE_MANAGER.md)
162164
- [MAP SMS service](docs/MAP.md)
163165
- [Phase 51 MAP SMS service](docs/PHASE51_MAP_SMS_SERVICE.md)
166+
- [Phase 52 end-to-end SS7 traffic lab](docs/PHASE52_END_TO_END_SS7_TRAFFIC_LAB.md)
164167
- [Interoperability and tooling](docs/INTEROPERABILITY.md)
165168
- [Compatibility policy](docs/COMPATIBILITY.md)
166169
- [Quality and contribution rules](docs/QUALITY.md)
@@ -210,16 +213,16 @@ Stable production support requires:
210213
- External SIGTRAN peer interoperability evidence.
211214
- Independent M2PA peer evidence.
212215
- Stateful SCCP, TCAP, and MAP SMS service validation.
213-
- End-to-end protocol trace validation.
216+
- Operator/vendor-profile end-to-end protocol trace validation.
214217
- Operator-sized capacity and resilience evidence.
215218
- Trusted package signing and provenance.
216219
- Stable package publication evidence.
217220
- Stable API lifecycle validation.
218221
- Security, release, compliance, and operations review.
219222

220-
The Linux SCTP and external M3UA evidence gates are complete. Until the remaining
221-
gates are complete, the package should be treated as release-candidate
222-
infrastructure for controlled integrations.
223+
The Linux SCTP, external M3UA, and repository-profile full-stack traffic gates
224+
are complete. Until the remaining gates are complete, the package should be
225+
treated as release-candidate infrastructure for controlled integrations.
223226

224227
---
225228

docs/COMMERCIAL_READINESS_REPORT.md

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,25 @@ retained manifests instead of stale hard-coded flags.
3232
reconnect, queue metrics, and graceful shutdown validation. PCAP and SDK trace
3333
SHA-256 values are retained in
3434
`docs/evidence/PHASE45_NATIVE_SCTP_20260701T103951Z.json`.
35+
- Cross-implementation full-stack run `end-to-end-20260724T085858Z` passed on
36+
WSL2 Linux with native SCTP. The .NET endpoint sent five MAP SMS operations
37+
through TCAP, SCCP, and M3UA; the independent C/lksctp peer parsed five
38+
invokes and built five results. The retained PCAP contains 23 SCTP packets
39+
and ten M3UA DATA messages. The complete bundle is under
40+
`docs/evidence/PHASE52_END_TO_END_20260724T085858Z/`.
3541

3642
## Remaining Production Blockers
3743

3844
- The current benchmark is real Linux SCTP peer traffic evidence, but it is single-host loopback. Do not use it for broad operator capacity claims until an operator-sized deployment benchmark is retained.
3945
- Package publication evidence is closed for the public RC prerelease. Stable commercial release gates are foundation-complete, but live stable publication still requires retained stable release evidence, a completed protected stable publication run, and verified stable NuGet publication evidence.
4046
- Public/stable signing must use the organization's approved trusted certificate in the protected release environment; the current signing evidence is internal self-signed RC evidence.
4147
- Hosted GitHub provenance/SBOM attestations were skipped for dry-run and prerelease because private repository or organization attestation persistence can require a supported plan or public repository. These runs retained local provenance markers; stable runs keep hosted attestation reserved for the protected stable gate.
42-
- M3UA and M2PA now provide stateful runtime implementations through
43-
`IMtp3Network` and `IMtp2Link`. Independent external M2PA peer evidence remains
44-
part of the end-to-end traffic lab gate.
45-
- SCCP, TCAP, and MAP SMS now provide stateful runtime implementations with
46-
routing, reassembly, transaction correlation, typed application operations,
47-
Result/Error/Reject outcomes, timeout handling, and cleanup. The complete
48-
stack still requires independent end-to-end peer evidence.
48+
- M3UA and M2PA provide stateful runtime implementations through `IMtp3Network`
49+
and `IMtp2Link`. Independent external M2PA peer evidence remains.
50+
- SCCP, TCAP, and MAP SMS provide stateful runtime implementations and now have
51+
cross-implementation traffic evidence for the repository profile. A separate
52+
operator or vendor profile run is still required before broad SS7 network
53+
interoperability can be claimed.
4954
- The retained benchmark is not an operator-sized multi-host capacity or soak
5055
result.
5156

docs/INTEROPERABILITY.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,24 @@ bool productionReady = report.IsProductionReady;
104104

105105
The foundation gate is complete when trace formatting, conformance vectors, built-in vectors, simulator scripts, MAP SMS flows, transport samples, sample catalog, and CI profile are all present.
106106

107-
Production readiness remains false until external interoperability lab evidence is captured against real peer stacks and packet traces.
107+
Repository-profile cross-implementation evidence is retained, but production
108+
readiness remains false until operator/vendor-profile interoperability and the
109+
remaining release gates are complete.
108110

109111
Phase 7 adds `SigtranInteropEvidenceRegistry` so those lab artifacts can be tracked as stable release evidence instead of free-form notes.
112+
113+
## Full-Stack Traffic Lab
114+
115+
`Sigtran.NET.EndToEndLab` composes the implemented MAP SMS, TCAP, SCCP, M3UA,
116+
and native SCTP layers. `tools/interop-peer/sigtran_reference_peer.c` is an
117+
independent C/lksctp peer that parses each layer and constructs response bytes
118+
without linking to SDK code.
119+
120+
Run `end-to-end-20260724T085858Z` passed with five MAP invokes, five MAP results,
121+
ten M3UA DATA messages, and 23 SCTP packets. Its PCAP, logs, configuration,
122+
trace, field export, comparison, report, and digests are retained under
123+
`docs/evidence/PHASE52_END_TO_END_20260724T085858Z/`.
124+
125+
See [Phase 52](PHASE52_END_TO_END_SS7_TRAFFIC_LAB.md) for execution and evidence
126+
boundaries. This proves the repository profile across independent
127+
implementations; it does not replace operator/vendor interoperability.

docs/MAP.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,5 +240,7 @@ extensions, the TCAP facade, operation profiles, correlated client workflows,
240240
typed server dispatch, and operational controls.
241241

242242
The in-process paired-stack tests exercise all five workflows and MAP error
243-
mapping. Production readiness remains false until independent end-to-end MAP
244-
SMS traces and operator-profile validation are retained.
243+
mapping. Phase 52 adds independent C-peer traffic for all five operations and
244+
retains PCAP and trace comparison evidence for the repository profile.
245+
Production readiness remains false until operator-profile validation is
246+
retained.
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# Phase 52 - End-To-End SS7 Traffic Lab
2+
3+
Phase 52 adds an executable cross-implementation lab for carrying MAP SMS
4+
operations through every implemented layer:
5+
6+
`MAP SMS -> TCAP -> SCCP -> M3UA -> native Linux SCTP`
7+
8+
The SDK endpoint is .NET code. The reference endpoint is an independent C
9+
program that links only to Linux lksctp and constructs its own response bytes.
10+
11+
## Completed Units
12+
13+
| Unit | Capability | Status |
14+
| --- | --- | --- |
15+
| 1 | Executable .NET full-stack lab endpoint | Complete |
16+
| 2 | Independent C SCTP/M3UA reference peer | Complete |
17+
| 3 | SCTP stream and PPID receive validation | Complete |
18+
| 4 | M3UA ASPUP and ASPACTIVE handshake | Complete |
19+
| 5 | SCCP UDT parsing and response construction | Complete |
20+
| 6 | TCAP transaction and invoke correlation | Complete |
21+
| 7 | Five MAP SMS request/result exchanges | Complete |
22+
| 8 | PCAP, logs, trace, TShark, and comparison capture | Complete |
23+
| 9 | SHA-256 evidence manifest and retained bundle | Complete |
24+
| 10 | Runtime shutdown regression, docs, build, test, and pack | Complete |
25+
26+
## Run The Lab
27+
28+
The runner requires Linux kernel SCTP, lksctp headers, GCC, .NET 10,
29+
`tcpdump`, and `tshark`.
30+
31+
```bash
32+
SIGTRAN_ARTIFACT_ROOT="$HOME/sigtran-lab/artifacts" \
33+
bash scripts/run-end-to-end-ss7-lab.sh
34+
```
35+
36+
When passwordless sudo is unavailable, provide the password only in the process
37+
environment:
38+
39+
```bash
40+
SIGTRAN_SUDO_PASSWORD="<runtime-secret>" \
41+
SIGTRAN_ARTIFACT_ROOT="$HOME/sigtran-lab/artifacts" \
42+
bash scripts/run-end-to-end-ss7-lab.sh
43+
```
44+
45+
The script never writes the sudo password to configuration or evidence files.
46+
47+
## Validation Contract
48+
49+
The run passes only when all of the following are true:
50+
51+
- SDK and peer exit successfully.
52+
- The SDK records five successful MAP outcomes.
53+
- The peer parses five MAP invokes and emits five MAP results.
54+
- PCAP contains at least ten M3UA DATA messages.
55+
- All retained artifacts receive SHA-256 digest coverage.
56+
57+
The validated operations are:
58+
59+
- `sendRoutingInfoForSM`
60+
- `mo-ForwardSM`
61+
- `mt-ForwardSM`
62+
- `reportSM-DeliveryStatus`
63+
- `alertServiceCentre`
64+
65+
## Passing Evidence
66+
67+
Run `end-to-end-20260724T085858Z` passed on WSL2 kernel
68+
`6.18.33.2-microsoft-standard-WSL2`.
69+
70+
| Signal | Observed |
71+
| --- | ---: |
72+
| SCTP packets | 23 |
73+
| M3UA DATA messages | 10 |
74+
| SDK MAP outcomes | 5 |
75+
| Peer MAP invokes | 5 |
76+
| Peer MAP results | 5 |
77+
78+
The retained bundle is under
79+
`docs/evidence/PHASE52_END_TO_END_20260724T085858Z/` and includes the PCAP,
80+
peer and capture logs, SDK JSONL trace, generated configuration, TShark field
81+
export, comparison report, summary, and digest manifest.
82+
83+
## Evidence Boundary
84+
85+
This run is independent cross-implementation evidence for the protocol profile
86+
currently implemented by this repository. The C peer does not share SDK codec
87+
code and validates every envelope before constructing its response.
88+
89+
It is not evidence of interoperability with an operator STP, SMSC, HLR, vendor
90+
stack, or a separately maintained standards implementation. Those environments
91+
can impose profile, addressing, ASN.1, network-management, and operational
92+
requirements that this local peer does not cover. Stable operator-grade claims
93+
therefore remain gated on an external operator or vendor profile run.

docs/PHASE52_SUMMARY.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# Phase 52 Summary - End-To-End SS7 Traffic Lab
2+
3+
Phase 52 is complete for repository-profile cross-implementation traffic.
4+
5+
## Delivered
6+
7+
- Added `Sigtran.NET.EndToEndLab`, which composes the public layer contracts from
8+
MAP SMS down to native Linux SCTP.
9+
- Added an independent C peer for SCTP, M3UA, SCCP UDT, TCAP, and the five
10+
supported MAP SMS operations.
11+
- Added a repeatable Linux runner with compilation, packet capture, trace
12+
collection, TShark decoding, comparison, reporting, and digest generation.
13+
- Fixed graceful M3UA shutdown when cancellation occurs during reconnect delay.
14+
- Added regression coverage for reconnect-delay shutdown and startup
15+
cancellation.
16+
- Retained passing run `end-to-end-20260724T085858Z` with 23 SCTP packets, ten
17+
M3UA DATA messages, five MAP invokes, and five MAP results.
18+
- Updated README, interoperability guidance, protocol docs, roadmap, phase
19+
index, and production readiness.
20+
21+
## Readiness Position
22+
23+
The SDK can send and receive real native SCTP traffic through its implemented
24+
M3UA, SCCP, TCAP, and MAP SMS service layers against an independently compiled
25+
peer. Operator or vendor interoperability, independent M2PA evidence,
26+
operator-sized performance, production operations, and stable release identity
27+
remain separate gates.

docs/PHASE_INDEX.md

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ This index is the complete phase map for Sigtran.NET. It links each phase to the
5656
| 49 | SCCP stateful service layer | [Phase 49 SCCP Stateful Service](PHASE49_SCCP_STATEFUL_SERVICE.md), [Phase 49 Summary](PHASE49_SUMMARY.md), [SCCP](SCCP.md) | Implementation complete; external peer evidence pending |
5757
| 50 | TCAP dialogue manager | [Phase 50 TCAP Dialogue Manager](PHASE50_TCAP_DIALOGUE_MANAGER.md), [Phase 50 Summary](PHASE50_SUMMARY.md), [TCAP](TCAP.md) | Implementation complete; external peer evidence pending |
5858
| 51 | MAP SMS service | [Phase 51 MAP SMS Service](PHASE51_MAP_SMS_SERVICE.md), [Phase 51 Summary](PHASE51_SUMMARY.md), [MAP SMS](MAP.md) | Implementation complete; independent peer evidence pending |
59-
| 52 | End-to-end SS7 traffic lab | Planned | Pending |
59+
| 52 | End-to-end SS7 traffic lab | [Phase 52 End-To-End SS7 Traffic Lab](PHASE52_END_TO_END_SS7_TRAFFIC_LAB.md), [Phase 52 Summary](PHASE52_SUMMARY.md), [Interoperability](INTEROPERABILITY.md) | Complete for repository-profile cross-implementation traffic; operator/vendor profile evidence remains |
6060
| 53 | Operator-sized performance and resilience | Planned | Pending |
6161
| 54 | Production operations package | Planned | Pending |
6262
| 55 | Stable release execution | Planned | Pending |
@@ -65,7 +65,8 @@ This index is the complete phase map for Sigtran.NET. It links each phase to the
6565

6666
The retained verification catalog now reports native Linux SCTP, external SCTP
6767
peer traffic, M3UA interoperability, RC SBOM/provenance/API baseline, and
68-
prerelease publication evidence. Full product readiness remains blocked on the
69-
end-to-end M2PA and higher-layer independent peer traffic, operator-sized
70-
performance, production operations, a
71-
trusted release identity, and protected stable publication.
68+
prerelease publication evidence. Phase 52 also retains cross-implementation
69+
M3UA/SCCP/TCAP/MAP SMS traffic evidence. Full product readiness remains blocked
70+
on operator/vendor profile validation, independent M2PA peer traffic,
71+
operator-sized performance, production operations, a trusted release identity,
72+
and protected stable publication.

docs/SCCP.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -216,4 +216,6 @@ SccpReadinessSnapshot report = SccpReadiness.GetReport();
216216
bool foundationReady = report.FoundationReady;
217217
```
218218

219-
Production readiness remains false until external SCCP interoperability vectors and network trace validation are added.
219+
Phase 52 retains independent C-peer SCCP UDT request/response traffic for the
220+
repository profile. Production readiness remains false until operator/vendor
221+
SCCP profile and network trace validation is retained.

docs/SDK_ROADMAP.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -477,15 +477,22 @@ five supported SMS operations through `ITcapComponentDialogues`.
477477
application contexts, and timeouts. `MapSmsServer` performs typed inbound
478478
dispatch with Result/Error/Reject responses, cancellation, validation, and
479479
metrics. Paired-stack tests cover every operation and MAP error mapping.
480-
Independent end-to-end peer evidence remains in Phase 52.
480+
Phase 52 adds cross-implementation evidence for all five operations;
481+
operator/vendor profile validation remains.
481482

482483
## Phase 52 - End-To-End SS7 Traffic Lab
483484

484485
- Execute MAP over TCAP over SCCP over M3UA over SCTP against an independent peer.
485486
- Retain PCAP, peer log, SDK trace, configuration, field comparison, report, and
486487
SHA-256 manifests.
487488

488-
Status: Pending.
489+
Status: Complete for repository-profile cross-implementation traffic. The .NET
490+
lab endpoint completed all five supported MAP SMS operations against an
491+
independently compiled C/lksctp peer. Passing run
492+
`end-to-end-20260724T085858Z` retained 23 SCTP packets, ten M3UA DATA messages,
493+
five peer-parsed MAP invokes, five peer-built results, SDK trace, configuration,
494+
TShark fields, comparison, report, and SHA-256 manifests. Operator/vendor
495+
profile validation and independent M2PA traffic remain separate gates.
489496

490497
## Phase 53 - Operator-Sized Performance And Resilience
491498

0 commit comments

Comments
 (0)