RFC 4165

Signaling System 7 (SS7) Message Transfer Part 2 (MTP2) - User Peer-to-Peer Adaptation Layer (M2PA)

๐Ÿ“… published September 2005, from ietf

RFC 4165 ๐ŸŽ€ The M2PA Title Block

RFC 4165: Signaling System 7 (SS7) Message Transfer Part 2 (MTP2) - User Peer-to-Peer Adaptation Layer (M2PA) ๐Ÿ’…

Okay, the header info, bestie ๐Ÿซถ This is from the Network Working Group, and it's a Standards Track doc, so it's meant to be a real, official protocol ๐Ÿ‘‘. It's dated September 2005 ๐Ÿฆ‹. The authors are T. George and B. Bidulock from OpenSS7, R. Dantu from the University of North Texas, H. Schwarzbauer from Siemens, and K. Morneault from Cisco Systems โœจ. The header doesn't say it obsoletes or updates any other RFCs, so this one stands on its own ๐ŸŒธ.


Status of This Memo โœจ

Okay so this is the "here's what this doc is" part ๐Ÿ“œ. It's an Internet standards track protocol for the Internet community, and it's basically asking everyone to talk about it and send ideas for making it better ๐Ÿ’ฌ. If you want to know where it stands officially, check the current edition of "Internet Official Protocol Standards" (STD 1) ๐Ÿ”ฅ. And yes, you can share this memo as much as you want, since distribution is unlimited ๐ŸŒˆ.

Copyright (C) The Internet Society (2005). ๐Ÿ’œ

Abstract ๐Ÿฆ‹

Okay, big picture ๐Ÿ’–. This doc describes how to carry Signaling System Number 7 (SS7) Message Transfer Part (MTP) Level 3 signaling messages over Internet Protocol (IP), using Stream Control Transmission Protocol (SCTP) to do the hauling ๐Ÿšš. It's meant for SS7 Signaling Points that speak MTP Level 3 to each other ๐Ÿงš. Those points can also still use regular SS7 MTP Level 2 links, so both worlds can coexist ๐Ÿซถ. The whole thing acts a lot like MTP Level 2, which gives you peer-to-peer communication between SS7 endpoints. It's giving old-school phone network energy, but make it IP โœจ.

Table of Contents ๐Ÿงš

   1. Introduction ....................................................3
      1.1. Scope ......................................................3
      1.2. Terminology ................................................3
      1.3. Abbreviations ..............................................4
      1.4. Conventions ................................................5
      1.5. Signaling Transport Architecture ...........................5
      1.6. Services Provided by M2PA ..................................7
      1.7. Functions Provided by M2PA .................................9
      1.8. Definition of the M2PA Boundaries .........................10
      1.9. Differences Between M2PA and M2UA .........................10
   2. Protocol Elements ..............................................12
      2.1. Common Message Header .....................................12
      2.2. M2PA Header ...............................................13
      2.3. M2PA Messages .............................................14
   3. State Control ..................................................17
      3.1. SCTP Association State Control ............................17
      3.2. M2PA Link State Control ...................................18
   4. Procedures .....................................................19
      4.1. Procedures to Support MTP2 Features .......................19
      4.2. Procedures to Support the MTP3/MTP2 Interface .............30
      4.3. SCTP Considerations .......................................33
   5. Examples of M2PA Procedures ....................................34
      5.1. Link Initialization (Alignment) ...........................34
      5.2. Message Transmission and Reception ........................37
      5.3. Link Status Indication ....................................37
      5.4. Link Status Message (Processor Outage) ....................38
      5.5. Level 2 Flow Control ......................................42
      5.6. MTP3 Signaling Link Congestion ............................44
      5.7. Link Deactivation .........................................45
      5.8. Link Changeover ...........................................45
   6. Security Considerations ........................................47
   7. IANA Considerations ............................................47
      7.1. SCTP Payload Protocol Identifier ..........................47
      7.2. M2PA Protocol Extensions ..................................48
   8. Acknowledgements ...............................................49
   9. References .....................................................50
      9.1. Normative References ......................................50
      9.2. Informative References ....................................51

1. Introduction โœจ

1.1. Scope ๐ŸŒˆ

So why does this even need to exist? ๐Ÿค” Basically, Switched Circuit Network (SCN) signaling needs to get delivered over an IP network, like, a lot ๐Ÿ˜ญ. That means message transfer between:

  • a Signaling Gateway (SG) and a Media Gateway Controller (MGC) [RFC2719]
  • a SG and an IP Signaling Point (IPSP)
  • an IPSP and an IPSP

This could help signaling and data networks become besties ๐Ÿซถ. SCN signaling nodes would get access to databases and other devices in the IP world that don't use SS7 signaling links ๐Ÿ’…. And IP telephony apps would get access to SS7 services too ๐Ÿ“ž. There might also be cost and performance perks when regular signaling links get swapped for IP network "connections" ๐Ÿ’ธ.

The delivery mechanism here allows for full MTP3 message handling and network management capabilities between any two SS7 nodes that talk over an IP network ๐Ÿ”ฅ. An SS7 node with an IP network connection is called an IP Signaling Point (IPSP) ๐Ÿฆ‹. IPSPs work like regular SS7 nodes, just using the IP network instead of SS7 links โœจ.

The delivery mechanism should:

  • Support seamless operation of MTP3 protocol peers over an IP network connection.
  • Support the MTP Level 2 / MTP Level 3 interface boundary.
  • Support management of SCTP transport associations and traffic instead of MTP2 Links.
  • Support asynchronous reporting of status changes to management.

1.2. Terminology ๐Ÿ“š

Okay, vocab time, bestie ๐ŸŽ€. Here's what the terms mean.

MTP - The Message Transfer Part of the SS7 protocol [Q.700] [Q.701] [Q.702] [Q.703] [Q.704] [Q.705] [T1.111].

MTP2 - MTP Level 2, the MTP signaling link layer.

MTP3 - MTP Level 3, the MTP signaling network layer.

MTP2-User - A protocol that normally uses the services of MTP Level 2. The only MTP2 user is MTP3. The MTP2 user is equivalent to the M2PA user.

Signaling End Point (SEP) - An SS7 Signaling Point that originates or terminates signaling messages. One example is a central office switch. [RFC2719]

IP Signaling Point (IPSP) - An SS7 Signaling Point with an IP network connection used for SS7 over IP.

Signaling Gateway (SG) - A signaling agent that receives/sends SCN native signaling at the edge of the IP network [RFC2719]. In this context, an SG is an SS7 Signaling Point that has both an IP network connection used for SS7 over IP, and a traditional (non-IP) link to an SS7 network.

Signal Transfer Point (STP) - A Signal Transfer Point as defined by MTP standards, e.g., [Q.700].

Signaling Point (STP) - A Signaling Point as defined by MTP standards, e.g., [Q.700].

Association - An association refers to an SCTP association [RFC2960]. The association provides the transport for MTP3 protocol data units and M2PA adaptation layer peer messages.

Network Byte Order - Most significant byte first, also known as "Big Endian". See [RFC791], Appendix B "Data Transmission Order".

Stream - A stream refers to an SCTP stream [RFC2960].

1.3. Abbreviations ๐Ÿ“

Here's the abbreviation cheat sheet ๐Ÿ’œ:

   BSNT   - Backward Sequence Number to be Transmitted

   FSNC   - Forward Sequence Number of last message accepted by remote
            level 2

   LI     - Length Indicator

   MSU    - Message Signal Unit

   SCCP   - Signaling Connection Control Part

   SCN    - Switched Circuit Network
   SCTP   - Stream Control Transmission Protocol

   SIF    - Signaling Information Field

   SIO    - Service Information Octet

   SLC    - Signaling Link Code

   SS7    - Signaling System Number 7

   SSN    - Stream Sequence Number

   STP    - Signal Transfer Point

1.4. Conventions ๐ŸŒธ

Last bit of part one, and it's about the key words ๐Ÿ”‘. The words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119] ๐Ÿซถ. Those capitalized words are the ones with real weight, so watch for them ๐Ÿ‘€.

1.5. Signaling Transport Architecture โœจ

okay so the big picture ๐Ÿฆ‹ SCN signaling transport over IP is built from a few pieces that work together: an IP transport protocol, the Stream Control Transmission Protocol (SCTP), and an adaptation module that gives a particular SCN signaling protocol the services it expects from the layer below. That whole setup is defined in [RFC2719].

Inside that framework, this document defines one specific adaptation module, the one for carrying SS7 MTP3 messages. It's called the MTP2 User Peer-to-peer Adaptation Layer (M2PA) ๐Ÿ’œ. M2PA gives MTP3 an interface and services that look a lot like MTP2's. Basically, MTP2 and the layers under it in the traditional SS7 stack get swapped out for an IP equivalent. ๐ŸŒˆ

Figure 1 shows how MTP3 interworks seamlessly between two nodes. MTP3 talks to SCTP through M2PA, and M2PA supports all the primitives that run between MTP3 and MTP2. The SCTP association works as one SS7 link between the IPSPs. And an IPSP can run SCCP and other SS7 layers on top of MTP3 ๐ŸŽ€

               ********   IP   ********
               * IPSP *--------* IPSP *
               ********        ********

               +------+        +------+
               | TCAP |        | TCAP |
               +------+        +------+
               | SCCP |        | SCCP |
               +------+        +------+
               | MTP3 |        | MTP3 |
               +------+        +------+
               | M2PA |        | M2PA |
               +------+        +------+
               | SCTP |        | SCTP |
               +------+        +------+
               | IP   |        | IP   |
               +------+        +------+

        IP    - Internet Protocol
        IPSP  - IP Signaling Point
        SCTP  - Stream Control Transmission Protocol [RFC2960]

        Figure 1.  M2PA Symmetrical Peer-to-Peer Architecture

Figure 2 shows M2PA being used in a Signaling Gateway (SG) ๐Ÿงš The SG is an IPSP that has both traditional SS7 and IP network connections.

The SEP and the SG talk over a traditional SS7 link, which follows a protocol like [Q.702]. The SG and the IPSP talk over an IP link using M2PA. Messages going from the SEP to the IPSP (and back again) get routed by the SG ๐Ÿ“

Any node in the diagram could run SCCP or other SS7 layers above MTP3. The Signaling Gateway acts as a Signal Transfer Point (STP). Other STPs MAY be present in the SS7 path between the SEP and the SG ๐Ÿซถ

       ********  SS7   ***************   IP   ********
       * SEP  *--------*     SG      *--------* IPSP *
       ********        ***************        ********

       +------+                               +------+
       | TCAP |                               | TCAP |
       +------+                               +------+
       | SCCP |                               | SCCP |
       +------+        +-------------+        +------+
       | MTP3 |        |    MTP3     |        | MTP3 |
       +------+        +------+------+        +------+
       | MTP2 |        | MTP2 | M2PA |        | M2PA |
       |      |        |      +------+        +------+
       |      |        |      | SCTP |        | SCTP |
       +------+        +------+------+        +------+
       | MTP1 |        | MTP1 | IP   |        | IP   |
       +------+        +------+------+        +------+

        SEP   - SS7 Signaling Endpoint

            Figure 2.  M2PA in IP Signaling Gateway

Figure 2 is just an example, and other configurations are possible ๐Ÿ’… The big takeaway: M2PA treats the SCTP association as an SS7 link. The M2PA/SCTP/IP stack can be used in place of an MTP2/MTP1 stack โœจ

1.5.1. Point Code Representation

okay this one's important ๐Ÿ™ˆ MTP needs every node with an MTP3 layer to be identified by an SS7 point code. Specifically, each IPSP MUST have its own SS7 point code. No sharing, no cap ๐Ÿ’–

1.6. Services Provided by M2PA

The SS7 MTP3/MTP2 (MTP2-User) interface stays put in the IPSP ๐ŸŒธ The M2PA protocol layer is required to give its user a set of services that match what MTP Level 2 gives to MTP Level 3. Main character energy for sure ๐Ÿ‘‘

Those services are described in the subsections below ๐Ÿฆ‹

1.6.1. Support for MTP Level 2 / MTP Level 3 Interface Boundary

This interface is the same as the MTP2/MTP3 interface in the applicable SS7 standards [Q.703] [Q.704] [T1.111] [Q.2140], with one addition: support for the larger sequence numbers found in [T1.111] and [Q.2210] ๐Ÿ”ฅ

M2PA receives the primitives that MTP3 sends to its lower layer. It then either processes those primitives or maps them to the right primitives at the M2PA/SCTP interface. In the other direction, M2PA sends MTP3 primitives that look similar to the ones used in the MTP3/MTP2 interface ๐ŸŽ€

Here's the tricky bit: because M2PA uses bigger sequence numbers than MTP2, the MTP3 Changeover procedure MUST use the Extended Changeover Order and Extended Changeover Acknowledgement messages described in [Q.2210] and [T1.111] ๐Ÿ˜ญ

Also, these MTP3/MTP2 primitives must use the larger sequence numbers:

  • BSNT Confirmation
  • Retrieval Request and FSNC

1.6.2. Support for Peer-to-Peer Communication

okay so in SS7, MTP Level 2 sends three kinds of messages called signal units: Message Signal Units (MSUs), Link Status Signal Units (LSSUs), and Fill-In Signal Units (FISUs) ๐Ÿงš

MSUs start at a higher level than MTP2 and are headed for a peer at another node. M2PA passes these from MTP3 to SCTP as data to transport across the link. In M2PA, these are called User Data messages ๐Ÿ’œ

LSSUs let peer MTP2 layers swap status info. M2PA needs something analogous, and that's the job of the Link Status message ๐ŸŒˆ

FISUs get sent nonstop whenever there's nothing else waiting to go out. They also carry message acknowledgements. But an IP network is a shared resource, so a message type that gets sent nonstop, the way FISUs do, would be a bad idea ๐Ÿ™…โ€โ™€๏ธ On top of that, SCTP doesn't require its upper layer to keep transmitting messages constantly. So M2PA doesn't provide a protocol data unit like the FISU ๐Ÿ’… The M2PA User Data message carries message acknowledgements instead. And if M2PA needs to acknowledge a message but has no MTP3 message of its own to send, it can send an empty User Data message โœจ

1.7. Functions Provided by M2PA

1.7.1. MTP2 Functionality

M2PA provides MTP2 functionality that SCTP doesn't cover. Put together, M2PA and SCTP give you functionality similar to MTP2 ๐Ÿฆ‹

SCTP provides reliable, sequenced delivery of messages ๐Ÿซถ

M2PA functionality includes:

  • Data retrieval to support the MTP3 changeover procedure
  • Reporting of link status changes to MTP3
  • Processor outage procedure
  • Link alignment procedure

1.7.2. Mapping of SS7 and IP Entities

The M2PA layer must maintain a map of each of its SS7 links to the corresponding SCTP association ๐Ÿ—บ๏ธ

1.7.3. SCTP Association Management

SCTP lets you specify how many streams get opened during initialization. It's the M2PA layer's job to manage the streams allowed within each association properly ๐Ÿ’–

M2PA uses two streams in each direction for each association. Stream 0 in each direction is set aside for Link Status messages. Stream 1 is set aside for User Data messages, plus any Link Status messages that have to stay in sequence with the User Data messages ๐ŸŒธ Splitting Link Status and User Data messages into separate streams lets M2PA prioritize them in a way that's similar to MTP2. Iconic design choice ngl ๐Ÿ‘‘

Notifications that come from SCTP get processed by M2PA, or translated into an appropriate notification for the upper layer, MTP3 ๐Ÿ”ฅ

1.7.4. Retention of MTP3 in the SS7 Network

M2PA lets MTP3 do all of its Message Handling and Network Management functions with IPSPs, the same way it does with other SS7 nodes ๐ŸŽ€

1.8. Definition of the M2PA Boundaries

1.8.1. Definition of the M2PA / MTP Level 3 Boundary

The upper layer primitives M2PA provides are the same ones MTP2 provides to MTP3. They're described in the applicable SS7 standards [Q.703] [Q.704] [T1.111] [Q.2140] ๐Ÿ’…

1.8.2. Definition of the Lower Layer Boundary between M2PA and SCTP

The upper layer primitives SCTP provides are described in [RFC2960] Section 10 "Interface with Upper Layer" ๐Ÿงš

1.9. Differences Between M2PA and M2UA ๐Ÿฆ‹

okay so the MTP2 User Adaptation Layer (M2UA) [M2UA] ALSO adapts MTP3 to the SCTP/IP stack, and it does it through a backhauling architecture [RFC2719]. ๐Ÿ’… this section is here to spell out how M2PA and M2UA are different, bestie.

Here's a possible M2PA architecture, shown in Figure 3. The IPSP's MTP3 uses its underlying M2PA as a replacement for MTP2. The two layers (MTP3/M2PA) talk to each other using the same primitives as SS7 MTP3/MTP2 ๐Ÿ”ฅ. M2PA does stuff similar to MTP2.

    ********  SS7   ***************   IP   ********
    * SEP  *--------*     SG      *--------* IPSP *
    ********        ***************        ********

    +------+        +-------------+        +------+
    | SCCP |        |    SCCP     |        | SCCP |
    +------+        +-------------+        +------+
    | MTP3 |        |    MTP3     |        | MTP3 |
    +------+        +------+------+        +------+
    | MTP2 |        | MTP2 | M2PA |        | M2PA |
    |      |        |      +------+        +------+
    |      |        |      | SCTP |        | SCTP |
    +------+        +------+------+        +------+
    | MTP1 |        | MTP1 | IP   |        | IP   |
    +------+        +------+------+        +------+

               Figure 3.  M2PA in IP Signaling Gateway

Now the M2UA version is in Figure 4. In M2UA, the MGC's MTP3 uses the SG's MTP2 as its lower SS7 layer ๐Ÿซถ. And the SG's MTP2 uses the MGC's MTP3 as its upper SS7 layer. In SS7, MTP3 and MTP2 talk through primitives. In M2UA, that MTP3/MTP2 communication gets turned into M2UA messages and sent over the IP connection. it's giving a whole new vibe ๐ŸŒˆ

    ********  SS7   ***************   IP   ********
    * SEP  *--------*     SG      *--------* MGC  *
    ********        ***************        ********

    +------+                               +------+
    | SCCP |                               | SCCP |
    +------+                               +------+
    | MTP3 |             (NIF)             | MTP3 |
    +------+        +------+------+        +------+
    | MTP2 |        | MTP2 | M2UA |        | M2UA |
    |      |        |      +------+        +------+
    |      |        |      | SCTP |        | SCTP |
    +------+        +------+------+        +------+
    | MTP1 |        | MTP1 | IP   |        | IP   |
    +------+        +------+------+        +------+

     NIF   - Nodal Interworking Function

               Figure 4.  M2UA in IP Signaling Gateway

M2PA and M2UA are alike in that:

  • a. Both transport MTP3 data messages.
  • b. Both present an MTP2 upper interface to MTP3.

Now the differences between M2PA and M2UA, which include:

  • a. M2PA: IPSP processes MTP3/MTP2 primitives. M2UA: MGC transports MTP3/MTP2 primitives between the SG's MTP2 and the MGC's MTP3 (via the NIF) for processing.
  • b. M2PA: SG-IPSP connection is an SS7 link. M2UA: SG-MGC connection is not an SS7 link. It is an extension of MTP to a remote entity.
  • c. M2PA: SG is an SS7 node with a point code. M2UA: SG is not an SS7 node and has no point code.
  • d. M2PA: SG can have upper SS7 layers, e.g., SCCP. M2UA: SG does not have upper SS7 layers since it has no MTP3.
  • e. M2PA: relies on MTP3 for management procedures. M2UA: uses M2UA management procedures.

๐ŸŽ€ anyone thinking about using M2PA or M2UA for SS7 signaling transport over IP networks should keep these differences in mind when deciding which one to pick, periodt.


2. Protocol Elements โœจ

This section breaks down the format of the messages this protocol uses ๐Ÿ’–.

All fields in an M2PA message must be transmitted in the network byte order, i.e., most significant byte first, unless otherwise stated.

2.1. Common Message Header ๐ŸŒธ

The M2PA protocol messages need a message header that has a version, a message class, a message type, and a message length. The header looks like Figure 5.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    Version    |     Spare     | Message Class | Message Type  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                        Message Length                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                  Figure 5.  Common Message Header

2.1.1. Version

The version field holds the version of M2PA. The supported versions are:

         Value
       (decimal)  Version
       ---------  -------
           1      Release 1.0 of M2PA protocol

2.1.2. Spare

The Spare field SHOULD be set to all zeroes (0's) by the sender and ignored by the receiver. The Spare field SHOULD NOT be used for proprietary information. ๐Ÿ™ˆ

2.1.3. Message Class

Here's the list of the valid Message Classes:

         Value
       (decimal)  Message Class
       ---------  -------------
          11      M2PA Messages

Other values are invalid for M2PA.

2.1.4. Message Type

Next up are the message types for the defined messages:

         Value
       (decimal)  Message Type
       ---------  -------------
           1      User Data
           2      Link Status

Other values are invalid.

2.1.5. Message Length

The Message Length defines the length of the message in octets, including the Common Header. ๐Ÿงš

2.2. M2PA Header ๐Ÿ’œ

Every M2PA protocol message needs an M2PA-specific header. The header structure is shown in Figure 6.

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     unused    |                      BSN                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     unused    |                      FSN                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

               Figure 6.  M2PA-specific Message Header

2.2.1. Backward Sequence Number (BSN)

This is the FSN of the message last received from the peer.

2.2.2. Forward Sequence Number (FSN)

This is the M2PA sequence number of the User Data message being sent.

The FSN and BSN values range from 0 to 16,777,215. ๐Ÿ”ข

2.3. M2PA Messages ๐Ÿฆ‹

This section defines the messages and the parameter contents. An M2PA message is made up of a Common Message Header and an M2PA Header, followed by whatever data the message needs.

   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   \                                                               \
   /                     Common Message Header                     /
   \                                                               \
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   \                                                               \
   /                  M2PA-specific Message Header                 /
   \                                                               \
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   \                                                               \
   /                         Message Data                          /
   \                                                               \
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The field "Message Data" contains either:

  • a User Data message (Section 2.3.1), or
  • a Link State message (Section 2.3.2)

2.3.1. User Data ๐Ÿ“

The User Data is the data sent from MTP3. It's an optional field, and it doesn't need to be included in an acknowledgement-only message.

The format of the User Data message is as follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   \                                                               \
   /                            Data                               /
   \                                                               \
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

The Data field holds these fields from the MTP Message Signal Unit (MSU):

  • the Message Priority field (PRI)
  • Service Information Octet (SIO)
  • Signaling Information Field (SIF)

The MTP MSU is described in Q.703 [Q.703], Section 2.2, "Signal Unit Format", and T1.111.3 [T1.111], Section 2.2, "Signal Unit Format". The Japanese TTC standard uses the PRI field as an MTP3 Message Priority field [JT-Q703] [JT-Q704]. For versions of MTP that do not use these two bits, the entire first octet of the Data field is spare. โœจ

The first octet of the Data field looks like this:

     0
     0 1 2 3 4 5 6 7
    +-+-+-+-+-+-+-+-+
    |PRI|   spare   | (followed by SIO, SIF)
    +-+-+-+-+-+-+-+-+

    PRI - Priority used only in national MTP defined in [JT-Q703] and
          [JT-Q704].  These bits are spare for other MTP versions.

Heads up, the Data field SHALL NOT contain the other components of the MTP MSU format:

  • Flag
  • Backward Sequence Number (BSN)
  • Backward Indicator Bit (BIB)
  • Forward Sequence Number (FSN)
  • Forward Indicator Bit (FIB)
  • Length Indicator (LI)
  • Check bits (CK)

The Data field SHALL be transmitted in the byte order as defined by MTP3.

M2PA SHALL NOT add padding to the MTP3 message. ๐Ÿšซ

Note: In the SS7 Recommendations, the format of the messages and the fields inside them are based on bit transmission order. In those recommendations, the Least Significant Bit (LSB) of each field sits on the right. The received SS7 fields get filled in octet by octet as they arrive into the 4-octet word, as shown below. ๐Ÿค“

As an example, in the ANSI MTP protocol, the Data field format looks like this:

   |MSB---------------------------------------------------------LSB|
    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |PRI|   spare   |      SIO      |   SIF octet   |      ...      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   \                                                               \
   /                               :                               /
   \                                                               \
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      ...      |      ...      |      ...      |   SIF octet   |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Within each octet, the Least Significant Bit (LSB) per the SS7 Recommendations sits to the right (e.g., bit 15 of SIO is the LSB). ๐Ÿ’…

okay bestie, the MTP2 Link Status message is what M2PA peers send to each other to say what state the link is in ๐Ÿ’… It basically does the same job as the Link Status Signal Unit in MTP2, so if you know that one, you already know the vibe ๐Ÿซถ Here's what the format looks like:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            State                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

the valid values for State are in this table ๐ŸŒธ

         Value
       (decimal)  Description
       ---------  -----------
           1      Alignment
           2      Proving Normal
           3      Proving Emergency
           4      Ready
           5      Processor Outage
           6      Processor Recovered
           7      Busy
           8      Busy Ended
           9      Out of Service (OOS)

okay so the Link Status Proving message is allowed to (optionally) carry extra bytes ๐ŸŽ€ if you do add them, the format looks like this:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                            State                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   \                                                               \
   /                            filler                             /
   \                                                               \
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

it is RECOMMENDED that the length of the Link Status Proving message be similar to the size of the User Data messages that will be carried on the link ๐Ÿ’œ so they match the vibe of the traffic on the link ๐Ÿ’…

it is RECOMMENDED that the filler field contain a number pattern that varies among the Link Status Proving messages ๐ŸŒˆ and that lets the SCTP checksum [RFC3309] be used to verify the accuracy of transmission โœจ the filler is doing a whole job, bestie ๐Ÿ˜ญ

3. State Control ๐Ÿ‘‘

3.1. SCTP Association State Control ๐Ÿงš

Figure 7 illustrates state changes in the M2PA management of the SCTP association, together with the causing events ๐Ÿ’– some of the error conditions are not shown in the state diagram, so don't be surprised if something's missing ๐Ÿ™ˆ

here's the list of the M2PA Association States and what each one means ๐Ÿ“

  • IDLE - state of the association during power-up initialization ๐ŸŒ™
  • ASSOCIATING - M2PA is attempting to establish an SCTP association ๐Ÿ”„
  • ESTABLISHED - SCTP association is established โœ…
                     +-----------+
                     |   IDLE    |
                     +-----------+
                           |
                           | Associate
                           | (Issue SCTP associate)
                           |
                           |   +----------------------+
                           |   |         (Issue SCTP  |
                           V   V          associate)  |
                     +-------------+                  |
                     | ASSOCIATING |----------------->+
                     +-------------+  SCTP Comm Error |
                           |                          |
                           |                          |
                           | SCTP Comm Up             |
                           |                          |
                           V                          |
                     +-------------+                  |
                     | ESTABLISHED |----------------->+
                     +-------------+   SCTP Comm Error
                                    OR SCTP Comm Lost

Figure 7. M2PA Association State Transition Diagram ๐Ÿฆ‹

the M2PA link moves from one state to another in response to various events ๐ŸŒธ the events that may result in a change of state include:

  • MTP3 primitive requests ๐Ÿ“จ
  • Receipt of messages from the peer M2PA ๐Ÿ“ฌ
  • Expiration of timers โฐ
  • SCTP notifications ๐Ÿ””

these events affect the M2PA link state in a manner similar to MTP2 ๐Ÿ’…

4. Procedures ๐ŸŽ€

because M2PA gives MTP3 an interface and functionality like MTP2, its internal functioning is similar to that of MTP2 ๐Ÿซถ

except as modified in this document, M2PA SHOULD follow the requirements of the applicable MTP2 specification โœจ these may include [Q.703] or [T1.111] ๐Ÿ“š the same standard MUST be followed on both ends of the M2PA link ๐Ÿ”ฅ no mixing and matching, bestie ๐Ÿ™…โ€โ™€๏ธ

in particular, the corresponding applicable timer value defaults and ranges specified for the applicable MTP2 standard should be used for the M2PA timers โฑ๏ธ

when referring to MTP2 terminology in this document, the terminology of [Q.703] is used ๐Ÿ’œ this does not imply that the requirements of [Q.703] are to be followed, so don't get it twisted ๐Ÿ™ˆ

4.1. Procedures to Support MTP2 Features ๐ŸŒˆ

4.1.1. Signal Unit Format, Delimitation, Acceptance ๐Ÿ’–

messages for transmission across the network must follow the format described in Section 2 ๐Ÿฆ‹

SCTP provides reliable, in-sequence delivery of user messages ๐Ÿ’… therefore the related functionality of MTP2 is not needed ๐Ÿ™Œ SCTP does not provide functions related to Link State Control in MTP2 ๐Ÿ˜ญ these functions must be provided by M2PA ๐Ÿ’œ

since SCTP provides delivery of messages, there is no need for M2PA to delimit its messages with a flag, as is done in MTP2 ๐ŸŒธ furthermore, M2PA does not need to perform zero bit insertion and deletion on its messages โœจ

since SCTP uses a checksum to detect transmission errors, there is no need for an M2PA checksum, as is needed in MTP2 ๐Ÿซถ this also eliminates the need for the error rate monitors of MTP2 ๐Ÿ”ฅ

since SCTP provides reliable delivery and ordered delivery, M2PA does not perform retransmissions ๐Ÿงš this eliminates the need for the forward and backward indicator bits in MTP2 signal units ๐Ÿ‘‘

acceptance of a message is indicated by a successful receipt of the message from SCTP ๐Ÿ’–

4.1.2. MTP and SCTP Entities โœจ

okay so this bit is all about how M2PA ties the MTP side and the SCTP side together ๐ŸŽ€ basically each MTP link is one SCTP association ๐Ÿฆ‹

To stop duplicate associations from getting made, it is RECOMMENDED that each endpoint knows the IP address (or IP addresses, if multi-homing is used) and port number of both endpoints ๐Ÿ’… SCTP already blocks two associations with the same IP addresses and port numbers, so this is extra protection ๐Ÿซถ

It's necessary for at least one endpoint to be listening on the port the other endpoint is trying to connect to ๐Ÿ‘€ so at least one of the port numbers SHOULD be the M2PA registered port ๐ŸŒธ

If only one association is going to exist between these two IP addresses, then it SHOULD be set up using the M2PA registered port at each endpoint ๐Ÿ’–

If you want multiple associations (for multiple links) between the same two IP addresses, you can use different port numbers for each one ๐Ÿฆ‹ but the M2PA registered port number SHOULD still be used at one end of each association ๐Ÿซถ

Each combo of IP address and port for the two endpoints (aka each association) MUST be mapped to the same Signaling Link Code (SLC) at each endpoint ๐Ÿ”ฅ that way each endpoint knows which link is being created when the SCTP association gets set up ๐Ÿงš M2PA doesn't do any processing based on the SLC though, so it's just for bookkeeping โœจ

Here are some examples of how associations and links relate ๐Ÿ’œ a link is an SCTP association identified by two endpoints, each endpoint is an IP address plus a port number, and each association gets mapped to an SLC ๐ŸŽ€

Figure 8 shows two IPSPs, each with two IP addresses ๐Ÿ’… the two associations are the links connecting the two IPSPs, and since they're in the same link set, they MUST have different SLCs ๐Ÿ˜ญ

Table 1 shows the same thing in table form ๐ŸŒˆ it's only conceptual, though, and the actual method for mapping SCTP associations to SLCs is implementation dependent ๐Ÿ™ˆ

               IPSP X                        IPSP Y

           +-------------+               +-------------+
           |             |     SCTP      |             |
           |         IPA | association 1 | IPB         |
           |   port = PW +---------------+ port = PW   |
           |     SLC = a |               | SLC = a     |
           |             |               |             |
           |             |               |             |
           |             |     SCTP      |             |
           |         IPC | association 2 | IPD         |
           |   port = PW +---------------+ port = PW   |
           |     SLC = b |               | SLC = b     |
           |             |               |             |
           |             |               |             |
           +-------------+               +-------------+

        IPx = IP address
        PW  = Registered port number for M2PA

           Figure 8.  Two IPSPs with Two IP Addresses Each
    +-------------+---------------------------------------+-----+
    | Association |      IPSP X       |      IPSP Y       | SLC |
    |             +------------+------+------------+------+     |
    |             | IP address | Port | IP address | Port |     |
    +=============+============+======+============+======+=====+
    |      1      |    IPA     |  PW  |    IPB     |  PW  |  a  |
    +-------------+------------+------+------------+------+-----+
    |      2      |    IPC     |  PW  |    IPD     |  PW  |  b  |
    +-------------+------------+------+------------+------+-----+

          Table 1.  Two IPSPs with Two IP Addresses Each

Figure 9 and Table 2 cover an example with three IPSPs ๐Ÿฆ‹ here the two links are in different link sets, so the SLC values a and b MAY be equal ๐ŸŒธ

               IPSP X                        IPSP Y

           +-------------+               +-------------+
           |             |     SCTP      |             |
           |         IPA | association 1 | IPB         |
           |   port = PW +---------------+ port = PW   |
           |     SLC = a |               | SLC = a     |
           |             |               |             |
           |             |               |             |
           |             |     SCTP      |             |
           |         IPC | association 2 |             |
           |   port = PW +-------+       |             |
           |     SLC = b |       |       |             |
           |             |       |       |             |
           |             |       |       |             |
           +-------------+       |       +-------------+
                                 |
                                 |
                                 |           IPSP Z
                                 |
                                 |       +-------------+
                                 |       |             |
                                 |       | IPD         |
                                 +-------+ port = PW   |
                                         | SLC = b     |
                                         |             |
                                         |             |
                                         |             |
                                         |             |
                                         |             |
                                         |             |
                                         |             |
                                         |             |
                                         +-------------+

        IPx = IP address
        PW  = Registered port number for M2PA

             Figure 9.  One IPSP Connected to Two IPSPs
    +-------------+---------------------------------------+-----+
    | Association |      IPSP X       |     IPSP Y/Z      | SLC |
    |             +------------+------+------------+------+     |
    |             | IP address | Port | IP address | Port |     |
    +=============+============+======+============+======+=====+
    |      1      |    IPA     |  PW  |    IPB     |  PW  |  a  |
    +-------------+------------+------+------------+------+-----+
    |      2      |    IPC     |  PW  |    IPD     |  PW  |  b  |
    +-------------+------------+------+------------+------+-----+

             Table 2.  One IPSP Connected to Two IPSPs

Figure 10 and Table 3 show two associations between the same IP addresses ๐Ÿงš this works by using a different port number for each association at one endpoint ๐Ÿ’œ

               IPSP X                        IPSP Y

           +-------------+               +-------------+
           |             |     SCTP      |             |
           |         IPA | association 1 | IPB         |
           |   port = P1 +---------------+ port = PW   |
           |     SLC = a |               | SLC = a     |
           |             |               |             |
           |             |               |             |
           |             |     SCTP      |             |
           |         IPA | association 2 | IPB         |
           |   port = PW +---------------+ port = PW   |
           |     SLC = b |               | SLC = b     |
           |             |               |             |
           |             |               |             |
           +-------------+               +-------------+

        IPx = IP address
        P1  = Pre-selected port number
        PW  = Registered port number for M2PA

         Figure 10.  Multiple Associations Between Two IP Addresses
    +-------------+---------------------------------------+-----+
    | Association |      IPSP X       |      IPSP Y       | SLC |
    |             +------------+------+------------+------+     |
    |             | IP address | Port | IP address | Port |     |
    +=============+============+======+============+======+=====+
    |      1      |    IPA     |  P1  |    IPB     |  PW  |  a  |
    +-------------+------------+------+------------+------+-----+
    |      2      |    IPA     |  PW  |    IPB     |  PW  |  b  |
    +-------------+------------+------+------------+------+-----+

       Table 3.  Multiple Associations Between Two IP Addresses

Now the stream stuff ๐ŸŽ€ The association SHALL contain two streams in each direction ๐Ÿซถ Stream 0 is for Link Status messages, and Stream 1 is for User Data messages, plus any Link Status messages that must remain in sequence with the User Data messages ๐Ÿ’…

โœจ The next two lists are the rules for which Link Status messages go on which stream, so don't skip them, bestie ๐Ÿ˜ญ

The following Link Status messages SHALL be sent on the Link Status stream (stream 0):

  • Alignment
  • Proving Normal
  • Proving Emergency
  • Ready (when sent during alignment)
  • Busy
  • Busy Ended
  • Out of Service

The following Link Status messages SHALL be sent on the User Data stream (stream 1):

  • Processor Outage
  • Processor Recovered
  • Ready (when sent at the end of processor outage)

okay so alignment has two big jobs ๐Ÿ’…

  1. handshake time ๐Ÿค: both endpoints need to be ready to send SS7 traffic, and nobody gets to send anything before the other end is ready. no jumping the gun!
  2. vibe check ๐Ÿ”: make sure the SCTP association is actually suitable to act as an SS7 link.

Alignment happens after the association is established. If SCTP can't get the association up, but M2PA already got a Start Request from its MTP3, then M2PA SHALL report to MTP3 that the link is out of service ๐Ÿ’€.

The Link Status Out of Service message is the SIOS replacement from MTP2. Unlike MTP2, it SHOULD NOT be sent nonstop ๐Ÿ™…โ€โ™€๏ธ. Once the association is up, M2PA SHALL send a Link Status Out of Service message to its peer. Before alignment even starts, M2PA MAY send extra Link Status Out of Service messages.

The Link Status Alignment message takes over from MTP2's SIO and says "okay, we're starting alignment!" ๐ŸŽ€ It also SHOULD NOT be spammed continuously. M2PA MAY keep sending extra Link Status Alignment messages until it hears back with Link Status Alignment, Link Status Proving Normal, or Link Status Proving Emergency from the peer.

The Link Status Proving Normal message replaces MTP2's SIN, and the Link Status Proving Emergency message replaces SIE ๐ŸŒธ.

The proving period is skippable ๐Ÿฆ‹ if the applicable MTP2 standard allows it (e.g., [Q.2140]), so M2PA MAY omit it.

If proving does happen, then during the proving period (that's after M2PA starts the proving period timer T4), M2PA SHALL send Link Status Proving messages to its peer every Proving_Interval, which is the protocol parameter that sets the timing โฑ๏ธ. It is RECOMMENDED that Proving_Interval be set so the traffic from the Link Status Proving messages during the proving period is comparable to the normal traffic you'd expect once the link is in service. the vibe should match the real thing! โœจ

The Link Status Ready message replaces the FISU that MTP2 sends at the end of proving ๐Ÿซง. It's how both ends confirm that they've both finished proving. When M2PA starts timer T1, it SHALL send a Link Status Ready message to its peer in the case where MTP2 would've sent a FISU after proving was complete. If that Link Status Ready message goes out, M2PA MAY send extra Link Status Ready messages while timer T1 is still running. All of these Link Status Ready messages go out on the Link Status stream ๐Ÿ’œ.

And if MTP2 would have sent an MSU or SIPO at the end of proving instead, M2PA SHALL send a User Data or Link Status Processor Outage message, respectively ๐Ÿ“.


4.1.4. Processor Outage ๐ŸŒˆ

The Link Status Processor Outage message replaces MTP2's SIPO. Again, it SHOULD NOT be transmitted continuously, unlike MTP2 ๐Ÿ˜ค. M2PA SHALL send a Link Status Processor Outage message to its peer at the start of a processor outage condition, the moment MTP2 would send SIPO. M2PA MAY send extra Link Status Processor Outage messages for as long as that condition lasts. This message SHALL go out on the User Data stream.

When you're in a local processor outage (LPO) condition, here's the tea ๐Ÿซ–:

  • (a) Any User Data messages received from the peer MUST NOT be acknowledged and MUST be buffered. no acks, just stash them ๐Ÿงบ.
  • (b) M2PA SHOULD keep acknowledging the User Data messages it received and accepted from MTP3 before the local processor outage started.
  • (c) M2PA SHOULD keep transmitting messages that its upper layer MTP3 has sent.

When there's a remote processor outage (RPO) condition, the rules flip a little ๐Ÿ”„:

  • (a) M2PA SHOULD keep acknowledging the User Data messages it received and accepted by MTP3, no matter what the remote processor outage is doing.
  • (b) If any User Data messages that came in from the peer after the Link Status Processor Outage can't be delivered to MTP3, then those messages MUST NOT be acknowledged and MUST be buffered ๐Ÿซฃ.

If M2PA gets a Flush command from MTP3, it's clean-up time ๐Ÿงน:

  • (a) M2PA SHALL discard any incoming messages that were queued and unacknowledged during the processor outage condition.
  • (b) M2PA SHALL discard messages in the transmit and retransmit queues as required by MTP2.

If M2PA gets a Continue command from MTP3, M2PA SHALL start processing the incoming messages that were queued and unacknowledged during the processor outage condition ๐Ÿƒโ€โ™€๏ธ.

When the local processor outage ends, M2PA SHALL send a Link Status Processor Recovered message to its peer on the User Data stream ๐ŸŽ‰. This message is what signals the end of the outage. MTP2 uses an MSU or FISU for that job instead. The BSN in the Link Status Processor Recovered message is set to the FSN of the last User Data message received (and not discarded) from the peer M2PA. After sending it, M2PA SHALL cease transmitting User Data messages until it has received the Link Status Ready message (see below). hold up, no more User Data till that Ready shows up ๐Ÿ›‘.

When the M2PA in RPO gets that Link Status Processor Recovered message, it SHALL respond with a Link Status Ready message on the User Data stream. The BSN in that Link Status Ready message is set to the FSN of the last User Data message received (and not discarded) from the peer M2PA.

When the M2PA that was formerly in LPO gets the Link Status Ready message, it SHALL respond with a Link Status Ready message on the User Data stream too. The BSN in this one is also set to the FSN of the last User Data message received (and not discarded) from the peer M2PA ๐Ÿ”.

M2PA at both the LPO and RPO ends uses the BSN value in the received Link Status Ready message to resynchronize its sequence numbers, if MTP2 requires that. M2PA SHALL NOT resume transmitting User Data messages until it has sent the Link Status Ready message ๐Ÿ’….

During resynchronization, M2PA SHALL NOT discard any received User Data messages that were sent after the processor outage ended. they're precious, don't toss them ๐Ÿ’–.

If M2PA goes through a local processor outage, it MAY put the link out of service by sending a Link Status Out of Service message, as long as the applicable MTP2 standard allows it (e.g., [Q.2140]).

In every other way, M2PA SHOULD follow the same procedures as MTP2 during a processor outage ๐Ÿ“–.


4.1.5. Level 2 Flow Control ๐Ÿšฆ

The Link Status Busy message replaces MTP2's SIB. It SHOULD NOT be sent continuously. M2PA SHALL send a Link Status Busy message to its peer at the beginning of a receive congestion condition, where MTP2 would've sent SIB. M2PA MAY send extra Link Status Busy messages as long as that condition persists. When the condition ends, M2PA SHALL send a Link Status Busy Ended message to its peer ๐Ÿซ .

Even while it's in receive congestion, M2PA SHALL keep transmitting messages. BUT it MUST NOT acknowledge the message that triggered the Link Status Busy message, and it MUST NOT acknowledge any messages received before the Link Status Busy Ended was sent ๐Ÿ™ˆ.

When the peer M2PA gets that first Link Status Busy message, it SHALL start the Remote Congestion timer T6, but only if there are messages in the retransmission buffer waiting for acknowledgement (in other words, T7 is running). M2PA SHALL stop the T7 timer if it's running. More Link Status Busy messages that arrive while T6 is running don't reset T6, and they don't start T7 either. While T6 is running, T7 SHALL NOT be started ๐ŸŽ€.

When the peer M2PA gets the Link Status Busy Ended message and T6 hasn't expired yet, it SHALL stop T6 (if T6 is running) and start T7 (if there are messages awaiting acknowledgement in the retransmission buffer) ๐ŸŒท.

The peer M2PA SHOULD keep receiving and acknowledging messages while the other end is busy. But it MUST NOT send User Data messages after receiving Link Status Busy and before receiving Link Status Busy Ended ๐Ÿซถ.


The Link Status Out of Service message replaces MTP2's SIOS. Once again, unlike MTP2, it SHOULD NOT be transmitted continuously ๐Ÿ™…โ€โ™€๏ธ. M2PA SHALL send a Link Status Out of Service message to its peer at the beginning of a condition where MTP2 would've sent SIOS. M2PA MAY send extra Link Status Out of Service messages as long as that condition persists.

When M2PA puts a link in the OUT OF SERVICE state, M2PA SHOULD NOT terminate the SCTP association ๐Ÿฆ‹. the link is out, but the association can stay put!


4.1.7. SCTP Association Problems ๐Ÿ’€

The SCTP association for a link can become unusable, for example when one of these things happens:

  • SCTP sends a Send Failure notification to M2PA.
  • SCTP sends a Communication Lost notification to M2PA.
  • SCTP sends a Communication Error notification to M2PA.
  • The SCTP association is lost.

If the SCTP association for a link becomes unable to transmit or receive messages, M2PA SHALL report to MTP3 that the link is out of service and enter the OUT OF SERVICE state ๐Ÿ˜ญ.


4.1.8. Transmission and Reception Priorities ๐Ÿ‘‘

In MTP, Link Status messages get priority over User Data messages ([Q.703], Section 11.2). To make that happen in M2PA, M2PA uses separate streams in its SCTP association: one for Link Status messages and one for User Data messages ๐ŸŒˆ.

M2PA SHALL send all messages using the ordered delivery option of SCTP ๐Ÿ“ฌ.

When sending messages to SCTP, M2PA SHOULD give higher priority to messages on the Link Status stream than to messages on the User Data stream ๐Ÿƒโ€โ™€๏ธ.

When reading, M2PA SHOULD give higher priority to the Link Status stream than to the User Data stream โœจ.

And M2PA SHOULD give higher priority to receiving notifications from SCTP than to reading either the Link Status stream or the User Data stream ๐Ÿ””.


4.1.9. M2PA Version Control ๐Ÿงฉ

A node that gets upgraded to a newer version of M2PA SHOULD still support the older versions used on other nodes it's talking to. If it does, then alignment can proceed normally ๐Ÿซถ.

For future changes to this protocol, it is recommended that:

  • Any newer version SHOULD be able to process messages from an older version.
  • A newer version of M2PA SHOULD refrain from sending an older version of M2PA messages that the older version cannot process.
  • If an older version of M2PA receives a message it cannot process, it SHOULD discard the message.
  • In cases where two versions do different processing for the same format of a message, the newer version SHOULD contain procedures to recognize and handle this appropriately.

If a newer version of M2PA is incompatible with an older version, the newer version SHOULD recognize this and prevent the alignment of the link ๐Ÿšซ. And if a Link Status Alignment message with an unsupported version lands on the newer version, the receiving end's M2PA SHOULD reply with a Link Status Out of Service message and not complete the alignment procedure ๐Ÿ’….


4.2. Procedures to Support the MTP3/MTP2 Interface ๐ŸŽ€

4.2.1. Sending and Receiving Messages ๐Ÿ’Œ

Okay so when MTP3 wants to send something, M2PA takes that message and passes the matching M2PA message down to SCTP using the SEND primitive. This is the moment the message actually leaves the building ๐Ÿšชโœจ

User Data messages SHALL be sent via the User Data stream (stream 1) of the association. ๐Ÿ’–

M2PA Link Status messages are passed to SCTP using the SEND primitive. ๐Ÿซถ

These Link Status messages SHALL be sent on the Link Status stream (stream 0), no exceptions bestie:

  • Alignment
  • Proving Normal
  • Proving Emergency
  • Ready (when sent during alignment)
  • Busy
  • Busy Ended
  • Out of Service

These Link Status messages SHALL be sent on the User Data stream (stream 1) instead:

  • Processor Outage
  • Processor Recovered
  • Ready (when sent at the end of processor outage)

If M2PA gets a message from SCTP with an invalid Message Class or an unsupported Message Type in the Common Message Header, M2PA SHALL discard the message. Gone. ๐Ÿ—‘๏ธ๐Ÿ’…

For message types other than User Data, the Forward Sequence Number is set to the FSN of the last User Data message sent. ๐Ÿฆ‹

If M2PA receives a User Data message with an FSN that is out of order, M2PA SHALL discard the message. Out of order is not it ๐Ÿ™…โ€โ™€๏ธ

Note: In all calculations involving FSN and BSN, the programmer should be aware that the value wraps around to 0 after reaching its maximum value. The wraparound is literally the plot twist of this whole section ๐ŸŒ€

When there is a message to acknowledge, M2PA MUST acknowledge the message with the next User Data message sent. ๐ŸŽ€ If there is no User Data message available to be sent when there is a message to acknowledge, M2PA SHOULD generate and send a User Data message with no data payload, without delay. (In other words, in the case where MTP2 would acknowledge a message with a FISU, M2PA SHOULD acknowledge the message with an empty User Data message.) The FSN for this empty User Data message is not incremented. It MUST contain the same FSN as the most recently sent User Data message that contains data. Delaying acknowledgements can result in poor SS7 performance, so don't be that person ๐Ÿ˜ญ

If M2PA receives an empty User Data message, it SHALL NOT send an acknowledgement of that message. We don't ack the ack, periodt ๐Ÿ™ˆ

Note that there is no reason to place Link Status messages or empty User Data messages in the M2PA retransmit buffer, since these messages are not retrieved for changeover and timer T7 does not apply to them. ๐Ÿงš

Note that since SCTP provides reliable delivery and ordered delivery within the stream, M2PA does not perform retransmissions. Nevertheless, M2PA SHALL retain transmitted User Data messages in a retransmit queue until they are acknowledged. These messages are needed in case MTP3 performs data retrieval as part of a changeover procedure. SCTP has our back, but we still keep receipts ๐Ÿงพ๐Ÿ’œ

Because propagation delays in IP networks are more variable than in traditional SS7 networks, a single T7 timer (excessive delay of acknowledgement), as in MTP2, is inadequate. ๐Ÿ™ƒ If any message is unacknowledged after a period equal to the T7 value, the T7 timer SHALL expire. Time's up, no cap โฐ๐Ÿ”ฅ

M2PA SHALL detect transmit congestion in its buffers according to the requirements for signaling link transmit congestion in MTP3, e.g., Q.704 [Q.704], Section 3.8. Congestion detection is giving very organised energy ๐Ÿ“‹โœจ

4.2.3. Changeover ๐Ÿ”

Okay this is the big one, so get comfy ๐Ÿ›‹๏ธ. The objective of the changeover is to make sure that signaling traffic carried by the unavailable signaling link gets diverted to the alternative signaling link(s) as quickly as possible, while avoiding message loss, duplication, or mis-sequencing. For this purpose, the changeover procedure includes data retrieval, which is performed before opening the alternative signaling links to the diverted traffic. Data retrieval consists of these steps:

(1) buffer updating, i.e., identifying all those User Data messages in the retransmission buffer of the unavailable signaling link which have not been received by the far end M2PA, as well as untransmitted messages, and

(2) transferring those messages to the transmission buffers of the alternate links.

Note that only User Data messages containing data are retrieved and transmitted over the alternate links. Link Status messages and empty User Data messages SHALL NOT be retrieved and transmitted over the alternate links. Only the real data gets to move, bestie ๐Ÿ’…

M2PA's Sequence Numbers are 24 bits long. MTP2's Forward and Backward Sequence Numbers are only seven bits long. Hence, it is necessary for MTP3 to accommodate the larger sequence numbers. ๐Ÿง  This is done through the use of the Extended Changeover Order (XCO) and Extended Changeover Acknowledgement (XCA) messages instead of the Changeover Order (COO) and Changeover Acknowledgement (COA) messages. The XCO and XCA messages are specified in [Q.2210] Section 9.8.1 and T1.111.4 [T1.111], Section 15.4. Only the XCO and XCA messages from [Q.2210] or [T1.111] are required. The BSN is placed in the XCO/XCA message as explained in [Q.2210] and [T1.111]. Upgrade energy, literally ๐Ÿ†™

Also, the following MTP3/MTP2 primitives MUST use the larger sequence numbers:

  • BSNT Confirmation
  • Retrieval Request and FSNC

If M2PA receives a Retrieval Request and FSNC request from MTP3, M2PA SHALL retrieve from its buffers and deliver to MTP3 in order:

(a) any transmitted User Data messages beginning with the first unacknowledged message with FSN greater than FSNC.

(b) any untransmitted User Data messages.

For emergency changeover, MTP3 retrieves only the unsent messages for transmission on the alternate link(s). If M2PA receives a Retrieval Request and FSNC request with no FSNC value, or with an invalid FSNC, then M2PA SHALL retrieve from its buffers and deliver to MTP3 in order:

(a) any untransmitted User Data messages.

The Japanese TTC version of MTP defined in [JT-Q703] and [JT-Q704] has a Retrieval Request (as well as Retrieval Request and FSNC). The Retrieval allows MTP3 to retrieve both unsent and unacknowledged messages for transmission on the alternate link(s). In this version of MTP, if M2PA receives a Retrieval Request, then M2PA SHALL retrieve from its buffers and deliver to MTP3 in order:

(a) any transmitted but unacknowledged User Data messages.

(b) any untransmitted User Data messages.

4.2.3.1. Multiple User Data Streams and Changeover ๐ŸŒˆ

The changeover procedure makes it problematic for M2PA to have multiple User Data streams in one direction for a link. Buffer updating would have to be done separately for each User Data stream to avoid duplication or loss of messages. But MTP3 provides for only one XCO/XCA message for sending the last-received sequence number. Not ideal, not it ๐Ÿ˜ฉ

Even with sequence numbering of User Data messages at the M2PA layer, it is necessary to perform buffer updating on each stream. Since the M2PA messages would be delivered over multiple streams, there could be a gap in the M2PA sequence numbers at the receiving end when the changeover procedure begins. If only the M2PA sequence number is used in the XCO/XCA message, there would be a possibility of losing the messages in the gap, or duplicating messages after the gap. ๐Ÿ™€

M2PA links with multiple User Data streams would be possible if a multiple-BSNT XCO/XCA message is defined in MTP3, or if MTP3 allows multiple XCO/XCA messages (one for each User Data stream) to be sent during a changeover. This is beyond the scope of this document. ๐Ÿ”ฎ

4.3. SCTP Considerations ๐Ÿ›ก๏ธ

Some M2PA procedures may be affected by the use of SCTP as a transport layer. These considerations are discussed in this section. SCTP is the transport diva here ๐Ÿ’ƒ

4.3.1. SCTP Slow Start ๐Ÿข

SCTP contains a slow start algorithm to control the amount of data being injected into the network. The algorithm allows SCTP to probe the network to determine the available capacity. The algorithm is invoked in these cases: when transmission begins on an association, after a sufficiently long idle period, or after repairing loss detected by the SCTP retransmission timer.

It is possible that transmission of M2PA messages MAY be delayed by SCTP slow start under certain conditions, including the following:

(a) Link Alignment. Link alignment takes place after an association is established. SCTP invokes the slow start algorithm since transmission is beginning on the association.

(b) Changeover. Messages are retrieved from one link (association) and transferred to another for transmission. If the second link had previously been idle, or is in the process of link alignment, SCTP may invoke the slow start algorithm.

(c) Path failure (multi-homing). If SCTP switches from a failed path to a new path, and the new path had previously been idle, SCTP may invoke the slow start algorithm.

(d) Reduced traffic volume. Any time that M2PA sends a low volume of traffic on a link and then the volume increases, SCTP may invoke the slow start algorithm.

Programmers should be aware of this condition and how it may affect M2PA performance. In some cases, it may be possible to avoid the negative effects of slow start. For example, the Link Status Proving messages sent during the proving period may be used to complete slow start before the link is placed in service. Warm up the engine before the main event ๐ŸŽ๏ธ๐Ÿ’จ

5. Examples of M2PA Procedures ๐ŸŽ€

In general, messages passed between MTP3 and M2PA are the same as those passed between MTP3 and MTP2. M2PA interprets messages from MTP3 and sends the appropriate message to SCTP. Likewise, messages from SCTP are used to generate a meaningful message to MTP3. Same messages, new outfit ๐Ÿ‘—โœจ

Note that throughout this section, the primitives between MTP3 and M2PA are named using the MTP terminology [Q.700] [Q.701] [Q.702] [Q.703] [Q.704] [Q.705]. Communications between M2PA and SCTP are named using SCTP terminology. Two dictionaries, one vibe ๐Ÿ“š๐Ÿซถ

okay so this is the message flow for bringing an SS7 link into service ๐Ÿ’– Figures 11 and 12 show it. Both ends of the link do alignment, but to keep the diagram from getting messy, it's only drawn for one end. Some messages from the remote end are left out too. We're also assuming SCTP has already been initialized โœจ

    MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
    ----        ----        ----        ----        ----        ----
     .           .           .           .           .           .
     .           Associate   .           .           .           .
     .           ------------>           .           .           .
     .           .           .           .           .           .
     .           .           (SCTP Association       .           .
     .           .            procedure)             .           .
     .           .           .           .           .           .
     .           Communication Up        Communication Up        .
     .           <------------           ------------>           .
     .           .           .           .           .           .
     .           Link Status Out of Service          .           .
     .           ------------------------------------>           .
     .           .           .           .           .           .
     Emergency OR            .           .           .           .
     Emergency Ceases        .           .           .           .
     ------------>           .           .           .           .
     .           .           .           .           .           .
     Start       .           .           .           .           .
     ------------>           .           .           .           .
     .           .           .           .           .           .
     .           .           .           .           .           .
     .           Link Status Alignment   .           .           .
     .           ------------------------------------>           .
     .           .           .           .           .           .
     .           Start timer T2          .           .           .
     .           .           .           .           .           .
     .           .           .   Link Status Alignment           .
     .           <------------------------------------           .
     .           .           .           .           .           .
     .           Stop timer T2           .           .           .
     .           .           .           .           .           .

Proving period begins.

Figure 11. Example: Link Initialization - Alignment

    MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
    ----        ----        ----        ----        ----        ----
     .           .           .           .           .           .
     .           Start timer T3          .           .           .
     .           Link Status Proving     .           .           .
     .           ------------------------------------>           .
     .           .           .           .           .           .
     .           .           .     Link Status Proving           .
     .           <------------------------------------           .
     .           .           .           .           .           .
     .           Stop timer T3           .           .           .
     .           .           .           .           .           .
     .           Start timer T4          .           .           .
     .           Link Status Proving     .           .           .
     .           ------------------------------------>           .
     .           ------------------------------------>           .
     .           ------------------------------------>           .
     .           ------------------------------------>           .
     .           ------------------------------------>           .
     .           ------------------------------------>           .
     .           .           .           .           .           .
     .           Timer T4 expires        .           .           .
     .           .           .           .           .           .

Send Link Status Ready (one or more) and wait for the remote end
to complete its proving period.

     .           .           .           .           .           .
     .           Start timer T1          .           .           .
     .           .           .           .           .           .
     .           Link Status Ready       .           .           .
     .           ------------------------------------>           .
     .           .           .           .           .           .
     .           .           .           .           .           .
     .           .           .       Link Status Ready           .
     .           <------------------------------------           .
     .           .           .           .           .           .
     .           Stop timer T1           .           .           .
     .           .           .           .           .           .
     In Service              .           .           In Service
     <------------           .           .           ------------>
     .           .           .           .           .           .

MTP3 MAY begin sending data messages.

Figure 12. Example: Link Initialization - Proving

5.2. Message Transmission and Reception ๐Ÿ’…

messages get sent using the Data Request primitive, going from MTP3 down to M2PA โœจ Figure 13 is the case where the Link is In Service. The message goes from MTP3 at the source all the way to MTP3 at the destination ๐Ÿš€

    MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
    ----        ----        ----        ----        ----        ----
     .           .           .           .           .           .
     Message for             .           .           .           .
     transmission            .           .           .           .
     ------------>           .           .           .           .
     .           .           .           .           .           .
     .           Send        .           .           .           .
     .           (Data Message)          .           .           .
     .           ------------>           .           .           .
     .           .           .           .           .           .
     .           .           (SCTP sends message)    .           .
     .           .           .           .           .           .
     .           .           .           Receive                 .
     .           .           .           ------------>           .
     .           .           .           .           .           .
     .           .           .           .        Received message
     .           .           .           .           ------------>
     .           .           .           .           .           .

Figure 13. Example: Link Initialization - In Service

okay this one's a Link Status Indication example, shown in Figure 14 ๐ŸŒธ If SCTP sends a Communication Lost primitive to M2PA, M2PA tells MTP3 that the link is out of service. MTP3 then responds in its usual way ๐Ÿ’œ

    MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
    ----        ----        ----        ----        ----        ----
     .           .           .           .           .           .
     .           Communication Lost      .           .           .
     .           <------------           .           .           .
     .           .           .           .           .           .
     Out of Service          .           .           .           .
     <------------           .           .           .           .
     .           .           .           .           .           .

Figure 14. Example: Link Status Indication

okay bestie, picture this: a local processor goes down ๐Ÿ˜ญ and M2PA has to handle it. Figure 15 shows exactly how that goes. M2PA sends a Link Status message to its peer, and the peer M2PA tells MTP3 about the outage. Then MTP3 can follow the processor outage procedures as in [Q.703] ๐Ÿ’….

       MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
       ----        ----        ----        ----        ----        ----
        .           .           .           .           .           .
        .       M2PA detects    .           .           .           .
        .       Local Processor .           .           .           .
        .       Outage          .           .           .           .
        .           .           .           .           .           .
        .           Link Status .           .           .           .
        .           Processor Outage        .           .           .
        .           ------------------------------------>           .
        .           .           .           .           .           .
        .           .           .           .        Remote Processor
        .           .           .           .        Outage         .
        .           .           .           .           ------------>
        .           .           .           .           .           .
        .           Link Status             .           .           .
        .           Processor               .           .           .
        .           Recovered               .           .           .
        ------------------------------------>           .
        .           .           .           .           .           .
        .           .           .           .        Remote Processor
        .           .           .           .        Outage Ceases
        .           .           .           .           ------------>
        .           .           .           .           .           .
        .           .           .       Link Status Ready           .
        .           <------------------------------------           .
        .           .           .           .           .           .
        .           Link Status Ready       .           .           .
        .           ------------------------------------>           .
        .           .           .           .           .           .
        Message for             .           .           .           .
        transmission            .           .           .           .
        ------------>           .           .           .           .
        .           .           .           .           .           .
        .           User Data               .           .           .
        .           ------------------------------------>           .
        .           .           .           .           .           .

Figure 15. Example: Link Status Message - Processor Outage โœจ

Figure 16 zooms in on a processor outage with way more detail ๐Ÿ”. Every M2PA message in this example goes out on the Data stream (stream 1) ๐Ÿ’œ.

                    A                                   B
       ----------------------------        ----------------------------

       MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
       ----        ----        ----        ----        ----        ----
        .           .           .           .           .           .
        6 Messages for          .           .           .           .
        transmission            .           .           .           .
        ------------>           .           .          6 Messages for
        .           .           .           .            transmission
        .           .           .           .           <------------
        .           User Data FSN=1         .           .           .
        .           ------------------------------------>           .
        .           User Data FSN=2         .           .           .
        .           ------------------------------------>           .
        .           User Data FSN=3         .           .           .
        .           ------------------------------------>           .
        .           .           .        User Data FSN=11           .
        .           <------------------------------------           .
        .           .           .        User Data FSN=12           .
        .           <------------------------------------           .
        .           .           .        User Data FSN=13           .
        .           <------------------------------------           .

Side A detects LPO ๐Ÿšจ.

        .           .           .           .           .           .
        .           .           .  User Data FSN=14 BSN=3           .
        .           <------------------------------------           .
        .           .           .  User Data FSN=15 BSN=3           .
        .           <------------------------------------           .
        .           .           .  User Data FSN=16 BSN=3           .
        .           <------------------------------------           .
        .           LS PO FSN=3 BSN=11      .           .           .
        .           ------------------------------------>           .
        .           .           .           .        Remote Processor
        .           .           .           .        Outage         .
        .           .           .           .           ------------>

While in LPO, A must buffer messages 14-16 without acknowledging them ๐Ÿซฃ. A may continue transmitting messages from MTP3, and acknowledging messages that were received before LPO ๐Ÿ“ฌ.

        .           .           .           .           .           .
        .           User Data FSN=4 BSN=13  .           .           .
        .           ------------------------------------>           .
        .           User Data FSN=5 BSN=13  .           .           .
        .           ------------------------------------>           .
        .           User Data FSN=6 BSN=13  .           .           .
        .           ------------------------------------>           .
        .           .           .           .           .           .

While in RPO, B may continue acknowledging messages ๐ŸŒธ. Suppose that B receives message 4 and 5, but has not processed 6 yet ๐Ÿงš.

         .           .           .           .           .           .
         .                  (empty) User Data FSN=16 BSN=4
         .           <------------------------------------           .
         .                  (empty) User Data FSN=16 BSN=5
         .           <------------------------------------           .

LPO ends at A. A flushes 14-16 (the messages that were buffered without acknowledgement) ๐Ÿงน.

         .           .           .           .           .           .
         .           LS PR FSN=6 BSN=13      .           .           .
         .           ------------------------------------>           .
         .           .           .           .        Remote Processor
         .           .           .           .        Outage Ceases
         .           .           .           .           ------------>
         .           .           .           .           .           .

Suppose that B processed message 5, but never processed message 6 ๐Ÿ™ˆ. B flushes message 6 from its Receive Buffer. B notifies A of this using the Link Status Ready message setting BSN=5, the last message that was processed at B ๐Ÿ’€.

         .           .           .           .           .           .
         .           .           .           .           .           .
         .           .           .   LS Ready FSN=13 BSN=5           .
         .           <------------------------------------           .
         .           .           .           .           .           .

B has completed synchronization of sequence numbers and has sent an LS Ready, so it is able to resume sending data at this point with the new sequence numbers (starting with FSN=14) ๐Ÿ™Œ.

         .           .           .           .           .           .
         .           .           .           .           . Message for
         .           .           .           .            transmission
         .           .           .           .           <------------
         .           .           .  User Data FSN=14 BSN=5           .
         .           <------------------------------------           .
         .           .           .           .           .           .

A can use the Link Status Ready information to resynchronize its sequence numbers to begin with FSN=6 in the next User Data message ๐Ÿ”.

         .           .           .           .           .           .
         .           LS Ready FSN=5 BSN=13   .           .           .
         .           ------------------------------------>           .
         .           .           .           .           .           .

A has completed synchronization of sequence number and has both received and sent an LS Ready, so it is able to resume sending data at this point with the new sequence numbers and acknowledging data received after receiving LS Ready ๐ŸŽ€.

         .           .           .           .           .           .
         .           .           .           .           .           .
         .           User Data FSN=5 BSN=14 (empty)      .           .
         .           ------------------------------------>           .
         .           .           .           .           .           .
         Message for             .           .           . Message for
         transmission            .           .            transmission
         ------------>           .           .           <------------
         .           User Data FSN=6 BSN=14  .           .           .
         .           ------------------------------------>           .
         .           .           .  User Data FSN=15 BSN=5           .
         .           <------------------------------------           .
         .           .           .           .           .           .
         .           .      (empty) User Data FSN=15 BSN=6           .
         .           <------------------------------------           .
         .           User Data FSN=6 BSN=15 (empty)      .           .
         .           ------------------------------------>           .
         .           .           .           .           .           .
         .           .           .           .           .           .
         .           .           .           .           .           .

Figure 16. Example: Processor Outage and Recovery ๐Ÿฆ‹

5.5. Level 2 Flow Control โœจ

Okay so Figures 17 and 18 show the Level 2 Flow Control procedure, and it's giving drama ๐Ÿ’… In Figure 17, the congestion clears up before timer T6 runs out. In Figure 18, T6 expires and things get messy ๐Ÿ˜ญ

       MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
       ----        ----        ----        ----        ----        ----
        .           .           .           .           .           .
        .           Implementation dependent            .           .
        .           determination of M2PA               .           .
        .           receive congestion onset            .           .
        .           .           .           .           .           .
        .           Link Status Busy        .           .           .
        .           ------------------------------------>           .
        .           .           .           .           .           .
        .           .           .           .          Start        .
        .           .           .           .          Timer T6     .
        .           .           .           .           .           .
        .           Implementation dependent            .           .
        .           determination of M2PA               .           .
        .           receive congestion abatement        .           .
        .           .           .           .           .           .
        .           Link Status Busy Ended  .           .           .
        .           ------------------------------------>           .
        .           .           .           .           .           .
        .           .           .           .          Stop         .
        .           .           .           .          Timer T6     .
        .           .           .           .           .           .

       Figure 17.  Example: Level 2 Flow Control - Congestion Ceases
       MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
       ----        ----        ----        ----        ----        ----
        .           .           .           .           .           .
        .           Implementation dependent            .           .
        .           determination of M2PA               .           .
        .           receive congestion onset            .           .
        .           .           .           .           .           .
        .           Link Status Busy        .           .           .
        .           ------------------------------------>           .
        .           .           .           .           .           .
        .           .           .           .          Start        .
        .           .           .           .          Timer T6     .
        .           .           .           .            :          .
        .           .           .           .            :          .
        .           .           .           .          Timer T6     .
        .           .           .           .          Expires      .
        .           .           .           .           .           .
        .           .          Link Status Out of Service           .
        .           <------------------------------------           .
        .           .           .           .           .           .
        .           .           .           .          Out of Service
        .           .           .           .           ------------>
        .           .           .           .           .           .

       Figure 18.  Example: Level 2 Flow Control - Timer T6 Expires

In Figure 19, M2PA tells MTP3 about congestion onset and abatement. That notification includes the congestion level, if there are levels of congestion defined. Iconic behaviour ๐Ÿ™Œ

       MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
       ----        ----        ----        ----        ----        ----
        .           .           .           .           .           .
        .           Implementation dependent            .           .
        .           determination of M2PA   .           .           .
        .           transmit congestion     .           .           .
        .           onset (level)           .           .           .
        .           .           .           .           .           .
        Congestion Indication   .           .           .           .
        (level)     .           .           .           .           .
        <------------           .           .           .           .
        .           .           .           .           .           .
        .           Implementation dependent            .           .
        .           determination of M2PA   .           .           .
        .           transmit congestion     .           .           .
        .           abatement (level)       .           .           .
        .           .           .           .           .           .
        Congestion Indication   .           .           .           .
        (level)     .           .           .           .           .
        <------------           .           .           .           .
        .           .           .           .           .           .

            Figure 19.  Example: MTP3 Signaling Link Congestion

Figure 20 shows an example of link deactivation. MTP3 can ask for a link to be taken out of service. Simple, but iykyk ๐Ÿซถ

       MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
       ----        ----        ----        ----        ----        ----
        .           .           .           .           .           .
        Stop        .           .           .           .           .
        ------------>           .           .           .           .
        .           .           .           .           .           .
        .           Link Status Out of Service          .           .
        .           ------------------------------------>           .
        .           .           .           .           .           .
        Out of Service          .           .           .           .
        <------------           .           .           .           .
        .           .           .           .           .           .

                  Figure 20.  Example: Link Deactivation

In Figure 21, MTP3 does a changeover because the link went out of service. MTP3 picks a different link to resend the unacknowledged and unsent messages. Main character energy, literally ๐Ÿ‘‘

       MTP3        M2PA        SCTP        SCTP        M2PA        MTP3
       ----        ----        ----        ----        ----        ----
        .           .           .           .           .           .
        .           Communication Lost      .           .           .
        .           <------------           .           .           .
        .           .           .           .           .           .
        Out of Service          .           .           .           .
        <------------           .           .           .           .
        .           .           .           .           .           .
        Retrieve BSNT           .           .           .           .
        ------------>           .           .           .           .
        .           .           .           .           .           .
        BSNT Confirmation       .           .           .           .
        <------------           .           .           .           .
        .           .           .           .           .           .
        XCO (BSNT) on another link          .           .           .
        ------------------------------------------------------------>
        .           .           .           .           .           .
        .           .           .           .           Retrieve BSNT
        .           .           .           .           <------------
        .           .           .           .           .           .
        .           .           .           .       BSNT Confirmation
        .           .           .           .           ------------>
        .           .           .           .           .           .
        .           .           .           .           .  XCA (BSNT)
        <------------------------------------------------------------
        .           .           .           .           .           .
        Retrieval Request       .           .           .           .
        and FSNC    .           .           .           .           .
        ------------>           .           .           .           .
        .           .           .           .           .           .
        Retrieved Message       .           .           .           .
        <------------           .           .           .           .
        .  :        .           .           .           .           .
        .  :        .           .           .           .           .
        <------------           .           .           .           .
        .           .           .           .           .           .
        Retrieval Complete      .           .           .           .
        <------------           .           .           .           .
        .           .           .           .           .           .
        Send messages on another link.

                   Figure 21.  Example: Link Changeover

6. Security Considerations ๐Ÿ”

M2PA is designed to carry signaling messages for telephony services. So the security stakes are real, bestie ๐Ÿšจ M2PA MUST involve the security needs of several parties:

  • the end users of the services
  • the network providers
  • the applications involved

Additional requirements MAY come from local regulation.

These parties may have some overlapping security needs, but their needs may not be identical. Any security solution SHOULD fulfill all of the different parties' needs.

Please don't skip this part. Consult [RFC3788] for a discussion of security requirements and for guidance on the use of security protocols. Implementers of M2PA MUST follow the guidelines in [RFC3788]. ๐Ÿ’€

7. IANA Considerations ๐Ÿ“‹

7.1. SCTP Payload Protocol Identifier ๐ŸŽ€

The SCTP Registered User Port Number Assignment for M2PA is 3565. The TCP Registered User Port Number 3565 is also assigned to M2PA, in case a specification for M2PA over TCP is created.

The value IANA assigned for the Payload Protocol Identifier in the SCTP Payload Data chunk is:

     M2PA     5

The SCTP Payload Protocol Identifier is included in each SCTP Data chunk, to indicate which protocol the SCTP is carrying. This Payload Protocol Identifier is not directly used by SCTP, but certain network entities may use it to identify the type of information being carried in a Data chunk.

The User Adaptation peer may use the Payload Protocol Identifier as a way of working out additional information about the data SCTP is handing it. ๐Ÿง 

7.2. M2PA Protocol Extensions ๐ŸŒˆ

This protocol may be extended through IANA in three ways:

  • through definition of additional message classes,
  • through definition of additional message types, and
  • through definition of additional message parameters.

Defining new message classes, types, and parameters is an integral part of SIGTRAN adaptation layers, so these extensions are assigned by IANA through an IETF Consensus action as defined in [RFC2434]. ๐Ÿ’–

The proposed extension must in no way adversely affect the general working of the protocol. No notes, no cap ๐Ÿ™…โ€โ™€๏ธ

The defined values for the message classes, types, and parameters are listed in the Signaling User Adaptation Layer registry (sigtran-adapt).

7.2.1. IETF Defined Message Classes ๐ŸŽ€

okay so if you're making a brand new message class, the docs MUST have two things, no exceptions bestie:

  • (a) A long and short name for the message class.
  • (b) A detailed description of the purpose of the message class.

7.2.2 IETF Defined Message Types ๐Ÿ’…

the documentation for a message type MUST contain the following info, periodt:

  • (a) A long and short name for the new message type.
  • (b) A detailed description of the structure of the message.
  • (c) A detailed definition and description of the intended use of each field within the message.
  • (d) A detailed procedural description of the use of the new message type within the operation of the protocol.
  • (e) A detailed description of error conditions when receiving this message type.

ok and if an implementation gets a message type it doesn't support, it MUST discard the message. ๐Ÿ—‘๏ธ no keeping it, no cap.

7.2.3. IETF-defined Parameter Extension โœจ

the docs for a message parameter MUST contain the following info ๐Ÿฆ‹

  • (a) Name of the parameter type.
  • (b) Detailed description of the structure of the parameter field.
  • (c) Detailed definition of each component of the parameter value.
  • (d) Detailed description of the intended use of this parameter type, and an indication of whether, and under what circumstances, multiple instances of this parameter type may be found within the same message type.

7.2.4. Defined Values ๐Ÿงš

this section lists the values defined in this document that should be included in the Signaling User Adaptation Layer registry (sigtran-adapt). the registry is the main character here ๐Ÿ‘‘

the following values for Message Class are defined in this document:

          Value
        (decimal)  Message Class
        ---------  -------------
           11      M2PA Messages

the following values for Message Type are defined in this document:

          Value
        (decimal)  Message Type
        ---------  -------------
            1      User Data
            2      Link Status

8. Acknowledgements ๐Ÿซถ

the authors would like to thank the following for their valuable comments and suggestions. they're the real MVPs ๐Ÿ’–: Brian Tatum, Wayne Davis, Cliff Thomas, Jeff Copley, Monique Bernard, Malleswar Kalla, Ian Rytina, Greg Sidebottom, Al Varney, Jeff Craig, and Andrew Booth.

9. References ๐Ÿ“š

9.1. Normative References

[JT-Q703] TTC, "Message Transfer Part Signalling Link," TTC Standard JT-Q703, Telecommunication Technology Committee (TTC), version 3 (April 27, 1994).

[JT-Q704] TTC, "Message Transfer Part Signalling Network Functions," TTC Standard JT-Q704, Telecommunication Technology Committee (TTC), version 4 (May 30, 2002).

[Q.703] ITU, "Signalling System No. 7 - Signalling Link," ITU-T Recommendation Q.703, ITU-T Telecommunication Standardization Sector of ITU (July 1996).

[Q.704] ITU, "Message Transfer Part - Signalling Network Functions and Messages," ITU-T Recommendation Q.704, ITU-T Telecommunication Standardization Sector of ITU (July 1996).

[Q.2140] ITU, "B-ISDN ATM Adaptation Layer - Service Specific Coordination Function for Signalling at the Network Node Interface (SSCF at NNI)," ITU-T Recommendation Q.2140, ITU-T Telecommunication Standardization Sector of ITU (February 1995).

[Q.2210] ITU, "Message Transfer Part Level 3 Functions and Messages Using the Services of ITU-T Recommendation Q.2140," ITU-T Recommendation Q.2210, ITU-T Telecommunication Standardization Sector of ITU (July 1996).

[RFC791] Postel, J., "Internet Protocol", STD 5, RFC 791, September 1981.

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2434] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 2434, October 1998.

[RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C., Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M., Zhang, L., and V. Paxson, "Stream Control Transmission Protocol", RFC 2960, October 2000.

[RFC3309] Stone, J., Stewart, R., and D. Otis, "Stream Control Transmission Protocol (SCTP) Checksum Change", RFC 3309, September 2002.

[RFC3788] Loughney, J., Tuexen, M., and J. Pastor-Balbas, "Security Considerations for Signaling Transport (SIGTRAN) Protocols", RFC 3788, June 2004.

[T1.111] ANSI, "American National Standard for Telecommunications - Signaling System Number 7 (SS7) - Message Transfer Part (MTP)," ANSI T1.111-2001, American National Standards Institute (February 2001).

9.2. Informative References

[M2UA] K. Morneault, et. al., "Signaling System 7 (SS7) Message Transfer Part 2 (MTP2) - User Adaptation Layer," RFC 3331, Internet Engineering Task Force - Signalling Transport Working Group (September, 2002).

[Q.700] ITU, "Introduction to CCITT Signalling System No. 7," ITU-T Recommendation Q.700, ITU-T Telecommunication Standardization Sector of ITU (March 1993).

[Q.701] ITU, "Functional Description of the Message Transfer Part (MTP) of Signalling System No. 7," ITU-T Recommendation Q.701, ITU-T Telecommunication Standardization Sector of ITU (March 1993).

[Q.702] ITU, "Signalling Data Link," ITU-T Recommendation Q.702, ITU-T Telecommunication Standardization Sector of ITU (November 1988).

[Q.705] ITU, "Signalling System No. 7 - Signalling Network Structure," ITU-T Recommendation Q.705, ITU-T Telecommunication Standardization Sector of ITU (March 1993).

[RFC2719] Ong, L., Rytina, I., Garcia, M., Schwarzbauer, H., Coene, L., Lin, H., Juhasz, I., Holdrege, M., and C. Sharp, "Framework Architecture for Signaling Transport", RFC 2719, October 1999.

Authors' Addresses ๐ŸŒธ

the people behind the doc, with their contact info ๐Ÿ’Œ

Tom George
Plano, TX
USA

Phone: +1-972-985-4594
EMail: tgeorge_tx@verizon.net

Brian Bidulock
OpenSS7 Corporation
1469 Jeffreys Crescent
Edmonton, AB  T6L 6T1
Canada

Phone: +1-780-490-1141
EMail: bidulock@openss7.org

Ram Dantu, Ph.D.
Assistant Professor
Department of Computer Science
University of North Texas
Denton, TX 76203
USA

Phone: +1-940-565-2822
EMail: rdantu@unt.edu

Hanns Juergen Schwarzbauer
SIEMENS AG
Hofmannstr. 51
81359 Munich
Germany

Phone: +49-89-722-24236
EMail: HannsJuergen.Schwarzbauer@Siemens.com

Ken Morneault
Cisco Systems Inc.
13615 Dulles Technology Drive
Herndon, VA 20171
USA

Phone: +1-703-484-3323
EMail: kmorneau@cisco.com

Copyright (C) The Internet Society (2005).

This document is subject to the rights, licenses and restrictions contained in BCP 78, and except as set forth therein, the authors retain all their rights.

This document and the information contained herein are provided on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property ๐Ÿ”ฅ

The IETF takes no position regarding the validity or scope of any Intellectual Property Rights or other rights that might be claimed to pertain to the implementation or use of the technology described in this document or the extent to which any license under such rights might or might not be available; nor does it represent that it has made any independent effort to identify any such rights. Information on the procedures with respect to rights in RFC documents can be found in BCP 78 and BCP 79.

Copies of IPR disclosures made to the IETF Secretariat and any assurances of licenses to be made available, or the result of an attempt made to obtain a general license or permission for the use of such proprietary rights by implementers or users of this specification can be obtained from the IETF on-line IPR repository at http://www.ietf.org/ipr.

The IETF invites any interested party to bring to its attention any copyrights, patents or patent applications, or other proprietary rights that may cover technology that may be required to implement this standard. Please address the information to the IETF at ietf-ipr@ietf.org.

Acknowledgement ๐Ÿ’œ

Funding for the RFC Editor function is currently provided by the Internet Society. ๐Ÿซถ

๐Ÿ“ฆ where this page comes from