SCCP (Signaling Connection Control Part)¶
The Signaling Connection Control Part (SCCP) provides extended routing, flow control, segmentation, connection-oriented service, and error correction facilities in SS7 networks.
Features¶
Addressing Capabilities¶
- Point Code (PC)
- Subsystem Number (SSN)
- Global Title (GT)
- Global Title Translation (GTT)
Service Types¶
- Connection-oriented (Class 2, 3)
- Connectionless (Class 0, 1)
- Message handling
- Flow control
Implementation¶
Basic Setup¶
import { SCCPClient } from '@telco-api/ss7/sccp';
const client = new SCCPClient({
localPointCode: '1-1-1',
remotePointCode: '2-2-2',
subsystemNumber: 7, // MAP SSN
networkIndicator: 'international',
routingIndicator: 'gt',
globalTitle: {
tt: 0,
np: 1,
nai: 4,
address: '12345'
}
});
Global Title Translation¶
const gtTranslation = {
incomingGT: {
tt: 0,
np: 1,
nai: 4,
address: '1234567890'
},
outgoingPC: '3-3-3',
outgoingSSN: 8,
outgoingGT: {
tt: 0,
np: 1,
nai: 4,
address: '0987654321'
}
};
await client.addGTTRule(gtTranslation);
Message Types¶
Connection-Oriented Messages¶
- Connection Request (CR)
- Connection Confirm (CC)
- Connection Refused (CREF)
- Released (RLSD)
- Release Complete (RLC)
Connectionless Messages¶
- Unitdata (UDT)
- Extended Unitdata (XUDT)
- Unitdata Service (UDTS)
- Extended Unitdata Service (XUDTS)
Protocol Classes¶
Class 0¶
- Basic connectionless service
- No flow control
- No sequencing
- No error recovery
Class 1¶
- Connectionless service
- Sequence control
- Return on error
Class 2¶
- Basic connection-oriented service
- Flow control
- Sequencing
- Error recovery
Class 3¶
- Flow control
- Sequencing
- Error recovery
- Expedited data
Error Handling¶
Error Types¶
- Routing failure
- Connection establishment failure
- Connection release failure
- Message type errors
- Protocol class errors
Error Response¶
try {
await client.sendMessage({
messageType: 'UDT',
calledParty: {
pointCode: '2-2-2',
subsystemNumber: 7,
globalTitle: {
tt: 0,
np: 1,
nai: 4,
address: '1234567890'
}
},
userData: Buffer.from('Hello World')
});
} catch (error) {
if (error instanceof SCCPError) {
console.error(`SCCP Error: ${error.code} - ${error.message}`);
// Handle specific error types
switch (error.code) {
case 'ROUTING_FAILURE':
// Handle routing failure
break;
case 'SUBSYSTEM_FAILURE':
// Handle subsystem failure
break;
// ... handle other error types
}
}
}
Management Functions¶
Subsystem Management¶
- Subsystem Allowed (SSA)
- Subsystem Prohibited (SSP)
- Subsystem Status Test (SST)
- Subsystem Out of Service Request (SOR)
- Subsystem Out of Service Grant (SOG)
Example: Subsystem Status Management¶
// Monitor subsystem status
client.on('subsystemStatus', (status) => {
console.log(`Subsystem ${status.ssn} status changed to ${status.state}`);
});
// Test subsystem availability
await client.testSubsystem({
pointCode: '2-2-2',
subsystemNumber: 7
});
Performance Optimization¶
Connection Pooling¶
const pool = new SCCPConnectionPool({
min: 5,
max: 20,
idleTimeoutMillis: 30000,
connectionTimeoutMillis: 3000
});
Load Balancing¶
const loadBalancer = new SCCPLoadBalancer({
nodes: [
{ pointCode: '2-2-2', weight: 1 },
{ pointCode: '3-3-3', weight: 1 }
],
algorithm: 'round-robin'
});
Monitoring¶
Metrics Collection¶
const metrics = await client.getMetrics();
console.log({
messagesSent: metrics.messagesSent,
messagesReceived: metrics.messagesReceived,
errors: metrics.errors,
activeConnections: metrics.activeConnections
});
Health Checks¶
const health = await client.checkHealth();
console.log({
status: health.status,
connectionState: health.connectionState,
lastError: health.lastError,
uptime: health.uptime
});
Reference¶
Standards¶
- ITU-T Q.711: Functional description of the SCCP
- ITU-T Q.712: Definition and function of SCCP messages
- ITU-T Q.713: SCCP formats and codes
- ITU-T Q.714: SCCP procedures