Further clean-up in osmo-sgsn -> osmo-gbproxy migration

* fix manuals builds, including vty reference generation
* fix vty tests
* remove manuals from osmo-sgsn
* update .gitreview
* update osmoappdesc.py

Related: OS#4992
Change-Id: I80439ab0d21a3fb33f38da42acbfe3fbb0941b91
changes/86/22586/3
Harald Welte 2 years ago committed by Oliver Smith
parent 29532c2a06
commit 936dfd720a
  1. 2
      .gitreview
  2. 2
      Makefile.am
  3. 23
      doc/manuals/Makefile.am
  4. 378
      doc/manuals/chapters/configuration.adoc
  5. 23
      doc/manuals/chapters/control.adoc
  6. 4
      doc/manuals/chapters/counters.adoc
  7. 94
      doc/manuals/chapters/counters_generated.adoc
  8. 109
      doc/manuals/chapters/overview.adoc
  9. 35
      doc/manuals/chapters/running.adoc
  10. 2
      doc/manuals/osmogbproxy-usermanual.adoc
  11. 2
      doc/manuals/osmogbproxy-vty-reference.xml
  12. 54
      doc/manuals/osmosgsn-usermanual-docinfo.xml
  13. 40
      doc/manuals/osmosgsn-usermanual.adoc
  14. 44
      doc/manuals/osmosgsn-vty-reference.xml
  15. 15
      doc/manuals/regen_doc.sh
  16. 0
      doc/manuals/vty/gbproxy_vty_additions.xml
  17. 605
      doc/manuals/vty/gbproxy_vty_reference.xml
  18. 6
      doc/manuals/vty/sgsn_vty_additions.xml
  19. 2677
      doc/manuals/vty/sgsn_vty_reference.xml
  20. 12
      osmoappdesc.py
  21. 35
      src/gb_proxy_main.c
  22. 4
      tests/Makefile.am
  23. 176
      tests/vty_test_runner.py

@ -1,3 +1,3 @@
[gerrit]
host=gerrit.osmocom.org
project=osmo-sgsn
project=osmo-gbproxy

@ -9,9 +9,9 @@ AM_CPPFLAGS = \
$(NULL)
SUBDIRS = \
doc \
include \
src \
doc \
contrib \
tests \
$(NULL)

@ -1,23 +1,26 @@
EXTRA_DIST = osmosgsn-usermanual.adoc \
osmosgsn-usermanual-docinfo.xml \
osmosgsn-vty-reference.xml \
EXTRA_DIST = \
osmogbproxy-usermanual.adoc \
osmogbproxy-usermanual-docinfo.xml \
regen_doc.sh \
osmogbproxy-vty-reference.xml \
chapters \
regen_doc.sh \
vty \
osmogbproxy-vty-reference.xml \
vty-osmogbproxy \
$(NULL)
if BUILD_MANUALS
ASCIIDOC = osmosgsn-usermanual.adoc osmogbproxy-usermanual.adoc
ASCIIDOC_DEPS = $(srcdir)/chapters/*.adoc
ASCIIDOC = osmogbproxy-usermanual.adoc
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.asciidoc.inc
osmogbproxy-usermanual.pdf: $(srcdir)/chapters/*.adoc #$(srcdir)/chapters/*.dot
VTY_REFERENCE = osmogbproxy-vty-reference.xml
BUILT_REFERENCE_XML = $(builddir)/vty/gbproxy_vty_reference.xml
$(builddir)/vty/gbproxy_vty_reference.xml: $(top_builddir)/src/osmo-gbproxy
mkdir -p $(builddir)/vty
$(top_builddir)/src/osmo-gbproxy --vty-ref-xml > $@
VTY_REFERENCE = osmosgsn-vty-reference.xml osmogbproxy-vty-reference.xml
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.vty-reference.inc
OSMO_REPOSITORY = osmo-sgsn
OSMO_REPOSITORY = osmo-gbproxy
include $(OSMO_GSM_MANUALS_DIR)/build/Makefile.common.inc
endif

@ -1,378 +0,0 @@
== Configuring OsmoSGSN
Contrary to other network elements (like OsmoBSC, OsmoNITB), the
OsmoSGSN has a relatively simple configuration.
On the one hand, this is primary because the PCU configuration happens
from the BSC side.
On the other hand, it is because the Gb interface does not need an
explicit configuration of each PCU connecting to the SGSN. The
administrator only has to ensure that the NS and BSSGP layer identities
(NSEI, NSVCI, BVCI) are unique for each PCU connecting to the SGSN.
=== Configuring the Gp interface
The Gp interface is the GTP-C and GTP-U based interface between the SGSN
and the GGSNs. It is implemented via UDP on well-known source and
destination ports.
When an MS requests establishment of a PDP context, it specifies the APN
(Access Point Name) to which the context shall be established. This APN
determines which GGSN shall be used, and that in turn determines which
external IP network the MS will be connected to.
There are two modes in which GGSNs can be configured:
. static GGSN/APN configuration
. dynamic GGSN/APN configuration
==== Static GGSN/APN configuration
In this mode, there is a static list of GGSNs and APNs configured in
OsmoSGSN via the VTY / config file.
This is a non-standard method outside of the 3GPP specifications for the
SGSN, and is typically only used in private/small GPRS networks without
any access to a GRX.
.Example: Static GGSN/APN configuration (single catch-all GGSN)
----
OsmoSGSN(config-sgsn)# gtp local-ip 172.0.0.1 <1>
OsmoSGSN(config-sgsn)# ggsn 0 remote-ip 127.0.0.2 <2>
OsmoSGSN(config-sgsn)# ggsn 0 gtp-version 1 <3>
OsmoSGSN(config-sgsn)# apn * ggsn 0 <4>
----
<1> Configure the local IP address at the SGSN used for Gp/GTP
<2> Specify the remote IP address of the GGSN (for GGSN 0)
<3> Specify the GTP protocol version used for GGSN 0
<4> Route all APN names to GGSN 0
==== Dynamic GGSN/APN configuration
In this mode, the SGSN will use a DNS-based method to perform the lookup
from the APN (as specified by the MS) towards the GGSN IP address.
This is the official method as per the 3GPP specifications for the SGSN,
and what is used on GRX.
.Example: Dynamic GGSN/APN configuration
----
OsmoSGSN(config-sgsn)# gtp local-ip 192.168.0.11 <1>
OsmoSGSN(config-sgsn)# ggsn dynamic <2>
OsmoSGSN(config-sgsn)# grx-dns-add 1.2.3.4 <3>
----
<1> Configure the local IP address at the SGSN used for Gp/GTP
<2> Enable the dynamic GGSN resolving mode
<3> Specify the IP address of a DNS server for APN resolution
[[auth-pol]]
=== Authorization Policy
The authorization policy controls by which rules a subscriber is accepted or
rejected. The possible options range from accepting just all subscribers without
further checking, to a fine grained access-control, handled by an external HLR.
accept-all:: All subscribers that attempt to attach to the GPRS network are
accepted without further checking. This option is intended to be used for
testing in a controlled environment only. A wide-open network may attract
subscribers from foreign networks and disrupt their service. It is highly
recommended to pick one of the options below.
remote:: This option allows to connect OsmoSGSN to an external HLR via the
GSUP protocol. This will be the preferred option in larger networks.
acl-only:: If no external HLR is available, the network operator has the
option to control the access using an access control list. The access control
list contains the IMSI numbers of the allowed subscribers. This method offers
fine grained access control and is ideal for small networks and lab test
environments.
closed:: This policy mode softens the strict *acl-only* only mode by also
implicitly accepting home network subscribers. The decision is made by the MCC
and MNC part of the IMSI number. The combination of MCC and MNC fully identifies
a subscribers home network, also known as a Home Network Identity (HNI, i.e.
MCC and MNC found at the start of the IMSI, e.g. MCC 901 and MNC 700 with
IMSI 901700000003080).
NOTE: The policy mode *closed* must not be confused with the equally named
policy that is defined for osmo-nitb!
.Example: Assign or change authorization policy
----
OsmoSGSN> enable
OsmoSGSN# configure terminal
OsmoSGSN(config)# sgsn
OsmoSGSN(config-sgsn)# auth-policy acl-only <1>
OsmoSGSN(config-sgsn)# write <2>
Configuration saved to sgsn.cfg
OsmoSGSN(config-sgsn)# end
OsmoSGSN# disable
OsmoSGSN>
----
<1> 'acl-only' is selected as authorization policy
<2> Saves current changes to cofiguration to make this policy
persistent
.Example: Access control list
----
sgsn
auth-policy acl-only <1>
imsi-acl add 001010000000003
imsi-acl add 001010000000002
imsi-acl add 001010000000001
imsi-acl add 901700000000068 <2>
----
<1> Set the authorization policy
<2> Add as many subscribers as required
=== Subscriber Configuration
As opposed to OsmoNITB, OsmoSGSN does not feature a built-in HLR.
It can thus operate only in the following two modes:
. Accessing an external HLR (or HLR gateway) via the GSUP protocol
. Accepting subscribers based on internal ACL (access control list),
see also <<auth-pol>>
==== Accessing an external HLR via GSUP
The non-standard GSUP protocol was created to provide OsmoSGSN with
access to an external HLR while avoiding the complexities of the
TCAP/MAP protocol stack commonly used by HLRs.
A custom HLR could either directly implement GSUP, or an external gateway
can be used to convert GSUP to the respective MAP operations.
The primitives/operations of GSUP are modelled to have a 1:1
correspondence to their MAP counterparts. However, the encoding is much
simplified by use of a binary TLV encoding similar to Layer 3 of
GSM/GPRS.
GSUP performs a challenge-response authentication protocol called OAP,
which uses the standard MILENAGE algorithm for mutual authentication
between OsmoSGSN and the HLR/HLR-GW.
[[sgsn-ex-gsup]]
.Example: Using an external HLR via GSUP
----
OsmoSGSN(config-sgsn)# gsup remote-ip 2.3.4.5 <1>
OsmoSGSN(config-sgsn)# gsup remote-port 10000 <2>
OsmoSGSN(config-sgsn)# gsup oap-k 000102030405060708090a0b0c0d0e0f <3>
OsmoSGSN(config-sgsn)# gsup oap-opc 101112131415161718191a1b1c1d1e1f <4>
----
<1> Configure the IP address of the (remote) HLR or HLR-GW
<2> Configure the TCP port of the (remote) HLR or HLR-GW
<3> Specify the OAP shared key
<4> Specify the OAP shared OPC
=== CDR configuration
OsmoSGSN can write a text log file containing CDR (call data records),
which are commonly used for accounting/billing purpose.
.Example: CDR log file configuration
----
OsmoSGSN(config-sgsn)# cdr filename /var/log/osmosgsn.cdr
OsmoSGSN(config-sgsn)# cdr interval 600 <1>
----
<1> Periodically log existing PDP contexts every 600 seconds (10 min)
The CDR file is a simple CSV file including a header line naming the
individual fields of each CSV line.
==== CDR CTRL interface
Independently of whether logging CDR to a file is enabled or not, OsmoSGSN can
also provide delivery of CDR through the CTRL interface. CDR are sent by means
of TRAP messages with variable name _cdr-v1_, and its value is filled using the
same CSV line format as in the log file, but without CSV header line.
.Example: CDR delivery through CTRL TRAP messages
----
OsmoSGSN(config-sgsn)# cdr trap
----
==== CDR Format
[[sgsn-cdr]]
.Description of CSV fields in OsmoSGSN CDR file
[options="header",cols="15%,85%"]
|===
|Field Name|Description
|timestamp|Timestamp in YYYYMMDDhhmmssXXX where XXX are milli-seconds
|imsi|IMSI causing this CDR
|imei|IMEI causing this CDR
|msisdn|MSISDN causing this CDR (if known)
|cell_id|Cell ID in which the MS was registered last
|lac|Location Area Code in which the MS was registered last
|hlr|HLR of the subscriber
|event|Possible events are explained below in <<sgsn-cdr-event>>
|===
If the _event_ field describes a pdp context related action (starts with
_pdp-_), then the following extra CSV fields are appended to the line:
[[sgsn-cdr-pdp]]
.Description of extra CSV fields for pdp context related events
[options="header",cols="15%,85%"]
|===
|Field Name|Description
|pdp_duration|duration of the PDP context so far
|ggsn_addr|GGSN related to the PDP context
|sgsn_addr|SGSN related to the PDP context
|apni|APN identifier of the PDP context
|eua_addr|IP address allocated to the PDP context
|vol_in|Number of bytes in MO direction
|vol_out|Number of bytes in MT direction
|charging_id|Related charging ID
|===
[[sgsn-cdr-event]]
.Description of OsmoSGSN CDR Events
[options="header",cols="15%,85%"]
|===
|Event|Description
|attach|GMM ATTACH COMPLETE about to be sent to MS
|update|GMM ROUTING AREA UPDATE COMPLETE about to be sent to MS
|detach|GMM DETACH REQUEST received from MS
|free|Release of the MM context memory
|pdp-act|GTP CREATE PDP CONTEXT CONFIRM received from GGSN
|pdp-deact|GTP DELETE PDP CONTEXT CONFIRM received from GGSN
|pdp-terminate|Forced PDP context termination during MM context release
|pdp-free|Release of the PDP context memory
|pdp-periodic|Triggered by periodic timer, see VTY cmd _cdr interval_
|===
=== User traffic compression
In order to save GPRS bandwith, OsmoSGSN implements header and data
compression schemes which will reduce the packet length.
==== Header compression
On TCP/IP connections, each packet is prepended with a fairly long TCP/IP
header. The header contains a lot of static information that never changes
throughout the connection. (source and destination address, port numbers etc.)
OsmoSGSN implements a TCP/IP header compression scheme called RFC1144, also
known as SLHC. This type of header compression removes the TCP/IP header
entirely and replaces it with a shorter version, that only contains the
information that is absolutely necessary to identify and check the packet.
The receiving part then restores the original header and forwards it to higher
layers.
*compression rfc1144 passive*::
TCP/IP header compression has to be actively requested by the modem. The
network will not promote compression by itself. This is the recommended mode
of operation.
*compression rfc1144 active slots <1-256>*::
TCP/IP header compression is actively promoted by the network. Modems may still
actively request different compression parameters or reject the offered
compression parameters entirely. The number of slots is the maximum number
of packet headers per subscriber that can be stored in the codebook.
.Example: Accept compression if requested
----
sgsn
compression rfc1144 passive
----
.Example: Actively promote compression
----
sgsn
compression rfc1144 active slots 8
----
.Example: Turn off compression
----
sgsn
no compression rfc1144
----
NOTE: The usage of TCP/IP options may disturb the RFC1144 header compression
scheme. TCP/IP options may render RFC1144 ineffective if variable data is
encoded into the option section of the TCP/IP packet. (e.g. TCP option 8,
Timestamp)
==== Data compression
Data compression works on the raw packet data, including the header part of the
packet. If enabled, header compression is applied first before data compression
is applied. OsmoSGSN implements the V.42bis data compression scheme.
*compression v42bis passive*::
V42bis data compression has to be actively requested by the modem. The network
will not promote compression by itself. This is the recommended mode of
operation.
*compression v42bis active direction (ms|sgsn|both) codewords <512-65535> strlen <6-250>*::
V42bis data compression is actively promoted by the network. Modems may still
actively request different compression parameters or reject the offered
compression parameters entirely. The direction configures which sides are
allowed to send compressed packets. For most cases, compressing 'both'
directions will be the preferred option. The following to parameters configure
the codebook size by the maxium number ('codewords') and size ('strlen') of
entries.
.Example: Accept compression if requested
----
sgsn
compression v42bis passive
----
.Example: Actively promote compression
----
sgsn
compression v42bis active direction both codewords 512 strlen 20
----
.Example: Turn off compression
----
sgsn
no compression v42bis
----
=== Encryption
Encryption can be enabled if the auth-policy is set to remote and the
HLR subscriber entries contain the keys of the SIM card. See
<<sgsn-ex-gsup>> on how to connect to an external HLR.
.Example: Turn on encryption (GEA3)
----
sgsn
encryption GEA3
----
.Example: Turn off encryption (GEA0)
----
sgsn
encryption GEA0
----
=== Configure SCCP/M3UA to accept _IuPS_ links
OsmoSGSN acts as client to contact an STP instance and establish an SCCP/M3UA
link.
An example configuration of OsmoSGSN's SCCP link:
----
cs7 instance 0
point-code 0.23.4
asp asp-clnt-OsmoSGSN 2905 0 m3ua
remote-ip 127.0.0.1
sctp-role client
as as-clnt-OsmoSGSN m3ua
asp asp-clnt-OsmoSGSN
routing-key 0 0.23.4
----
This configuration is explained in detail in <<cs7_config>>.

@ -1,23 +0,0 @@
[[control]]
== Control interface
The actual protocol is described in <<common-control-if>>, the variables
common to all programs using it are described in <<ctrl_common_vars>>. Here we
describe variables specific to OsmoSGSN.
.Variables available over control interface
[options="header",width="100%",cols="20%,5%,5%,50%,20%"]
|===
|Name|Access|Trap|Value|Comment
|subscriber-list-active-v1|RO|No|"<imsi>,<addr>"|See <<subs>> for details.
|===
[[subs]]
=== subscriber-list-active-v1
Return the list of active subscribers as a concatenated set of pairs "<imsi>",
"addr" where first element of the pair is subscriber's IMSI and the second
element (which might be empty) is the subscriber's address. The address value
might be "none", "invalid" and "PPP" in addition to actual IP address. In case
of IP address it will be prefixed with "IPv4" or "IPv6" string depending on the
version of IP protocol.

@ -1,4 +0,0 @@
[[counters]]
== Counters
include::./counters_generated.adoc[]

@ -1,69 +1,57 @@
// autogenerated by show asciidoc counters
These counters and their description based on OsmoSGSN 1.4.0.31-05fe (OsmoSGSN).
These counters and their description are based on OsmoGbProxy UNKNOWN-dirty (OsmoGbProxy).
=== Rate Counters
// generating tables for rate_ctr_group
// rate_ctr_group table BSSGP Peer Statistics
.bssgp:bss_ctx - BSSGP Peer Statistics
// rate_ctr_group table NSVC Peer Statistics
.ns:nsvc - NSVC Peer Statistics
[options="header"]
|===
| Name | Reference | Description
| packets:in | <<bssgp:bss_ctx_packets:in>> | Packets at BSSGP Level ( In)
| packets:out | <<bssgp:bss_ctx_packets:out>> | Packets at BSSGP Level (Out)
| bytes:in | <<bssgp:bss_ctx_bytes:in>> | Bytes at BSSGP Level ( In)
| bytes:out | <<bssgp:bss_ctx_bytes:out>> | Bytes at BSSGP Level (Out)
| blocked | <<bssgp:bss_ctx_blocked>> | BVC Blocking count
| discarded | <<bssgp:bss_ctx_discarded>> | BVC LLC Discarded count
| status | <<bssgp:bss_ctx_status>> | BVC Status count
| packets:in | <<ns:nsvc_packets:in>> | Packets at NS Level ( In)
| packets:out | <<ns:nsvc_packets:out>> | Packets at NS Level (Out)
| packets:out:drop | <<ns:nsvc_packets:out:drop>> | Dropped Packets (Out)
| bytes:in | <<ns:nsvc_bytes:in>> | Bytes at NS Level ( In)
| bytes:out | <<ns:nsvc_bytes:out>> | Bytes at NS Level (Out)
| bytes:out:drop | <<ns:nsvc_bytes:out:drop>> | Dropped Bytes (Out)
| blocked | <<ns:nsvc_blocked>> | NS-VC Block count
| unblocked | <<ns:nsvc_unblocked>> | NS-VC Unblock count
| dead | <<ns:nsvc_dead>> | NS-VC gone dead count
| replaced | <<ns:nsvc_replaced>> | NS-VC replaced other count
| nsei-chg | <<ns:nsvc_nsei-chg>> | NS-VC changed NSEI count
| lost:alive | <<ns:nsvc_lost:alive>> | ALIVE ACK missing count
| lost:reset | <<ns:nsvc_lost:reset>> | RESET ACK missing count
|===
// rate_ctr_group table SGSN Overall Statistics
.sgsn - SGSN Overall Statistics
// rate_ctr_group table GBProxy Peer Statistics
.gbproxy:peer - GBProxy Peer Statistics
[options="header"]
|===
| Name | Reference | Description
| llc:dl_bytes | <<sgsn_llc:dl_bytes>> | Count sent LLC bytes before giving it to the bssgp layer
| llc:ul_bytes | <<sgsn_llc:ul_bytes>> | Count successful received LLC bytes (encrypt & fcs correct)
| llc:dl_packets | <<sgsn_llc:dl_packets>> | Count successful sent LLC packets before giving it to the bssgp layer
| llc:ul_packets | <<sgsn_llc:ul_packets>> | Count successful received LLC packets (encrypt & fcs correct)
| gprs:attach_requested | <<sgsn_gprs:attach_requested>> | Received attach requests
| gprs:attach_accepted | <<sgsn_gprs:attach_accepted>> | Sent attach accepts
| gprs:attach_rejected | <<sgsn_gprs:attach_rejected>> | Sent attach rejects
| gprs:detach_requested | <<sgsn_gprs:detach_requested>> | Received detach requests
| gprs:detach_acked | <<sgsn_gprs:detach_acked>> | Sent detach acks
| gprs:routing_area_requested | <<sgsn_gprs:routing_area_requested>> | Received routing area requests
| gprs:routing_area_requested | <<sgsn_gprs:routing_area_requested>> | Sent routing area acks
| gprs:routing_area_requested | <<sgsn_gprs:routing_area_requested>> | Sent routing area rejects
| pdp:activate_requested | <<sgsn_pdp:activate_requested>> | Received activate requests
| pdp:activate_rejected | <<sgsn_pdp:activate_rejected>> | Sent activate rejects
| pdp:activate_accepted | <<sgsn_pdp:activate_accepted>> | Sent activate accepts
| pdp:request_activated | <<sgsn_pdp:request_activated>> | unused
| pdp:request_activate_rejected | <<sgsn_pdp:request_activate_rejected>> | unused
| pdp:modify_requested | <<sgsn_pdp:modify_requested>> | unused
| pdp:modify_accepted | <<sgsn_pdp:modify_accepted>> | unused
| pdp:dl_deactivate_requested | <<sgsn_pdp:dl_deactivate_requested>> | Sent deactivate requests
| pdp:dl_deactivate_accepted | <<sgsn_pdp:dl_deactivate_accepted>> | Sent deactivate accepted
| pdp:ul_deactivate_requested | <<sgsn_pdp:ul_deactivate_requested>> | Received deactivate requests
| pdp:ul_deactivate_accepted | <<sgsn_pdp:ul_deactivate_accepted>> | Received deactivate accepts
| blocked | <<gbproxy:peer_blocked>> | BVC Block
| unblocked | <<gbproxy:peer_unblocked>> | BVC Unblock
| dropped | <<gbproxy:peer_dropped>> | BVC blocked, dropped packet
| inv-nsei | <<gbproxy:peer_inv-nsei>> | NSEI mismatch
| tx-err | <<gbproxy:peer_tx-err>> | NS Transmission error
|===
// rate_ctr_group table NSVC Peer Statistics
.ns:nsvc - NSVC Peer Statistics
// rate_ctr_group table GBProxy Global Statistics
.gbproxy:global - GBProxy Global Statistics
[options="header"]
|===
| Name | Reference | Description
| packets:in | <<ns:nsvc_packets:in>> | Packets at NS Level ( In)
| packets:out | <<ns:nsvc_packets:out>> | Packets at NS Level (Out)
| bytes:in | <<ns:nsvc_bytes:in>> | Bytes at NS Level ( In)
| bytes:out | <<ns:nsvc_bytes:out>> | Bytes at NS Level (Out)
| blocked | <<ns:nsvc_blocked>> | NS-VC Block count
| dead | <<ns:nsvc_dead>> | NS-VC gone dead count
| replaced | <<ns:nsvc_replaced>> | NS-VC replaced other count
| nsei-chg | <<ns:nsvc_nsei-chg>> | NS-VC changed NSEI count
| inv-nsvci | <<ns:nsvc_inv-nsvci>> | NS-VCI was invalid count
| inv-nsei | <<ns:nsvc_inv-nsei>> | NSEI was invalid count
| lost:alive | <<ns:nsvc_lost:alive>> | ALIVE ACK missing count
| lost:reset | <<ns:nsvc_lost:reset>> | RESET ACK missing count
| inv-bvci | <<gbproxy:global_inv-bvci>> | Invalid BVC Identifier
| inv-lai | <<gbproxy:global_inv-lai>> | Invalid Location Area Identifier
| inv-rai | <<gbproxy:global_inv-rai>> | Invalid Routing Area Identifier
| inv-nsei | <<gbproxy:global_inv-nsei>> | No BVC established for NSEI
| proto-err:bss | <<gbproxy:global_proto-err:bss>> | BSSGP protocol error (BSS )
| proto-err:sgsn | <<gbproxy:global_proto-err:sgsn>> | BSSGP protocol error (SGSN)
| not-supp:bss | <<gbproxy:global_not-supp:bss>> | Feature not supported (BSS )
| not-supp:sgsn | <<gbproxy:global_not-supp:sgsn>> | Feature not supported (SGSN)
| restart:sgsn | <<gbproxy:global_restart:sgsn>> | Restarted RESET procedure (SGSN)
| tx-err:sgsn | <<gbproxy:global_tx-err:sgsn>> | NS Transmission error (SGSN)
| error | <<gbproxy:global_error>> | Other error
| mod-peer-err | <<gbproxy:global_mod-peer-err>> | Patch error: no peer
|===
== Osmo Stat Items
@ -76,6 +64,14 @@ NSVC Peer Statistics
| Name | Reference | Description | Unit
| alive.delay | <<ns.nsvc_alive.delay>> | ALIVE response time | ms
|===
NS Bind Statistics
// osmo_stat_item_group table NS Bind Statistics
.ns.bind - NS Bind Statistics
[options="header"]
|===
| Name | Reference | Description | Unit
| tx_backlog_length | <<ns.bind_tx_backlog_length>> | Transmit backlog length | packets
|===
== Osmo Counters
// generating tables for osmo_counters

@ -1,109 +0,0 @@
[[chapter_introduction]]
== Overview
[[intro_overview]]
=== About OsmoSGSN
OsmoSGSN is the Osmocom implementation of the GPRS SGSN (Serving Gprs
Support Node) element inside the GPRS network. The SGSN plays a similar
central function to the GPRS network as the MSC plays in the GSM
network.
The SGSN is connected on the downlink side to Gb interfaces of the BSS,
specifically the PCU inside the BSS. The SGSN is further connected by
the GTP protocol to the GGSN which terminates the tunnels towards the
external packet data network (e.g. IPv4).
OsmoSGSN supports both a PCU that is co-located with(in) the BTS, as
well as a PCU that is co-located with(in) the BSC. In combination with
OsmoNITB/OsmoBSC/OsmoBTS, the PCU is co-located within the BTS.
[[fig-gprs-pcubts]]
.GPRS network architecture with PCU in BTS
[graphviz]
----
digraph G {
rankdir=LR;
MS0 [label="MS"];
MS1 [label="MS"];
MS0->BTS [label="Um"];
MS1->BTS [label="Um"];
BTS->BSC [label="Abis"];
BSC->MSC [label="A"];
BTS->PCU [label="pcu_sock"];
PCU->SGSN [label="Gb"];
SGSN->GGSN [label="GTP"];
}
----
=== Software Components
OsmoSGSN contains a variety of different software components, which
we'll quickly describe in this section.
==== Gb Implementation
OsmoSGSN implements the ETSI/3GPP specified Gb interface, including TS
08.16 (NS), TS 08.18 (BSSGP) and TS 08.64 (LLC) protocols. As transport
layers for NS, it supports NS/IP (NS encapsulated in UDP/IP), as well as
NS/FR/GRE/IP. The latter is provided in order to use a Router with
Ethernet and Frame Relay interface to convert to actual physical Frame
Relay medium, which is not directly supported by OsmoSGSN.
The actual Gb Implementation is part of the libosmogb library, which is
in turn part of the libosmocore software package. This allows the same
Gb implementation to be used from osmo-pcu, osmo-gbproxy as well as
OsmoSGSN.
==== GTP Implementation
OsmoSGSN uses the libgtp implementation originating from OsmoGGSN. It
supports both GTPv0 and GTPv1.
==== GMM Implementation
The GPRS Mobility Management implementation is quite simplistic at this
point. It supports the GPRS ATTACH and GPRS ROUTING AREA UPDATE
procedures, as well as GPRS ATTACH and GPRS DETACH.
==== LLC Implementation
The LLC (Logical Link Control) implementation of OsmoSGSN only supports
non-acknowledged mode, as this is the most common use case in real-world
GPRS networks.
It does support both TCP/IP header compression according to RFC1144 and
payload compression according to V.42bis
The LLC implementation does support LLC encryption with ciphers GEA3 and GEA4.
For encryption to work the auth policy needs to be set to remote and the SGSN
connected to an HLR containing the subscriber data including key material.
Other auth policys will not work with encryption.
==== Session Management Implementation
The session management procedures ACTIVATE PDP CONTEXT and DEACTIVATE
PDP CONTEXT are supported. However, no MODIFY PDP CONTEXT and no
Network-initiated PDP context activation is possible. This is again
covering the predominant use cases and configurations in GPRS real-world
networks while skipping the more esoteric features.
Multiple PDP contexts can be attached by a single MS.
Multiple GGSNs can be configured and routing to a GGSN can be configured based
on APN. Dynamic lookup of GGSNs though DNS-based APN resolving is also possible.
=== Limitations
At the time of writing, OsmoSGSN still has a number of limitations,
which are a result of the demand-driven Open Source development model.
If you require any of those features, please consider implementing and
contributing them, or contracting the existing OsmoSGSN developers for
performing that work.
Known Limitations include:
* No paging coordination between SGSN and MSC
* No SMS over Ps support

@ -1,35 +0,0 @@
== Running OsmoSGSN
The OsmoSGSN executable (`osmo-sgsn`) offers the following command-line
options:
=== SYNOPSIS
*osmo-sgsn* [-h|-V] [-d 'DBGMASK'] [-D] [-c 'CONFIGFILE'] [-s] [-e 'LOGLEVEL']
=== OPTIONS
*-h, --help*::
Print a short help message about the supported options
*-V, --version*::
Print the compile-time version number of the OsmoSGSN program
*-d, --debug 'DBGMASK','DBGLEVELS'*::
Set the log subsystems and levels for logging to stderr. This
has mostly been superseded by VTY-based logging configuration,
see <<logging>> for further information.
*-D, --daemonize*::
Fork the process as a daemon into background.
*-c, --config-file 'CONFIGFILE'*::
Specify the file and path name of the configuration file to be
used. If none is specified, use `osmo_sgsn.cfg` in the current
working directory.
*-s, --disable-color*::
Disable colors for logging to stderr. This has mostly been
deprecated by VTY based logging configuration, see <<logging>>
for more information.
*-e, --log-level 'LOGLEVEL'*::
Set the global log level for logging to stderr. This has mostly
been deprecated by VTY based logging configuration, see
<<logging>> for more information.

@ -25,7 +25,7 @@ include::./common/chapters/gb.adoc[]
include::./common/chapters/control_if.adoc[]
//include::{srcdir}/chapters/counters.adoc[]
include::{srcdir}/chapters/counters_generated.adoc[]
include::./common/chapters/port_numbers.adoc[]

@ -6,7 +6,7 @@
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML 5.0//EN"
"http://docbook.org/xml/5.0/dtd/docbook.dtd" [
<!ENTITY chapter-vty SYSTEM "./common/chapters/vty.xml" >
<!ENTITY sections-vty SYSTEM "generated/docbook_osmogbproxy-vty-reference.xml" >
<!ENTITY sections-vty SYSTEM "generated/docbook_vty.xml" >
]>
<book>

@ -1,54 +0,0 @@
<revhistory>
<revision>
<revnumber>1</revnumber>
<date>January 13, 2013</date>
<authorinitials>HW</authorinitials>
<revremark>
Initial version.
</revremark>
</revision>
<revision>
<revnumber>2</revnumber>
<date>February 2016</date>
<authorinitials>HW</authorinitials>
<revremark>
Conversion to asciidoc, removal of sysmoBTS specific parts.
</revremark>
</revision>
</revhistory>
<authorgroup>
<author>
<firstname>Harald</firstname>
<surname>Welte</surname>
<email>hwelte@sysmocom.de</email>
<authorinitials>HW</authorinitials>
<affiliation>
<shortaffil>sysmocom</shortaffil>
<orgname>sysmocom - s.f.m.c. GmbH</orgname>
<jobtitle>Managing Director</jobtitle>
</affiliation>
</author>
</authorgroup>
<copyright>
<year>2013-2016</year>
<holder>sysmocom - s.f.m.c. GmbH</holder>
</copyright>
<legalnotice>
<para>
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License,
Version 1.3 or any later version published by the Free Software
Foundation; with no Invariant Sections, no Front-Cover Texts,
and no Back-Cover Texts. A copy of the license is included in
the section entitled "GNU Free Documentation License".
</para>
<para>
The Asciidoc source code of this manual can be found at
<ulink url="http://git.osmocom.org/osmo-gsm-manuals/">
http://git.osmocom.org/osmo-gsm-manuals/
</ulink>
</para>
</legalnotice>

@ -1,40 +0,0 @@
:gfdl-enabled:
OsmoSGSN User Manual
====================
Harald Welte <hwelte@sysmocom.de>
include::./common/chapters/preface.adoc[]
include::{srcdir}/chapters/overview.adoc[]
include::{srcdir}/chapters/running.adoc[]
include::{srcdir}/chapters/control.adoc[]
include::./common/chapters/vty.adoc[]
include::./common/chapters/logging.adoc[]
include::{srcdir}/chapters/configuration.adoc[]
include::./common/chapters/cs7-config.adoc[]
include::./common/chapters/gb.adoc[]
include::./common/chapters/control_if.adoc[]
include::./common/chapters/oap.adoc[]
include::./common/chapters/gsup.adoc[]
include::{srcdir}/chapters/counters.adoc[]
include::./common/chapters/port_numbers.adoc[]
include::./common/chapters/bibliography.adoc[]
include::./common/chapters/glossary.adoc[]
include::./common/chapters/gfdl.adoc[]

@ -1,44 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
ex:ts=2:sw=42sts=2:et
-*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
-->
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML 5.0//EN"
"http://docbook.org/xml/5.0/dtd/docbook.dtd" [
<!ENTITY chapter-vty SYSTEM "./common/chapters/vty.xml" >
<!ENTITY sections-vty SYSTEM "generated/docbook_vty.xml" >
]>
<book>
<info>
<revhistory>
<revision>
<revnumber>v1</revnumber>
<date>13th January 2013</date>
<authorinitials>hw</authorinitials>
<revremark>Initial</revremark>
</revision>
<revision>
<revnumber>v2</revnumber>
<date>5th March 2014</date>
<authorinitials>hf</authorinitials>
<revremark>Update to match osmo-bsc version 0.13.0-305</revremark>
</revision>
</revhistory>
<title>OsmoSGSN VTY Reference</title>
<copyright>
<year>2013-2014</year>
</copyright>
<legalnotice>
<para>This work is copyright by <orgname>sysmocom - s.f.m.c. GmbH</orgname>. All rights reserved.
</para>
</legalnotice>
</info>
<!-- Main chapters-->
&chapter-vty;
</book>

@ -51,27 +51,24 @@ interact_vty() {
}
DIR="$(cd "$(dirname "$0")"; pwd)"
echo $DIR
cd "$DIR"
require_osmo_interact_vty
interact_vty \
"update_vty_reference" \
"vty/sgsn_vty_reference.xml" \
4245 \
osmo-sgsn -c "../examples/osmo-sgsn/osmo-sgsn.cfg"
interact_vty \
"update_vty_reference" \
"vty-osmogbproxy/gbproxy_vty_reference.xml" \
"vty/gbproxy_vty_reference.xml" \
4246 \
osmo-gbproxy -c "../examples/osmo-gbproxy/osmo-gbproxy.cfg"
sleep 5
interact_vty \
"update_counters" \
"chapters/counters_generated.adoc" \
4245 \
osmo-sgsn -c "../examples/osmo-sgsn/osmo-sgsn.cfg"
4246 \
osmo-gbproxy -c "../examples/osmo-gbproxy/osmo-gbproxy.cfg"
echo "Done with all"

@ -7,9 +7,25 @@
<param name='help' doc='Description of the interactive help system' />
</params>
</command>
<command id='list'>
<command id='list [with-flags]'>
<params>
<param name='list' doc='Print command list' />
<param name='[with-flags]' doc='Also print the VTY attribute flags' />
</params>
</command>
<command id='show vty-attributes'>
<params>
<param name='show' doc='Show running system information' />
<param name='vty-attributes' doc='List of VTY attributes' />
</params>
</command>
<command id='show vty-attributes (application|library|global)'>
<params>
<param name='show' doc='Show running system information' />
<param name='vty-attributes' doc='List of VTY attributes' />
<param name='application' doc='Application specific attributes only' />
<param name='library' doc='Library specific attributes only' />
<param name='global' doc='Global attributes only' />
</params>
</command>
<command id='write terminal'>
@ -67,9 +83,10 @@
<param name='online-help' doc='Online help' />
</params>
</command>
<command id='enable'>
<command id='enable [expert-mode]'>
<params>
<param name='enable' doc='Turn on privileged mode command' />
<param name='[expert-mode]' doc='Enable the expert mode (show hidden commands)' />
</params>
</command>
<command id='terminal length &lt;0-512&gt;'>
@ -188,13 +205,13 @@
<param name='MASK' doc='List of logging categories to log, e.g. &apos;abc:mno:xyz&apos;. Available log categories depend on the specific application, refer to the &apos;logging level&apos; command. Optionally add individual log levels like &apos;abc,1:mno,3:xyz,5&apos;, where the level numbers are LOGL_DEBUG=1 LOGL_INFO=3 LOGL_NOTICE=5 LOGL_ERROR=7 LOGL_FATAL=8' />
</params>
</command>
<command id='logging level (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal)'>
<command id='logging level (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (debug|info|notice|error|fatal)'>
<params>
<param name='logging' doc='Configure logging' />
<param name='level' doc='Set the log level for a specified category' />
<param name='gprs' doc='GPRS Packet Service' />
<param name='ns' doc='GPRS Network Service (NS)' />
<param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
<param name='obj' doc='GbProxy object allocation/release' />
<param name='lglobal' doc='Library-internal global log family' />
<param name='llapd' doc='LAPD in libosmogsm' />
<param name='linp' doc='A-bis Intput Subsystem' />
@ -214,6 +231,8 @@
<param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
<param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
<param name='lrspro' doc='Remote SIM protocol' />
<param name='lns' doc='GPRS NS layer' />
<param name='lbssgp' doc='GPRS BSSGP layer' />
<param name='debug' doc='Log debug messages and higher levels' />
<param name='info' doc='Log informational messages and higher levels' />
<param name='notice' doc='Log noticeable messages and higher levels' />
@ -253,12 +272,12 @@
<param name='force-all' doc='Release any globally forced log level set with &apos;logging level force-all &lt;level&gt;&apos;' />
</params>
</command>
<command id='logp (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal) .LOGMESSAGE'>
<command id='logp (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (debug|info|notice|error|fatal) .LOGMESSAGE'>
<params>
<param name='logp' doc='Print a message on all log outputs; useful for placing markers in test logs' />
<param name='gprs' doc='GPRS Packet Service' />
<param name='ns' doc='GPRS Network Service (NS)' />
<param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
<param name='obj' doc='GbProxy object allocation/release' />
<param name='lglobal' doc='Library-internal global log family' />
<param name='llapd' doc='LAPD in libosmogsm' />
<param name='linp' doc='A-bis Intput Subsystem' />
@ -278,6 +297,8 @@
<param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
<param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
<param name='lrspro' doc='Remote SIM protocol' />
<param name='lns' doc='GPRS NS layer' />
<param name='lbssgp' doc='GPRS BSSGP layer' />
<param name='debug' doc='Log debug messages and higher levels' />
<param name='info' doc='Log informational messages and higher levels' />
<param name='notice' doc='Log noticeable messages and higher levels' />
@ -365,10 +386,49 @@
<param name='rate-counters' doc='Show all rate counters' />
</params>
</command>
<command id='show gbproxy [stats]'>
<command id='show fsm NAME'>
<params>
<param name='show' doc='Show running system information' />
<param name='fsm' doc='Show information about finite state machines' />
<param name='NAME' doc='Display information about a single named finite state machine' />
</params>
</command>
<command id='show fsm all'>
<params>
<param name='show' doc='Show running system information' />
<param name='fsm' doc='Show information about finite state machines' />
<param name='all' doc='Display a list of all registered finite state machines' />
</params>
</command>
<command id='show fsm-instances NAME'>
<params>
<param name='show' doc='Show running system information' />
<param name='fsm-instances' doc='Show information about finite state machine instances' />
<param name='NAME' doc='Display a list of all FSM instances of the named finite state machine' />
</params>
</command>
<command id='show fsm-instances all'>
<params>
<param name='show' doc='Show running system information' />
<param name='fsm-instances' doc='Show information about finite state machine instances' />
<param name='all' doc='Display a list of all FSM instances of all finite state machine' />
</params>
</command>
<command id='show gbproxy bvc (bss|sgsn) [stats]'>
<params>
<param name='show' doc='Show running system information' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='bvc' doc='Show BSSGP Virtual Connections' />
<param name='bss' doc='Display BSS-side BVCs' />
<param name='sgsn' doc='Display SGSN-side BVCs' />
<param name='[stats]' doc='Show statistics' />
</params>
</command>
<command id='show gbproxy cell [stats]'>
<params>
<param name='show' doc='Show running system information' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='cell' doc='Show GPRS Cell Information' />
<param name='[stats]' doc='Show statistics' />
</params>
</command>
@ -379,43 +439,41 @@
<param name='links' doc='Show logical links' />
</params>
</command>
<command id='show ns'>
<command id='show gbproxy tlli-cache'>
<params>
<param name='show' doc='Show running system information' />
<param name='ns' doc='Display information about the NS protocol' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='tlli-cache' doc='Show TLLI cache entries' />
</params>
</command>
<command id='show ns stats'>
<command id='show gbproxy imsi-cache'>
<params>
<param name='show' doc='Show running system information' />
<param name='ns' doc='Display information about the NS protocol' />
<param name='stats' doc='Include statistics' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='imsi-cache' doc='Show IMSI cache entries' />
</params>
</command>
<command id='show ns persistent'>
<command id='show nri all'>
<params>
<param name='show' doc='Show running system information' />
<param name='ns' doc='Display information about the NS protocol' />
<param name='persistent' doc='Show only persistent NS' />
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
<param name='all' doc='Show all SGSNs' />
</params>
</command>
<command id='show ns (nsei|nsvc) &lt;0-65535&gt; [stats]'>
<command id='show nri nsei &lt;0-65535&gt;'>
<params>
<param name='show' doc='Show running system information' />
<param name='ns' doc='Display information about the NS protocol' />
<param name='nsei' doc='Select one NSE by its NSE Identifier' />
<param name='nsvc' doc='Select one NSE by its NS-VC Identifier' />
<param name='&lt;0-65535&gt;' doc='The Identifier of selected type' />
<param name='[stats]' doc='Include Statistics' />
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
<param name='nsei' doc='Identify SGSN by NSEI' />
<param name='&lt;0-65535&gt;' doc='NSEI of the SGSN' />
</params>
</command>
<command id='logging filter nsvc (nsei|nsvci) &lt;0-65535&gt;'>
<command id='logging filter bvc bvci &lt;0-65535&gt;'>
<params>
<param name='logging' doc='Configure logging' />
<param name='filter' doc='Filter log messages' />
<param name='nsvc' doc='Filter based on NS Virtual Connection' />
<param name='nsei' doc='Identify NS-VC by NSEI' />
<param name='nsvci' doc='Identify NS-VC by NSVCI' />
<param name='bvc' doc='Filter based on BSSGP VC' />
<param name='bvci' doc='Identify BVC by BVCI' />
<param name='&lt;0-65535&gt;' doc='Numeric identifier' />
</params>
</command>
@ -587,13 +645,13 @@
<param name='MASK' doc='List of logging categories to log, e.g. &apos;abc:mno:xyz&apos;. Available log categories depend on the specific application, refer to the &apos;logging level&apos; command. Optionally add individual log levels like &apos;abc,1:mno,3:xyz,5&apos;, where the level numbers are LOGL_DEBUG=1 LOGL_INFO=3 LOGL_NOTICE=5 LOGL_ERROR=7 LOGL_FATAL=8' />
</params>
</command>
<command id='logging level (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal)'>
<command id='logging level (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (debug|info|notice|error|fatal)'>
<params>
<param name='logging' doc='Configure logging' />
<param name='level' doc='Set the log level for a specified category' />
<param name='gprs' doc='GPRS Packet Service' />
<param name='ns' doc='GPRS Network Service (NS)' />
<param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
<param name='obj' doc='GbProxy object allocation/release' />
<param name='lglobal' doc='Library-internal global log family' />
<param name='llapd' doc='LAPD in libosmogsm' />
<param name='linp' doc='A-bis Intput Subsystem' />
@ -613,6 +671,8 @@
<param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
<param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
<param name='lrspro' doc='Remote SIM protocol' />
<param name='lns' doc='GPRS NS layer' />
<param name='lbssgp' doc='GPRS BSSGP layer' />
<param name='debug' doc='Log debug messages and higher levels' />
<param name='info' doc='Log informational messages and higher levels' />
<param name='notice' doc='Log noticeable messages and higher levels' />
@ -652,12 +712,12 @@
<param name='force-all' doc='Release any globally forced log level set with &apos;logging level force-all &lt;level&gt;&apos;' />
</params>
</command>
<command id='logp (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal) .LOGMESSAGE'>
<command id='logp (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (debug|info|notice|error|fatal) .LOGMESSAGE'>
<params>
<param name='logp' doc='Print a message on all log outputs; useful for placing markers in test logs' />
<param name='gprs' doc='GPRS Packet Service' />
<param name='ns' doc='GPRS Network Service (NS)' />
<param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
<param name='obj' doc='GbProxy object allocation/release' />
<param name='lglobal' doc='Library-internal global log family' />
<param name='llapd' doc='LAPD in libosmogsm' />
<param name='linp' doc='A-bis Intput Subsystem' />
@ -677,6 +737,8 @@
<param name='lmgcp' doc='libosmo-mgcp Media Gateway Control Protocol' />
<param name='ljibuf' doc='libosmo-netif Jitter Buffer' />
<param name='lrspro' doc='Remote SIM protocol' />
<param name='lns' doc='GPRS NS layer' />
<param name='lbssgp' doc='GPRS BSSGP layer' />
<param name='debug' doc='Log debug messages and higher levels' />
<param name='info' doc='Log informational messages and higher levels' />
<param name='notice' doc='Log noticeable messages and higher levels' />
@ -764,105 +826,125 @@
<param name='rate-counters' doc='Show all rate counters' />
</params>
</command>
<command id='show gbproxy [stats]'>
<command id='stats report'>
<params>
<param name='stats' doc='Stats related commands' />
<param name='report' doc='Manurally trigger reporting of stats' />
</params>
</command>
<command id='stats reset'>
<params>
<param name='stats' doc='Stats related commands' />
<param name='reset' doc='Reset all stats' />
</params>
</command>
<command id='show fsm NAME'>
<params>
<param name='show' doc='Show running system information' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='[stats]' doc='Show statistics' />
<param name='fsm' doc='Show information about finite state machines' />
<param name='NAME' doc='Display information about a single named finite state machine' />
</params>
</command>
<command id='show gbproxy links'>
<command id='show fsm all'>
<params>
<param name='show' doc='Show running system information' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='links' doc='Show logical links' />
<param name='fsm' doc='Show information about finite state machines' />
<param name='all' doc='Display a list of all registered finite state machines' />
</params>
</command>
<command id='delete-gbproxy-peer &lt;0-65534&gt; bvci &lt;2-65534&gt;'>
<command id='show fsm-instances NAME'>
<params>
<param name='delete-gbproxy-peer' doc='Delete a GBProxy peer by NSEI and optionally BVCI' />
<param name='&lt;0-65534&gt;' doc='NSEI number' />
<param name='bvci' doc='Only delete peer with a matching BVCI' />
<param name='&lt;2-65534&gt;' doc='BVCI number' />
<param name='show' doc='Show running system information' />
<param name='fsm-instances' doc='Show information about finite state machine instances' />
<param name='NAME' doc='Display a list of all FSM instances of the named finite state machine' />
</params>
</command>
<command id='delete-gbproxy-peer &lt;0-65534&gt; (only-bvc|only-nsvc|all) [dry-run]'>
<command id='show fsm-instances all'>
<params>
<param name='delete-gbproxy-peer' doc='Delete a GBProxy peer by NSEI and optionally BVCI' />
<param name='&lt;0-65534&gt;' doc='NSEI number' />
<param name='only-bvc' doc='Only delete BSSGP connections (BVC)' />
<param name='only-nsvc' doc='Only delete dynamic NS connections (NS-VC)' />
<param name='all' doc='Delete BVC and dynamic NS connections' />
<param name='[dry-run]' doc='Show what would be deleted instead of actually deleting' />
<param name='show' doc='Show running system information' />
<param name='fsm-instances' doc='Show information about finite state machine instances' />
<param name='all' doc='Display a list of all FSM instances of all finite state machine' />
</params>
</command>
<command id='delete-gbproxy-link &lt;0-65534&gt; (tlli|imsi|sgsn-nsei) IDENT'>
<command id='show gbproxy bvc (bss|sgsn) [stats]'>
<params>
<param name='delete-gbproxy-link' doc='Delete a GBProxy logical link entry by NSEI and identification' />
<param name='&lt;0-65534&gt;' doc='NSEI number' />
<param name='tlli' doc='Delete entries with a matching TLLI (hex)' />
<param name='imsi' doc='Delete entries with a matching IMSI' />
<param name='sgsn-nsei' doc='Delete entries with a matching SGSN NSEI' />
<param name='IDENT' doc='Identification to match' />
<param name='show' doc='Show running system information' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='bvc' doc='Show BSSGP Virtual Connections' />
<param name='bss' doc='Display BSS-side BVCs' />
<param name='sgsn' doc='Display SGSN-side BVCs' />
<param name='[stats]' doc='Show statistics' />
</params>
</command>
<command id='delete-gbproxy-link &lt;0-65534&gt; (stale|de-registered)'>
<command id='show gbproxy cell [stats]'>
<params>
<param name='delete-gbproxy-link' doc='Delete a GBProxy logical link entry by NSEI and identification' />
<param name='&lt;0-65534&gt;' doc='NSEI number' />
<param name='stale' doc='Delete stale entries' />
<param name='de-registered' doc='Delete de-registered entries' />
<param name='show' doc='Show running system information' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='cell' doc='Show GPRS Cell Information' />
<param name='[stats]' doc='Show statistics' />
</params>
</command>
<command id='show gbproxy links'>
<params>
<param name='show' doc='Show running system information' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='links' doc='Show logical links' />
</params>
</command>
<command id='show ns'>
<command id='show gbproxy tlli-cache'>
<params>
<param name='show' doc='Show running system information' />
<param name='ns' doc='Display information about the NS protocol' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='tlli-cache' doc='Show TLLI cache entries' />
</params>
</command>
<command id='show ns stats'>
<command id='show gbproxy imsi-cache'>
<params>
<param name='show' doc='Show running system information' />
<param name='ns' doc='Display information about the NS protocol' />
<param name='stats' doc='Include statistics' />
<param name='gbproxy' doc='Display information about the Gb proxy' />
<param name='imsi-cache' doc='Show IMSI cache entries' />
</params>
</command>
<command id='show ns persistent'>
<command id='show nri all'>
<params>
<param name='show' doc='Show running system information' />
<param name='ns' doc='Display information about the NS protocol' />
<param name='persistent' doc='Show only persistent NS' />
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
<param name='all' doc='Show all SGSNs' />
</params>
</command>
<command id='show ns (nsei|nsvc) &lt;0-65535&gt; [stats]'>
<command id='show nri nsei &lt;0-65535&gt;'>
<params>
<param name='show' doc='Show running system information' />
<param name='ns' doc='Display information about the NS protocol' />
<param name='nsei' doc='Select one NSE by its NSE Identifier' />
<param name='nsvc' doc='Select one NSE by its NS-VC Identifier' />
<param name='&lt;0-65535&gt;' doc='The Identifier of selected type' />
<param name='[stats]' doc='Include Statistics' />
<param name='nri' doc='Mapping of Network Resource Indicators to this SGSN, for SGSN pooling' />
<param name='nsei' doc='Identify SGSN by NSEI' />
<param name='&lt;0-65535&gt;' doc='NSEI of the SGSN' />
</params>
</command>
<command id='logging filter nsvc (nsei|nsvci) &lt;0-65535&gt;'>
<command id='logging filter bvc bvci &lt;0-65535&gt;'>
<params>
<param name='logging' doc='Configure logging' />
<param name='filter' doc='Filter log messages' />
<param name='nsvc' doc='Filter based on NS Virtual Connection' />
<param name='nsei' doc='Identify NS-VC by NSEI' />
<param name='nsvci' doc='Identify NS-VC by NSVCI' />
<param name='bvc' doc='Filter based on BSSGP VC' />
<param name='bvci' doc='Identify BVC by BVCI' />
<param name='&lt;0-65535&gt;' doc='Numeric identifier' />
</params>
</command>
<command id='nsvc (nsei|nsvci) &lt;0-65535&gt; (block|unblock|reset)'>
<command id='delete-gbproxy-peer &lt;0-65534&gt; bvci &lt;2-65534&gt;'>
<params>
<param name='nsvc' doc='Perform an operation on a NSVC' />
<param name='nsei' doc='NSEI to identify NS-VC Identifier (NS-VCI)' />
<param name='nsvci' doc='NS-VC Identifier (NS-VCI)' />
<param name='&lt;0-65535&gt;' doc='The NSEI' />
<param name='block' doc='Initiate BLOCK procedure' />
<param name='unblock' doc='Initiate UNBLOCK procedure' />
<param name='reset' doc='Initiate RESET procedure' />
<param name='delete-gbproxy-peer' doc='Delete a GBProxy bvc by NSEI and optionally BVCI' />
<param name='&lt;0-65534&gt;' doc='NSEI number' />
<param name='bvci' doc='Only delete bvc with a matching BVCI' />
<param name='&lt;2-65534&gt;' doc='BVCI number' />
</params>
</command>
<command id='delete-gbproxy-peer &lt;0-65534&gt; (only-bvc|only-nsvc|all) [dry-run]'>
<params>
<param name='delete-gbproxy-peer' doc='Delete a GBProxy bvc by NSEI and optionally BVCI' />
<param name='&lt;0-65534&gt;' doc='NSEI number' />
<param name='only-bvc' doc='Only delete BSSGP connections (BVC)' />
<param name='only-nsvc' doc='Only delete dynamic NS connections (NS-VC)' />
<param name='all' doc='Delete BVC and dynamic NS connections' />
<param name='[dry-run]' doc='Show what would be deleted instead of actually deleting' />
</params>
</command>
</node>
@ -1052,6 +1134,20 @@
<param name='syslog' doc='Logging via syslog' />
</params>
</command>
<command id='log systemd-journal [raw]'>
<params>
<param name='log' doc='Configure logging sub-system' />
<param name='systemd-journal' doc='Logging to systemd-journal' />
<param name='[raw]' doc='Offload rendering of the meta information (location, category) to systemd' />
</params>
</command>
<command id='no log systemd-journal'>
<params>
<param name='no' doc='Negate a command or set its defaults' />
<param name='log' doc='Configure logging sub-system' />
<param name='systemd-journal' doc='Logging to systemd-journal' />
</params>
</command>
<command id='log gsmtap [HOSTNAME]'>
<params>
<param name='log' doc='Configure logging sub-system' />
@ -1089,11 +1185,11 @@
<param name='log' doc='Report to the logger' />
</params>
</command>
<command id='stats interval &lt;1-65535&gt;'>
<command id='stats interval &lt;0-65535&gt;'>
<params>
<param name='stats' doc='Configure stats sub-system' />
<param name='interval' doc='Set the reporting interval' />
<param name='&lt;1-65535&gt;' doc='Interval in seconds' />
<param name='&lt;0-65535&gt;' doc='Interval in seconds (0 disables the reporting interval)' />
</params>
</command>
<command id='gbproxy'>
@ -1101,9 +1197,11 @@
<param name='gbproxy' doc='Configure the Gb proxy' />
</params>
</command>
<command id='ns'>
<command id='sgsn nsei &lt;0-65534&gt;'>
<params>
<param name='ns' doc='Configure the GPRS Network Service' />
<param name='sgsn' doc='Configure the SGSN' />
<param name='nsei' doc='NSEI to be used in the connection with the SGSN' />
<param name='&lt;0-65534&gt;' doc='The NSEI' />
</params>
</command>
</node>
@ -1181,13 +1279,13 @@
<param name='[last]' doc='Log source file info at the end of a log line. If omitted, log source file info just before the log text.' />
</params>
</command>
<command id='logging level (|gprs|ns|bssgp|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro) (debug|info|notice|error|fatal)'>
<command id='logging level (|gprs|ns|obj|lglobal|llapd|linp|lmux|lmi|lmib|lsms|lctrl|lgtp|lstats|lgsup|loap|lss7|lsccp|lsua|lm3ua|lmgcp|ljibuf|lrspro|lns|lbssgp) (debug|info|notice|error|fatal)'>
<params>
<param name='logging' doc='Configure logging' />
<param name='level' doc='Set the log level for a specified category' />
<param name='gprs' doc='GPRS Packet Service' />
<param name='ns' doc='GPRS Network Service (NS)' />
<param name='bssgp' doc='GPRS BSS Gateway Protocol (BSSGP)' />
<param name='obj' doc='GbProxy object allocation/release' />
<param name='