IFC

IMS 2015. 12. 11. 15:51

S-CSCF에서 받은 호를 라우팅 하는 방법에는 3가지가 있지만

주로 1,2번 2가지가 스인다.

 

1. IFC (가입자 기반으로 동작)

 

  가입자 기반에도 2가지가 있는데

  A. 발신호: P-Asserted-Identity (없으면 From)을 기준으로 처리한다.

  B. 착신호: invite 옆에있는 R-URI (Request URI)를 기준으로 처리한다.

 

     기준이 바뀌면 동작이 재설정 되므로, P-A-I나 R-URI가 동일한 상태에서

     iFC가 순차적으로 처리되며, 따라서 iFC에는 우선순위(Priority)가 존재한다.

 

 

2. Prefix-Routing

  가입자랑 상관없이 특정번호 (예:1593408)의 경우

  지정한 서버로 포워딩 시킬 수 있다.

 

 

 

3. PSI-일반적으로는 외부에서 들어온 호를 I-CSCF에서 처리할 때 사용하지만

  S-CSCF에서도 사용 가능.

Posted by yongary
,

jvm

java core 2015. 12. 10. 09:23

Hotspot VM. (JIT의 일종. SUN의 JIT임)  REF-SITE

 

      JIT는 그때 그때 OS에 맞게 bytecode를 변환하지만,   AOT는 미리 변환해 놓는다.  

     Android LolliPop부터 ART(anroid Run Time)이라고 부르는 AOT 사용.

 


JDK1.2부터 HostSpot VM 등장. ( Hot=선택적으로 메서드를 선택해서 컴파일하여 성능을 높이는 VM)

 

3개의 Generation으로 Heap구성.

 

1. Young Generation

2. Old Gen

3. Permanent Gen (Perm Gen)

 

 

 일반적으로 처음 Heap생성하면 Young Gen.  (Young Gen도 3분류. 처음 Eden -> 나중에 From or  To[=Survivor Space] ) 

 시간이 지나거나 공간부족시 Young Gen----> Old Gen으로 이동.

 

GC가 끝나면 From, To가 바뀜. (즉, From이 Survivor space가 됨)

 

 

각종 옵션

 

-Xss  : statck Size 

 

-Xmx -Xms : heap 최대 , 최소 size

 

-XX:NewSize  (Young Gen 최초 사이즈)

 

-XX:NewRatio  (Young /Old 비율, x/4, 즉 2면 반반)

 

-XX:SurvivorRatio  ( Eden과 Survivor비율.  x/9  )

 

-XX:MaxPermSize    (default=64M or 64bit 머신에서는 +30%)

 

-XX:+HeapDumpOnOutOfMemoryError

-XX:OnOutOfMemoryError="<cmd args>;<cmd args>"

-XX:OnError="<cmd args>;<cmd args>"

Posted by yongary
,

PSI (Public Service Identity)

IMS 2015. 12. 9. 15:18

IMS에서는 PSI를 통해

외부에서 들어온 호를 I-CSCF에서 AS로 직접 포워딩 할 수 있다. (8.8장 )

 

3가지 방식이 있는데

 

1. 서브도메인 이용

2. Direct PSI trigger

3. Indiect PSI trigger

 

 

이 중 1,2번이 간단한 편인데

2번을 설명하면

 

I-CSCF에서 HSS로 LIR(Location info query) 및  LIA(Answer)를 통해

AS주소를 안 다음에 AS로 바로 라우팅 하는 것이다.

 

AS에서는 처리 후, 다시 I-CSCF로 호를 보내면

I-CSCF -> S-CSCF -> (T)AS 형태로 호가 이루어 진다. (확인 중)

 

그리고 WildCard(*) PSI 등록시에는

번호!.*!  형태로 느낌표 사이에 regex로 표현된다.

 

 

3. Indirect PSI trigger는

I-CSCF(HSS LIR) -> SCSCF (HSS SAR:레지확인 후 iFC 동작) -> AS로 호가 되는데

unregi된 서비스 번호에 대해서도 서비스가 가능한 장점이 있다.

단점은 PSI + iFC도 필요해서 다소 복잡하다.

 

 

Posted by yongary
,

Puppet & Vagrant

SDN,cloud,Puppet 2015. 12. 4. 11:58



Vagrant (부랑자)    Ref-Site:


 - VM 자동화 관리도구 로서   VirtualBox를 기본 지원하고, AWS, VMWare를 지원한다.   VMWare는 추가 라이선스 필요.


- Box 라는 컨테이너 단위를 가져다가 설치만 하면 OS가 설치되는 형태로서,

   각종 작업에 shellscript 를 이용한 자동화가 지원되며,  windows/mac 도 지원된다.

   Box-download site:   



- Ruby로 개발되어 있다.


- vagrantfile 에 모든 설정이 있고, vagrant up 명령으로 실행하므로  매우 간단하다.




(VM 생성시, shellscript 뿐 아니라

   automation 툴인 Chef나  Puppet 을 사용하여 VM에 대한 Provision 수행이 가능하다.) 



Puppet (퍼핏=꼭두가시)  Ref-Site  


- Ruby로 구현된 서버설정 자동화 툴.


- 주기적(30분)으로  puppetd가  관리서버의 puppetmasterd =서버설정을 받아와서 반영 함.


- forge 사이트에서 모듈을 공유하며, 개발 가이드 있음.     dev-guide


- class상속등 다양한 방식 지원,    postgreSQL 이용..




Posted by yongary
,

maven

Spring 2015. 12. 4. 11:29

spring 에서   pom.xmL을 이용하는 경우가 많은데

이것은 maven 의존성 관리툴에서 사용하는 파일이다.


maven을 직접사용하는 방법도 있는데

maven 설치 후


$ mvn archetype:generate     해서 각종 값을 넣고 나면 (주로  package 명으로 넣으면된다)

pom.xml까지 자동 생성이 되며,


mvn compile exec:java -Dexec.mainClass=com.ky.App

 으로 바로 커맨드 상에서 실행한다.


매우 유용하다. 

 




Posted by yongary
,

tomcat 설치 (Linux)

FRONT-END 2015. 12. 1. 21:19

rpm이나 deb로 설치 후,


etc/profile 5줄 추가==================

JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.amd64


CATALINA_HOME=/usr/share/tomcat7


CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar


PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin


export JAVA_HOME CLASSPATH PATH CATALINA_HOME


============ 




======tomcat port 수정.

/etc/tomcat7/server.xml 수정. 8080->80

service tomcat7 restart


(Ubuntu인 경우 필요할 수 있음)

autobind를 이용한 80포트 사용토록 수정. 

http://blog.ciaranoconnor.me/2015/01/12/configuring-tomcat7-to-port-80-on-ubuntu/



=======front-end 소스를 

/var/lib/tomcat7/webapps/ROOT  밑에 복사.



Posted by yongary
,

기타 index

mongoDB, redis 2015. 11. 9. 17:47

mongoDB의 index는 메모리상의 working Set 에  Cache되어 관리된다.

working Set에는 index외에도, 데이타 일부가 cache되지만,   index가 우선 cache되어 성능향상을 시키는 구조이다.

 

 

데이타가: type: "restratunt"

loc: [ 37, 132 ] 일 경우,  

 

<2D index>

 

 

db.data..ensureIndex( {loc:'2d', type:1} )

 => $near 나  $maxDistance 가 사용가능하다. 

 

 

 

<2dsphere index>

 

db.data..ensureIndex( {loc:'2dsphere', type:1} )

=> $near 나 $maxDistance 가 사용가능하다.  $gemetry를 사용할 수 있다.

db.data.find( {loc: {  $near: {   $geomerty: { type: "restaurant",  coordinates:[38,127] },  $maxDistance:2000 }   }})

 

 

<text search index>

 

db.data..ensureIndex( {type:'text'} )

db.data.find( {'$text:{$search:'restaurant'}'} )          //$text앞에 '는 빼도 될듯.

 

 

Posted by yongary
,

<Index>

mongoDB에서 index 및 멀티index가 가능하다.

(default는 _Id 가 인덱스이다.)


<DB daata>

    db.nameage.find()

    { "_id" : ObjectId("561ddb57e8c49d6d56c71503"), "name" : "kim", "age" : 2 }


인덱스 추가시 

> db.nameage.ensureIndex( {name:1} )  or

db.nameage.createIndex( {name:1,  age:-1} )  // -1=descending.. compound index.

index show
db.nameage..getIndexes()

> db.namegae.dropIndex( {name:1} )


조회시 index  사용하는지 확인.
> db.nameage.find({name:"kim"}).explain()



MultiKey  index (for array index)  : age가 array라면 자동으로 MultiKey index 가 됨.

   - explain()해보면  isMultiKey: true라고 나옴.

    - name이 array라고 되고, age가 array라도 됨.

=> 단, name과 age 둘 다 array 로 doc insert하면.. insert 실패 남.


    -array 안에 subDoc이 있을 때, .(dot)을 사용해 index 생성가능. names:[  { country:"kor", name:"yong" }, { country:"nz", name:"gary"} ]

     db.nameage.createIndex( {names.name:1} )


     tip:  subDoc조회시에는 $elemMatch 사용가능.

    

Unique Index

   > db.nameage.createIndex( {name:1}, {unique:true}  )

   unique index를 만들면서, sparse 옵션을 주면  unique이긴 하지만, 그 필드가 없어도 된다.

 db.nameage.createIndex( {name:1}, {unique:true, sparse:true} )

    단, sparse index 일 경우, sort()명령에서는 index 사용을 못함.



<Storage Engine>


Mongo서버가---> StorageEngine을 통해서 --> disk에 접근.

MongoDB에는 2가지 storageEngine이 있다.


1. linux기본의  mmap  (이게 3.0에서도 default)

- collection 레벨 locking

- 2의 승수(power of 2) document 생성. (즉, 4,8,16,32  byte단위로 update여유 있게 생성)

2. WiredTiger ( 최근에 인수.)  mongoDB 3.0부터 지원,

        - document 레벨 locking

       -  압축 지원

       -  no in-place Update  (즉, update 하면 doc을 항상 추가함) : 이게 doc 레벨 lockding의 원동력임.

사용법:  시작시  $ mongod  -storageEngine wiredTiger             (-dbpath wT)

          

     

Posted by yongary
,

IMS 과금

IMS 2015. 11. 2. 18:52

ICID (IMS charging ID) :과금 ID

 

P-CSCF가 Regi 수신받으면 ICID 생성.  (11.12)

P-CSCF는  P-Charging-Vector헤더를 이용해 ICID를 S-CSCF로 전달.

 

S-CSCF는 받은 ICID를 저장. 하고 이를 이용한 과금 수행.

 

(12.7)

세션중에 P-CSCF는 추가적인 media-stream용 ICID생성. (PDP Context 연관부분)

IOI(Inter-Operator ID)도 과금에 사용됨.

-type2 : 주로 통신사 내부에서 이걸 사용함.

-type1:(p-cscf 와 s-cscf간 용도),   type3:로밍용.

 

발신쪽 S-CSCF가 P-Charging-Vector에 orig-ioi넣어놓으면,

착신쪽에서 orig-ioi를 제거하고 단말로 내려감(단말로는 과금정보 절대 안내려감)

대신 183이 단말에서 올라오면 다시 ICID,IOI등을 더해서  전달함.

Posted by yongary
,

Android 4,~ 6.0 Changes

Android 2015. 11. 2. 10:26

Android 6.0 (API level 23) - Marshmallow

- runtime permissions.

- App Power Saving optimization.

Doze: device

App Standby:

- ART runtime 수정.

- Android for Work changes

- Camera Service Changes

priority 추가.

 Wi-Fi & Network

기존에 다른 네트웍이 끊어졌지만, 이젠 끊어지지 않는다. (API 21이후에는 multinetwork지원)

- APK validation

- USB Connection

 

Android 5.x (Lollipop,  API Level 21)

- Android RunTime (ART), 기존 dalvik대체

1. AOT(Ahead Of Time) 컴파일

2. GC향상

3. debugging 향상
(단,

- JNI / obfuscator 쓰는 경우 주의 필요

- GC에 반하는 기술 주의 필요)

- Notification : 계정별로 noti가 됨.

- Sound / 진동

Notification.Builder를 이용해서 prioritymode를 써야 함.

- MediaSession  등장 for media control (이전의 RemoteControlClient 대신임.)

Notification.MediaStyle,   (with Notification.Builder.addAction() )

- 64bit support in NDK.

- Managed Profile

- file공유 (profile간)

- Lockscreen widget support 없어짐.  (이제 lockscreen에서 Widget이 사라지나 보네요)

 

Android 4.4 (Kitkat, API Level 19)

 

- WebView가 크롬으로 바뀜. (기존엔 WebView base였음)

- READ_EXTERNAL_STORAGE permission 추가됨. -> getExternalStoragePublicDirectory() 사용가능

 

- android.pirnt 프레임웍 추가, 로 문서 printing이 쉬워짐.

- SMS Provider 추가:  default SMS앱으로 선정되어야만 SMS수신등이 가능

 

-

 

Android 4.1, 4.2, 4.3 (Jellybean  API 16~18)

- 4.3  OpenGL ES 3.0 지원.

- WifiEnterpriseConfig 기업용 자동 Wi-Fi세팅 지원.

- MediaMuxer : 1audio + 1video mux.

- ViewOverlay: OpticalBounds 추가.

- Screen Orientation 사용자편의 옵션 3개 추가.

 

 

Android 4.0 (IcecreamSandwich, API Level 14)

 

- RemoteControlClient 등장: media control / lock screen 등의 이벤트 수신.

 

 

Posted by yongary
,