Beruflich Dokumente
Kultur Dokumente
?
GTPCD
Application
MASTER
SACC
PDP
CHARGING
LI
TDM
NCT
LIH
SAC
GTP
DHCP
SBCC
ANP Mgr
FSAD
RADIUS
Services
PRSI
PPSI
DBP
DAPP
Data
DATA
GTP Basic
OAM
GCCP
RE Proxy
Basic
GUCP
IPC
Core
Framework
APP
SrvLib
junos_lib
gtpcd libraries
RPD
XMLParse
XMLTok
SSA/
SNMP
librpd
libirsd
JunOS libraries
pwc
Support Layer
Legacy
Coreloop
thread
Get Write
lock
GTP
v0/v1
threads
GNSP
threads
Admission
control
threads.
Producer
Consumer
Queues
M20/120 M120 only
SGSN
Gccp
Configuration
Statistics
U/T/SC handling
Etc
SC
v99
MtIpc
Send
From SGSN
MT_IPC
UDP
To/from
SC
Adm. Ctrl.
TCP
callback
MtIpc
Send
Core
GTP
Adm Ctrl
MT_IPC
FSAD
GTP-C/NC
GTP-C/SC
GTP-U/I
GCCP_FWD_PDP_
CREATE_IND
GCCP_ADMCTL_
ACQUIRE_REQ
rpd_rt_add (ifl,rtid,MS slice)
rpd_cb_rt_add ()
GCCP_ADMCTL_
ACQUIRE_RSP
GUCP_SESSION_
OPEN_REQ
GUCP_SESSION_
OPEN_RSP
RPD
SGSN calling
GTP-C/NC
master_gtpthread.c:
Running on thread
GTP v1 or v0
NcGtpThread_Run(..) 1.
2.
3.
ProcessCreatePdpRequest(..)
1.
2.
3.
4.
5.
SendFwdPdpCreateInd(..)
1.
2.
Admission acquire
GTP-C/NC
GCCP_ADMCTL_
ACQUIRE_REQ
adm_ctrl.c:
AdmCtrl_ReqCb(..)
AdmCtrl_ScheduleWorker(..)
Running on 2 threads
on M120
AdmCtrl_Req(..)
1.
2.
3.
4.
5.
6.
7.
8.
QoS i.e.
5
octet 1
Octet 2
Delay
class
Peak
throughput
0
spa
re
0
spare
spare
Reliability
class
octet 3
Precedence
class
octet 4
Mean
throughput
Traffic ClassSGSNDSCP
Delivery order
octet 5
Octet 7
Octet 8
Octet 9
Residual BER
SGSN
DSCP
Octet 10
Octet 11
Octet 6
Signal-ling
Indicat-ion
SGSN
Octet 12
Octet 13
Oct
et
14
Octet 15
Octet 16
Octet 17
Octet 18
DSCP cont.
DiffServ is a coarse-grained, class-based
mechanism for traffic management.
DiffServ operates on the principle of traffic
classification, where each data packet is
placed into a limited number of traffic classes.
DiffServ relies on a mechanism to classify and
mark packets as belonging to a specific class.
Admission release
GTP-C/NC
GCCP_ADMCTL_
RELEASE_REQ
adm_ctrl.c:
AdmCtrl_ReqCb(..)
AdmCtrl_ScheduleWorker(..)
Running on 2 threads
on M120
AdmCtrl_Rel(..)
1.
2.
3.
4.
5.
6.
Local pool
Support for fast ip address allocation from
subnets for the apn
Clean up ip addresses for a specific slave
No reuse of ip addresses before for a
configured time
At U pic limit response, flag not reuse the
address
Soak timer
released
used
Soak timer
Adm Create request
Soak timer
Used
Released
Soaked
0 1 1 1 0
1 -> 1 -> 0 -> 1 -> 1
1 1 1 0 1
Soak timer
Available
soaked
Master_Wa.Config.Pdp.bIpReuseTimeout no-address-reuse-quarantine
address-reuse-timeout 10 - 1800s.
Master_Wa.Config.Pdp.noReleaseAddrOnFullGtpu pdp1 no-address-release-on-exhaustedgtpu
pReleaseInfo->wNoSoakOnPdpIp
pReleaseInfo->noResourcesOnGtpu
List of GTP-SCs
subSource_t
IdSubSource_IdSource_t
Available slice
tree
Full slice tree
Slice tree
IdSubSource_IdRange_t
IdRange_t
Bit 1: used Id
Bit 2: Release Id
Bit 3: Soaking Id
IdSubSource_idSlice_t
idSlice_t
IdSoakBatch_t
IdSubSource_IdBatch_t -> available Id
Background task every soak timer call, next soak timer start after the previous is done ap_BTSoakTimerAction -> ap_loopSoakBatch( IdSoakBatch_t * pIdSB, idSlice_t * pSlice)
MAP_MASTER_INDEX_TO_APNMGT_INDEX(Master_index, pApn)
Master_Wa.pApnTable[pApn->ApnIndex]->Master_to_Apnmgt_Mapping[Master_index]
Master_Wa.pApnTable[pApn->ApnIndex]->Range[index]
adt_convertIdToAddr
Mutex_Lock(Master_Wa.pIdPoolMtx);
Steps
IP address selected
Find range from apn
Find slice in slice tree from apn range - RwMutex_LockRead(pRangeInfo-
>pRange->SliceTreeMtx);
If slice is not found
Conclusions and
Questions