Professional Documents
Culture Documents
By Joseph Naughton
DAY ONE:
CONFIGURING THE MOBILENEXT BROADBAND GATEWAY
The primary goal of Junipers MobileNext Broadband Gateway (MBG) is to take the industry to a new level in user plane scalability and performance, one focused on supporting the heavy signaling load generated by smartphones. With 100 million smartphones now being sold worldwide every calendar quarter, scalability is a priority.
The MBG can be a Gateway GPRS Support Node (GGSN), a PDN Packet Data Network
Gateway (PGW), or a combination of both running on the MX Series platform. Day One:
Configuring the MobileNext Broadband Gateway is specifically aimed at the Mobile Packet Core, and here the author deftly showcases the MBG in a series of follow-along tutorials that teach you how to configure and troubleshoot a basic MBG setup in a single
day. Get ready for the smartphone-centric future where services, scalibility, and speed
can be tweaked and configured whenever you need to with the MobileNext Broadband
Gateway.
If you are a packet core engineer who wants to understand the Juniper MobileNext products,
or a Junos specialist who likes to get new ideas on how to use Junos and the MX platform in
the mobile world - choose this book as a starting point. Not only will it answer most of your
questions but it also covers the straightforward configuration of the MobileNext BroadBand
Gateway and EPC core. Its the one book you need.
Matti Samuli Penttil, Technology Manager, Elisa Corporation
ITS DAY ONE AND YOU HAVE A JOB TO DO, SO LEARN HOW TO:
Configure and implement a GGSN/PGW solution on the MX Series platform.
Connect a Mobile UE through your existing Mobilepacket Core setup.
Run a series of commands to verify the health of the system.
Juniper Networks Books are singularly focused on network productivity and efficiency. Peruse the
complete library at www.juniper.net/books.
Published by Juniper Networks Books
ISBN 978-1936779505
51800
07100151
9 781936 779505
ii
Authors Acknowledgments
I must give accolades to Patrick Ames who had to climb
mountains to help get this book published, and it should
be noted that Guy Davies made many passes through the
technical material and without his insight some errors
may have made it to press.
iii
iv
Chapter 1
MobileNext Architecture
Peering Into the MobileNext Specific Hardware. . . . . . . . . . . . . . . . . . . . . . . . . 7
Mobile MX Processes and Terms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
How the MBG Handles Subscribers (Steering) . . . . . . . . . . . . . . . . . . . . . . . . . . 11
MBG Resource Management Architecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Operations and
management
entity
Internet
Operations and
management
interfaces
Gn
interface
Core
network
Mobile stations
Operations and
management
entity
Gi
interface
Gn
interface
IP networks
GGSN
Gn
interface
Gi
interface
Ga interfaces
Corporate
network
SGSN
Figure 1.1
Charging
gateway
server
Charging
gateway
server
By the time youve gone through this book you should be familiar
enough with the configuration, logging, and tools on MBG that you
will be able to configure and troubleshoot a basic MBG setup. To this
end, the book refers to an imaginary operator called Massachusetts
Telecom (Mass Telecom), a small regional mobile service provider who
would like to deliver world-class mobile services. Appropriately,
This book refers to the MBG as a GGSN when it is in the 3G-world and
as a PGW when it is in the 4G/LTE-world.
ALERT!
This book assumes you know the basics of the MX platform, the Junos
OS, and 3G/4G technologies. It explains and spells out some of the
basics but is designed to get you familiar with Junipers MBG product
and not as a training manual for the MX, the Junos OS, or the basics of
GSM and LTE mobile technologies.
MORE? The Day One library has over two dozen books about using and
working with the Junos OS, as well as configuring and deploying
Juniper network devices such as the MX Series, freely available at
http://www.juniper.net/books.
MOBILE TIP
While you should understand the basics of GSM and LTE technologies
before you begin this book, tips do show up throughout explaining
mobile standards whenever a technology overview is needed to fully
understand a given section of the material.
This is a good time to reaffirm that the MBG runs only on the MX240,
MX480, and MX960 platforms.
MX Line Cards
It is important to understand that when the MX is acting as a MBG you
cannot use the same old line cards that you may have always used with
an MX chassis. The first supported cards for the Mobile Broadband
This book does not go into any details on the Service PIC.
As for the interface cards, the Mobile Broadband Gateway supports
using the enhanced MPCs. There is a fixed 16-port card, with each
port being a 10GE interface. This card has 4 PFEs (Packet Forwarding
Engine). There is also the non-fixed port card that can take a slew of
different MICs (Modular Interface Cards). This type of card has two
PFEs.
The MPCE cards PFEs are the anchor point, also known as anchor pfe
(apfe) for GTP-U traffic off the Gn interface on a GGSN and S5/S8
interface on the P-GW.
TheenhancedMS-DPCservicecards,displayasMS-DPCE:
root@GGSN-960>showchassishardware
ItemVersionPartnumberSerialnumberDescription
....
FPC2 REV05 750-036585ZB9763MS-DPCE
NOTE
The version, part, and serial numbers may differ on the cards seen in
other MX devices, and that is fine, as long as the description shows
them as being enhanced.
If the cards do not show as enhanced they cannot be used in our
Mobile setup. Note that you can still use non-enhanced cards in a MX
chassis being used as a GGSN or PGW that is running the required
number of enhanced cards, as long as the non-enhanced cards are
being used for a non-mobile function.
NOTE
Another component you have the option to use in the MBG is the
Juniper SSD card that installs on the RE. This card is used to store
charging records.
10
tors the availability of GTP peers like the SGSN and SGW nodes
in the Mobile Packet Core, and assigns resources like TEIDs and
source ports to SPICs and PFEs.
Inline Charging
An important feature of the MBG is Inline Charging because it is
handled on the PFE of the MPC, not the SPIC. This allows the MBG to
manage the large number of subscribers it is capable of handling and
ensures that the charging for such numbers is accurate. A charging
record is maintained on the Anchor PFE for each PDP Context or EPC
Bearer. The charging data is periodically sent to the SPIC that is the
anchor for the subscribers with whom the PDP context is associated.
NOTE
Inline charging is the task of maintaining data for the mobile subscriber sessions for billing purposes.
Mobile Interface
The last item on this sections agenda is explaining the MIF acronym
that youll encounter in subsequent chapters. The Mobile Interface
(MIF) is just an interpretation of the logical interface architecture
(IFL). Once a packet is associated with a subscriber record, an interface
template (MIF-IFL) consults the subscriber record to identify the
proper packet forwarding, filtering, rate-limiting, queuing, and
accounting behavior.
Steering to the MBG involves taking a GTP packet from the Gn or S5/
S8 PFE and redirecting it somewhere internally. Steering is also the act
of taking a non-GTP packet from the Gi PFE and redirecting it somewhere internally when the destination is the mobile subscribers device.
All of this makes more sense in about twenty pages.
For GTPc packets, the MBG uses the steering mechanism so the PFEs
are able to load-balance the PDP context activation messages to all
mobile enabled MS-DPCs. All other GTP messages with TEID 0 will be
delivered, also known as steered, to one designated MS-DPC. GTP
messages with a non-zeroTEID will be assumed to be allocated by a
given MS-DPC and should be sent to the appropriate SPIC, managing
that session by using the TEID found in the PDP context activation.
GTPu traffic steering, on the other hand, allows the PFE managing the
interface to send the traffic to the PFE that is anchoring that session.
From the anchor PFE, the GTP packet will be decapsulated and sent to
the Gi/SGi interface, or in the case of Gi/SGi to Gn/S5/S8, the traffic
will be re-encapsulated. The one exception with GTPu traffic is if the
packet is received as fragmented by the GN or S5/S8 PFE. These
fragmented packets must first be steered to a SPIC for reassembly. This
is the one type of GTPu traffic that takes the slow path.
Now, lets examine Figures 1.2 and 1.3 to help illustrate subscriber
setup.
In the example in Figure 1.2, the MPCs PFE would select a mobilityenabled MS-DPC to manage the subscribers session.
In Figure 1.3, the data traffic arrives on an interface on MPC-1, and
then moves to MPC-2, which hosts the anchor PFE before being routed
out the Gi interface on MPC-4.
11
12
Routing Engines
Fabric
2
3
Session
Control
Session
Control
AAA/
Diameter
AAA/
Diameter
Charging
Firewall
Charging
Firewall
etc.
etc.
Anchor
Anchor
MPC-2
MPC-3
Gn/Gp/S5/S8
IP Network
User Equipment
Figure 1.2
MPC-4
Gi/SGi
IP Network
Servers
Routing Engines
Fabric
7
6
Session
Control
Session
Control
AAA/
Diameter
AAA/
Diameter
Charging
Firewall
Charging
Firewall
etc.
etc.
Anchor
Anchor
MPC-2
MPC-3
5
Gn/Gp/S5/S8
IP Network
User Equipment
Figure 1.3
MPC-4
Gi/SGi
IP Network
Servers
13
14
MOBILE TIP For 3G, a GTP packet type of Create PDP Context Request is just the
subscriber attempting to get access to the Mobile Packet Core through
the SGSN. If the subscriber attaches to the SGSN successfully and
wishes to send data, the SGSN will create the GTP Create PDP Context
Request message based on the information it receives from the Radio
Access Network (RAN) and send it to the GGSN over the Gn interface.
MOBILE TIP A TEID is a number created by the MBG and its GTP peers, like the
SGSN or MME, to identify the GTP tunnel for this PDP context. A
subscriber can have multiple PDP contexts, each with a unique TEID.
The TEID for the control plane and the TEID for the data plane may be
different.
Steering the IMSI When the TEID is non-zero in a GTP-C Packet
After the TEID is assigned to a session by the SPIC, if, at a later point, a
GTP-C packet arrives on a Gn or S5/S8 MPC interface with a TEID of
non-zero, the MBG will use the TEID to send the packet from the
current MPCs PFE that has taken the packet off the wire, and forward
it to the SPIC that is managing the session for further session processing
as needed.
Steering the TEID in GTP-U Packets
When a GTPu packet arrives on the GN or S5/S8 interface, the MBG
uses the TEID for the data plane to steer it from the PFE that has taken
the packet off the wire to the assigned anchor for GTP decapsulation.
When data packets arrive on the Gi interface destined for a UEs IP
Address, the system will send it to the assigned anchor PFE for GTP
encapsulation.
Note that the anchor PFE actually does more than just encapsulation or
decapsulation of the data packet it also handles proper packet forwarding, filtering, COS rate-limiting, queuing, and accounting behavior.
NOTE
Steering happens to every single GTP packet that traverses the MBG.
Every GTP packet!
In the next section we will look at these scenarios in more depth.
Figure 1.4
Routing Engine
RMM
For example, the SPIC at 4/0/0 asks for some TIEDs from the Routing
Engine, and then it receives TEID 122200 through 123200. This
distribution is known by the whole system since the SPICs, mobileenabled PFEs, and the Routing Engines each have a table that notes
which TEID resources have been distributed to which SPIC. Now, in
this example, only the SPIC at 4/0/0 will be able to assign TEIDs
122200 through 123200 to any mobile sessions that it anchors. No
other SPIC on any MS-DPC on this system can use these specific TEIDs
to assign to a new session, not even the other SPIC on this same
MS-DPC. The one exception to this rule would be if redundancy is set
up among SPICs. In this case the secondary SPIC for a pair will use
these resources if the primary SPIC goes away for any reason. Redundancy among SPICs is explained in detail in a later section of this book.
The SPIC requests these TEID blocks through the local process called
Resource Controller Module (RCM) that runs on all mobility-enabled
SPICs. The RCMs communicate to the Resource Manager Module
(RMM) process, which manages the resources globally. Remember the
RMM runs on the active Routing Engine.
In a nutshell, the MGB architecture manages resource assignment by
maintaining tables on the Routing Engine via the RMM, as well as on
each SPIC and mobility-enabled PFE via the RCM. You will see more
of this as the book progresses.
So to review, lets again ask the question: But how does the system
know how to steer based on the TEID? Well, when a TEID range is
assigned to a SPIC by the Routing Engine, the RMM process also
updates another table, which is sent to the mobility-enabled PFEs on
each mobility-enabled MPC. This allows a PFE that receives a GTP-C
packet from the wire with a TEID of non-zero to know which SPIC is
currently managing that session based on the TIED. Remember
steering to a SPIC on the TEID is only for GTPc packets, not GTPu.
GTPu steers to AFPEs. Control versus data.
15
16
Anchoring a Subscriber
By now you should understand how TEIDs are distributed and how
the system steers the GTPc packets based on the TEID value, but how
does the system/SPIC decide which PFE to anchor the subscriber
session that the TEID is also being assigned to? Does the SPIC just
randomly ring certain PFEs, asking them to anchor a mobile subscriber? No, the PFEs are considered a mobile resource, too, and the RCM
process on the SPIC that is bringing up the management of the subscriber chooses which Anchor PFE is used for the given subscriber
session.
Here is how the PFE resource gets handed out:
1. First choice is given to the PFE that is the egress PFE to reach the
peer of the session at the SGSN/S-GW, thus avoiding one extra hop
through the fabric for the downstream traffic to the UE (i.e., traffic
from Gi to Gn). This information is readily available to the SPIC from
the Peer Information Table.
2. If the first choice PFE is already heavily loaded (resources are
exhausted on the PFE), the second choice is the PFE that is the nextbest egress PFE (ECMP or backup next hop for the route) to reach the
session Peer. PFE load information is available to the SPIC via the
RMM.
3. If a suitable Gn-facing Anchor-PFE cannot be found, then it
considers anchoring the subscriber on a Gi-facing PFE, if such a PFE
also serves as an Anchor PFE (APFE). Note that this is only possible if
there are very few Gi-facing PFEs. The primary purpose here is to
avoid traversal of the fabric to reach the Anchor PFE.
4. Finally, if both first and second choice PFEs are heavily loaded and
there is no suitable Gi-facing Anchor PFE, then the least-loaded PFE in
the system is chosen as the anchor PFE.
Remember that each APFE in the system that has load attached to it
has to tell the system about the resources in use. The RCM process on
the PFE tells the RMM process on the Routing Engine about its current
load. The system uses this information to help in determining which
PFE a SPIC should pick next when a new session is coming online.
Peer Information
Okay, so you understand that TEIDs and PFEs are mobility resources
in the eyes of the MBG. Lets now look at a more unique resource type,
called Peer Information, which is another piece of important information distributed by the MBG. The RMM process keeps track of the
reachability of MBG peer nodes, such as SGSNs and SGWs, and it also
notes the egress PFEs that reach the peers. The Peer Information gets
pushed to all the RCMs on the SPICs, allowing the SPICs to use the
table when selecting the most efficient APFE for a new subscriber
sessions PDP contexts, meaning the PFE with the fewest, passes
through the fabric for Gn/S5/S8 to Gi/SGi.
Peer Information works when non-session specific GTP-C messages
with a TEID of zero, called GTP Echo requests, are received from a
peer node. These messages are processed on a Designated SPIC of the
peer. When these messages are received from a new peer (not known to
the MBG yet) the ingress PFE forwards them to a Designated SPIC.
NOTE
The Designated SPIC is one of the SPICs that the system chooses to
handle peer management, otherwise know as path management, to the
known peers such as a SGSN or a SGW. This Designated SPIC is
responsible for doing complete path management of the peer, including
sending and receiving periodic echo messages, and informing all other
SPICs in the system about peer reachability, when a peer has not
replied to x-number of consecutive echo requests.
17
18
use because the anchored SPIC managing the users session constructs
the XID from a table it has. This table, like other resource tables, is
created by the RMM process on the Routing Engine and sent to the
SPIC that requires assigning resources at this point in time. The RE
also propagates the table down to the PFEs, so they know which SPIC
the replies should be sent to.
So, to repeat the process, at the time the DHCP module generates
BOOTREQUEST messages, the SPIC relays the message to the DHCP
server with a XID from the unique range assigned to the SPIC. Next, as
the DHCP server reply message is received by the PFE, it can be steered
to the corresponding SPIC based on the XID that is known by each
PFE.
NOTE
One thing to note about all resources that are managed by the RMM
to RCM process is if there is a secondary SPIC configured for the SPIC
managing the session, the unique tables are propagated to the secondary cards. Redundancy can be made to work! We will look at how to
configure redundancy in a later section.
19
20
MBG. You know that the Ingress PFE can steer incoming GTPc
packets based on the TEID value in the packet, and it also does this for
GTP-U packets. Like the TEIDs for GTP-C packets, each SPIC that is
setup for mobility also requests some TEID ranges for GTP-U setup.
Lets rehash this process, but for GTPu this time. Remember that the
MBG assigns the TEID that is used for data packets, also known as
GTP-U packets. Look at the output for a 3G example in Figure 1.5.
You can see in the Create PDP Context Response that a TEID Data I
value of 0x14240162 has been assigned in the response. The GTP peer
sends this as the TEID in any GTP-U request for this subscriber. It will
not send the TEID for the GTP-C response (0x00000102 in this snoop)
for anything but further GTP-C processing, if that is needed. To drive it
home the TEID is different for GTP-C and GTP-U.
Figure 1.5
GTP-U Snoop
Summary
While it may have seemed like a lot of information to digest, the
MobileNext architecture is very well defined and orderly. It has to be in
order for it to work at the scale needed. If anything, be thankful you
werent trying to copy the whiteboard during the meetings when this
architecture was deduced.
Reread this chapter if you need to remember some of the session
particulars, but if youre moving on to the MX configurations in the
next chapters, it is worth your while to intimately understand how the
MBG processes its subscribers.
Chapter 2
Deployment
Whats In Your MX?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Editing the Chassis Hierarchy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Setting Up the Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Creating a Routing Instance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
22
This book assumes you know the basics of how to configure a MX, but
because you are probably new to the GGSN/PGW, it covers as much
setup information as possible. So expect some turbulence ahead if you
have no MX experience the flight attendants will have to check your
seatbelt.
MORE? There are dozens of tutorials on using Junos and on working with the
MX Series in the Day One library at http://www.juniper.net/books.
And the technical documentation for MobileNext products is both
excellent and available online at http://www.juniper.net/techpubs/
en_US/release-independent/mobilenext/information-products/pathway-pages/product/index.html.
QXM1REV05711-028408ZA8195MPCQXM
FPC4REV05750-036585ZB9763MS-DPCE
CPUREV02710-036586YZ1657DPCPMB2GB
PIC0BUILTINBUILTINMS-DPCPIC
PIC1BUILTINBUILTINMS-DPCPIC
FPC5REV07750-036286ZC3842MPCE Type 2 3D EQ
CPUREV06711-030884ZA6137MPCPMB2G
MIC0REV09750-028387JZ89933D4x10GEXFP
PIC0BUILTINBUILTIN2x10GEXFP
Xcvr0REV01740-014279723019A00068XFP-10G-LR
PIC1BUILTINBUILTIN2x10GEXFP
Xcvr0REV01740-011607AVAA0848M2EDXXFP-10G-LR
QXM0REV05711-028408ZC3632MPCQXM
QXM1REV05711-028408ZC3491MPCQXM
FanTrayEnhancedLeftFanTray
23
24
}
}
}
}
pic1{
adaptive-services{
service-package{
extension-provider{
control-cores1;
data-pollers1;
object-cache-size512;
total-wired-memory14336;
boot-osembedded-junos64;
packagejservices-mobile;
}
}
}
}
}
Here are a few notes on some of the options used here (remember these
values are default and should normally never have to be changed):
kernel driven control management. The rest of the cores are used
for mobility processing.
data-pollers state how many kernel threads are used for polling
packets.
ALERT!
Note that the following error will occur if the MS-DPCs were not
configured correctly under [chassis fpc] hierarchy, causing the
jmobile package to not run on any MS-DPC pics:
root@GGSN-960#runshowunified-edgeggsn-pgwstatus
error:Clientnotpresent
This happens more often than you think when you first configure the
unit. If you run any show unified-edge ggsn-pgw command and get
the error above, go check the MS-DPC configuration under [chassis]
hierarchy first. Then run show chassis fpc x detail to make sure the
MS-DPC is in good health.
SGSN
Gn
201.100.1.5/24
Gi
10.3.2.58/24
Internet
MIF
Lo0.1
201.100.1.6/32
Fxp0
10.3.219.31/16
Figure 2.1
Under the [edit interfaces] hierarchy lets make Slot 0, pic 0, port 0
the GN interface, like this:
xe-0/0/0{
description"GIinterface";
unit0{
familyinet{
address10.3.2.58/24;
}
}
}
Slot5,pic0,port0willbetheGIinterface:
xe-5/0/0{
description"GNinterface";
25
26
unit0{
familyinet{
address 201.100.1.5/24;
}
}
}
And last the MIF interface, which we will tie to our first APN:
mif{
unit16000{
}
}
member-interfacemams-4/0/0;
high-availability-options{
many-to-one{
preferred-backupmams-2/0/0;
}
}
}
}
ams1{
load-balancing-options{
member-interfacemams-2/1/0;
member-interfacemams-4/1/0;
high-availability-options{
many-to-one{
preferred-backupmams-4/1/0;
}
}
}
}
When this configuration is set up, you can lose a single mobile-enabled
PIC or a whole MS-DPC card without any loss of service. All subscriber states stay on the box, meaning your subscribers continue to exist on
the network. So if you set this configuration upand then go take a
MS-DPC down, you should see that all is well.
You can also set up redundancy on the MPCE line cards for the anchor
PFEs. In the setup we are putting together for Mass Telecom, we will
use the MPCE in FPC 0 as the primary. FPC 1 will be secondary in case
there is a failure on either one:
apfe0{
anchoring-options{
primary-list{
fpc-0;
}
secondaryfpc-1;
warm-standby;
}
}
27
28
primary-list{
pfe-0/0/0;
pfe-5/1/0;
}
secondarypfe-1/0/0;
warm-standby;
}
}
You can always run the following command to see how the mobilityenabled line cards, which are considered clients to the mobility resource framework, are being used:
root@GGSN-960>showunified-edgeggsn-pgwresource-managerclients
ClientStateRedundancyroleClienttypeGateway
pfe-0/0/0In-ServicePrimaryAnchor-PFEMasst
pfe-0/1/0In-ServicePrimaryAnchor-PFEMasst
pfe-0/2/0In-ServicePrimaryAnchor-PFEMasst
pfe-0/3/0In-ServicePrimaryAnchor-PFEMasst
pfe-1/0/0In-ServiceSecondaryAnchor-PFEMasst
pfe-1/1/0In-ServiceSecondaryAnchor-PFEMasst
pfe-1/2/0In-ServiceSecondaryAnchor-PFEMasst
pfe-1/3/0In-ServiceSecondaryAnchor-PFEMasst
ms-2/0/0In-ServicePrimarySession-PICMasst
ms-2/1/0In-ServicePrimarySession-PICMasst
ms-4/0/0In-ServiceSecondarySession-PICMasst
ms-4/1/0In-ServiceSecondarySession-PICMasst
You can also run this command to get similar information, but here
you also get information on the aggregated groups and what PFEs and
PICs have been assigned:
root@GGSN-960>showunified-edgeggsn-pgwsysteminterfacesgatewayMasst
Gateway:Masst
InterfacesMembersOperationalRedundancy
StateRole
ams0mams-2/0/0ActivePrimary
mams-4/0/0ActiveSecondary
ams1mams-2/1/0ActivePrimary
mams-4/1/0ActiveSecondary
apfe0pfe-0/0/0ActivePrimary
pfe-1/0/0ActiveSecondary
pfe-0/1/0ActivePrimary
pfe-1/1/0ActiveSecondary
pfe-0/2/0ActivePrimary
pfe-1/2/0ActiveSecondary
pfe-0/3/0ActivePrimary
pfe-1/3/0ActiveSecondary
Lets see what the routing table looks like for the Gi routing instance:
[edit]
root@GGSN-960#runshowroutetableGI_VR.inet.0
GI_VR.inet.0:4destinations,5routes(4active,0holddown,0hidden)
+=ActiveRoute,-=LastActive,*=Both
10.3.0.0/16*[Direct/0]03:52:32
>viaxe-0/0/0.0
10.3.2.58/32*[Local/0]03:52:41
Localviaxe-0/0/0.0
11.11.11.11/32*[Direct/0]03:55:32
>viamif.16000
[Local/0]03:55:32
Localviamif.16000
15.1.192.0/22*[Anchor/7]01:13:01
Privateindexed
29
30
address-assignment{
mobile-pools{
MassT_Pool{
familyinet{
network{
15.0.0.0/14{
range{
Range_Name{
low15.0.0.1;
high15.3.255.254;
external-assigned;
}
}
}
}
}
default-pool;
}
}
}
}
interfacexe-0/0/0.0;
interfacemif.16000;
}
Summary
Okay! The MX is configured in the most basic way but it is useless
right now, so dont get alarmed if youre following along in your lab or
test bed. You have a few routing instances and some interfaces ready,
and, well, not much else, but you are ready to be set up as a GGSN or
PGW!
Remember, nows the time to go back over Chapter 2, or Chapter 1, if
anything is amiss, or if you dont quite understand something, because
in Chapter 3 youll get into the real mobile configuration.
Chapter 3
GGSN Mobility Configuration
IP Address Assignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
The Gateway Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Access Point Name (APN) Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
The Charging Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
The RADIUS Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
QOS / COS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
32
IP Address Assignment
One of the main features in any basic GGSN, or PGW, is that it can
assign an IP address to mobile units. For instance, heres a reliable
quote from Wikipedia: The GGSN is responsible for IP address
assignment and is the default router for the connected user equipment
(UE).
So, lets begin by setting up an IP Pool range on the MBG for Mass
Telecom. Lets also make it an externally assigned IP range since Mass
Telecom will have their RADIUS server assign the IP Addresses. So,
lets begin by setting up an IP Pool range on the MBG for Mass Telecom. We had just set up that routing instance called GI_VR in the last
chapter and there was a pool added to it.
NOTE
[editrouting-instancesGI_VRaccessaddress-assignment]
root@GGSN-960#show
MassT_Pool{
familyinet{
network{
15.0.0.0/14{
range{
Range_Name{
low15.0.0.1;
high15.3.255.254;
external-assigned;
}
}
}
}
}
}
}
You should note that the external-assigned option has been set. The
external-assigned option just means the MBG is not assigning the IP
33
34
You can use an AAA server such as the Juniper Steel Belted Radius
Carrier AAA solution to assign IP addresses. Steel Belted Radius
Carrier AAA can weigh the pools using different modules of distribution. You may even be able to use the JavaScript module on the Steel
Belted RadiusCarrier AAA server to perform even more flexible IP
Pool assignment models. Check the latest Steel Belted Radius Carrier
AAA documents for further details.
So for Mass Telecom lets add a third small pool called MassT_Pool_3,
which will be an internally assigned pool, meaning that the MBG will
be the one assigning the IP Addresses. This should allow you to see if
load balancing works.
Lets also add the Mobile-IP-Pool group called Mobile_Pool_Group_1
in which the two IP pools MassT_Pool and MassT_Pool_3 are placed.
Lets take a peek:
[editrouting-instancesGI_VRaccessaddress-assignment]
root@GGSN-960#show
mobile-pools{
MassT_Pool{
familyinet{
network{
15.0.0.0/14{
range{
Range_Name{
low15.0.0.1;
high15.3.255.254;
external-assigned;
}
}
}
}
}
}
MassT_Pool_3{
familyinet{
network{
10.3.219.200/30{
range{
Range_Name{
low10.3.219.200;
high10.3.219.203;
}
}
}
}
}
}
}
mobile-pool-groups{
Mobile_Pool_Group_1{
MassT_Pool_3;
MassT_Pool;
}
}
Pretend for one moment that the Gateway and APN are also configured and Mass Telecom wants to test this and they have six mobile
devices coming online. Use the show unified-edge ggsn-pgw subscriberscommand and you can see that this worked. The six subscribers were evenly load balanced between the two pools also, check
out the IP addresses:
root@GGSN-960#runshowunified-edgeggsn-pgwsubscribers
IMSIMSISDNSubscriberPeerAPN
AddressAddress
3022001122334972673777410.3.219.20110.3.219.32NScotia
3022001122335292673777610.3.219.20210.3.219.32NScotia
3022001122334652673777210.3.219.20010.3.219.32NScotia
3022001122335132673777515.4.9.310.3.219.32NScotia
3022001122334492673777115.4.9.110.3.219.32NScotia
3022001122334812673777315.4.9.210.3.219.32NScotia
35
36
To monitor the state of your pools use the show unified-edge ggsn-pgw
address-assignment pool command. This snippet shows how useful it
is to see how many IP addresses are used in a given pool and if you
have allocated enough to meet your use.
Pool:MassT-Pool-3
Totaladdresses:500
Addressesinuse:250
Addressesskipped:0
Addressusage(percent):50
Addressesinagingperiod:0
Routinginstance:GI_VR
Pool:MassT_Pool_2
Totaladdresses:254
Addressesinuse:0
Addressesskipped:0
Addressusage(percent):0
Addressesinagingperiod:0
Routinginstance:GI_VR
Pool:MassT_Pool
Totaladdresses:16777214
Addressesinuse:620
Addressesskipped:336
Addressusage(percent):0.
Addressesinagingperiod:0
Routinginstance:GI_VR
NOTE
Its generally recommended that you configure a larger number for the
GW-level maximum-bearers than you believe is needed. You can then
configure lower values at the APN-level for maximum-bearers, an
example of which is covered in just a moment. This process allows you
to add new APNs in the future without requiring a configuration
change at the GW level.
Next, lets set up the GTP section using the Gn interface for our
example, which tells the MBG what loopback interface will anchor all
incoming PDP Create Context requests. While some may say, all
roads lead to Rome, all MPC interfaces that handle GTP requests
head to this interface. Note that there are some additional retry/
timeout settings to be left alone for now. Unless there are latent
network issues between the MBG and its GTP peers, the default
settings are typically just fine.
[editunified-edgegatewaysggsn-pgwMasst]
gtp{
gn{
interfacelo0.1v4-address201.100.1.6;
n3-requests5;
t3-response5;
path-managementenable;
echo-n3-requests3;
echo-t3-response5;
}
The MCC (Mobile Country Code) is 310, which is one of the Mobile
Country codes for the United States. The MNC (Mobile Network
Code) is 909, which is the hypothetical unique Mobile Network Code
for our example carrier Mass Telecom.
37
38
So an IMSI of 310909123456789 will be considered a home subscriber to the MBGs network. An IMSI of 310150123456789 will be
considered a visitor.
Mass Telecom does not want any IMSIs, or visitors, that do not belong
to this Mobile Network to have access to this APN. No one is going to
reconfigure their BlackBerry, set the APN-Name to masst.com, and get
on this APN with their non-Mass Telecom sim card! We will set
block-visitors:
block-visitors;
Next configure a type for the APN. Waita what? What is a type?
Okay, good point. Currently you have a few options for types:
Real This type of APN is where a real service is provided. It can
be accessed either by the APN received directly from the UE in
the GTPc PDP Context Request or by a redirection from a virtual
APN as seen below.
This means the APN name sent from the UE is used, so in this
case masst.com.
Virtual This APN type is used when the GTP Create PDP
Context message contains an APN name, but the name must be
mapped to an APN the MBG has configured as a real APN. The
mapping is done by configuring the service selection profile
section (something youll do a little later in this book).
This APN type can also map to a real APN through a RADIUS
server. The RADIUS server may be configured to return the
attribute JNPR-APN-Name in a RADIUS Access Accept packet.
Lets make life simple for Mass Telecom and choose real as our
option. It works for our example because that is the only APN Mass
Telecom wants to use and their RADIUS server is not passing back
the RADIUS Attribute JNPR-APN-Name.
apn-typereal;
Since this is a small regional carrier dealing only in IPV4, the apndata-type is obvious. (One day they may move to IPV6 one day.)
apn-data-typeipv4;
To tie this APN into an IFL, chose a mobile interface, and since there
is only one so far, the choice is easy to make:
mobile-interfacemif.16000;
And its already been decided to use RADIUS to assign the IP addresses to our UEs:
address-assignment{
aaa;
}
And here is the AAA profile for use for this APN. Details for this
Radius profile setup come later:
aaa-profileMASST_AAA_Profile;
Under the APN section, you can configure the MBG to use an
anonymous username, which it will send to the RADIUS server if you
are configuring RADIUS for this APN and the UE does not send a
username in the Create PDP Context Request Message. If you do not
set the anonymous user, and the UE and SGSN do not send over a
username, the subscriber/PDP Context activation will fail unless your
RADIUS Server is configured to not look at the User-Name and
User-Password RADIUS attributes (expect very few RADIUS servers
to be configured this way):
anonymous-user{
user-namewhoami;
password"$9$uj9pOEcrevL7-le";##SECRET-DATA
}
Now lets review what selection mode to use. The selection mode
indicates the origin of the APN and whether or not the Home
Location Register (HLR) has verified the user subscription. The
selection mode type is represented by the values: 0, 1, 2, or 3, as
shown in Table 3.1.
39
40
Table 3.1
Value (Decimal)
Simply put, this field in the Create PDP Context/Create Session request
will tell you if the SGSN/MME or the Mobile Equipment assigned the
APN string and if the subscriber was verified or not verified. By the
way, verified means that the SGSN successfully communicated with the
HLR/HSS and that the HLR/HSS verified the subscriber.
Take a look at this Create PDP Context Request message and you can
see the Selection Mode is 0.
Figure 3.1
Mass Telecom likes this feature. They do not want to use no-subscribed because they have no desire to reject verified subscribers.
Whats more, their SGSNs do not assign the APN. Their handhelds
assign the APNs, but there are instances where the HLR may not verify
these subscribers, so Mass Telecom still wants to let them in. Here are
the options:
root@GGSN-960#setselection-mode?
Possiblecompletions:
<[Enter]>Executethiscommand
from-msAdmitMSprovidedAPN,subscriptionnotverified
from-sgsnAdmitNetworkprovidedAPN,subscriptionnotverified
no-subscribedRejectsubscribedverifiedUsers
would look like so far, based on our example Masst plus some Traceoptions that we will talk about in a later section:
gateways{
ggsn-pgwMassT{
maximum-bearers2000000;
preemption{
enable;
}
gtp{
gn{
interfacelo0.1v4-address201.100.1.6;
n3-requests5;
t3-response5;
path-managementenable;
echo-n3-requests3;
echo-t3-response5;
}
traceoptions{
filegtp.logsize50m;
levelall;
flagall;
}
}
traceoptions{
filegateway.logsize50m;
levelall;
flagall;
}
apn-services{
apnsmasst.com{
maximum-bearers1500000;
block-visitors;
apn-typereal;
apn-data-typeipv4;
mobile-interfacemif.16000;
address-assignment{
aaa;
}
aaa-profileMASST_AAA_Profile;
anonymous-user{
user-namewhoami;
password"$9$uj9pOEcrevL7-le";##SECRET-DATA
}
selection-mode{
41
42
from-ms;
}
}
}
system{
anchor-pfes{
interfacepfe-5/1/0;
interfacepfe-0/0/0;
}
anchor-spics{
interfaceams0;
interfaceams1;
}
}
software-datapath{
traceoptions{
filesoftdatapath.logsize50m;
flagall;
}
}
}
}
then{
apn-nameNScotia;
}
}
}
Next you have to have an entry for the APN name internet123 and
Canada that Nscotias UEs send, so lets add an APN type of virtual
and lets call the service-selection-profile. Virtual APNs still need
to use a unique MIF:
apnsinternet123{
apn-typevirtual;
mobile-interfacemif.15998;
service-selection-profileNScotia_profile;
}
apnsCanada{
apn-typevirtual;
mobile-interfacemif.14999;
service-selection-profileNScotia_profile;
}
Now lets set up the apn NScotia and remember to go back and attach
And, for your reference, here is what the visitor pool looks like:
[editrouting-instancesGI_VRaccessaddress-assignmentmobile-poolsvisitor]
root@GGSN-960#show
familyinet{
network{
15.4.0.0/16{
range{
rangerName{
low15.4.0.1;
high15.4.255.254;
}
}
}
}
}
43
44
offline{
charging-gateways{
cdr-releaser8;
peer-order{
peerChargingOne;
}
}
}
}
}
charging-profiles{
ChargingProfile_One{
profile-id101;
transport-profileTransportProfileOne;
cdr-profileCDR_profile_ONe;
trigger-profileTriggerProfile_One;
}
}
gtpp{
n3-requests5;
echo-interval60;
t3-response5;
reconnect-time60;
peerChargingOne{
destination-ipv4-address10.3.219.32;
source-interface{
xe-5/0/1.0;
}
destination-port3386;
transport-protocoludp;
versionv0;
}
}
Okay, so maybe its not so easy. In fact it is quite convoluted, but lets
break it down.
The GTPP section is where you set the GTP prime basics: the reconnect
times, the timeout intervals, the port, protocol, and which GTP version
to use. Mass Telecom happens to use UDP with GTP version 0 for their
GTP Prime connection.
You also set up the CGW (Charging Gateway) under this section.
MOBILE TIP GTP prime uses the same message structure as GTP-C and GTP-U. It is
used for carrying charging data from the Charging Data Function
(CDF), which is the GGSN/PGW to the Charging Gateway Function
(CGF).
And here Mass Telecom has configured a single CGW at 10.3.219.32.
The MBG uses the source-interface xe-5/0/1 on the default VR to reach
this CGW. Port, transport, and GTP version have also been set here:
45
46
gtpp{
n3-requests5;
echo-interval60;
t3-response5;
reconnect-time60;
peerChargingOne{
destination-ipv4-address10.3.219.32;
source-interface{
xe-5/0/1.0;
}
destination-port3386;
transport-protocoludp;
versionv0;
}
}
Next, set up the Transport Profile. There is not much to this section
since currently as of Junos 11.4w2, the MBG only supports offline
charging, but its here that you set up the cdr-release that the CGW
supports and set up the CGW peers that you want to connect to. As
stated previously, Mass Telecom has only one CGW. If they add a
second one, remember the top configured peer in the order is selected
first as the active CGW. When the active CGW goes down, the next
peer is selected. If all the charging gateways are down and you have
configured local persistent storage, then the CDRs are stored on the
Routing Engine if an SSD card is installed.
transport-profiles{
TransportProfileOne{
offline{
charging-gateways{
cdr-releaser8;
peer-order{
peerChargingOne;
}
}
}
}
}
MOBILE TIP Offline charging is based on CDR file processing and is a Post Paid
scenario where subscribers are typically billed at a later time. Online
charging is real-time and can tie into service application control. For
example, subscribers can find their data thruput downgraded if they
use too much in a period of time
The trigger-profiles section is where you determine when a CDR is
created for a subscriber session. Mass Telecom has decided to exclude
the events qos-change and rat-change from kicking off a CDR. The
other trackable events Location area update for the mobile subscriber, IP Address update being deferred, mobile equipments time zone
changes, and the Public Land Mobile Network changes for the mobile
subscriber will all create CDR. You can always add these to the
exclude section if Mass Telecom feels they do not want to track them.
Also Mass Telecom has decided when the user has received or sent 10
Megs of data, a CDR will be created. On top of that, if a CDR has not
been created for 10 minutes a CDR will be created. So lots of events
can create a CDR record.
trigger-profiles{
TriggerProfile_One{
exclude{
qos-change;
rat-change;
}
offline{
volume-limit{
10485760;
directionboth;
}
time-limit600;
}
}
}
Next up is the CDR profile. You can do a few things under this section
because Mass Telecom chose to set enable-reduced-partial-cdrs
(RPCs). The RPCs should only contain mandatory fields and information regarding changes in the session parameters relative to the previous CDR. For example, if the user equipment location has not
changed, then this information is excluded from the RPC because this
information has not changed from the previous CDR. This helps make
the CDR records smaller, which Mass Telecom obviously likes, since it
makes dealing with their billing records easier.
Mass Telecom has also decided to exclude numerous options that are
not needed for their charging model from being placed into the CDR
and these exclusions are also configured under the CDR profile, as seen
here:
cdr-profiles{
CDR_profile_ONe{
enable-reduced-partial-cdrs;
exclude-ie-options{
apn-ni;
apn-selection-mode;
cc-selection-mode;
pgw-plmn-identifier;
list-of-service-data;
lrsn;
network-initiation;
node-id;
pdn-connection-id;
pdppdn-type;
47
48
rat-type;
record-sequence-number;
served-pdppdn-address;
serving-node-plmn-identifier;
}
}
}
Now lets tie all these configurations together under a Charging Profile.
Lets also add a profile-id for this charging profile that well call ChargingProfile_One (note the GTPP settings are global to the gateway, so
while they are tied to Charging, GTPP settings do not go under the
Charging Profile):
charging-profiles{
ChargingProfile_One{
profile-id101;
transport-profileTransportProfileOne;
cdr-profileCDR_profile_ONe;
trigger-profileTriggerProfile_One;
}
}
You could even offer Mass Telecom the ability to assign the Charging
Profile from RADIUS or from the SGSN/SGW. But Mass Telecom has
chosen to just assign the profile locally, so they do not need to set a
selection order:
[editunified-edgegatewaysggsn-pgwMasstapn-servicesapnsNScotiacharging]
root@GGSN-960#setprofile-selection-order?
Possiblecompletions:
[Openasetofvalues
radiusSelectchargingprofilesentbyradius
staticSelectchargingprofilelocallyconfigured
servingSelectchargingprofilesentbySGSNorSGW
Once you have your Charging settings configured you can run a few
commands to make sure everything is working:
root@GGSN-960#runshowunified-edgeggsn-pgwchargingpathstatus
ChargingPathStatus
Peer-AddressPeer-NameLocal-AddressStatusEcho
10.3.219.32ChargingOne10.3.219.72ConnectedEnabled
root@GGSN-960#runshowunified-edgeggsn-pgwchargingpathstatistics
ChargingPathStatistics
CGFAddress:10.3.219.32CGFServerName:ChargingOne
EchoRequestsRx:0EchoResponsesTx:0
EchoResponsesRx:0EchoRequestsTx:4146
Node-AliveRequestsRx:0Node-AliveResponsesTx:0
VersionNotSupportedRx:0VersionNotSupportedTx:0
EchoRequeststimedout:0EchoInterval:60
DownDetectionInterval:10ReconnectTimeInterval:60
DestinationPort:3386PendingQueueSize:0
PathManagerFPCSlot:2PathManagerPICSlot:0
T3ResponseTimeInterval:5PathManagerPort:30241
SourceInterfaceValid:YesGTPPHeaderType:long
N3Requests:5LocalAddress:10.3.219.72
GTPPVersion:V0TransportProtocol:UDP
Before leaving the charging section and moving on, it should be mentioned that you can also store CDRs locally on the SSD card in the RE.
The CDR files are available for transfer from the /opt/mobility/
charging/ggsn/final_log directory. This option may be considered a
must for setups that will not use the GA interface to a Charging Gateway. With this option, you can retrieve the files off the box with a
protocol such as FTP or SCP and then clean the files off the box.
49
50
and add a new offline> charging gateway field called persistentstorage-order. Its value will be local-storage. Heres an example:
transport-profiles{
TransportProfileOne{
offline{
charging-gateways{
cdr-releaser8;
peer-order{
peerChargingOne;
}
persistent-storage-order{
local-storage;
}
}
}
}
}
Next under unified-edge > gateways > ggsn-pgw > Masst > charging
lets add the options for the local CDR storage. Mass Telecom has the
following options set:
local-persistent-storage-options{
file-age60;
file-size512;
cdrs-per-file25000;
file-format3gpp;
disk-space-policy{
water-mark-level1{
percentage70;
notification-levelboth;
}
water-mark-level2{
percentage85;
notification-levelsnmp-alarm;
}
}
}
Youcanmonitorthestatusofthelocalstoragewiththishelpfulcommand:
root@GGSN-960#runshowunified-edgeggsn-pgwcharginglocal-persistentstoragestatistics
Gateway:Masst
Charginglocal-persistent-storageStatistics
BatchMessagesreceived:131
BatchResponsessent:131
InvalidMessagesreceived:0
Numberoftemplogfilesopened:10
Numberofjournalfilesopened:10
Numberofjournalfilesclosed:9
NumberofCDRlogfilesclosed:10
NumberofCDRfilesclosedduetofile-age:8
NumberofCDRfilesclosedduetofile-size:0
NumberofCDRfilesclosedduetocdr-count:0
Abnormalfileclosures:2
Normalfileclosures:8
NumberofCDRlogfilesclosedinTS_32_297format:0
NumberofCDRlogfilesclosedinrawasn1format:10
TotalnumberofCDRsbackedup:131
DiskFullmessagessent:0
DiskFullresolvemessagessent:0
NumberofasyncIOreqswritten:131
Diskspacestatus:DISK_AVAILABLE
Watermarklevel1at(MB):2276(70%)
Watermarklevel2at(MB):2601(85%)
Watermarklevel3at(MB):2926(90%)
TemporaryCDRlogfileStatistics
FileName:/opt/mobility/charging/ggsn/temp_log/templog_file_2.log
Journalfilename:/opt/mobility/charging/ggsn/jrnl/jrnl_2.log
CurrentnumberofCDRs:11
Currentfilesize(bytes):3084
Fileagetrigger(mins):60
Filesizetrigger(bytes):10485760
CDRcounttrigger:0
GlobalStatistics
DiskOfflinemessagessent:0
DiskAvailablemessagessent:0
NumberofCDRstoragefilesondisk:1814
Currentstoragespaceinuse(MB):305
Availablestoragespaceondisk(MB):2947
Totalstoragespaceondisk(MB):3252
Note that Mass Telecom did apply watermarks so they are notified if
disk space is filling in case their file retrieval is not happening, or the
cleanup is not occurring at close enough intervals based on the number
of CDRs that get created during peak hours.
This concludes all the processes of the Charging Configuration.
51
52
So far, Mass Telecom has only one RADIUS Server; this is not very
practical in the real world but is simple for our testing since you only
need one RADIUS server running in your lab. Heres the configuration:
Access{
radius{
servers{
t1k-16g{
address10.3.219.95;
port1812;
accounting-port1813;
secret"$9$.Pz3/CtOIE9C";##SECRET-DATA
accounting-secret"$9$noT2/p01RhrKMIR";##SECRET-DATA
allow-dynamic-requests;
dynamic-request-secret"$9$B4CISrKM87dbvM";##SECRET-DATA
source-interfacexe-5/0/1;
}
}
network-elements{
Network_Element_1{
servert1k-16gpriority1;
}
}
}
}
Next, head over to [edit unified-edge aaa]. Here you are going to
This is the first time you have configured anything under the unifiededge hierarchy that was not directly tied to a gateway configuration. So
this configuration would be global to all Gateways configured on this
box. Remember Mass Telecom is only setting up a single gateway in this
book.
root@GGSN-960#show
mobile-profiles{
Masst_AAA_Profile{
radius{
authentication{
network-elementNetwork_Element_1;
}
accounting{
network-elementNetwork_Element_1;
}
}
}
}
Okay, so about that anonymous user. Why add that account here? This
was discussed earlier when looking at the Virtual APN type, but now
lets go into a bit more detail. In a RADIUS request the user User-Name
must be present.
Per RADIUS RFC 2865: This Attribute indicates the name of the user
to be authenticated. It must be sent in Access-Request packets if
available.
The RFC states the User-Name attribute must be present, only if
available. Yes, most RADIUS servers choke on the lack of the UserName attribute, so as of this writing the MBG code requires the
anonymous-user. What happens if you fail to add it? Well, the GGSN
will reject the PDP Context Create request with an Encoding cause
Authentication failure message added to the GTP log and will not
even try to send a Radius Request out. So please save yourself
another headache.
You might ask why can you only use the user-name in the GTP-C
message sent in the PDP Context Create request. Look at a snoop sent
from the SGSN over the Gn interface to the GGSN and youll see the
MSIDSN and the IMSI, but no username to identify the client. This is
not PPP, or 802.1x, or any other subscriber technology where each
subscriber must be identified by a user. This is a mobile solution where
the IMSI is the identity for the GGSN. In some carriers networks the
UE and SGSN may send a username, but remember it is not required.
In the Create PDP Context request you may see a Protocol Configuration Option with a PAP or CHAP section. For example look at this
snoop in Figure 3.2.
53
54
Figure 3.2
Okay, Mass Telecoms SGSN and UEs are using the anonymous user
since the SGSN does not send any value. But what can the MBG send
to RADIUS, just this hardcoded anonymous string? Does this mean
from a GGSN/PGW to RADIUS server point of view, there is only one
user per APN, this hardcoded anonymous user? Its not very flexible,
and theres no ability to utilize different attributes from RADIUS to
provision individual subscribers sessions. Right?
Wait, stop complaining. The MBG does have options to get around the
lack of a RADIUS User-Name being present. You replace the anonymous username sent in the RADIUS request with any one of these
variables:
use-apnnameUseAPNnameforuserauthentication
use-imsiUseimsiforuserauthentication
use-msisdnUsemsisdnforuserauthentication
RADIUS Features
Mass Telecom sells some cool mobile devices. These expensive Mass
Telecom devices have a nice high monthly fee and have a hardcoded
APN masst.bb that needs to be added to the MBG. This APN will be
55
similar to the masst.com APN. But Mass Telecom needs to set up this
APN to use the individual IMSI as the user-name sent to RADIUS in
case they need to return specific RADIUS attributes for a given subscriber for unique services, such as setting Ingress and Egress policies.
So:
[editunified-edgegatewaysggsn-pgwMasstapn-servicesapnsmasst.bb]
root@GGSN-960#show
anonymous-user{
use-imsi;
password"$9$FngmnApO1RSlKB1";##SECRET-DATA
Now Mass Telecom also wants to use their RADIUS server for handling accounting information for the APN masst.com and masst.bb. If
you dig down, there is a trigger section under the aaa mobile-profiles
hierarchy. Mass Telecom wants to send interim accounting updates
every 15 minutes and they do not want updates sent when there is a
QOS change or a RAT change. Other trackable events location area
update for the mobile subscriber, IP Address update being deferred,
mobile equipments time zone changes, and the Public Land Mobile
Network changes for the mobile subscriber will all create a new
interim accounting packet when that event occurs. Remember, Mass
Telecom can always add these as excluded events in the future if they
feel tracking them is an unnecessary creation of an accounting record:
[editunified-edgeaaamobile-profilesMasst_AAA_Profileradiusaccountingtrigger]
root@GGSN-960#show
no-rat-change;
no-qos-change;
interim-interval15;
Acct-
Acct-
Acct-
Acct-
RAS-
Record-
Full-
User-
NAS-IP-
Status-
Delay-
Input-
Output-
Octets
Octets
432674944
13815552
Date
Time
Client
Type
Name
Name
Address
Type
Time
7/20/2011
13:24:44
<ANY>
Start
WHOAMI
whoami
10.3.219.72
7/20/2011
13:39:46
<ANY>
Interim
WHOAMI
whoami
10.3.219.72
Acct-Session-Id
0A03DBFA0C001001
0A03DBFA0C001001
56
QOS / COS
The last item to configure is QoS. No, wait, this is Junos. Its CoS, and
mobile CoS to be exact.
Play along for a moment and assume the engineers at Mass Telecom
are looking at a test subscriber session:
root@GGSN-960#runshowunified-edgeggsn-pgwsubscribersextensive
SubscriberInformation:
IMSI:123456789459595IMEI:None
MSISDN:26737745TimeZone:None(DST):None
Status:Visitor
UserLocationInfo:
MCC:NoneMNC:None
LAC:0x0CI:0x0SAC:0x0RAC:0x0TAC:0x0ECI:0x0
RATType:Unknown
PDNSession:
APNname:masst.com
IPv4Address:15.4.16.1IPv6Address:None
DirectTunnel:DisabledSessionDuration:3:20:32
LocalControladdress:10.3.219.250RemoteControladdress:10.3.219.32
TEIDControlLocal:0xc001547TEIDControlRemote:0x100
Addressingscheme:LocalSelectionmode:subverified
SessionPIC:2/0(FPC/PIC)AnchorPFE:10/0(FPC/PIC)
SessionState:EstablishedGTPVersion:1
Servingnetwork:MCC:NoneMNC:None
Bearer:
NSAPI/EBI:5ChargingID:0xc001547
LocalDataaddress:10.3.219.250RemoteDataaddress:10.3.219.32
LocalTEID:0x3420b6RemoteTEID:0xff
BearerState:EstablishedSubstate:-
IdleTimeout:0min(0-0,0)AAAInterimInterval:0min(0-0,0)
NegotiatedQoSParameters:
TrafficClass:InteractiveARP:1
TrafficHandlingPriority:3TransferDelay:10
MBRUplink:128kbpsMBRDownlink:128kbps
GBRUplink:128kbpsGBRDownlink::128kbps
SignalingIndicator:0
ForwardingClass:-LossPriority:-
RequestedQoSParameters:
TrafficClass:InteractiveARP:1
TrafficHandlingPriority:3TransferDelay:10
MBRUplink:128kbpsMBRDownlink:128kbps
GBRUplink:128kbpsGBRDownlink:128kbps
SignalingIndicator:0
Charginginformation:
ProfileID:0
State:InitPreviousState:Init
Profileselectioncriteria:-
Offlinecharginginformation:
Currentservicedatacontainersequencenumber:0
Currentpartialrecordsequencenumber:0
NumberofCDRsclosed:0
Ratinggroupinformation:
Ratinggroup:0Serviceid:0
ActionID:0x0Triggerprofile:0
Changeconditionbitmask:0x0Action-id-bitmask:0x0
Signalbitmask:0x0Lastsignalbitmask:0x0
Laststatisticscollectiontime:Nonecollected
Note the bolded output, which is just what the Mass Telecom engineers are seeing, too. Is that 128 kbps for their MBR (Maximum Bit
Rate)? Is that what QoS is set to? Well actually, on the MBG nothing
has been set yet. Lets look at a snoop in Figure 3.3 to see what is
requested in the Create PDP Context request, received from the SGSN,
since our example is a 3G test.
Figure 3.3
Okay, as you can see from the SGSN, they are requesting a MBR of
128k. The MBR value should be 5 Mbs from what Mass Telecom
requires for this test subscriber who likes HD YouTube videos, which
require a pipe larger than 128k. They call in the SGSN/HLR team and
have them change what is requested for the QoS settings.
After the change, lets test a subscriber again and see how it went:
root@GGSN-960#runshowunified-edgeggsn-pgwsubscribersextensive
SubscriberInformation:
IMSI:123456789460360IMEI:1122334455667791
MSISDN:26737748TimeZone:None(DST):None
Status:Visitor
UserLocationInfo:
MCC:NoneMNC:None
LAC:0x0CI:0x0SAC:0x0RAC:0x0TAC:0x0ECI:0x0
RATType:Unknown
PDNSession:
APNname:masst.com
IPv4Address:15.4.56.1IPv6Address:None
57
58
DirectTunnel:DisabledSessionDuration:4
LocalControladdress:10.3.219.250RemoteControladdress:10.3.219.32
TEIDControlLocal:0x14002d2eTEIDControlRemote:0x106
Addressingscheme:LocalSelectionmode:subverified
SessionPIC:2/1(FPC/PIC)AnchorPFE:10/0(FPC/PIC)
SessionState:EstablishedGTPVersion:1
Servingnetwork:MCC:NoneMNC:None
Bearer:
NSAPI/EBI:5ChargingID:0x14002d2e
LocalDataaddress:10.3.219.250RemoteDataaddress:10.3.219.32
LocalTEID:0x143400a8RemoteTEID:0x105
BearerState:EstablishedSubstate:-
IdleTimeout:0min(0-0,0)AAAInterimInterval:0min(0-0,0)
NegotiatedQoSParameters:
TrafficClass:BackgroundARP:1
TrafficHandlingPriority:3TransferDelay:10
MBRUplink:6976kbpsMBRDownlink:6976kbps
GBRUplink:128kbpsGBRDownlink::128kbps
SignalingIndicator:0
ForwardingClass:-LossPriority:-
RequestedQoSParameters:
TrafficClass:BackgroundARP:1
TrafficHandlingPriority:3TransferDelay:10
MBRUplink:6976kbpsMBRDownlink:6976kbps
GBRUplink:128kbpsGBRDownlink::128kbps
SignalingIndicator:0
Charginginformation:
ProfileID:0
State:InitPreviousState:Init
Profileselectioncriteria:-
Offlinecharginginformation:
Currentservicedatacontainersequencenumber:0
Currentpartialrecordsequencenumber:0
NumberofCDRsclosed:0
Ratinggroupinformation:
Ratinggroup:0Serviceid:0
ActionID:0x0Triggerprofile:0
Changeconditionbitmask:0x0Action-id-bitmask:0x0
Signalbitmask:0x0Lastsignalbitmask:0x0
Laststatisticscollectiontime:Nonecollected
From the bolded output you can see that the SGSN is requesting 6MB
and thats great, but from the MBG/GGSN side this needs to be 5MB
as per Mass Telecoms management team. They do not want to give
away too much bandwidth per subscriber. Time for the Mass Telecom
GGSN engineers to take control. Lets go under the unified-edge
hierarchy to set the Mobile COS settings.
NOTE
Its important to point out that the Mobile COS settings can be used
globally across all gateways since they are set under unified-edge
directly, and are not tied directly to a Gateway.
Lets test our new QOS/COS settings by attaching the cos-policy-profile Masst_QoS we just created to a unified-edge local policy we will
call Masst_Policy_One. Unified-edge local policies are just objects that
allow you to tie different policies together to define one policy for the
Gateway or APN. In a bit we will add other policies under Masst_Policy_One to flesh it out, but for now it will only hold our simple Cos
policy:
[editunified-edgelocal-policiesMasst_Policy_One]
root@GGSN-960#show
cos-policy-profileMasst_QoS;
[editunified-edgegatewaysggsn-pgwMasstapn-servicesapnsmasst.com]
root@GGSN-960#show
local-policy-profileMasst_Policy_One;
At this point it should be explained that the default behavior for the
pdp-qos-control setting is to downgrade the requested MBR values if
they exceed the configured values under the pdp-qos-control. If the
requested MBR values are below this configured value, the MBG will
honor the requested value and leave it as it is. If no value is set for
MBR and GBR, then the system will honor the requested value, regardless of how high it is, as long as it is within the QoS 3GPP specifica-
59
60
Profileselectioncriteria:-
Offlinecharginginformation:
Currentservicedatacontainersequencenumber:0
Currentpartialrecordsequencenumber:0
NumberofCDRsclosed:0
Ratinggroupinformation:
Ratinggroup:0Serviceid:0
ActionID:0x0Triggerprofile:0
Changeconditionbitmask:0x0Action-id-bitmask:0x0
Signalbitmask:0x0Lastsignalbitmask:0x0
Laststatisticscollectiontime:Nonecollected
The MBG does allow some advanced control over the pdp-qos-control
feature by allowing the default behavior to be modified. You can
change the default behavior to reject the Create PDP Context Requests
if the requested MBR or GBR value is higher than the value set on the
MBG. You can also allow the MBG to upgrade the requested MBR and
GBR values if they are lower than the configured value on the MBG.
Here are the options:
root@GGSN-960#setmaximum-bit-rate-uplink5120?
Possiblecompletions:
<[Enter]>Executethiscommand
rejectRejectcallswithhigheruplinkmaximum-bit-rate
upgradeOverridemaximum-bit-rateuplinkvalue
Remember, for GTPv1 requests the MBR and GBR values can only be
updated if the Upgrade QoS Supported bit is sent by the SGSN in the
Common Flags IE.
MOBILE TIP Per 3GPP 29.060: The Upgrade QoS Supported bit field is relevant
for a Create PDP Context or Update PDP Context procedure and is
used by SGSN to indicate to GGSN whether QoS upgrade in Response
message functionality is supported.
The MBG also allows the administrator of the box to set QoS controls
based on the Traffic Class for 3G subscribers and QCI for 4G subscribers. Below is an example of Mass Telecom expanding on their current
setup by adding a specific setting for qci 5 and qci 9:
[editunified-edgecos-caccos-policy-profilesMASST-QoSpdp-qos-control]
root@GGSN-960#show
maximum-bit-rate-uplink5120;
maximum-bit-rate-downlink5120;
guaranteed-bit-rate-uplink254;
guaranteed-bit-rate-downlink254;
qci9{
maximum-bit-rate-uplink512reject;
maximum-bit-rate-downlink1024reject;
guaranteed-bit-rate-uplink256reject;
guaranteed-bit-rate-downlink256reject;
61
62
}
qci5{
maximum-bit-rate-uplink2560upgradereject;
maximum-bit-rate-downlink5120upgradereject;
guaranteed-bit-rate-uplink256;
guaranteed-bit-rate-downlink256;
}
Now it should be understood that the MBG simplifies the QOS setup
by mapping 3G traffic classes to 4G QCI values. How that mapping
occurs is as follows:
1. The Traffic Class Background will map to QCI 9.
2. The Traffic Class Interactive with the Traffic handling Priority set to
3 will equal QCI 8.
3. The Traffic Class Interactive with the Traffic handling Priority set to
2 will equal QCI 7.
4. The Traffic Class Interactive with the Traffic handling Priority set to
1 will equal QCI 6.
5. The Traffic Class Interactive with the Traffic handling Priority set to
1 and the Signialing Indication value set will equal QCI 5.
6. The Traffic Class Streaming will map to QCI 4.
7. The Traffic Class Conversational with Transfer Delay lower than
150ms will map to QCI 3.
8. The Traffic Class Conversational with Transfer Delay greater than
or equal to 150ms will map to QCI 2.
9. The Traffic Class Conversational with Source Statistics Descriptor
of Speech will map to QCI 1.
Okay, admittedly, that was a simple QoS scenario. So lets dig a bit
deeper and look at a few more features to apply.
The CAC functionality in the MBG, if configured correctly, can help
ensure resources are available for services like VoIP, streaming video,
or whatever else is prioritized by the provider. CAC can look at system
resources availability and the priority of the bearer. Then, using these
facts, the CAC policy can downgrade data requests or even reject new
bearer requests.
With the number of subscribers it plans to sign up, Mass Telecom
expects to be successful enough that a wide-open policy may not be a
good idea. Remember, their maximum-bearers for the whole Gateway
are set to 2 million. If a decent portion of those subscribers has one
bearer active at the same time and their negotiated QoS settings are
Now lets add this new policy to the local policy so it takes effect on
our Masst.com APN.
[editunified-edgelocal-policiesMasst_Policy_One]
root@GGSN-960#show
cos-policy-profileMasst_QoS;
dl-bandwidth-poolBandWidth_Pool;
Next up, Mass Telecom wants to create a resource threshold profile for
system thresholds to determine which subscribers will actually gain
access to the MBG when resources are becoming scarce. If memory,
CPU, or the number of bearers in use is 80% of the system resources,
then only Create PDP Context Requests with an ARP (Allocation and
Retention Priority) value of 1 for GTPv1 and a priority level of 1 for
GTPv2 will be accepted. If the threshold for any of these resources is
60% then Create PDP Context requests for GTPv1 with an ARP value
of 2 or lower or a GTPv2 request with a priority level value of 6 or
lower will be accepted.
MOBILE NOTE
Allocation and Retention Priority is a value used by GGSNs to determine if a Create PDP Context request with a higher priority can take a
resource from an existing bearer with a lower priority, a reverse Robin
Hood if you will. Note that the Juniper GGSN does not do this,
exactly.
63
64
Okay, lets configure this under [unified-edge cos-cac resourcethreshold-profiles] and create a resource threshold profile called
Masst_threshold:
[editunified-edgecos-cacresource-threshold-profilesMasst_threshold]
root@GGSN-960#show
bearers-load{
low{
percentage60;
priority-level6;
}
high{
percentage80;
priority-level1;
}
}
memory{
low{
percentage60;
priority-level6;
}
high{
percentage80;
priority-level1;
}
}
cpu{
low{
percentage60;
priority-level6;
}
high{
percentage80;
priority-level1;
}
}
[editunified-edgecos-cacresource-threshold-profilesMasst_threshold]
root@GGSN-960#show
bearers-load{
low{
percentage60;
priority-level9;
}
high{
percentage80;
priority-level5;
}
}
Now, when the low threshold is reached, GTPv2 Create PDP Context
requests with a priority level of 9 or lower will be admitted by this
profile. Based on the GTPv2 priority level mapping to GTPv1 ARP, a
priority level of 9 does not map directly to any GTPv1 ARP settings.
But since GTPv1 ARP 2 maps to GTPv2s priority level 6, and 6 is
lower than the currently configured priority level 9, GTPv1 Create
PDP Context requests with an ARP value of 2 or 1 will be admitted.
Using the same logic, when the new high threshold for bearers-load is
reached, GTPv2 Create PDP Context requests with a priority level of 5
or lower will be admitted and GTPv1 Create PDP Context requests
with an ARP value of 1 will be admitted.
Time to add this profile to the local profile:
[editunified-edgelocal-policiesMasst_Policy_One]
root@GGSN-960#show
cos-policy-profileMasst_QoS;
dl-bandwidth-poolBandWidth_Pool;
resource-threshold-profileMasst_threshold;
Mass Telecom also wants to define the forwarding class and loss
priority for their bearers. Remember how the MBG maps 3G traffic
classes map to 4G QCI values before you begin, and then under
[unified-edge cos-cac classifier-profiles] create a profile called
CLASSIFIER_PROFILE_MBG. Lets take an example using the qci 1
for conversational, QCI 5 for interactive, and QCI 9 for background.
Since a bearer with the traffic class of interactive or the QCI of 5 is
considered a decent high priority by Mass Telecom, they want to set
the loss priority to be low, and the forwarding class to be expedited.
QCI 1, also known as conversational, normally very important for the
forwarding class, is set to VOICE and the loss priority is low. Last is
QCI 9, also known as background, which is the least important type of
traffic. The forwarding class is the lowly BE and loss priority is high.
[editunified-edgecos-cacclassifier-profiles]
root@GGSN-960#show
CLASSIFIER_PROFILE_MBG{
qos-class-identifier1forwarding-classVOICEloss-prioritylow;
65
66
qos-class-identifier5forwarding-classAF11loss-prioritylow;
qos-class-identifier9forwarding-classBEloss-priorityhigh;
}
The forwarding classes that can be chosen are the commonly defined
ones set in DiffServ (Differentiated Services), or mainly:
Best Effort: Typically best-effort traffic
Expedited Forwarding: Dedicated to low-loss, low-latency traffic
Assured Forwarding: Gives assurance of delivery under prescribed conditions
Network Control: Maintains backward compatibility with the IP
Precedence field
Okay, another profile to add to our local policy Masst_Policy_One:
[editunified-edgelocal-policiesMasst_Policy_One]
root@GGSN-960#show
cos-policy-profileMasst_QoS;
dl-bandwidth-poolBandWidth_Pool;
resource-threshold-profileMasst_threshold;
classifier-profileCLASSIFIER_PROFILE_MBG;
So the Masst.com apn is not wide open anymore. The system now has
the ability to put on some brakes.
Mass Telecom also wants to enable preemption, which is disabled by
default. Preemption in 3G (GTPv1) allows the MBG using the ARP
value to help decide if it should accept the Create PDP Context request,
or if it should Modify it. In 4G (GTPv2) the PVI and PCI values are
used.
Lets briefly explore preemption and how the MBG works with it. For
example, lets assume that an APN is fully loaded and there is no room
for any new subscribers based on the maximum-bearers value being
exceeded, or maybe the mobile enabled MS-DPCs on the system are all
100% full. When a new Create PDP Context request comes in, there
may be no suitable candidates to be deleted in the bearer pool. If that is
the case, then, the candidate pool is checked to see if there is any about
to be deleted candidate bearers that can be used for this bearer.
And to prove the point, lets assume an end user just roamed out of
Mass Telecom coverage (maybe veering off into New Hampshire) so
there is now a bearer marked for deletion. A new 3G subscriber in
Boston just turned their iPhone on, and the Create PDP Context
Request has an ARP value of 3. Now, just slightly after that request
comes in but before it can be processed, and given the resource from
the bearer pool, another Create PDP Context Request from another
There is another useful command that the MBG has, this one will show
you the qos statistics:
root@GGSN-960>showunified-edgeggsn-pgwqosstatistics
Gateway:MASST
Controlplanestatistics:
Sessionestablishmentattempts:100005
Successfulsessionestablishments:100005
MS/peerinitiatedsessiondeactivations:100002
SuccessfulMS/peerinitiateddeactivations:100002
Gatewayinitiatedsessiondeactivations:0
Successfulgatewayinitiateddeactivations:0
Dataplaneglobalstatistics:
Sourceaddressviolationpackets:0
Sourceaddressviolationbytes:0
Totalpacketsrcvdwithnon-existentTEIDs:0
DataplaneGTPstatistics(Gn/S5/S8):
Inputpackets:300438
Inputbytes:423691560
Outputpackets:534
Outputbytes:29904
Discardedpackets:0
DataplaneGTPstatistics(Gi):
Inputpackets:534
Inputbytes:29904
Outputpackets:300438
Outputbytes:423691560
Discardedpackets:0
67
68
qciShowQCIstatisicsinformation(1..9)
traffic-classShowstatisticsforatraffic-classlevel
traffic-handling-priorityTraffichandlingpriority(1..3)
|Pipethroughacommand
root@GGSN-960>showunified-edgeggsn-pgwqosstatisticsarp?
Possiblecompletions:
<arp>GTPv2ARPValue(1..15)
root@GGSN-960>showunified-edgeggsn-pgwqosstatisticsarp2
Gateway:MASST
Controlplanestatistics:
Gn/S5signalingmsgsrcvd:0
Gn/S5signalingmsgssent:11
Gn/S5signalingmsgsdropped:0
Gn/S5signalingbytesrcvd:0
Gn/S5signalingbytessent:0
TotalGTPtunnelscreated:0
Sessionestablishmentattempts:22
Successfulsessionestablishments:11
MS/peerinitiatedsessiondeactivations:9
SuccessfulMS/peerinitiateddeactivations:9
Gatewayinitiatedsessiondeactivations:0
Successfulgatewayinitiateddeactivations:0
SessionEstablishmentsFailed(byGTPcause):
Others0
Serviceunavailable:0
Systemfailure:0
Noresources:0
Noaddress:0
Servicedenied:0
AuthenticationFail:0
APNaccessdenied:0
DataplaneGTPstatistics(Gn/S5/S8):
Inputpackets:630
Inputbytes:0
Outputpackets:0
Outputbytes:0
Discardedpackets:0
DataplaneGTPstatistics(Gi):
Inputpackets:0
Inputbytes:0
Outputpackets:0
Outputbytes:630
Discardedpackets:51062
root@GGSN-960>showunified-edgeggsn-pgwqosstatisticstraffic-handlingpriority2traffic-classinteractive
Gateway:Masst
Controlplanestatistics:
Gn/S5signalingmsgsrcvd:0
Gn/S5signalingmsgssent:0
Gn/S5signalingmsgsdropped:0
Gn/S5signalingbytesrcvd:0
Gn/S5signalingbytessent:0
TotalGTPtunnelscreated:0
Sessionestablishmentattempts:0
Successfulsessionestablishments:0
MS/peerinitiatedsessiondeactivations:0
SuccessfulMS/peerinitiateddeactivations:0
Gatewayinitiatedsessiondeactivations:0
Successfulgatewayinitiateddeactivations:0
SessionEstablishmentsFailed(byGTPcause):
Others0
Serviceunavailable:0
Systemfailure:0
Noresources:0
Noaddress:0
Servicedenied:0
AuthenticationFail:0
APNaccessdenied:0
DataplaneGTPstatistics(Gn/S5/S8):
Inputpackets:29026
Inputbytes:1546473
Outputpackets:55444
Outputbytes:75631200
Discardedpackets:210
DataplaneGTPstatistics(Gi):
Inputpackets:55444
Inputbytes:75631200
Outputpackets:29026
Outputbytes:1546473
Discardedpackets:0
Summary
Lets take a quick inventory of what has been configured so far on the
MBG for Mass Telecom:
The APN (masst.com) handles all the Mass Telecom home
subscribers and this APN uses a pool that assigns IP addresses
from the 15.0.0.1/14 range.
There are two virtual APNs for Nscotia roamers (internet123
and Canada) that call a service-selection profile. If the IMSI being
used starts with 302200, they are mapped to another APN,
NScotia, which uses a pool with a range of 15.4.0.1/16.
There is another APN, masst.bb, which some Blackberry devices
will use that authenticates to RADIUS using the unique IMSI as
the user-name for potential unique session settings.
All APNs that are not virtual, meaning masst.com, masst.bb, and
NScotia, map to the routing instance GI_VR.
69
70
Chapter 4
Advanced Configuration Techniques
Service Selection Profile with Redirection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Additional Address Assignment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
GTP Path Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
72
Here, the example for the country code is 310, the Mobile Network
code is 111, and the MSIN starts with 78132.
Now if their BlackBerrys also had IMSIs that are 31011178132*, then
this would not work, so the SIM cards would need to be specially
pressed for the unit type. And SIM cards are not done like this; you
cant stop a subscriber from moving SIM cards from one mobile UE to
another. You've reached another dead end.
A more valid approach may be to see if you can use RADIUS to
provision the subscribers service, in this case returning the RADIUS
Attribute Jnpr-Redir-GW-Addr. This would redirect the subscribers to
the Video Optimization server. If the User-Name was uniquely hardcoded on the iPhones, or other mobile devices, this would be easy. For
example, if all User-Name attributes that came from iPhones were
iphone, its easy. If the mobiles all have unique users, this would work,
too.
Now lets consider that Mass Telecom and NScotia may want to send
all of the NScotia roaming subscribers back to a GGSN in Nscotias
mobile packet core and Mass Telecom has to redirect from the GGSN,
not the SGSN, for some reason. In the following example, if any IMSI
comes from 302200, its sent back to a NScotia GGSN, or whatever
they want the target to be at the NScotia site. In this example, that
would be 20.20.20.22:
service-selection-profiles{
profileSelection_Profile_1{
termTerm1{
from{
imsi302200;
}
then{
redirect-peer20.20.20.22;
}
}
}
}
Mass Telecom could also create a service selection profile that can be
applied to an APN that helps share the load. So if this chassis has
limited MS-DPCs, and you feel Mass Telecom may reach their limits,
you can have the MBG redirect new PDP Create Requests to another
GGSN, for example. Share the load and let the other GGSN establish
and manage the session. Just make sure that the other GGSN is not
configured to send requests back to this one, or you could run into a
scenario where the two GGSNs are passing the same requests back and
forth until the from definition clears. Heres this redirect example:
73
74
service-selection-profiles{
profileMasst_Rollover{
termterm1{
from{
maximum-bearers1000000;
}
then{
redirect-peer10.3.219.78;
}
}
}
}
address-assignment{
inet-pool{
poolroamer;
}
allow-static-ip-address;
}
Lets say Mass Telecom also wants to use a DHCP server to assign IP
addresses to the masst.bb APN. They just need to add a dhcp proxy
section to the Junos configuration and add that to the APN.
To do this, go under the [edit system services dhcp-proxy-client
dhcpv4-profiles masst_dhcp_profile] hierarchy:
lease-time1000;
retransmission-interval4;
dhcp-server-selection-algorithmround-robin;
bind-interfacexe-3/0/2;
servers10.3.2.2{
priority1;
}
Then under [edit unified-edge gateways ggsn-pgw Masst apn-services apns masst.bb] hierarchy:
address-assignment{
dhcp-proxy-client;
dhcpv4-proxy-client-profile{
profile-namemasst_dhcp_profile;
}
}
75
76
[editunified-edgegatewaysggsn-pgwMasstgtp]
root@GGSN-960#show
n3-requests5;
t3-response6;
echo-interval120;
echo-n3-requests5;
echo-t3-response6;
path-managementenable;
gn{
interfacelo0.1v4-address201.100.1.6;
n3-requests5;
t3-response5;
path-managementenable;
echo-n3-requests3;
echo-t3-response5;
}
S5{
interfacelo0.1v4-address01.100.1.6;
n3-requests5;
t3-response5;
path-managementenable;
echo-n3-requests3;
echo-t3-response5;
}
If Mass Telecom ever needs to, they can define unique settings for the
S8 and Gp interfaces, too. They can even leverage the MBG to create
different settings for Control versus Data. So, if the SGSN sends all
GTPu traffic through a firewall that may potentially cause packet loss,
they can define more granular settings that increase just GTP data
packets values over GTP control packets. For example:
gn{
interfacelo0.1v4-address201.100.1.6;
n3-requests5;
t3-response5;
path-managementenable;
control{
echo-n3-requests3;
echo-t3-response5;
}
data{
echo-n3-requests5;
echo-t3-response10;
}
}
Last, but not least, Mass Telecom wants to set the traffic class for
control traffic since they can be sending control traffic to a GGSN in
NScotias network.
For this, go under [unified-edge
add the following:
control{
forwarding-classassured-forwarding;
dscp-code-point10;
}
The traffic class can be set to be more granular if you wish, such as
under the [unified-edge gateways ggsn-pgw Masst gtp gn control]
section.
So, what are the default path management settings if Mass Telecom
does not touch this GTP section at all:
echo-n3-requestsThedefaultis8times.
echo-t3-responseThedefaultis15seconds.
echo-intervalThedefaultis60seconds.
n3-requestsThedefaultis3times.
t3-responseThedefaultis5seconds.
path-management
IsenabledbydefaultforGTPcontrolpacketsbutdisabledforGTPdatapackets.
There is just one more little item to cover that might be helpful in your
production network. You see, Mass Telecom has these old SGSNs.
They get overloaded easily and they tend to drop control traffic, which
is a very bad thing. So Mass Telecom wants to change the response/
requests path management settings just for these devices.
Easy enough with the power of the MBG. Just setup a peer-group
under [unified-edge gateways ggsn-pgw Masst gtp] like this:
peer-groupOld_Sgsns{
routing-instance1;
n3-requests5;
t3-response10;
echo-n3-requests5;
echo-t3-response10;
peer{
201.100.1.87/32;
201.100.1.59/32;
201.100.1.201/32;
}
}
If you need to check the status of the GSN peers such as the SGSN,
SGW, or Node bs, run this command:
root@GGSN-960>showunified-edgeggsn-pgwgtppeerdetail
Gateway:Masst
PeerDetail:
--------------RemoteIPAddress:201.100.1.2
LocalIPAddress:201.100.1.6
RoutingInstance:6
InterfaceType:Gn
GTPVersion:1
RCMRegistrationDone:yes
77
78
RestartCounterValid:yes
RestartCounterValue:1
SentRestartCounterValue:7
ControlPathN3Request:3
ControlPathT3Timer:5
ControlPathEchoN3Request:8
ControlPathEchoT3Timer:15
ControlPathEchoInterval:60
ControlPathManagementEnabled:no
ControlPathState:not-tracked
DataPathEchoN3Request:8
DataPathEchoT3Timer:15
DataPathEchoInterval:60
DataPathManagementEnabled:no
DataPathState:not-tracked
GTP-CusingShortSequenceNumber:no
DownlinkdatanotifdelayInterval:0
CSIDSupported:no
MessageTypeReceivedTransmitted
----------------------------------------------------------------------------Totalnumberofmessages210314210314
Totalnumberofbytes100587259509386
Redirectmessages00
EchoRequest00
EchoResponse00
VersionNotSupported00
CreatePDPContextRequest1101780
CreatePDPContextResponse0110178
UpdatePDPContextRequest00
UpdatePDPContextResponse00
DeletePDPContextRequest1001360
DeletePDPContextResponse0100136
Summary
There are more advanced techniques of course, and many of them are
available at the resources outlined on the last page of this book.
You should now have set up, deployed, configured, and committed
your MBG on your MX Series. Wow! And Mass Telecom is pretty
happy in their imaginary world.
Before you go, however, take a look at the final chapters. The first is
based on general system maintenance focused on the mobile side of the
MX and the second is based on troubleshooting the box as you take
your lab work onto the shop floor.
79
80
Chapter 5
System Maintenance
Maintenance Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Clearing Subscribers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
82
Maintenance Mode
The following changes can only be made while in maintenance mode:
Delete or modify the addresses of certain GPRS tunneling
protocol (GTP) interfaces
Delete or change the type of an access point name (APN)
Change mobile interface configuration parameters
Change a mobile interface for an APN
Delete a charging profile
Delete or modify a charging data record (CDR) profile or CDR
type
Delete or modify a transport profile
Delete or modify a trigger profile
Delete a mobile pool or modify its parameters
Lets start by putting the whole gateway into maintenance mode:
[edit unified-edge gateways ggsn-pgw Masst]
root@GGSN-960# set service-mode maintenance
root@GGSN-960# commit
Run this command now to see the service-mode status for the Masst
gateway:
root@GGSN-960# run show unified-edge ggsn-pgw service-mode
Maintenance Mode
MM Active Phase - System is ready to accept configuration changes for all attributes
of this object and its sub-hierarchies.
MM In/Out Phase - System is ready to accept configuration changes only for nonmaintenance mode attributes of this object and its sub-hierarchies.
Gateway Name
Masst
Service Mode
Maintenance - In Phase
Note the status is In Phase. That means the system is not ready to be in
Maintenance Mode yet.
The first thing to check is to see if any subscribers are still active:
root@GGSN-960#runshowunified-edgeggsn-pgwstatus
Gateway:Masst
ActiveSubscribers:1
ActiveSessions:1
ActiveBearers:1
CPULoad(%):0
MemoryLoad(%):29
You can see there is one subscriber left and you do not have time to
wait for them to stop what they are doing. This whole system is offline
and the web browsing habits of one subscriber cannot get in our way!
So lets clear them from the system:
root@GGSN-960# run clear unified-edge ggsn-pgw subscribers gateway Masst
Service Mode
Maintenance - Active Phase
Okay, we are now good to go. Make your changes, change GTP
ip-addresses, change IP pools. Delete APNs. Whatever you need to do.
Commit those changes and when you are done with that commit then
you can delete the service-mode parameter from the Gateway and
commit once more:
[edit unified-edge gateways ggsn-pgw Masst]
root@GGSN-960# delete service-mode
[edit unified-edge gateways ggsn-pgw Masst]
root@GGSN-960# commit
commit complete
Now those subscribers can come back and get serviced by this MBG.
Run the show unified-edge ggsn-pgw service-mode command one
more time to verify the Service Mode is operational:
root@GGSN-960# run show unified-edge ggsn-pgw service-mode
Maintenance Mode
MM Active Phase - System is ready to accept configuration changes for all attributes
of this object and its sub-hierarchies.
MM In/Out Phase - System is ready to accept configuration changes only for non-
83
84
The example used here locks down the whole gateway and takes it out
of service. The truth is, when performing maintenance on the MBG,
the operator may not need to take such extreme measures as locking a
whole gateway. For example, they may only need to lock down a given
APN or a Charging Profile.
For each feature that needs to be put into maintenance mode you can
drill down to the section where that feature is enabled, and put only
that feature into maintenance mode:
[edit unified-edge gateways ggsn-pgw Masst apn-services apns masst.com]
root@GGSN-960# set service-mode maintenance
[edit unified-edge gateways ggsn-pgw Masst charging charging-profiles CP1]
root@GGSN-960# set service-mode maintenance
You can also manually clear the subscribers that use just these features,
thus leaving the rest of the MBG to continue functioning in service as
normal while taking just this one feature and its subscribers offline:
root@GGSN-960# run clear unified-edge ggsn-pgw subscribers apn Masst
root@GGSN-960# run clear unified-edge ggsn-pgw subscribers charging charging-profile
CP1
Clearing Subscribers
There will also be times when subscriber sessions on the box are
considered hung. If session-timeout and/or idle-timeout are not set for
all the APNs or Path-Management is disabled you may see this occur
more frequently. The reason for this is that if the GTPc Delete PDP
Context Request or Delete Session request never makes it to the MBG
when the UE disconnects, the MBG will have no idea the session
should go away.
Check the configuration to see if you have session-timeout and idletimeout set, and if path management is enabled or not. Remember, you
do not need these features to be enabled on the system, but understanding whether or not they are enabled will give you insight into
whether or not your MBG will be susceptible to potential hung
sessions.
[unified-edge gateways ggsn-pgw Masst apn-services apns masst.com]
inactive session-timeout 24;
inactive idle-timeout 60;
When there are subscribers on the MBG that dont belong there, you
can clear them with the clear unified-edge ggsn-pgw subscribers
command. A system administrator can also clear a subscriber that they
know is active but needs to be dropped. Clearing a subscriber does
cause the MBG to send a GTPc Delete PDP Context/Delete Session
Request to the GTP peer, so if the peer is reachable on the network it
will process the packet and drop the subscriber on its side. Normally,
the MBGs subscribers are provisioned and managed by RADIUS or a
PCRF server. These types of solutions can create Disconnect Messages
that are sent to the MBG, which causes the MBG to perform the same
task as running the clear unified-edge ggsn-pgw subscribers
command.
You can disconnect subscriber sessions individually using the clear
unified-edge ggsn-pgw subscribers command, or, if a GTP peer like a
SGSN goes down, you can clear all subscribers that belonged to it:
root@GGSN-960#runclearunified-edgeggsn-pgwsubscribers?
Possiblecompletions:
apnClearallthesubscribersinanAPN
chargingClearallsubscribersforachargingattribute
gatewayClearallthesubscriberforthegateway
imsiClearasubscriberwithaspecificimsi
msisdnClearasubscriberwithaspecificmsisdn
peerClearallthesubscribersofaspecificpeer
routing-instanceRoutinginstanceassociatedwiththesubscriber
v4-addrClearasubscriberwithmatchingIPv4address
v6-addrClearasubscriberwithmatchingIPv6address
You can even clear every single subscriber that is connected to your
gateway.
root@GGSN-960# run clear unified-edge ggsn-pgw subscribers gateway MASST
85
86
Chapter 6
Troubleshooting
show unified-edge ggsn-pgw status. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
show unified-edge ggsn-pgw gtp peer detail. . . . . . . . . . . . . . . . . . . . . . . . . 90
show unified-edge ggsn-pgw statistics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
show unified-edge ggsn-pgw charging path status . . . . . . . . . . . . . . . . . . . . 91
show unified-edge ggsn-pgw subscribers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
show unified-edge ggsn-pgw ip-reassembly statistics. . . . . . . . . . . . . . . . 95
clearing statistics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Logs! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
Error: Subscriber Rejected, No Resources Available . . . . . . . . . . . . . . . . . . . 99
Error: Encoding Cause Authentication Failure . . . . . . . . . . . . . . . . . . . . . . . . . 105
Summary. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
88
You can see that there are 100 subscribers on the MX. They have been
evenly load-balanced across two MS-DPC pics and they have been
backed up against two more MS-DPC pics
Lets take a quick look at the configuration and see how these results
came to be. First, under the interfaces hierarchy:
Chapter 6: Troubleshooting
ams0 {
load-balancing-options {
member-interface mams-2/0/0;
member-interface mams-4/0/0;
high-availability-options {
many-to-one {
preferred-backup mams-2/0/0;
}
}
}
}
ams1 {
load-balancing-options {
member-interface mams-2/1/0;
member-interface mams-4/1/0;
high-availability-options {
many-to-one {
preferred-backup mams-4/1/0;
}
}
}
}
You can see that Mass Telecom has two Aggregated Multiservice
(AMS) Interfaces configured, the MS-DPC PIC 2/0/0 and 4/0/0 as one
AMS, and MS-DPC PIC 2/1/0 and 4/1/0 as the second AMS. Both
2/0/0 and 4/1/0 are backups.
The two Aggregated Multiservice interfaces are set under the [unified-edge gateways ggsn-pgw Masst system] hierarchy:
system {
pfes {
interface apfe0;
}
session-pics {
interface ams0;
interface ams1;
}
}
89
90
apfe0pfe-0/0/0ActivePrimary
pfe-1/0/0ActivePrimary
pfe-5/0/0ActiveSecondary
pfe-0/1/0ActivePrimary
pfe-1/1/0ActivePrimary
pfe-5/1/0ActiveSecondary
pfe-5/2/0ActiveSecondary
pfe-0/2/0ActivePrimary
pfe-1/2/0ActivePrimary
pfe-0/3/0ActivePrimary
pfe-1/3/0ActivePrimary
pfe-5/3/0ActiveSecondary
Mass Telecom may have other MS-DPCs in this MX, but as far as their
MBG configuration is concerned, they have just the two MS-DPCs and
the four PICs between them in use for servicing mobile subscribers. As
for the MPCEs, they have three in play, each having four PFEs. One of
the MPCEs has been configured as a secondary to the other two
MPCEs.
Chapter 6: Troubleshooting
As you can see here, 30 GTP-C sessions have been attempted and only
five have succeeded. Plus the Gi interface has discarded some packets
so there is a problem that needs to be examined. You can also see that
no subscribers have deactivated yet.
Echo
Enabled
91
92
A few things to notice that are bolded: the NodeAlive request response
is a good indication that things are working between the two nodes.
There are a few Echo Requests that timed out. You can see the MBG is
using GTPPv0 over UDP, and you can see that the Path Manager Port
is 30275, which means Echo Requests and responses should use that as
the source port (Data Record Transfer Requests will use port 30276 as
the source port).
Chapter 6: Troubleshooting
qciShowsubscribersforspecificqci(1..9)
roaming-statusShowsubscribersbyroaming-status
routing-instanceNameofroutinginstance
servicesShowsubscribersbyservices
session-stateShowsubscribersbystate
traffic-classShowsubscribersattrafficclasslevel
v4-addrShowsubscribersformatchingaddress
v6-addrShowsubscribersformatchingaddress
93
94
RequestedQoSParameters:
TrafficClass:ConversationalARP:1
TrafficHandlingPriority:1TransferDelay:10
MBRUplink:1kbpsMBRDownlink:1kbps
GBRDownlink:1kbpsGBRDownlink:1kbps
SignalingIndicator:0
Charginginformation:ProfileID:0
State:ReadyPreviousState:Accounting
Profileselectioncriteria:-
Details:Accountingenabled
Offlinecharginginformation:Disabled
Ratinggroupinformation:
Ratinggroup:0Serviceid:0
ActionID:0x1007cc5Triggerprofile:0
Changeconditionbitmask:0x0Action-id-bitmask:0x0
Signalbitmask:0x0Lastsignalbitmask:0x0
Details:Bearertrigger
Collectiontime:TueApr1022:00:122012
Uplinkpackets:0Downlinkpackets:0
Uplinkbytes:0Downlinkbytes:0
Chapter 6: Troubleshooting
Session
Session
Session
Session
Session
PIC:
PIC:
PIC:
PIC:
PIC:
2
4
4
4
4
/0
/0
/0
/0
/0
(FPC/PIC)
(FPC/PIC)
(FPC/PIC)
(FPC/PIC)
(FPC/PIC)
Anchor
Anchor
Anchor
Anchor
Anchor
PFE:
PFE:
PFE:
PFE:
PFE:
1
1
1
1
1
/0
/0
/0
/0
/0
(FPC/PIC)
(FPC/PIC)
(FPC/PIC)
(FPC/PIC)
(FPC/PIC)
Since each PFE can manage 500,000 subscribers before its resources
are exhausted, you would only see sessions start to be distributed to
other APFEs in the system if you brought up more than 500,000
sessions from the same SGSN.
clearing statistics
A quick word on clearing statistics since this action may be required
during the maintenance of the MBG. A system administrator can clear
statistics for several mobile applications such as AAA and Charging.
They may dig down and clear statistics for a whole gateway or even
95
96
individual APNs. There is quite a bit of flexibility on what you can clear
since Juniper knows end users may need to clear statistics for certain
functionalities yet keep the statistics for others so they can see what has
occurred over the lifetime of the box versus what has occurred recently.
Lifetime of the box in this context is considered the system uptime.
root@GGSN-960#runclearunified-edgeggsn-pgw?
Possiblecompletions:
aaaClearinformationrelatedtoAAA
address-assignmentClearinformationrelatedtoaddressassignment
chargingClearinformationrelatedtocharging
gtpClearInformationrelatedtoGTP
ip-reassemblyClearinformationrelatedtoIPreassembly
statisticsClearstatistics
subscribersClearsubscribers
root@GGSN-960#runclearunified-edgeggsn-pgwgtpstatisticsgtp-allgatewayMASST
root@GGSN-960#runclearunified-edgeggsn-pgwgtpstatistics?
Possiblecompletions:
fpc-slotFPCslotnumber
gatewayClearstatisticsforagateway
gtp-allGTPallversionstatistics
gtp-v0GTPversion0statistics
gtp-v1GTPversion1statistics
gtp-v2GTPversion2statistics
pic-slotPICslotnumber
Logs!
There are a few different control points in the Junos code that you
should care about when it comes to enabling logging for that given
section. Lets differentiate between them so you know which section of
the configuration is configured to enable that given log file. Note that
aside from the call trace feature we will show you, it is not recommended
to run the logs we will show you when in production.
GTP Logging
traceoptions {
file masst_gtp.log size 50m;
level all;
flag all;
}
Gateway Logging
Chapter 6: Troubleshooting
traceoptions {
file masst_gateway.log size 50m;
level all;
flag all;
}
Charging Logging
AAA Logging
traceoptions {
file masst_aaa.log size 50m;
level all;
flag all;
}
If you must enable these logs in production, set the level and flag to
error first. If that is not sufficient, then try the debug all option.
When looking in the /var/logs directory, or wherever you decide to
store the logs, the mobile application log filenames will have the
MS-DPC slot/pic number for the SPIC that handled the processing of
the subscriber appended, as shown here:
-rw-r--r--1rootwheel532492Jan418:03charging_log-ms40
-rw-r--r--1rootwheel6693Jan418:03Masst_ue.log-ms41
-rw-r--r--1rootwheel36992Jan418:03Masst_ue.log-ms40
-rw-r--r--1rootwheel17386646Jan418:03Masst_ue.log-ms21
-rw-r--r--1rootwheel37838702Jan418:03Masst_ue.log-ms20
-rw-r--r--1rootwheel344285Jan418:04charging_log-ms20
-rw-r--r--1rootwheel71288Jan418:04masst_gateway.log-ms41
-rw-r--r--1rootwheel40109045Jan418:04masst_gateway.log-ms40
-rw-r--r--1rootwheel480053Jan418:04masst_gateway.log-ms21
-rw-r--r--1rootwheel6511171Jan418:04masst_gateway.log-ms20
Call Trace
The call trace functionality allows you to log all events for a specific
IMSI or MSISDN without having to enable the GTP traceoptions. You
can run several traces for different IMSI/MSISDNs at the same time:
root@GGSN-960>requestunified-edgeggsn-pgwcall-tracestartimsi101313783444554
ServicePICStatus
ms-0/0/0success
ms-10/0/0success
97
98
Identifier:call_trace_id_1Tracefile:call_trace_id_1_01142012_152946
Status:not-doneCreateMask:0x44CompleteMask:0x0
IMSI:244212003476097
CallsTraced:0
Here is where you stop the trace. If you have more than one trace
running use the all command to stop them all if you need to.
root@GGSN-960>requestunified-edgeggsn-pgwcall-tracestopall
ServicePICStatus
ms-10/0/0
root@GGSN-960>requestunified-edgeggsn-pgwcall-traceshow
IdentifierFilenameStatusSPICMaskSPICMask
createcomplete
call_trace_id_1call_trace_id_1_01142012_152946done0x440x44
{master}
Like all the other files this one will be stored in /var/log. Here is a
snippet from log file call_trace_id_1_01142012_152946 showing a
PDP Conext being rejected due to an authentication failure. Now, if
this call trace was being run for an IMSI that belonged to a subscriber
who was complaining that they could not get data service, this is a
great place to start. It allows you to see data focused on a single
subscriber. In this case, you can start tracing down the issue to see if
RADIUS is failing the subscriber for some reason:
Dec516:12:30.1118022cpu_id:[6]gtid:[9]tid:[2]app_
id:1Encode:EncodingGTPV1Header
Dec516:12:30.1118044cpu_id:[6]gtid:[9]tid:[2]app_
id:1Encode:MsgType17SeqNumber584TEID302149215
Dec516:12:30.1118067cpu_id:[6]gtid:[9]tid:[2]app_
id:1Encode:EncodingCAUSEIE
Dec516:12:30.1118088cpu_id:[6]gtid:[9]tid:[2]app_
id:1Encode:EncodingcauseAuthenticationfailure
Dec516:12:30.1118109cpu_id:[6]gtid:[9]tid:[2]app_
id:1Encode:ERROR:Nonsuccessfulcausevalue(208)sent
Dec516:12:30.1118131cpu_id:[6]gtid:[9]tid:[2]app_
id:1Encode:ENCODEDErrorResponseoflength14formsg17
Nov2616:20:53.1327494cpu_id:[5]gtid:[8]tid:[1]app_
id:1changereportingactionnotsupported
Nov2616:20:53.1327997cpu_id:[5]gtid:[8]tid:[1]app_
id:1HandlerreturnedPASS
Nov2616:20:53.1328020cpu_id:[5]gtid:[8]tid:[1]app_
id:1callingafProcessEventforevent=sessUpdate,state=Established
Nov2616:20:53.1328042cpu_id:[5]gtid:[8]tid:[1]app_
Chapter 6: Troubleshooting
id:1i=0,size=1,evtProtocolBitmap=19info->cause=0,info->sub_cause=0
Nov2616:20:53.1328068cpu_id:[5]gtid:[8]tid:[1]app_id:1callingsessionevthandler#0forstate=Established,event=sessUpdateinfo->cause=0,info>subcause=0,num_handlers=1
Lets take a look at some common issues that may be seen in the log
files next.
In the following abridged example from a GTP log, you can see a GTP
V1 message type 16 (Create PDP Context Request) that indicates a
new subscribers bearer request is being sent to the MBG from a SGSN.
The error message found at the tail end of the log Encode: Encoding
cause No resources available indicates that the MBG was unable to
assign an IP address to the subscriber. Take a look:
Jul 14 13:15:46.1218151 gtid: [0] tid: [0] Debug: gtp_dispatcher_parse_rx_pkt is called
Jul 14 13:15:46.1219417 gtid: [16] tid: [9] Debug: gtp_preparse_rx_pkt is called
Jul 14 13:15:46.1219493 gtid: [16] tid: [9] Debug: gtp_preparse_rx_pkt is
complete(success) version(1) msg_type(16)
Jul 14 13:15:46.1219609 gtid: [16] tid: [9] Debug: gtp_fullparse_rx_pkt is called
Jul 14 13:15:46.1221288 gtid: [16] tid: [9] Decode: Parsing GTPV1 Header
Jul 14 13:15:46.1221373 gtid: [16] tid: [9] Track: Rcvd GTPv1 msg type 16 in vrf 6 from
pfe-id 20 vpfe-id 0
Jul 14 13:15:46.1221457 gtid: [16] tid: [9] ReqTrack: V1 msg 16 Not a redirected
response
Jul 14 13:15:46.1221534 gtid: [16] tid: [9] ReqTrack: V1 msg 16 Not a tracked response
Jul 14 13:15:46.1221620 gtid: [16] tid: [9] Track: Received message len 95
Jul 14 13:15:46.1221842 gtid: [16] tid: [9] Track: 32 10 00 57 00 00 00 00 00 04 00 00 02
21 43 65 87 49 06 63
Jul 14 13:15:46.1222027 gtid: [16] tid: [9] Track: f0 0e 01 0f 00 10 00 00 01 05 11 00 00
01 06 14 05 1a 08 00
Jul 14 13:15:46.1222195 gtid: [16] tid: [9] Track: 80 00 02 f1 21 83 00 0a 05 6d 61 73 73
74 03 63 6f 6d 85 00
Jul 14 13:15:46.1222387 gtid: [16] tid: [9] Track: 04 0a 03 db 20 85 00 04 0a 03 db 20 86
00 05 91 62 37 77 84
Jul 14 13:15:46.1222501 gtid: [16] tid: [9] Track: 87 00 0c 01 22 72 0a 73 96 48 48 76 07
48 48
99
100
Jul 14 13:15:46.1222572 gtid: [16] tid: [9] Decode: Parsing GTPv1 Create PDP Request
Message
Jul 14 13:15:46.1222606 gtid: [16] tid: [9] Decode: Parsing GTP IE IMSI (2)
Jul 14 13:15:46.1222636 gtid: [16] tid: [9] Decode: IMSI 123:45:6789460360
Jul 14 13:15:46.1222664 gtid: [16] tid: [9] Decode: Parsing GTP IE RECOVERY (14)
Jul 14 13:15:46.1222693 gtid: [16] tid: [9] Decode: Recovery (Restart Counter) Value =
1
Jul 14 13:15:46.1222721 gtid: [16] tid: [9] Decode: Parsing GTP IE SELECTION_MODE (15)
Jul 14 13:15:46.1222751 gtid: [16] tid: [9] Decode: Selection Mode IE Value 0
Jul 14 13:15:46.1222779 gtid: [16] tid: [9] Decode: Parsing GTP IE ITEID_DATA (16)
Jul 14 13:15:46.1222812 gtid: [16] tid: [9] Decode: TEID Value 261
Jul 14 13:15:46.1222840 gtid: [16] tid: [9] Decode: Parsing GTP IE TEID_SIG (17)
Jul 14 13:15:46.1222869 gtid: [16] tid: [9] Decode: TEID Value 262
Jul 14 13:15:46.1222896 gtid: [16] tid: [9] Decode: Parsing GTP IE NSAPI_IE (20)
Jul 14 13:15:46.1222924 gtid: [16] tid: [9] Decode: NSAPI Value 5
Jul 14 13:15:46.1222951 gtid: [16] tid: [9] Decode: Parsing GTP IE CHARGING_CHAR (26)
Jul 14 13:15:46.1222980 gtid: [16] tid: [9] Decode: Charging Characteristics value 0800
Jul 14 13:15:46.1223010 gtid: [16] tid: [9] Decode: Parsing GTP IE END_USER_ADDR (128)
Jul 14 13:15:46.1223040 gtid: [16] tid: [9] Decode: Parsing GTP IE APN (131)
Jul 14 13:15:46.1223073 gtid: [16] tid: [9] Decode: Received APN masst.com
Jul 14 13:15:46.1223115 gtid: [16] tid: [9] Decode: Parsing GTP IE GSN_ADDRESS (133)
Jul 14 13:15:46.1223147 gtid: [16] tid: [9] Decode: GSN Addr 10.3.219.32
Jul 14 13:15:46.1223527 gtid: [16] tid: [9] Decode: GSN Addr 10.3.219.32
Jul 14 13:15:46.1223566 gtid: [16] tid: [9] Decode: Parsing GTP IE MSISDN (134)
Jul 14 13:15:46.1223599 gtid: [16] tid: [9] Decode: MSISDN IE, length 4 TBCD
2673774800000000
Jul 14 13:15:46.1223631 gtid: [16] tid: [9] Decode: Parsing GTP IE QOS_V1_PROFILE (135)
Jul 14 13:15:46.1223660 gtid: [16] tid: [9] Decode: Decoding V1 Qos IE
Jul 14 13:15:46.1223692 gtid: [16] tid: [9] Decode: QOS: delay = 4, reliability =
2,peak_throughput = 7, precedence_class = 2,mean_throughput = 10, traffic_class = 3,
delvry_order = 2, del_err_sdu = 3,max_sdu_size = 150, max_bitrate_uplink = 72,max_
bitrate_downlink = 72, residual_ber = 7, sdu_err_ratio = 6, transfer_delay = 1,traffic_
handl_priority = 3, guaranteed_bitrate_uplink = 72,guaranteed_bitrate_downlink = 72
Jul 14 13:15:46.1223746 gtid: [16] tid: [9] Decode: GTPV1 Packet successfully decoded
Jul 14 13:15:46.1248436 gtid: [15] tid: [8] Encode: Encoding GTP V1 Header
Jul 14 13:15:46.1248464 gtid: [15] tid: [8] Encode: Msg Type 17 SeqNumber 4 TEID 262
Jul 14 13:15:46.1248491 gtid: [15] tid: [8] Encode: Encoding CAUSE IE
Jul 14 13:15:46.1248517 gtid: [15] tid: [8] Encode: Encoding cause No resources
available
Jul 14 13:15:46.1248544 gtid: [15] tid: [8] Encode: ERROR: Non successful cause
value(199) sent
Jul 14 13:15:46.1248573 gtid: [15] tid: [8] Encode: ENCODED Error Response of length 14
for msg 17
Jul 14 13:15:46.1248612 gtid: [15] tid: [8] Track: Sending message len 42
Jul 14 13:15:46.1248668 gtid: [15] tid: [8] Track: 45 c0 00 2a 00 03 00 00 ff 11 ef de 0a
03 db fa 0a 03 db 20
Jul 14 13:15:46.1248728 gtid: [15] tid: [8] Track: 08 4b 08 4b 00 16 00 00 32 11 00 06 00
00 01 06 00 04 00 00
Jul 14 13:15:46.1248759 gtid: [15] tid: [8] Track: 01 c7
The cause of the error message can be several things. First, lets check
to see if it is an IP pool resource issue.
Chapter 6: Troubleshooting
1. The MBG was misconfigured and does not have an access >
address assignment > mobile pools setup, or it can also mean you do
have the access > address assignment > mobile pools set up, but it
may be in maintenance mode.
The show unified-edge ggsn-pgw address-assignment service-mode
command will let you know what mode each pool is in:
Routing-InstancePoolNameServiceMode
GI_VRMassT-Pool-1Operational
GI_VRdefaultOperational
GI_VRroamerOperational
If these three possible scenarios are not the cause of the issue, then you
may have run out of IP addresses, meaning the pool is truly exhausted.
Remember to run the show unified-edge ggsn-pgw address-assignment pool command to see what the state of the pool is resource wise:
root@GGSN-960>showunified-edgeggsn-pgwaddress-assignmentpool
Pool:MassT-Pool-1
Totaladdresses:262142
Addressesinuse:109
Addressesskipped:0
Addressusage(percent):0
Addressesinagingperiod:0
Routinginstance:GI_VR
Pool:default
Totaladdresses:254
Addressesinuse:0
Addressesskipped:0
Addressusage(percent):0
Addressesinagingperiod:0
Routinginstance:GI_VR
Pool:roamer
101
102
Totaladdresses:16777214
Addressesinuse:14224
Addressesskipped:0
Addressusage(percent):0.
Addressesinagingperiod:0
Routinginstance:GI_VR
Now if the pools are not the problem you need to ask yourself: What is
going on when a subscriber gets rejected due to lack of available
resources on the MBG, even though the system has plenty of IP
addresses available?
You should check other resources on the MBG. Remember all those
policies you created under [unified-edge coscac] such as the total
number of bearers you are allowing, or the threshold settings you may
have applied? You can set the bearer total at the gateway level and
lower at the individual APN level. Lets see what Mass Telecom has set:
root@GGSN-960> show configuration unified-edge gateways ggsn-pgw Masst maximum-bearers
maximum-bearers 2000000;
root@GGSN-960> show configuration unified-edge gateways ggsn-pgw Masst apn-services
apns masst.com maximum-bearers
maximum-bearers 1500000;
Chapter 6: Troubleshooting
State:Active
ActiveSubscribers:7123
ActiveSessions:7123
ActiveBearers:7123
CPULoad(%):0
MemoryLoad(%):31
Mobilegatewaystatus:
FPCSLOT:4PICSLOT:0
State:Backup
ActiveSubscribers:7101
ActiveSessions:7101
ActiveBearers:7101
CPULoad(%):2
MemoryLoad(%):31
Mobilegatewaystatus:
FPCSLOT:4PICSLOT:1
State:Backup
ActiveSubscribers:7123
ActiveSessions:7123
ActiveBearers:7123
CPULoad(%):0
MemoryLoad(%):31
To complete the overview of the Encoding cause No resources available message, lets see what the gateway logs shows when it is encountered in the GTP log.
Here is what you might see in the gateway log if the IP address was sent
successfully from the RADIUS Server to the MX, but the Mobile-Pools
on the MBG have a different range, or are not set up with the externalassigned flag, so the PDP Context is rejected:
Jul 15 14:56:39.1405937 gtid: [15] tid: [8] Enter evthdl acquire_address
Jul 15 14:56:39.1405999 gtid: [15] tid: [8] External address verification: pdn type 1, source - 2, daf - 0, cause - 0, addr[0] - 15.1.194.25, addr[1] - 0:0:0:0:0:0:0:0
Jul 15 14:56:39.1406119 gtid: [15] tid: [8] LAM Assign : lam_find_chunk_in_tree.3983:
<<<<< Chunk: 0x5a5b8c6b8, Start IP: 15.1.192.0, Cnt: 1024
Jul 15 14:56:39.1406200 gtid: [15] tid: [8] smd_verify_external_address:2275 pfe_
index=129
Jul 15 14:56:39.1406368 gtid: [15] tid: [8] LAM Assign : lam_find_chunk_in_tree.3983:
<<<<< Chunk: 0x5a5b8c6b8, Start IP: 15.1.192.0, Cnt: 1024
Jul 15 14:56:39.1406461 gtid: [15] tid: [8] LAM Assign : verify_addr.4138: >>>>> cb_
data: 0xd000003, ds_info: 0x0
Jul 15 14:56:39.1406564 gtid: [15] tid: [8] LAM Assign : verify_addr.4345: <<<<< err:
12
Jul 15 14:56:39.1406728 gtid: [15] tid: [8] smd_verify_external_address:2338 - LAM
status: 12, AppFW cause code: AF_IP_ADDR_UNAVAIL (28)
Jul 15 14:56:39.1406784 gtid: [15] tid: [8] Handler returned ERROR
103
104
And this is what you would see in the gateway log if the pool that had
the range 15.0.0.0/14 was in maintenance mode:
Aug 4 22:08:20.711296 gtid: [12] tid: [6] Enter evthdl acquire_address
Aug 4 22:08:20.711315 gtid: [12] tid: [6] External address verification: pdn type - 1,
source - 2, daf - 0, cause - 0, addr[0] - 15.0.0.8, addr[1] - 0:0:0:0:0:0:0:0
Aug 4 22:08:20.711353 gtid: [12] tid: [6] LAM Assign : lam_find_chunk_in_tree.4009:
<<<<< Chunk: 0x0, Start IP: (null), Cnt: 0
Aug 4 22:08:20.711380 gtid: [12] tid: [6] smd_verify_external_address:2284 pfe_
index=130
Aug 4 22:08:20.711407 gtid: [12] tid: [6] LAM Assign : lam_find_chunk_in_tree.4009:
<<<<< Chunk: 0x0, Start IP: (null), Cnt: 0
Aug 4 22:08:20.711432 gtid: [12] tid: [6] LAM Assign : lam_find_addr_in_pool_prefix_
tree.3931: >>>>> Searching for: 15.0.0.8
Aug 4 22:08:20.711458 gtid: [12] tid: [6] smd_verify_external_address:2347 - LAM
status: 42, AppFW cause code: AF_NO_SERVICE (5)
Aug 4 22:08:20.711482 gtid: [12] tid: [6] Handler returned ERROR
Error: Encoding cause Missing or unknown APN
Chapter 6: Troubleshooting
Jul 18 11:23:28.1570873
Cause 219
Jul 18 11:23:28.1570904
cause(219)
Jul 18 11:23:28.1570941
Jul 18 11:23:28.1570968
Jul 18 11:23:28.1571001
Jul 18 11:23:28.1571028
APN
Jul 18 11:23:28.1571056
value(219) sent
Jul 18 11:23:28.1571085
for msg 17
Jul 18 11:23:28.1571124
Jul 18 11:23:28.1571185
03 db fa 0a 03 db 20
Jul 18 11:23:28.1571242
00 01 fb 00 0b 00 00
Jul 18 11:23:28.1571275
Jul 18 11:23:28.1571340
tracked
Jul 18 11:23:28.1571385
complete(error)
[8]
[8]
[8]
[8]
tid:
tid:
tid:
tid:
[1]
[1]
[1]
[1]
Encode:
Encode:
Encode:
Encode:
Encoding
Msg Type
Encoding
Encoding
GTP V1 Header
17 SeqNumber 11 TEID 507
CAUSE IE
cause Missing or unknown
105
106
Jul 20 10:30:13.1703126
Message
Jul 20 10:30:13.1703188
Jul 20 10:30:13.1703256
...
...
...
Jul 20 10:30:13.1706551
Jul 20 10:30:13.1706584
complete(success)
Jul 20 10:30:13.1708108
Jul 20 10:30:13.1708133
Jul 20 10:30:13.1708163
Jul 20 10:30:13.1708188
failure
Jul 20 10:30:13.1708216
value(208) sent
Jul 20 10:30:13.1708244
for msg 17
Jul 20 10:30:13.1708283
Jul 20 10:30:13.1708341
03 db fa 0a 03 db 20
Jul 20 10:30:13.1708398
00 01 00 00 02 00 00
Jul 20 10:30:13.1708429
gtid: [11] tid: [4] Decode: Parsing GTPv1 Create PDP Request
gtid: [11] tid: [4] Decode: Parsing GTP IE IMSI (2)
gtid: [11] tid: [4] Decode: IMSI 123:45:6789462910
[11]
[11]
[11]
[11]
tid:
tid:
tid:
tid:
[4]
[4]
[4]
[4]
Encode:
Encode:
Encode:
Encode:
Encoding
Msg Type
Encoding
Encoding
GTP V1 Header
17 SeqNumber 2 TEID 256
CAUSE IE
cause Authentication
Notice the bolded line in the log. Now check the configuration for the
APN in use. You can see that the anonymous user is inactive within the
APN.
[edit unified-edge gateways ggsn-pgw Masst apn-services apns masst.com]
lab@GGSN-960# show
local-policy-profile LOCAL_POLICY_MBG;
apn-type real;
apn-data-type ipv4;
mobile-interface mif.16001;
address-assignment {
local;
inet-pool {
pool roamer;
}
}
session-timeout 24;
idle-timeout 60;
aaa-profile AAA_profile;
inactive: anonymous-user {
user-name seamus;
password "$9$ZcUk.fTz6Ct5T"; ## SECRET-DATA
}
selection-mode {
from-ms;
}
The UE and SGSNs are not sending any username/password credentials so the MBG will reject the session. Remember the MBG requires a
Chapter 6: Troubleshooting
user name to be sent to the RADIUS server due to the nature of the
RADIUS protocol.
Summary
Theres lots of troubleshooting skills in working with the logs. And
theres more help for you at Juniper when you get your MobileNext
MBG up and running. So go get cracking on this Mobility solution. Its
awesome and easy to tweak.
107
108
This is the knowledge base link for the MobileNet Broadband Gateway.