99 lines
2.9 KiB
Plaintext
99 lines
2.9 KiB
Plaintext
== RSPRO
|
|
|
|
*RSPRO*, the *Remote SIM Protocol*, is an osmo-remsim specific,
|
|
non-standard communications protocol used between the elements of the
|
|
osmo-remsim system.
|
|
|
|
It is specified in ASN.1 syntax (see `asn1/RSPRO.asn` in the
|
|
`osmo-remsim` source code) and uses BER (Basic Encoding Rules) on the
|
|
transport level.
|
|
|
|
=== Underlying Transport Layer
|
|
|
|
RSPRO uses TCP as an underlying transport protocol. As TCP doesn't
|
|
preserve message boundaries, the IPA multiplex is used as intermediate
|
|
layer between TCP and the BER-encoded RSPRO PDU.
|
|
|
|
For more information about the IPA multiplex, see the related chapter
|
|
in http://ftp.osmocom.org/docs/latest/osmobts-abis.pdf
|
|
|
|
RSPRO uses the IPA CCM PING/PONG messages for keep-alive and detection
|
|
of dead/stale connections. The compiled-in defaults transmits one IPA
|
|
PING every 30s and waits 10s for a response from the peer before
|
|
declaring the connection as dead.
|
|
|
|
=== RSPRO PDU
|
|
|
|
An RsproPDU consists of:
|
|
|
|
* *version* of the protocol (v2 is current)
|
|
* *tag* specified by the sender, echoed back by the receiver in
|
|
its response so the server can map responses back to a specific
|
|
request
|
|
* *msg* the actual RSPRO Message (union/choice)
|
|
|
|
=== RSPRO Operations
|
|
|
|
Each RSPRO Operation typically (unless specified othewise) consists of a
|
|
Request and Response pair.
|
|
|
|
==== ConnectBank
|
|
|
|
This is used by `remsim-bankd` to identify itself to `remsim-server` and
|
|
to establish a logical connection between the two elements.
|
|
|
|
==== ConnectClient
|
|
|
|
This is used by `remsim-client` to identify itself to `remsim-server`
|
|
and to establish a logical connection between the two elements.
|
|
|
|
==== CreateMapping
|
|
|
|
This is used by `remsim-server` to install a slot mapping in a
|
|
`remsim-bankd`.
|
|
|
|
==== RemoveMapping
|
|
|
|
This is used by `remsim-server` to remove a slot mapping from a
|
|
`remsim-bankd`.
|
|
|
|
==== ConfigClientId
|
|
|
|
This is used by `remsim-server` to dynamically configure a ClientID in a
|
|
`remsim-client`. This mode is currently not supported yet, each client
|
|
must have a locally-configured ClientID.
|
|
|
|
==== ConfigClientBank
|
|
|
|
This is used by `remsim-server` to inform a `remsim-client` about the
|
|
details (bankd ID, slot number, IP address, TCP port) of a the
|
|
`remsim-bankd` to which it shall connect.
|
|
|
|
==== ErrorInd
|
|
|
|
This is a generic error indication that can be sent by any RSRPO entity.
|
|
|
|
==== SetAtr
|
|
|
|
This is used by `remsim-bankd` to inform the `remsim-client` about the
|
|
ATR of the card, so that `remsim-client` can replicate that ATR when
|
|
answering to the reset of the SIM card interface of the phone/modem.
|
|
|
|
==== TpduModemToCard
|
|
|
|
This is used by `remsim-client` to transfer a command TPDU/APDU from the
|
|
phone/modem to the SIM card in `remsim-bankd`
|
|
|
|
==== TpduCardToModem
|
|
|
|
This is used by `remsim-bankd` to transfer a response TPDU/APDU from the
|
|
SIM card back to the phone/modem at `remsim-client`.
|
|
|
|
==== ClientSlotStatusInd
|
|
|
|
This is used by `remsim-client` to report the status of a given slot.
|
|
|
|
==== BankSlotStatusInd
|
|
|
|
This is used by `remsim-bankd` to report the status of a given slot.
|