Deploy TTCN-3 to Europe โ ETSI ๐ช๐บ (Sophia Antipolis 2001), the Telecommunications Testing Standard Behind 5G and LTE, on EU Infrastructure in 2026
Every time your phone connects to a 5G network, the protocol stack it speaks โ from the radio layer up through SIP, IMS, and the core network โ has been formally verified against a test suite written in TTCN-3. Testing and Test Control Notation version 3 is the language of telecommunications conformance testing. It was created by the European Telecommunications Standards Institute (ETSI) in 2001, built by Nokia ๐ซ๐ฎ, Ericsson ๐ธ๐ช, Siemens ๐ฉ๐ช, and T-Systems ๐ฉ๐ช, and used by every major telecom equipment vendor and certification laboratory on Earth.
TTCN-3 is not a general-purpose programming language. It is a domain-specific language with one purpose: specifying, running, and recording the results of formal conformance tests for distributed communication systems. It has verdicts (pass, fail, inconclusive), parallel test components that communicate over typed ports, and a module system that lets you compose test suites from reusable components. It compiles to a runtime โ most commonly Eclipse TITAN, Ericsson's open-source implementation โ that can test a live network device or a simulated protocol stack with identical TTCN-3 code.
ETSI and the European Telecommunications Heritage
ETSI โ the European Telecommunications Standards Institute โ was founded in 1988 in Sophia Antipolis ๐ซ๐ท, the technology park near Nice, France. It was established by the European Commission to create a unified standards body for European telecommunications, replacing the patchwork of national standards that had fragmented the European market.
ETSI's membership reads as a roll-call of European technology: Nokia ๐ซ๐ฎ, Ericsson ๐ธ๐ช, Siemens ๐ฉ๐ช, Alcatel-Lucent ๐ซ๐ท, T-Systems ๐ฉ๐ช, Telefรณnica ๐ช๐ธ, Orange ๐ซ๐ท, Deutsche Telekom ๐ฉ๐ช. The standards it produces โ GSM, UMTS, LTE, 5G NR โ are the standards on which European (and global) mobile networks run.
TTCN-3 was ETSI's answer to a specific problem: how do you prove that a device conforms to a telecommunications standard? A standard like 3GPP LTE runs to thousands of pages. You need a formal language to express the tests, a runtime to execute them, and a verdict mechanism to record results. TTCN-2 (Tree and Tabular Combined Notation, 1993) had been used for this purpose but was too limited for modern distributed protocols. TTCN-3 was designed from scratch to handle:
- Parallel test components: testing a protocol between multiple parties simultaneously
- Multiple communication mechanisms: TCP, UDP, Ethernet, SCTP, SIP, Diameter โ TTCN-3 is transport-agnostic
- Modular composition: large test suites built from reusable test case libraries
- Static typing: catching test errors at compile time, not during test execution
TTCN-3 lineage:
TTCN-2 (ISO 9646-3, 1993) โ tabular test notation for OSI protocols
โ
TTCN-3 (ETSI ES 201 873, 2001) โ full programming language for distributed testing
Nokia ๐ซ๐ฎ + Ericsson ๐ธ๐ช + Siemens ๐ฉ๐ช + T-Systems ๐ฉ๐ช
Used for testing:
GSM (2G) โ first TTCN-3 test suites
UMTS (3G) โ IMS, SIP, MEGACO
LTE (4G) โ eNodeB, EPC, IMS, VoLTE
5G NR โ gNB, AMF, SMF, UPF conformance
Bluetooth โ HCI, L2CAP, RFCOMM
IPTV โ ETSI TS 102 034 (Hybrid broadband)
IPv6 โ ETSI IPv6 conformance suites
The TTCN-3 Language
TTCN-3 is a statically typed, concurrent language designed for black-box testing. A TTCN-3 program defines test cases, test components, and message templates. Test components communicate over typed ports and can be created dynamically during a test.
module HelloProtocol_TestSuite {
import from HelloProtocol_Types all;
// Port type: what messages can flow through this port
type port HelloPort message {
inout HelloRequest, HelloResponse, Bye;
}
// Test component: has a port connected to the system under test
type component HelloTC {
port HelloPort p;
}
// Message template: pattern matching for received messages
template HelloResponse tr_HelloResp(charstring p_greeting) := {
greeting := p_greeting,
timestamp := ? // wildcard: any timestamp is acceptable
}
// Test case: connects component to SUT, sends request, checks response
testcase tc_HelloNormal() runs on HelloTC system HelloTC {
var HelloResponse vl_resp;
// Connect to system under test
map(self:p, system:p);
// Send request
p.send(HelloRequest:{ name := "Europa" });
// Wait for response with timeout
alt {
[] p.receive(tr_HelloResp("Hello, Europa!")) {
// Pattern matched โ test passes
setverdict(pass);
}
[] p.receive {
// Wrong message received
setverdict(fail, "Unexpected response");
}
[] timer T.timeout {
setverdict(fail, "Timeout waiting for response");
}
}
// Disconnect
unmap(self:p, system:p);
}
}
The critical features visible in this example:
- Typed ports:
HelloPortcan only carryHelloRequest,HelloResponse, orBye. Sending the wrong message type is a compile error. - Template matching:
tr_HelloResp("Hello, Europa!")is a pattern. The?wildcard matches any timestamp value. If the received message matches the template, the verdict is set topass. altstatement: the blocking receive operation. TTCN-3's concurrency model is based on synchronous message passing with alternatives โ if multiple messages arrive, the first matching branch executes.setverdict: the verdict accumulates. A test case that never callssetverdict(pass)getsinconclusive. A test case that callssetverdict(fail)cannot be recovered topass.
// Parallel test components: testing a 3-party SIP call
module SIP_CallSetup_Tests {
import from SIP_Types all;
import from SIP_Templates all;
// Three components: caller, callee, proxy
type component SIP_CT {
port SIP_Port sip_p;
var charstring v_localUri;
}
// Test case with parallel components
testcase tc_BasicCallSetup() runs on SIP_CT system SIP_CT {
var SIP_CT vc_caller, vc_callee;
// Create parallel components
vc_caller := SIP_CT.create("Caller") alive;
vc_callee := SIP_CT.create("Callee") alive;
// Start components (parallel execution)
vc_caller.start(f_CallerBehaviour("sip:alice@etsi.fr"));
vc_callee.start(f_CalleeB behaviour("sip:bob@ericsson.se"));
// Wait for all components to complete
all component.done;
// Collect verdicts from parallel components
if (vc_caller.verdict == pass and vc_callee.verdict == pass) {
setverdict(pass);
} else {
setverdict(fail);
}
}
}
This parallel component model is what makes TTCN-3 suitable for testing distributed protocols. An LTE conformance test might spawn dozens of test components โ UE, eNodeB, MME, SGW, PGW โ each executing independently, exchanging messages through typed ports, with the main test case collecting verdicts from all components at the end.
Eclipse TITAN โ Ericsson's Open-Source TTCN-3 Runtime
Eclipse TITAN is the primary open-source implementation of TTCN-3. It was developed by Ericsson ๐ธ๐ช in Stockholm over two decades โ first as an internal tool for testing Ericsson's own LTE infrastructure, then released as open source under the Eclipse Public License in 2016.
TITAN compiles TTCN-3 to C++ and provides:
- A complete TTCN-3 compiler (
ttcn3_compiler) - A test executor (
mctr_cliโ main controller) that manages parallel test components - A set of protocol adapters (TRI: Test Runtime Interface) for TCP, UDP, IPL4, SIP, Diameter, SCTP
- A log analyser and verdict reporting tool
# Eclipse TITAN โ EU deployment via sota.io
FROM ubuntu:22.04
# Install TITAN from Ubuntu package (Ericsson-maintained)
RUN apt-get update && apt-get install -y \
eclipse-titan \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /test
# Copy TTCN-3 test suite
COPY . .
# Compile TTCN-3 to C++
RUN ttcn3_compiler *.ttcn3 && make
# Run test suite (mctr_cli = main controller)
CMD ["mctr_cli", "test_config.cfg", "HelloProtocol_TestSuite"]
The test results โ verdicts, message traces, timing data โ can be stored in a PostgreSQL database for trend analysis, CI/CD integration, and compliance audit trails.
NIS2, CRA, and Compliance Testing Infrastructure
The EU NIS2 Directive (2022) requires operators of essential services โ telecom providers, cloud infrastructure, digital service providers โ to implement systematic security testing as part of their risk management. Article 21 specifically requires "security testing" and "incident reporting procedures."
The EU Cyber Resilience Act (2024) requires manufacturers of connected products to perform conformance testing before CE marking. For telecommunications equipment, this means TTCN-3 test suites: the standard certification laboratories (Deutsche Telekom Innovation Laboratories ๐ฉ๐ช, Tele2 Labs ๐ธ๐ช, Orange Labs ๐ซ๐ท) all use TTCN-3 as their test specification language.
TTCN-3 and EU compliance framework:
NIS2 Article 21(2)(e): "security testing"
โ TTCN-3 provides formal, reproducible, auditable test results
โ Test verdicts are machine-readable (XML/ASN.1 log format)
โ Test suites can be version-controlled, reviewed, certified
EU Cyber Resilience Act (2024): conformance testing
โ ETSI EN 303 645 (IoT security) โ TTCN-3 test suites available
โ 3GPP TS 34.229 (LTE/5G conformance) โ all written in TTCN-3
โ IMS Conformance Test Specification โ ETSI TS 186 011
GDPR Article 32: technical security measures
โ Protocol fuzzing (TTCN-3 supports template wildcards for fuzzing)
โ Session security (SIP/TLS test suites)
โ Data minimisation testing (verify no unnecessary data in protocol headers)
Running TTCN-3 test infrastructure on EU servers means all protocol traces, test verdicts, and compliance records stay within GDPR jurisdiction โ not on a US cloud provider where CLOUD Act subpoenas could compel disclosure.
Deploying TTCN-3 Test Infrastructure to European Infrastructure
Eclipse TITAN runs as a server process and integrates naturally with CI/CD pipelines. A typical TTCN-3 deployment on sota.io consists of:
- A TITAN compiler service that compiles TTCN-3 modules to C++ on push
- A test executor service that runs test cases against protocol endpoints
- A PostgreSQL database that stores test results, verdicts, and timing data
- A result dashboard (optional) that queries the database for trend analysis
# Deploy TTCN-3 test infrastructure to EU infrastructure
npm install -g sota
# Deploy TITAN test executor
sota deploy --name ttcn3-executor --region eu-central-1
# Provision managed PostgreSQL for test results (GDPR-compliant, EU-resident)
sota db create --name ttcn3-results-db --region eu-central-1
# Connect test executor to results database
sota env set DATABASE_URL=$(sota db url ttcn3-results-db)
# Configure test target (SIP proxy, 5G core, IMS node)
sota env set SUT_HOST=sip.your-telecom-lab.eu
sota env set SUT_PORT=5060
# Deploy and run
sota deploy
sota logs --follow
Example PostgreSQL schema for test results:
-- EU-resident test result storage
CREATE TABLE test_runs (
id SERIAL PRIMARY KEY,
suite_name VARCHAR(255) NOT NULL,
started_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
completed_at TIMESTAMPTZ,
region VARCHAR(50) DEFAULT 'eu-central-1'
);
CREATE TABLE test_verdicts (
id SERIAL PRIMARY KEY,
run_id INTEGER REFERENCES test_runs(id),
testcase VARCHAR(255) NOT NULL,
verdict VARCHAR(20) CHECK (verdict IN ('pass','fail','inconclusive','error','none')),
duration_ms INTEGER,
log_data JSONB
);
-- NIS2 compliance: audit trail of all test executions
CREATE TABLE compliance_audit (
id SERIAL PRIMARY KEY,
run_id INTEGER REFERENCES test_runs(id),
standard VARCHAR(100), -- e.g. 'ETSI ES 201 873', 'NIS2 Article 21'
auditor VARCHAR(100),
signed_at TIMESTAMPTZ
);
TTCN-3 Today: From 2G to 5G
TTCN-3 has been the certification language for every generation of mobile network:
- GSM (2G): ETSI created the first TTCN-3 test suites to certify GSM handsets and base stations across the EU single market
- UMTS (3G): 3GPP adopted TTCN-3 as the standard testing language; Nokia ๐ซ๐ฎ and Ericsson ๐ธ๐ช wrote millions of lines of TTCN-3 for UMTS conformance
- LTE (4G): TTCN-3 test suites for eNodeB, EPC (Evolved Packet Core), IMS, and VoLTE cover hundreds of thousands of test cases
- 5G NR: 3GPP Release 15 (2018) specified TTCN-3 test suites for gNB (gNodeB), AMF (Access and Mobility Management Function), and UPF (User Plane Function)
The language itself has been updated:
- TTCN-3 Core Language (ES 201 873-1): fundamental language specification
- TTCN-3 Operational Semantics (ES 201 873-2): formal execution model
- TTCN-3 TCI (ES 201 873-6): Test Component Interface for TITAN
- TTCN-3 TRI (ES 201 873-5): Test Runtime Interface for communication adapters
The 3GPP (3rd Generation Partnership Project), which standardises mobile protocols, operates out of Sophia Antipolis ๐ซ๐ท โ the same technology park as ETSI. The interaction between ETSI (which owns TTCN-3) and 3GPP (which writes the test suites in TTCN-3) has made the combination of Sophia Antipolis ๐ซ๐ท, Stockholm ๐ธ๐ช, Espoo ๐ซ๐ฎ, and Munich ๐ฉ๐ช the de facto centre of global telecommunications testing.
TTCN-3 standardisation chain (all European):
ETSI ๐ช๐บ (Sophia Antipolis ๐ซ๐ท) โ TTCN-3 language standard
โ provides testing language to
3GPP ๐ช๐บ (Sophia Antipolis ๐ซ๐ท) โ 5G/LTE protocol standards
โ written as TTCN-3 test suites by
Nokia ๐ซ๐ฎ + Ericsson ๐ธ๐ช + Siemens ๐ฉ๐ช + Deutsche Telekom ๐ฉ๐ช
โ executed by
Eclipse TITAN ๐ธ๐ช (Ericsson open source, 2016)
โ deployed to
EU infrastructure (sota.io โ GDPR-compliant, EU data residency)
Deploy TTCN-3 on sota.io โ EU Infrastructure, Zero DevOps
sota.io is the EU-native PaaS for test infrastructure like Eclipse TITAN:
- Docker-native: TITAN compiles to C++ and runs as a containerised server; sota.io deploys any Docker container
- EU data residency: test results, protocol traces, and compliance records stored in Germany/Netherlands/Finland
- GDPR compliance: no US data transfers; standard contractual clauses by default
- Managed PostgreSQL: store TTCN-3 verdicts and audit trails in a managed, EU-resident database
- Automatic TLS: HTTPS for test management APIs and result dashboards
- Log streaming: follow TITAN executor output and test verdicts in real time
# Complete TTCN-3 test infrastructure on sota.io
sota deploy --name ttcn3-titan --region eu-central-1
sota db create --name ttcn3-db --region eu-central-1
sota env set DATABASE_URL=$(sota db url ttcn3-db)
sota env set TITAN_CONFIG=/app/test_config.cfg
sota logs --follow
ETSI's testing language โ built by Nokia ๐ซ๐ฎ, Ericsson ๐ธ๐ช, Siemens ๐ฉ๐ช, and T-Systems ๐ฉ๐ช to certify the protocols that connect Europe โ runs best on European infrastructure. Protocol traces, test verdicts, and NIS2 compliance audit trails belong in EU data centres, under GDPR, not on US cloud platforms.
Deploy TTCN-3 test infrastructure on EU infrastructure. GDPR-compliant, managed PostgreSQL, zero DevOps.
TTCN-3 (Testing and Test Control Notation version 3) is standardised by ETSI as ES 201 873 (first published 2001). Eclipse TITAN, Ericsson's open-source TTCN-3 implementation, is available at github.com/eclipse/titan.core. ETSI is headquartered in Sophia Antipolis ๐ซ๐ท.