blob: fc86c0cf98701ce6cb61adabaaf5f052e254f594 [file] [log] [blame]
---
Author: Endre Kulcsár
Version: 1551-CNL 113 778, Rev. B
Date: 2016-11-17
---
= STUN RFC5389 Protocol Modules for TTCN-3 Toolset with TITAN, Function Description
:author: Endre Kulcsár
:revnumber: 1551-CNL 113 778, Rev. B
:revdate: 2016-11-17
:toc:
*Copyright*
Copyright (c) 2000-2019 Ericsson Telecom AB. +
All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse Public License v1.0 that accompanies this distribution, and is available at +
http://www.eclipse.org/legal/epl-v10.html.
== How to Read This Document
This is the Function Specification for the set of STUN protocol module. STUN protocol module is developed for the TTCN-3 Toolset with TITAN.
== Scope
The purpose of this document is to specify the content of the STUN protocol module. Basic knowledge of TTCN-3 <<_2, [2]>> and TITAN TTCN-3 Test Executor <<_4, [4]>> is valuable when reading this document.
== System Requirements
Protocol modules are a set of TTCN-3 source code files that can be used as part of TTCN-3 test suites only. Hence, protocol modules alone do not put specific requirements on the system used. However, in order to compile and execute a TTCN-3 test suite using the set of protocol modules the following system requirements must be satisfied:
* TITAN TTCN-3 Test Executor version R7A (1.7.pl0) or higher installed. For installation guide see <<_4, [4]>>
NOTE: This version of the protocol module is not compatible with TITAN releases earlier than R7A
== Overview
Protocol modules implement the messages structure of the related protocol in a formalized way, using the standard specification language TTCN-3. This allows defining of test data (templates) in the TTCN-3 language and correctly encoding/decoding messages when executing test suites using the TITAN TTCN-3 test environment <<_4, [4]>>.
Protocol modules are using TITANs RAW encoding attributes and hence are usable with the TITAN test toolset only <<_3, [3]>>.
There are useful functions in the file __STUN_Functions.ttcn__ to create messages easily, but templates can also be defined to send and receive a given message.
== Installation
The set of protocol modules can be used in developing TTCN-3 test suites using any text editor. However to make the work more efficient a TTCN-3-enabled text editor is recommended. Since the STUN protocol is used as a part of a TTCN-3 test suite, this requires TTCN-3 Test Executor be installed before the module can be compiled and executed together with other parts of the test suite. For more details on the installation of TTCN-3 Test Executor see the relevant section of <<_4, [4]>>.
= General
Protocol modules implement the message structures of the related protocol in a formalized way, using the standard specification language TTCN-3. This allows defining of test data (templates) in the TTCN-3 language <<_2, [2]>> and correctly encoding/decoding messages when executing test suites using the TITAN TTCN-3 test environment <<_4, [4]>>.
Protocol modules are using TITANs RAW encoding attributes <<_3, [3]>> and hence are usable with the TITAN test toolset only.
= Functional Specification
== Protocol Version Implemented
This set of protocol modules implements protocol messages and constants of the STUN protocol. The module is based on https://tools.ietf.org/html/rfc5389[RFC 5389]. The following messages are implemented:
* Binding Request
* Binding Indication
* Binding Success Response
* Binding Error Response
=== Unimplemented Messages, Information Elements and Constants
None.
[[protocol-modifications-deviations]]
=== Protocol Modifications/Deviations
In addition to attributes in https://tools.ietf.org/html/rfc5389[RFC 5389] the attributes described in https://tools.ietf.org/html/rfc5245[RFC 5245] are also implemented. These additional attributes are:
* `PRIORITY`
* `USE_CANDIDATE`
* `ICE_CONTROLLED`
* `ICE_CONTROLLING`
The error code `ROLE_CONFLICT` is also implemented from https://tools.ietf.org/html/rfc5245[RFC 5245].
[[encoding-decoding-and-other-related-functions]]
== Encoding/Decoding and Other Related Functions
This product also contains encoding/decoding functions, which assure correct RAW encoding of messages when sent from TITAN and correct RAW decoding of messages when received by TITAN. Implemented encoding/decoding functions:
[width="100%",cols="34%,33%,33%",options="header",]
|===
|Name |Type of formal parameters |Return
|`ef_STUN_enc` |in PDU_STUN `pl_pdu`,in OCT16 pl_key,in STUN_Attribute_Typepl_last_attribute_type, out octetstring `pl_result`, in Boolean `pl_calculate_HMAC_CRC` |-
|`ef_STUN_dec` |in octetstring `pl_stream out` PDU_STUN `pl_result` |-
|`ef_STUN_Check_Message_Integrity` |in octetstring `pl_stream`, in OCT16 pl_key,in STUN_Attribute_Type `pl_last_attribute_type` |Boolean
|`ef_STUN_Generate_Transaction_Id` |- |OCT12
|`ef_STUN_get_Message_Length` |in octetstring `pl_stream` |Integer
|===
The `message_integrity` and the fingerprint field will be calculated while encode (when `pl_calculate_HMAC_CRC` encode parameter equals `_true_`) so dummy values are allowed.
== _Makefile_
The _Makefile_ has to link crypto and z libraries.
[source]
----
-lttcn3-parallel *-lcrypto* *-lz* +
-lxml2 +
----
= Terminology
No specific terminology is used.
= Abbreviations
STUN:: Session Traversal Utilities for NAT
UDP:: User Datagram Protocol
NAT:: Network Address Translators
TTCN-3:: Testing and Test Control Notation version 3
= References
[[_1]]
[1] https://tools.ietf.org/html/rfc5389[RFC 5389] +
STUN - Session Traversal Utilities for NAT
[[_2]]
[2] ETSI ES 201 873-1 v4.5.1 (2013-02) +
The Testing and Test Control Notation version 3; Part 1: Core Language
[[_3]]
[3] Programmers Technical Reference for the TITAN TTCN-3 Test Executor
[[_4]]
[4] User Guide for the TITAN TTCN-3 Test Executor
[[_5]]
[5] https://tools.ietf.org/html/rfc5245[RFC 5245] +
Interactive Connectivity Establishment (ICE): A Protocol for Network Address Translator (NAT)Traversal for Offer/Answer Protocols