niedziela, 29 maja 2016

EPS architektura systemu



MME - Mobility Management Entity
S-GW - Serving Gateway
eNB - eNodeB
HSS - Home Subscriber Server
PCRF - Policy Charging Rule Function
EPC - Evolved Packet Core
SAE - System Architecture Evolution
LTE - Long Term Evolution


Tutaj można znaleźć więcej skrótów.

czwartek, 21 kwietnia 2016

Erlang: Kilka słów o listach.


To pierwszy z serii artykułów Erlang: Kilka słów o ... .
Sam jeszcze zgłębiam tajniki Erlang'a ale ponieważ nie znalazłem zbyt dużo informacji w języku polskim postanowiłem coś napisać. Przy okazji mam nadzieje się nauczyć i zrozumieć więcej.

Podstawowy zapis listy w Erlang'u to:
[Element1, Element2, ...., ElementN]

Każdy z elementów może być różnego typu.
Taka lista [34,54,jakis_atom,{inny_atom,3,4}] jest jak najbardziej poprawna.

Każda lista ma swój element początkowy (ang. head) i resztę zwaną również "ogonem" (ang. tail).
Tworzymy nową listę.
1>NewList = [1,2,3,4].
[1,2,3,4]

Następnie wykorzystajmy konstrukcję [Head|Tail] i przypiszmy do tego stworzoną przed chwilą listę.
2>[Head|Tail] = NewList.
[1,2,3,4]

Użyty przez nas operator "|" to konstruktor.
A teraz przekonajmy się co jest elementem początkowym listy:
3>Head.
1
oraz resztą listy:
4>Tail.
[2,3,4]

Swoją drogą to samo możemy uzyskać z pomocą funkcji wbudowanych (ang. BIF - built-in functions) hd() oraz tl().

5>hd([1,2,3,4]
1
6>tl[1,2,3,4]
[2,3,4]

Listy można sklejać z użyciem operatora "++". Możemy również usuwać elementy listy z pomocą operatora "--".

7>[4,5,6] ++ [7,8].
[4,5,6,7,8]
8>[4,5,6,7,8] -- [4,5,6].
[7,8]

Kilka przykładowych funkcji z wykorzystaniem list (i nie tylko).
Sumowanie wszystkich elementów listy

suma([]) ->
   [];
suma([H|T]) ->
   H + sum(T).

Tworzenie listy liczb w zakresie od/do z podanym krokiem.

stworz_liste(Od,Do,Krok) when Od <= Do ->
   [Od|stworz_liste(Od + Krok,Do,Krok)];
stworz_liste(_Od,_Do,_Krok) ->
   [].

A teraz inna metoda pracy z listami. Chcemy z jednej listy stworzyć drugą listę, Każdy element drugiej listy ma być drugą potęgą odpowiadającego elementu z pierwszej listy.

Sposób pierwszy:

lista_kwadratow([]) ->
   [];
lista_kwadratow([H|T]) ->
   [H*H|lista_kwadratow(T).

Sposób drugi:

9>[N*N || N <- [1,2,3,4]].
[1,4,9,16]

Sposób drugi w  funkcji:

lista_kwadratow([H|T]) ->
   [X*X || X <- [H|T]].

A co jeśli chcielibyśmy jedynie podnieść do kwadratu liczby parzyste z danej listy - możemy dołożyć wyrażenie warunkowe.

10>[N*N || N <- [1,2,3,4], N rem 2 =:= 0].
[4,16]

Usuwanie elementu z listy:

remove(_X,[])->
    [];
remove(X,[X|Rest]) ->
    remove(X, Rest);
remove(X,[H|Rest]) ->
    [H|remove(X,Rest)].

Powyższy przykład (jak i pozostałe) można również wykonać wykorzystując funkcje z modułu lists. Listę funkcji dla tego modułu można znaleźć tutaj.

remove(X,[H,T]) ->
   lists:delete(X,[H|T]).

Artykuł na podstawie: Learn you some Erlang for great good.

środa, 19 lutego 2014

Obszary w sieci UMTS (i nie tylko).

Cały obszar sieci GSM/UMTS jest podzielony na mniejsze części. Najmniejszą częścią jest komórka (ang. cell) czyli obszar pod kontrolą stacji bazowej BTS/Node B. W sieci UMTS kilka komórek może tworzyć obszar URA (UTRAN Registration Area). Jest to obszar specyficzny dla sieci UMTS i nie występuje w sieciach GERAN.

Ilustracja poszczególnych obszarów w sieci UMTS.

Obszar po którym może poruszać się UE bez uaktualnia informacji w VLR to Location Area. Obszar po którym UE może poruszać się bez uaktualniania informacji w SGSN-ie to Routing Area.
Zarówno Location Area jak i Routing Area może zawierać jedną lub więcej komórek. Należy wspomnieć że Routing Area zawsze zawiera się w Location Area.

Zazwyczaj można spotkać stwierdzenie że MSC i SGSN zarządzają odpowiednio Location i Routing Area. To prawda ale zarówno MSC jak i SGSN może obsługiwać więcej niż jeden obszar.
Obszar zawierający jedno lub więcej Location/Routing Area i zarządzany przez MSC/SGSN nazywa się MSC/SGSN Area. Taką informację można znaleźć w [23.002] ale inne specyfikacje wspominają o MSC/SGSN Service Area. W moim rozumieniu to jest ten sam obszar i ponownie brak spójności w nazewnictwie w specyfikacjach 3GPP.

Jest jednak obszar zwany Service Area, wg [23.002] to obszar w którym abonent może być osiągalny dla innych abonentów bez wiedzy tych abonentów o aktualnym położeniu UE-ka w obrębie tego obszaru.
Taki obszar to może być jedna sieć komórkowa, jeden kraj, część kraju lub nawet kilka krajów.
Definicje Service Area znajdujemy również w [23.060] i tutaj jest to określone jako poziom dokładności określającej położenie dla celów zarządzania usługami w SGSN-ie.

poniedziałek, 17 lutego 2014

Network Operation Mode ewentualnie Network Mode of Operation

Aby zmniejszyć ilość koniecznej sygnalizacji istnieje możliwość połączenia domeny CS-owej i PS-owej a dokładniej możliwość połączenia MSC-a z SGSN-em poprzez opcjonalny interfejs Gs.

Dzięki takiemu połączeniu UE nie musi aktualizować swojego położenia do obu węzłów sieci CN. Wystarczy że wykona procedurę Routing Area Update i poinformuje o zmianie Routing Area SGSN-a a ten poinformuje MSC-a o zaistniałej zmianie.

Network Operation Mode to rozróżnienie i wskazanie czy w danej sieci jest skonfigurowany interfejs Gs czy też nie.
Network Operation Mode często w literaturze bywa opisywany jako Network Mode of Operation i nawet w specyfikacji 3GPP 23.060 stosowany jest skrót NMO mimo, że wspomniany jest tam Network Operation Mode.

Inne znaczenie ma poszczególny tryb dla sieci GERAN a inny dla sieci UTRAN.

W sieci UTRAN (Iu Mode) rozróżniamy NMO I i II.
W tym przypadku różnica jest tylko jedna: sieć pracująca w trybie NMO I ma skonfigurowany interfejs Gs podczas gdy sieć w trybie NMO II nie posiada tego interfejsu a co za tym idzie nie są dozwolone procedury typu combined. (takie jak combined LAU/RAU). W trybie NMO I dla UE zarejestrowanego zarówno w MSC-u jak i SGSN-ie paging CS-owy będzie wykonywany za pośrednictwem SGSN-a.



W sieci GERAN rozróżniamy 3 tryby: NMO I, II i III.
  • NMO I - interfejs Gs jest skonfigurowany, CS-owy paging może być wysłany do MS-a z wykorzystaniem kanału paging-owego CCCH lub PPCH (Packet Paging Channel) lub PDCH (Packet Data Channel). Oznacza to że MS musi słuchać jednego kanału paging-owego i że CS-owy paging może być wysłany nawet na PS-owych kanałach traffic-owych.
  • NMO II - Interfejs Gs nie jest skonfigurowany, kanał CCCH jest wykorzystywany zarówno do CS-owego jak i PS-owego pagingu. W tym przypadku MS musi słuchać kanału CCCH nawet podczas transmisij danych PS-owych na kanałach traffic-owych. Rozwiązanie może być tutaj mechanizm BSS paging co-ordination.
  • NMO III - brak skonfigurowanego interfejsu Gs, paging CS-owy wysyłany kanałem CCCH, paging PS-owy wysyłany albo kanałem CCCH albo PPCH (jeśli jest on za-alokowany). To oznacza że MS w niektórych przypadkach musi słuchać dwóch kanałów paging-owych. W tym trybie nie ma kordynacji paging-u. Można zastosować wspomniany wcześniej mechanizm BSS paging co-ordination.
W specyfikacji 23.060 znalazłem informację że od Release-u 9 zabronione jest używanie kanału PPCH (również pozostałych PCCCH - Packet Common Control Channel) i w takim przypadku tryb NMO III staje się tak naprawdę trybem NMO II.

Mechanizm BSS paging co-ordination pozwala na wprowadzenie koordynacji paging-u ale z poziomu BSS-a nie CN-a (jak to ma miejsce w trybie NMO I). W tym przypadku to BSC sprawdzi czy MS nie ma w danej chwili transmisji CS-owej lub PS-owej i wtedy wyśle PS-owy paging dedykowanych kanałach CS-owych lub CS-owy paging używając PDCH. Mechanizm ten powinien być aktywny w tych celkach gdzie jest włączony DTM (Dual Transfer Mode).

To który tryb jest skonfigurowany w danej sieci i czy użwany jest mechanizm BSS paging co-ordination wysyłane jest do MS/UE z wykorzystaniem System Info. Dany tryb powiniem być taki sam dla wszystkich celek w danym Routing Area.