INAP (Intelligent Network Application Part)¶
Overview¶
INAP is a signaling protocol used in Intelligent Networks (IN) to enable advanced service logic and control. It provides a framework for implementing complex telecommunications services.
Key Features¶
- Service switching and control
- Number translation services
- Advanced call routing
- Toll-free services
- Premium rate services
- Virtual private networks
Protocol Capabilities¶
| Capability Set | Features | Applications |
|---|---|---|
| CS-1 | Basic call control | Number translation |
| CS-2 | Enhanced services | Call screening |
| CS-3 | Advanced routing | VPN services |
| CS-4 | Multimedia support | Unified messaging |
Common Operations¶
Initial DP Operation¶
# Send Initial Detection Point
response = client.inap.send_initial_dp(
service_key=100,
called_party_number="18001234567",
calling_party_number="441234567890",
call_reference="CR123456"
)
Number Translation¶
# Perform number translation
response = client.inap.translate_number(
original_number="18001234567",
service_type="TOLLFREE",
location_info={
"country": "US",
"state": "CA"
}
)
Vendor Integration¶
Nokia Siemens SSP¶
- Product Line: Nokia NetAct IN Platform
- Core Components:
- Service Switching Function (SSF)
- Call Control Function (CCF)
- Specialized Resource Function (SRF)
- Key Features:
- Complete IN CS-1/2/3/4 support
- High-performance call processing
- Advanced service triggering
- Real-time monitoring
- Configuration Example:
nokia_ssp_config: ssf: trigger_detection_points: ["collected_info", "analyzed_info"] max_triggers_per_call: 5 ccf: max_concurrent_calls: 10000 call_context_timeout: 300 srf: announcement_path: "/var/nokia/announcements" recording_enabled: true
Ericsson Service Control Point¶
- Product Line: Ericsson IN Solutions
- Platform Capabilities:
- Service Data Point integration
- Number portability support
- Toll-free services
- Premium rate services
- Advanced Features:
- Load balancing with active-active setup
- Geographic redundancy
- Real-time statistics
- Service creation toolkit
- Configuration Example:
ericsson_scp_config: platform: redundancy_mode: active_active geo_redundancy: true services: number_portability: cache_size: 1000000 refresh_interval: 3600 toll_free: lookup_timeout: 500 fallback_enabled: true
Huawei IN Services¶
- Product Line: Huawei IN Solution
- Architecture:
- Distributed microservices
- Container-based deployment
- Cloud-native design
- API-first approach
- Service Features:
- Flexible service composition
- Real-time charging
- Advanced routing
- Analytics dashboard
- Configuration Example:
huawei_in_config: deployment: mode: kubernetes replicas: 3 auto_scaling: min_pods: 2 max_pods: 10 services: charging: mode: real_time timeout: 500 routing: strategy: least_cost fallback_routes: 2
ZTE IN Platform¶
- Product Line: ZTE IMS/IN Solution
- Platform Features:
- Service Logic Program Environment
- Integrated Service Creation
- Performance Analytics
- Multi-protocol Support
- Integration Options:
- SIGTRAN/SS7
- Diameter
- REST APIs
- SOAP Web Services
- Configuration Example:
zte_in_config: service_logic: max_instances: 5000 script_path: "/opt/zte/scripts" protocols: sigtran_enabled: true diameter_enabled: true monitoring: metrics_interval: 60 alert_threshold: 90
Integration Best Practices¶
Nokia Integration¶
-
SSF Configuration
# Configure Service Switching Function ssf_config = nokia_client.configure_ssf( trigger_criteria=[ { "type": "collected_info", "service_key": 100, "criteria": { "prefix": "800", "min_digits": 10 } } ], monitoring={ "enable_stats": True, "log_level": "INFO" } ) -
Service Resource Setup
# Configure Specialized Resource Function srf_config = nokia_client.configure_srf( announcements={ "welcome": "/var/nokia/ann/welcome.wav", "goodbye": "/var/nokia/ann/goodbye.wav" }, recording={ "enabled": True, "format": "wav", "path": "/var/recordings" } )
Ericsson Integration¶
-
Number Portability
# Configure number portability service np_service = ericsson_client.setup_number_portability( database_config={ "type": "redis", "host": "localhost", "port": 6379 }, cache_config={ "size": 1000000, "ttl": 3600 } ) -
Load Balancing
# Configure load balancing lb_config = ericsson_client.configure_load_balancing( nodes=[ {"host": "scp1.example.com", "weight": 100}, {"host": "scp2.example.com", "weight": 100} ], health_check={ "interval": 30, "timeout": 5, "retries": 3 } )
Huawei Integration¶
-
Service Deployment
# Deploy IN service to Kubernetes deployment = huawei_client.deploy_service( service_name="toll_free_service", kubernetes_config={ "namespace": "in-services", "replicas": 3, "resources": { "cpu": "2", "memory": "4Gi" } } ) -
Charging Integration
# Configure real-time charging charging_config = huawei_client.setup_charging( mode="real_time", rating_rules=[ { "service_key": 100, "rate": 0.5, "interval": 60 } ], fallback={ "enabled": True, "grace_period": 30 } )
ZTE Integration¶
-
Service Logic
# Deploy service logic service = zte_client.deploy_service_logic( script_file="premium_service.sl", config={ "max_instances": 1000, "timeout": 30, "debug_mode": False } ) -
Protocol Configuration
# Configure protocol stack protocol_config = zte_client.configure_protocols( sigtran={ "local_point_code": "1-1-1", "remote_point_code": "2-1-1", "network_indicator": "international" }, diameter={ "host": "zte.example.com", "realm": "example.com", "applications": ["Ro", "Rf"] } )
Service Examples¶
Toll-Free Service¶
# Toll-free call handling
def handle_tollfree_call(session):
# Initial processing
idp_response = session.send_initial_dp(
service_key=TOLLFREE_SERVICE_KEY,
called_party_number=session.called_number,
calling_party_number=session.calling_number
)
# Translate number
if idp_response.success:
routing = session.connect_to_resource(
translated_number=session.translate_number(
session.called_number,
service_type="TOLLFREE"
)
)
Premium Rate Service¶
# Premium rate service implementation
def handle_premium_call(session):
# Check service availability
if session.check_service_availability():
# Apply charging
charging = session.apply_charging(
rate_type="PREMIUM",
initial_charge=100,
per_minute_rate=50
)
# Connect call if charging successful
if charging.success:
session.connect_to_destination(
destination_number=session.get_service_endpoint()
)
Best Practices¶
- Service Implementation
- Define clear trigger criteria
- Implement proper error handling
- Monitor service performance
-
Plan for scalability
-
Number Translation
- Cache frequently used translations
- Implement fallback routing
- Monitor translation accuracy
-
Regular database updates
-
Call Control
- Handle timeouts properly
- Implement call supervision
- Monitor call quality
- Record detailed CDRs
Error Handling¶
| Error Code | Description | Resolution |
|---|---|---|
| 1 | Missing Parameter | Check mandatory fields |
| 2 | Invalid Number Format | Validate number format |
| 3 | Service Unavailable | Try alternate service |
| 4 | Resource Limitation | Implement throttling |
Monitoring¶
Key metrics to track:
- Service invocation rate
- Translation success rate
- Call completion ratio
- Average handling time
- Resource utilization
Configuration Examples¶
Basic Setup¶
inap_config:
capability_set: 2
service_key: 100
default_timeout: 30
translation:
cache_enabled: true
cache_timeout: 3600
Advanced Configuration¶
inap_config:
capability_set: 3
service_key: 100
default_timeout: 30
translation:
cache_enabled: true
cache_timeout: 3600
performance:
max_sessions: 5000
session_timeout: 1800
monitoring:
enable_alerts: true
metrics_interval: 60
fallback:
enable: true
alternate_routing: true
retry_attempts: 3
Service Creation¶
- Define service logic
- Configure trigger detection points
- Set up number translations
- Implement charging rules
- Deploy and test
- Monitor and optimize