Merge history from osmo-gsm-manuals.git
Change-Id: I284bfe2fc61167986cf784eabdd57151d4981e7a
This commit is contained in:
commit
1e0333f398
|
@ -0,0 +1,10 @@
|
|||
TOPDIR = ..
|
||||
|
||||
ASCIIDOC = osmosgsn-usermanual.adoc
|
||||
ASCIIDOC_DEPS = chapters/*.adoc
|
||||
include $(TOPDIR)/build/Makefile.asciidoc.inc
|
||||
|
||||
VTY_REFERENCE = osmosgsn-vty-reference.xml
|
||||
include $(TOPDIR)/build/Makefile.vty-reference.inc
|
||||
|
||||
include $(TOPDIR)/build/Makefile.common.inc
|
|
@ -0,0 +1,329 @@
|
|||
== 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 all 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 a 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 MILEAGE 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 optimize GPRS bandwith, OsmoSGSN implements header and data
|
||||
compression schemes. The compression will reduce the packet length in order
|
||||
to save radio bandwith.
|
||||
|
||||
==== 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
|
||||
----
|
||||
|
||||
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 before first data compression
|
||||
is applied. OsmoSGSN implements the V.42bis data compression scheme.
|
||||
|
||||
*compression rfc1144 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
|
||||
----
|
|
@ -0,0 +1,23 @@
|
|||
[[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.
|
|
@ -0,0 +1,4 @@
|
|||
[[counters]]
|
||||
== Counters
|
||||
|
||||
include::./counters_generated.adoc[]
|
|
@ -0,0 +1,121 @@
|
|||
// autogenerated by show asciidoc counters
|
||||
These counters and their description based on OsmoSGSN UNKNOWN (OsmoSGSN).
|
||||
|
||||
// generating tables for rate_ctr_group
|
||||
// rate_ctr_group table BSSGP Peer Statistics
|
||||
.bssgp:bss_ctx - BSSGP 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
|
||||
|===
|
||||
// rate_ctr_group table BSSGP Peer Statistics
|
||||
.bssgp:bss_ctx - BSSGP 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
|
||||
|===
|
||||
// rate_ctr_group table NSVC Peer Statistics
|
||||
.ns:nsvc - NSVC Peer 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
|
||||
|===
|
||||
// rate_ctr_group table SGSN Overall Statistics
|
||||
.sgsn - SGSN Overall 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 sucessful received LLC bytes (encrypt & fcs correct)
|
||||
| llc:dl_packets | <<sgsn_llc:dl_packets>> | Count sucessful sent LLC packets before giving it to the bssgp layer
|
||||
| llc:ul_packets | <<sgsn_llc:ul_packets>> | Count sucessful 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
|
||||
|===
|
||||
// rate_ctr_group table NSVC Peer Statistics
|
||||
.ns:nsvc - NSVC Peer 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
|
||||
|===
|
||||
// generating tables for osmo_stat_items
|
||||
NSVC Peer Statistics
|
||||
// osmo_stat_item_group table NSVC Peer Statistics
|
||||
.ns.nsvc - NSVC Peer Statistics
|
||||
[options="header"]
|
||||
|===
|
||||
| Name | Reference | Description | Unit
|
||||
| alive.delay | <<ns.nsvc_alive.delay>> | ALIVE response time | ms
|
||||
|===
|
||||
NSVC Peer Statistics
|
||||
// osmo_stat_item_group table NSVC Peer Statistics
|
||||
.ns.nsvc - NSVC Peer Statistics
|
||||
[options="header"]
|
||||
|===
|
||||
| Name | Reference | Description | Unit
|
||||
| alive.delay | <<ns.nsvc_alive.delay>> | ALIVE response time | ms
|
||||
|===
|
||||
// generating tables for osmo_counters
|
||||
// ungrouped osmo_counters
|
||||
.ungrouped osmo counters
|
||||
[options="header"]
|
||||
|===
|
||||
| Name | Reference | Description
|
||||
|===
|
||||
|
||||
|
|
@ -0,0 +1,118 @@
|
|||
[[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.
|
||||
|
||||
Furthermore, it does not support IP header nor payload compression at
|
||||
this point. Addition of those features is subject to customer demand or
|
||||
user/customer contributions.
|
||||
|
||||
The LLC implementation does support LLC encryption. However, as no HLR
|
||||
access is implemented yet, there is no way to enable/configure
|
||||
per-subscriber specific keys.
|
||||
|
||||
|
||||
==== 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.
|
||||
|
||||
Currently, all PDP contexts are routed to the same GGSN, irrespective of
|
||||
the APN used/configured in the MS. This is sufficient (and actually
|
||||
desirable) for small autonomous networks, but of course not suitable for
|
||||
real networks in roaming scenarios. Please contact sysmocom in case you
|
||||
require additional features such as DNS-based APN resolving.
|
||||
|
||||
=== 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 LLC encryption support
|
||||
* No interface to the OsmoNITB HLR
|
||||
* No paging coordination between SGSN and MSC
|
||||
* No SMS over Ps support
|
||||
* No IuPS interface for 3G (in progress)
|
||||
* No IP header compression
|
||||
* No payload compression
|
|
@ -0,0 +1,35 @@
|
|||
== 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 OsmoBTS 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.
|
|
@ -0,0 +1,54 @@
|
|||
<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>
|
|
@ -0,0 +1,38 @@
|
|||
:gfdl-enabled:
|
||||
|
||||
OsmoSGSN User Manual
|
||||
====================
|
||||
Harald Welte <hwelte@sysmocom.de>
|
||||
|
||||
|
||||
include::../common/chapters/preface.adoc[]
|
||||
|
||||
include::chapters/overview.adoc[]
|
||||
|
||||
include::chapters/running.adoc[]
|
||||
|
||||
include::chapters/control.adoc[]
|
||||
|
||||
include::../common/chapters/vty.adoc[]
|
||||
|
||||
include::../common/chapters/logging.adoc[]
|
||||
|
||||
include::chapters/configuration.adoc[]
|
||||
|
||||
include::../common/chapters/gb.adoc[]
|
||||
|
||||
include::../common/chapters/control_if.adoc[]
|
||||
|
||||
include::../common/chapters/oap.adoc[]
|
||||
|
||||
include::../common/chapters/gsup.adoc[]
|
||||
|
||||
include::chapters/counters.adoc[]
|
||||
|
||||
include::../common/chapters/port_numbers.adoc[]
|
||||
|
||||
include::../common/chapters/bibliography.adoc[]
|
||||
|
||||
include::../common/chapters/glossary.adoc[]
|
||||
|
||||
include::../common/chapters/gfdl.adoc[]
|
|
@ -0,0 +1,44 @@
|
|||
<?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>
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
<vtydoc xmlns='urn:osmocom:xml:libosmocore:vty:doc:1.0'>
|
||||
<node id='config-sgsn'>
|
||||
<description>Configure the remote GGSN, access-control and other
|
||||
attributes of the SGSN</description>
|
||||
</node>
|
||||
</vtydoc>
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue