ทดสอบ Open IMS Testbed
เกริ่นนำนิดหน่อย IMS = IP Multimedia Subsystem เป็น subset ของ 3GPP กล่าวแบบ ภาษาชาวบ้านก็คือ สื่อที่เป็น multimedia ทั้งหลาย ไม่ว่าจะเป็น วิดีโอ รูปภาพ เสียง ก็จะวิ่งบน IP หมด หรือ ส่งผ่านทางอินเทอร์เน็ตนั่นเอง เอ๊ะ ปรกติมันก็เริ่มเป็นอย่างนี้อยู่แล้วนี่? ใช่ครับ แต่ IMS Framework หรือ กรอบการทำงานของไอเอ็มเอส ( ผมว่าอย่าแปลดีกว่าแฮะ -_-" ) เค้ากำหนดรายละเอียดมากกว่านี้อีกมากมายครับ
เช่น
- Convergence concept นั่นก็คือ สามารถส่งข้อมูล multimedia ได้ระหว่าง Circuit switching กับ packet switching... งงอีกละสิ? เอาใหม่ดีกว่า กล่าวแบบ ภาษาชาวบ้านก็คือ เจ้าโทรศัพท์บ้านยุคเก่า ๆ ที่เราใช้งานอยู่นี่ ก็จะติดต่อ กับ โทรศัพท์ยุคใหม่ หรือที่เรียกว่า VoIP, IP-Phone... นั่นแหละ
- Session management นั่นก็คือ เราสามารถที่จะเปลี่ยนอุปกรณ์ ขณะที่เรากับกำลัง Online อยู่ โดยที่ไม่ต้อง จัดตั้งการเชื่อมต่อใหม่
- Presence services คำนี้ผมงง กับมันตั้งนาน (และก็คิดว่ายังงง ต่อไป ) ตามความเข้าใจของผม presence จะให้บริการการติดต่อระหว่าง ผู้ที่ติดต่อมา กับผู้รอรับบริการ โดยที่ มันจะตรวจสอบว่า เราพร้อมจะรับการติดต่อกับอุปกรณ์ชนิดใด ๆ เช่น หากเราอยู่ที่บ้าน เวลามีเพื่อนโทรมา เราก็จะ online ด้วย IP-TV แต่ถ้าเราอยู่นอกบ้าน เราก็จะได้รับการติดต่อด้วยโทรศัพท์มือถือ เป็นต้น ทั้งนี้ การตรวจสอบจะใช้ข้อมูลตามที่เราลงทะเบียนไว้กับระบบ
- อื่น ๆ => Quality of Services (QoS), Authentication Authorization and Accounting (AAA) และ ยังเชื่อมต่อกับ DLNA & uPnP อีกด้วย ...
เกริ่นมาเริ่มยาวแล้ว เข้าเรื่องดีกว่า
วันนี้มีโอกาสได้ทดลอง Open IMS Testbed บน Ubuntu 8.10 ก็เลย Capture screenshot มาให้ดู ไฟล์วิดีโอ ผมขอฝากไว้ที่ Youtube แล้วกันนะครับ
=> http://www.youtube.com/watch?v=uzmFHsTj_vI
หากใครสนใจจะทดลองดูบ้างก็ download จาก www.openimscore.org ได้เลยครับ สามารถนำไปใช้งานได้ฟรี มีทั้ง version ที่เป็น Zip file ของ Virtual machine หรือจะ svn load มาติดตั้งเองก็ได้ครับ
ถึงแม้จะไม่ใช่เรื่อง JAIN-SIP โดยตรง แต่มันก็มีส่วนเกี่ยวข้องกัน สาเหตุที่ผมสนใจเจ้า JAIN-SIP ก็เพราะว่า ผมต้องการจะสร้าง Services สักตัวบนระบบ IMS แต่ว่า การจะเขียน Services ได้นั้น มันต้องเข้าใจการทำงานของ Application Server (AS) ในระบบ IMS เสียก่อน ซึ่งกว่าจะไปถึงจุดนั้นผมก็เลย ต้องมาทำงานกับส่วนพื้นฐานของ SIP Signaling นั่นก็คือหัดใช้ API ของ JAIN-SIP นั่นเอง
จริง ๆ แล้วมันก็มีหลายภาษาที่ทำได้ แต่ในเวลานี้ ผมขอเลือก Java ดีกว่าครับ :-)
I'm student in Thailand. I have problem with OpenIMS in HSS when I start HSS
tum@tum-laptop:/opt/OpenIMSCore/FHoSS/deploy$ sh startup.sh
Building Classpath
Classpath is lib/xml-apis.jar:lib/xercesImpl.jar:lib/xerces-2.4.0.jar:lib/xalan-2.4.0.jar:lib/tomcat-util.jar:lib/tomcat-http.jar:lib/tomcat-coyote.jar:lib/struts.jar:lib/servlets-default.jar:lib/servlet-api.jar:lib/naming-resources.jar:lib/naming-factory.jar:lib/mysql-connector-java-3.1.12-bin.jar:lib/mx4j-3.0.1.jar:lib/log4j.jar:lib/junitee.jar:lib/junit.jar:lib/jta.jar:lib/jsp-api.jar:lib/jmx.jar:lib/jdp.jar:lib/jasper-runtime.jar:lib/jasper-compiler.jar:lib/jasper-compiler-jdt.jar:lib/hibernate3.jar:lib/ehcache-1.1.jar:lib/dom4j-1.6.1.jar:lib/commons-validator.jar:lib/commons-modeler.jar:lib/commons-logging.jar:lib/commons-logging-1.0.4.jar:lib/commons-lang.jar:lib/commons-fileupload.jar:lib/commons-el.jar:lib/commons-digester.jar:lib/commons-collections-3.1.jar:lib/commons-beanutils.jar:lib/cglib-2.1.3.jar:lib/catalina.jar:lib/catalina-optional.jar:lib/c3p0-0.9.1.jar:lib/base64.jar:lib/asm.jar:lib/asm-attrs.jar:lib/antlr-2.7.6.jar:lib/FHoSS.jar::log4j.properties:..
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: logs/hss.server.log (Permission denied)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:192)
at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:272)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:151)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:247)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:123)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:87)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:645)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:603)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:500)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:406)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:432)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:460)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:113)
at org.apache.log4j.Logger.getLogger(Logger.java:94)
at de.fhg.fokus.hss.main.HSSContainer.<clinit>(HSSContainer.java:61)
log4j:ERROR setFile(null,true) call failed.
java.io.FileNotFoundException: logs/hss.activities.log (Permission denied)
at java.io.FileOutputStream.openAppend(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:192)
at java.io.FileOutputStream.<init>(FileOutputStream.java:116)
at org.apache.log4j.FileAppender.setFile(FileAppender.java:272)
at org.apache.log4j.FileAppender.activateOptions(FileAppender.java:151)
at org.apache.log4j.DailyRollingFileAppender.activateOptions(DailyRollingFileAppender.java:206)
at org.apache.log4j.config.PropertySetter.activate(PropertySetter.java:247)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:123)
at org.apache.log4j.config.PropertySetter.setProperties(PropertySetter.java:87)
at org.apache.log4j.PropertyConfigurator.parseAppender(PropertyConfigurator.java:645)
at org.apache.log4j.PropertyConfigurator.parseCategory(PropertyConfigurator.java:603)
at org.apache.log4j.PropertyConfigurator.configureRootCategory(PropertyConfigurator.java:500)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:406)
at org.apache.log4j.PropertyConfigurator.doConfigure(PropertyConfigurator.java:432)
at org.apache.log4j.helpers.OptionConverter.selectAndConfigure(OptionConverter.java:460)
at org.apache.log4j.LogManager.<clinit>(LogManager.java:113)
at org.apache.log4j.Logger.getLogger(Logger.java:94)
at de.fhg.fokus.hss.main.HSSContainer.<clinit>(HSSContainer.java:61)
log4j:ERROR Either File or DatePattern options are not set for appender [LOGFILE2].
2011-08-04 18:40:16,041 INFO de.fhg.fokus.hss.main.TomcatServer - startTomcat Tomcat-Server is started.
2011-08-04 18:40:16,737 ERROR org.apache.coyote.http11.Http11Protocol - init Error initializing endpoint
java.net.BindException: Address already in use:8080
at org.apache.tomcat.util.net.PoolTcpEndpoint.initEndpoint(PoolTcpEndpoint.java:297)
at org.apache.coyote.http11.Http11Protocol.init(Http11Protocol.java:142)
at org.apache.catalina.connector.Connector.initialize(Connector.java:928)
at org.apache.catalina.startup.Embedded.start(Embedded.java:794)
at de.fhg.fokus.hss.main.TomcatServer.startTomcat(TomcatServer.java:128)
at de.fhg.fokus.hss.main.HSSContainer.<init>(HSSContainer.java:74)
at de.fhg.fokus.hss.main.HSSContainer.main(HSSContainer.java:110)
2011-08-04 18:40:16,739 ERROR de.fhg.fokus.hss.main.HSSContainer - <init> Exception occured during starting Tomcat!
Exiting from HSS...
LifecycleException: Protocol handler initialization failed: java.net.BindException: Address already in use:8080
at org.apache.catalina.connector.Connector.initialize(Connector.java:930)
at org.apache.catalina.startup.Embedded.start(Embedded.java:794)
at de.fhg.fokus.hss.main.TomcatServer.startTomcat(TomcatServer.java:128)
at de.fhg.fokus.hss.main.HSSContainer.<init>(HSSContainer.java:74)
at de.fhg.fokus.hss.main.HSSContainer.main(HSSContainer.java:110)