33
SGA-RS A Roaming Steering koncepció, és annak jelenlegi implementációja MGy, 2007.

SGA-RS - tel.tmit.bme.hutel.tmit.bme.hu/gyula/HP/Sga-RS/Sga-RS (ppt).pdf · INI = SgaRS_Serv_Rules.ini INI / [IMSISeriesInHLRs] INI / [RejectSchemePerVLR] RS-Server - döntéselıkészítés

Embed Size (px)

Citation preview

SGA-RS

A Roaming Steering koncepció,és annak jelenlegi implementációja

MGy, 2007.

Topológia (site set-up)

SGA-RS-1(Száva utca)

SS7

Stat

SS7

MSC-5

MSC-1

Int’alGw-s

HLR-s

SS7

SS7SGA-RS-2(Huszti út)

SS7

IP

PC=1

PC=2

PC=1PC=2

Topológia (site set-up)

SGA-RS-1(Száva utca)

SS7

Stat

SS7

MSC-5

MSC-1

Int’alGw-s

HLR-s

SS7

SS7SGA-RS-2(Huszti út)

SS7

IP

7.

1.

2.3.

4.

5.6.

0. 3.’

3.’

SGA-RS architektúra

∗∗∗∗

Száva utca

∗∗∗∗

SS7

Serv

SS7

rx+tx

rx+tx

rx+tx

rx+tx

∗∗∗∗

∗∗∗∗

SS7

Serv

SS7

rx+tx

rx+tx

rx+tx

rx+tx

Huszti út

Stat

X utca/út/...

IPSS7

RS-SS7 - irányítás (SS7 routing)

...(∗∗∗∗)...?

(UpdLoc & ∗∗∗∗)?

opció: CldPA.TT átírásCldPA = ClgPA

ClgPA.GT = HLR.GTMAP.Error = ErrorCode’

RL.dpc ⇔ RL.opcCldPA.RouteOnGT = “true”

SS7 rx

SS7 tx

nem

igen

“ Reject ”

“ OK”∗∗∗∗

SS7

RS-Server - döntéselıkészítés

Operator-PrefixName →→ RequiredPercentages

∗∗∗∗ rx

∗∗∗∗ tx

“ Reject ”

“ OK”

ServIMSI → PolicyName

VLR.GT → Operator-PrefixName

PolicyName, Operator-PrefixName →→ MaxRejectCount (soft/hard)

DateTime + VLR.GT (SCCP.ClgPA) + IMSI

“OK” vagy “Reject(HLR.GT,ErrorCode)”

VLR.GT → ErrorCode

IMSI → HLR.GT

Nos,sztíringeljük?

RS-Server - döntéselıkészítés

Operator-PrefixName →→ RequiredPercentages

∗∗∗∗ rx

∗∗∗∗ tx

“ Reject ”

“ OK”

ServIMSI → PolicyName

VLR.GT → Operator-PrefixName

PolicyName, Operator-PrefixName →→ MaxRejectCount (soft/hard)

VLR.GT → ErrorCode

IMSI → HLR.GT

Nos,sztíringeljük?

SgaRS_Serv_IMSIPref.lst

SgaRS_Serv_OpPref.lst

INI / [RequiredPercentages]

INI / [Policy “XXX”]

INI = SgaRS_Serv_Rules.ini

INI / [IMSISeriesInHLRs]

INI / [RejectSchemePerVLR]

RS-Server - döntéselıkészítés

∗∗∗∗ rx

∗∗∗∗ tx

“ Reject ”

“ OK”

ServDateTime + VLR.GT (SCCP.ClgPA) + IMSI

“OK” vagy “Reject(HLR.GT,ErrorCode)”

Nos,sztíringeljük?

DateTime + + IMSI + PolicyName + Operator-PrefixName + RequiredPercentages + MaxRejectCount (soft/hard) + dinamikus tábla adatai

RS-Server - döntés

{ if !PolicyName →→→→ " OK" if !found(DynamicTable.IMSI) →→→→ insert as new if filled(DynamicTable.IMSI.LastOKTime) ( and still here ) →→→→ " OK" if DynamicTable.IMSI.Halving = true →→→→ MaxRejectCount/=2 if ( !reached(RequiredPercentage) AND MaxRejectCo unt.type = 'soft' ) →→→→ MaxRejectCount := 0 if MaxRejectCount = 0 →→→→ " OK" if !found(DynamicTable.IMSI.OperatorPrefixName) →→→→ insert as new if DynamicTable.IMSI.VLR.RejectCount ≥≥≥≥ MaxRejectCount →→→→ " OK" →→→→ " Reject "}

{ if " Reject " →→→→ { DynamicTable.IMSI.LastRejectTime=DateTime ++DynamicTable.IMSI.OperatorPrefixName.RejectC ountHere Reject.HLR.GT := IMSISeriesInHLRs[IMSI] if !Reject.HLR.GT →→→→ Trap{Error: There is no HLR defined for '$IMSI$'! } Reject.ErrorCode := RejectSchemePerVLR[VLR] }

if " OK" →→→→ { DynamicTable.IMSI.LastOKTime=DateTime UpdatePercentages(Operator-PrefixName) }} Pszeudo-kód!

RS-Server - döntés (folyt.)

♦ “Halving”♦amíg a másik oldal nem elérhetı + még egy kicsit

♦ Felejtés

♦ Átszólás a másik oldalról/-ra♦minden történésrıl

♦ Küldés a statisztika (RS-Stat) modulnak is

if timedout(MAX(DynamicTable.IMSI.LastOKTime|LastR ejectTime)) →→→→ { if !filled(DynamicTable.IMSI.LastOKTime) →→→→ →→→→ AlarmList{'$IMSI$' had a last "Reject" at $DATETI ME$, without any subsequent "OK".} Drop(DynamicTable.IMSI) }

RS-Server - statikus táblák

♦ SgaRS_Serv_IMSIPref.lst• D.R.: R&W

♦ SgaRS_Serv_OpPref.lst

IMSI-Prefix Policy21630100 Postpaid216306006 Domino216301000391695F VIP216301000391699F VIP216301000303030F VeryVIP

Operator-Prefix Operator-PrefixName3093 Gr-TeleStet_Hellas3094 Gr-Panafon3095 Gr-Panafon3097 Gr-Cosmotel49 Germany49170 Germany-D149171 Germany-D149172 Germany-Voda49173 Germany-Voda4917398341219 Germany-Voda_BADVLR49176 Germany-O249177 Germany-E-Plus49178 Germany-E-Plus49179 Germany-O2

RS-Server - statikus táblák (folyt.)

♦ SgaRS_Serv_Rules.ini♦n * [Policy “XXX”]

• D.R.: R

• “XXX” például: “Domino”, “PostPaid” stb.

• ‘*’ = hard limit

♦ [RequiredPercentages]• országnév-szeparáció!

♦ [IMSISeriesInHLRs]

♦ [RejectSchemePerVLR]• → SgaRS_SS7.INI / [SS7 MAP Error #N]

• ‘*’ = default sémaVLR-Prefix RejectScheme49172 249 344 4* 1

IMSI-Prefix HLR.GT2163010 363094899112163011 363094899122163019 36309489911216302 36309489913

VLR-PrefixName Required[%]Germany-D1 70Germany-Voda 20Gr-Panafon 20Gr-Cosmotel 20

VLR-PrefixName MaxReject#Germany-Voda *3Germany-Voda_BADVLR *99Germany-O2 3Gr-Panafon 3Gr-Cosmotel *3

RS-Server - SgaRS_Serv_Rules.ini

; [Policy “XXX”]

; VLR-PrefixName = MaximumRejectCount

; ‘*’: no ignorance, even if required percentage is not yet met

; reloaded on-the-fly

[Policy “Normal”]

Germany-O2 = 1

Germany-Voda = 1

Germany-Voda_BADVLR = *99

Gr-TeleStet_Hellas = 1

[Policy “Domino”]

Germany-O2 = 3

Germany-Voda = *3

Germany-Voda_BADVLR = *99

Gr-Panafon = 3

Gr-Cosmotel = *3

Minta!

RS-Server - SgaRS_Serv_Rules.ini

Minta!

; VLR-PrefixName = RequiredPercent [%]

; dash within the prefix name separates country and network names

; 1000 entries at most

; reloaded on start-up and on request (from menu)

[RequiredPercentages]

Germany-D1 = 70

Germany-Voda = 20

Gr-Panafon = 20

Gr-Cosmotel = 20

RS-Server - SgaRS_Serv_Rules.ini

Minta!

; IMSI-Prefix = HLR.GT

; maximum 50 entries

; read from top to bottom

; reloaded on start-up and on request (from menu)

[IMSISeriesInHLRs]

2163010 = 36309489911 ; HLRA (backup: HLRB)

2163011 = 36309489912 ; HLRB (backup: HLRA)

2163019 = 36309489911 ; HLRA (backup: HLRB)

216302 = 36309489913 ; HLRC (backup: HLRE)

216303 = 36309489914 ; HLRD (backup: HLRF)

2163040 = 36309489918 ; pilot

2163042 = 36309489918 ; pilot

216305 = 36309489914 ; HLRD (backup: HLRF)

2163060 = 36309489911 ; HLRA (backup: HLRB)

RS-Server - SgaRS_Serv_Rules.ini

Minta!

; VLR-Prefix = RejectScheme

; RejectScheme N →→→→ SgaRS_SS7.ini/[SS7 MAP Error # N]

; maximum 100 entries

; read from top to bottom

; reloaded on start-up and on request (from menu)

[RejectSchemePerVLR]

49172 = 2 ; Germany-Voda

49 = 3 ; Germany

43 = 4 ; Austria

44 = 4 ; UK

* = 1 ; default reject scheme

RS-Server - a dinamikus tábla

♦ Aktuális állapot♦szomszédtól is frissül

♦az elévültek kigördülnek

♦mindenütt UTC!

IMSI 1/2 LastOK LastRejectOperator-PrefixName #1:RejectCount

Operator-PrefixName #2:RejectCount

...

216301000391693 true 2007.08.02. 07:15:23 2007.08.02. 07:13:12 Germany-Voda: 7 Germany-O2: 2216301000391695 2007.05.31. 09:09:09 Gr-Panafon: 0216301000391696 true 2007.06.11. 13:28:28 Germany-Voda: 1216301000391699 2007.05.21. 11:18:53 2007.05.21. 11:18:52 Gr-Cosmotel: 2 Gr-Panafon: 3...

RS-Statistics - statisztikák / 1

♦ (például) Negyedóránkénti CSV állományok♦azonnal akár PMS-be is tölthetıek

♦ Szolgáltatónkénti (Operator-PrefixName) ésIMSI csoportonkénti (PolicyName)“OK” és “Reject” darabszám eloszlás

♦ Példa: “SgaRS_Stat1_200705311230_0.csv”

DateTime, VLRPrefixName, IMSIPolicyName, #OK, #Reject

2007.05.31 10:15:00, Gyfone, Domino, 53, 02007.05.31 10:15:00, Gyfone, PostPaid, 6, 02007.05.31 10:15:00, Pfone, Domino, 0, 172007.05.31 10:15:00, Pfone, PostPaid, 2, 23

RS-Statistics - statisztikák / 2

♦ Két hisztogram (10+10 darabszám-számláló) amost elıször “OK”-t kapókra:♦#, 0 darab “Reject” után került most preferáltba

♦#, 1 darab “Reject” után került most preferáltba

♦#, .. darab “Reject” után került most preferáltba

♦#, ≥9 darab “Reject” után került most preferáltba

♦#, 0 darab “Reject” után került be nem-preferáltba

♦#, 1 darab “Reject” után került be nem-preferáltba

♦#, .. darab “Reject” után került be nem-preferáltba

♦#, ≥9 darab “Reject” után került be nem-preferáltba

RS-Statistics - statisztikák / 2

♦ RS-Server továbbadja az “OK” döntés okátvalamint az eddigi “Reject”-ek össz darabszámát

♦ Ha most (végre) egy “OK” jött, akkor:switch ( “ OK”.Result )

{case “ OK(NoCheckForThisIMSI)”: // →→→→ minden VLR preferáltcase “ OK(NowInPreferred)”: // →→→→ bepreferálódott

UpdateHistogram_NowInPreferred

case “ OK(MaxRejectReached)”: // →→→→ valószín őleg manuálisUpdateHistogram_StillInNonpreferred

case “ OK(WithinGuardtime)”: // →→→→ már volt rá “ OK”case “ OK(...)”: // →→→→ pl.: out-of-memory

DoNothingHere}

RS-Statistics - statisztikák / 2

♦ Példa: “SgaRS_Stat2_200705311230_0.csv”

♦ Az utolsó n oszlopokba kerülıkrıl AlarmLista

DateTime, IMSIPolicyName, #=0(+), #=1(+), #=2(+), #=3(+), #=4(+), #=5(+), # =6(+), #=7(+), #=8(+), # ≥≥≥≥9(+), #=0(-), #=1(-), #=2(-), #=3(-), #=4(-), #=5(-), # =6(-), #=7(-), #=8(-), # ≥≥≥≥9(-)

2007.05.31 10:15:00, Domino, 0, 0, 0, 0, 1, 0, 0, 0, 7, 0, 0, 0, 0, 0, 17, 0, 0, 0, 19, 9

2007.05.31 10:15:00, PostPaid, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

if (IMSI.TotalRejectCountUptoNow ≥≥≥≥ AlarmThresholdRejectCountNowInPreferred) →→→→ →→→→ AlarmList{'$IMSI$' had 4 rejects before this OK i n $OpPrefName$ (now in preferred).}

if (IMSI.TotalRejectCountUptoNow ≥≥≥≥ AlarmThresholdRejectCountStillInNonpreferred) →→→→ →→→→ AlarmList{'$IMSI$' had 9 rejects before this OK i n $OpPrefName$ (still in non-preferred).}

RS-Statistics - statisztikák

♦ AlarmLista arról is, ha egy IMSI nem ugyanazzala Policy névvel jelenik meg, mint elızıleg♦esetleg eltérés a két site között?

♦változtatás után a felejtési idık leteltéig üzemszerő

→→→→ AlarmList{'$IMSI$' was seen with Policy $OldPolic yName$, but now with $CurrentPolicyName$.}

RS-SS7 - SgaRS_SS7.ini

[SS7 MAP Error #1]; AbsentSubscriber

byLocalErrorCodeTag = 27

[SS7 MAP Error #2]; CallBarred

byLocalErrorCodeTag = 13

byLocalErrorCodeParameterTag = 1

64 [10] messageType:END 49 [04] DTID = 0x000252A16C [08] componentPortion A3 [06] component:returnError 02 [01] invokeID = 102 [01] errorCode:localValue = 27 →→→→ AbsentSubscriber

64 [13] messageType:END 49 [04] DTID = 0x00A1432B6C [0B] componentPortion A3 [09] component:returnError 02 [01] invokeID = 102 [01] errorCode:localValue = 13 →→→→ CallBarred0A [01] callBarringCause = 1 →→→→ OperatorBarring

+ [... szokásosak ...]

RS-Server - SgaRS_Serv.ini

[Rules]dwIMSIMemoryEntryCount = 100000dwIMSIMemoryEntryLifeSec = 3600sIMSIPrefFile = SgaRS_Serv_IMSIPref.lstsOpPrefFile = SgaRS_Serv_OpPref.lstsRulesFile = SgaRS_Serv_Rules.inichPrefixDelimiter = -

[Remote Server]bIInitializeConnection = True

if False → local TCP port and optional IP address barring;wAutoConnectIntervalSec is ignored

if True → remote IP address and TCP port

wAutoConnectIntervalSec = 3sIPAddress = 127.0.0.1wTCPPort = 5068dwKeepHalvingRuleAfterConnectSec = 9

+ [... szokásosak ...]

RS-Statistics - SgaRS_Stat.ini

[Statistics]dwIMSIMemoryEntryCount = 100000dwIMSIMemoryEntryLifeSec = 86400dwStat1MemoryEntryCount = 25000dwStat2MemoryEntryCount = 250dwFlushPeriod = 900dwFlushDelay = 10

[Advanced]wAlarmThresholdRejectCountNowInPreferred = 3wAlarmThresholdRejectCountStillInNonpreferred = 9

+ [... szokásosak ...]

“Status line” infók

♦ “Status line” számlálók, jelzések♦RS-SS7

• rx#: UpdLoc, UpdGPRSLoc, SP, SAI, other

• tx#: UpdLoc, Reject

• “RS-Serv” (vörös/bíbor/szürke)

♦RS-Serv• Requests; Answers(“OK”,“Reject”); RemoteInfo

• IMSI memory used, overflown; updated; forgotten

• “RemoteServ”, “RS-Stat” (vörös/bíbor/szürke)

♦RS-Stat• Records(“OK”,“Reject”)

• IMSI memory used, overflown

• Stat1 memory used, overflown

• Stat2 memory used, overflown

logged!

képváltás!

1. →→→→ AuthenticateUserNamePasswordReason

2. ←←←← “OK” / “nOK”

3. →→→→ -4. ←←←← GET

IMSIPref.lstRules.ini

5. →→→→ SETIMSIPref.lst

6. ←←←← “OK” / “nOK”

RS-GUI

♦ Get → ExportList → ImportList → (Check) → SetSGA-RS-x

SGA-Auth

GUIServ

D.R.

RS-GUI

Misc

♦ ≈ WelcomeSMS-monitor?

♦ LocalTime helyett minden UTC-ben (GMT)♦kivéve a napló-sorok idıpontja

♦ Naplózás♦napi bontású

♦naplózási szintek: “Debug”, “Detail”, “Normal”, “Off”

♦ Riasztások♦szokásos IP/UDP/SNMP Trap-ek a NOC/NMC

számára

♦ részletes lista → dokumentáció

pl.: $LogFilesPath$ / SgaRS_Serv_20060802.log

Keletkezı állományok

♦ Naplók♦ “SgaRS_SS7(...)_YYYYMMDD.log” * 2 (* n)

♦ “SgaRS_Serv_YYYYMMDD.log” * 2

♦ “SgaRS_Stat_YYYYMMDD.log”

♦ Statisztikák♦ “SgaRS_Stat1_YYYYMMDDHHMM_N.csv”

♦ “SgaRS_Stat2_YYYYMMDDHHMM_N.csv”

♦ Alarmlisták♦ “SgaRS_Serv_Alarms_YYYYMMDD.txt” * 2

♦ “SgaRS_Stat_Alarms_YYYYMMDD.txt”

♦ Trap-ek

IP / UDP-TCP portok

♦ “ki-be”:♦SNMP (Trap)

• +secondaries

♦FTP vagy SCP

♦RemoteDesktop

♦RS-GUI + SGA-Authorizer

♦ “bent”:♦RS-(Local)Server → RS-RemoteServer

♦RS-(Local)Server → RS-RemoteStatistics

♦NTP

SGA-RS - egyéb

♦ SGA-Trapper♦egy vagy több NOC-hoz

♦ DelThem♦pl. öreg naplóállományokra

♦ Log2Text

♦ SGA-Authorizer♦RS-GUI miatt

♦ “T-megfelelı”

♦ Gy4

Száva8 tesztek

♦ Prológus:♦ jelenleg az int’al hálózatban ≈10 UpdLoc/s inbound

• még steering nélkül!

♦160 octet / UpdLoc• (MAP3)

♦ → 12.5 kbps (összesen!)

Száva8 tesztek

• jelenleg ≈10 UpdLoc/s inbound• még steering nélkül!

• → 12.5 kbps (összesen!)

♦ Mérések♦MSC visszakorlátoz ≈50 kbps-re / jelzéslink

• 2 * 2 * 2 * 2 = 8 jelzéslink beszerelve, ebbıl 4 van MSC-be bekötve

♦válaszidık: 0..49 ms; átlag 19 ms• igen nagy (72 UpdLoc/s) terhelésnél, több tízezer IMSI-re

SGA-RS-1SS7

SS7MSC

-Z

SS7

SS7

SGA-RS-2

SGA-Tx-OSzSS7

SS7

UpdLoc(MAP3) = 160 octet = 20 ms

ServStat

Serv