QoS
-> Mobile Node in UMTS -> SGSN + GGSN
-> WLAN -> IEEE 802.11e
PDP = Packet Data Protocol
PDP = Packet Data Protocol หรือพูดง่าย ๆ ก็คือ โครงสร้าง packet ข้อมูล เช่นพวก IP, X.25 และ Frame Relay เป็นต้น ที่อยู่ที่ Serving GPRS Support Node (SGSN) และ Gateway GPRS Support Node (GGSN) ซึ่งจะเก็บ ข้อมูล session ของผู้ใช้งาน เมื่อผู้ใช้งานได้เข้ามาใช้งานในระบบ ก่อนที่ผู้ใช้ (mobile node) ต้องการที่จะใช้งาน GPRS ผู้ใช้จะต้อง เชื่อมต่อ เข้ากับระบบเครือข่าย และ ทำการ active PDP context ซึ่งการ activate PDP context ก็คือ การสร้าง โครงสร้าง packet ข้อมูล ใน SGSN ที่ผู้ใช้ กำลังใช้งานอยู่ในขณะนั้น และ GGSN จะคอยเก็บจุดที่ผู้ใช้ได้ทำการเชื่อมต่อกับระบบ
สรุปง่าย ๆ
PDP Context = IP Address ของ Mobile Node + QoS Profile ( e.g., maximum delay, jitter etc..)
วันพฤหัสบดีที่ 28 พฤษภาคม พ.ศ. 2552
วันอังคารที่ 19 พฤษภาคม พ.ศ. 2552
Charmap + Ascii
ปรกติแล้วผมเป็นคนที่พิมพ์ได้รวดเร็ว แต่พอมาอยู่ที่ฝรั่งเศส เจอ Layout Keyboard แบบฝรั่งเศสทำให้พิมพ์ช้าลงไปมาก แทบจะเรียกว่าจิ้มเลยก็ว่าได้ แต่ถ้าจะ switch กับมาใช้ Layout แบบ US. ก็จะติดปัญหาที่พิมพ์อักขระ บางตัว ของภาษาฝรั่งเศสไม่ได้ ก็เลยใช้วิธีพิมพ์จาก Ascii code ของมันซะเลย หมดเรื่อง
วิธีพิมพ์ตัวอักษร โดยใช้ Ascii code นั้นก็ง่ายนิดเีดียว เพียงแค่ กดปุ่ม Alt ค้างไว้ แล้วก็ตามด้วยรหัส Ascii
ดังตัวอย่าง ข้างล่าง =>
backquote = Alt + 96
a\ = Alt + 0224
a/ = Alt + 0225
c = Alt + 0231
e\ = Alt + 0232
e/ = Alt + 0233
หากอยากรู้เพิ่มเติมว่า Ascii ของอักขระพิเศษตัวอื่น ๆ คืออะไร สามารถดูได้จาก
โปรแกรม charmap ใน windows ได้เลยครับ
วิธีพิมพ์ตัวอักษร โดยใช้ Ascii code นั้นก็ง่ายนิดเีดียว เพียงแค่ กดปุ่ม Alt ค้างไว้ แล้วก็ตามด้วยรหัส Ascii
ดังตัวอย่าง ข้างล่าง =>
backquote = Alt + 96
a\ = Alt + 0224
a/ = Alt + 0225
c = Alt + 0231
e\ = Alt + 0232
e/ = Alt + 0233
หากอยากรู้เพิ่มเติมว่า Ascii ของอักขระพิเศษตัวอื่น ๆ คืออะไร สามารถดูได้จาก
โปรแกรม charmap ใน windows ได้เลยครับ
วันจันทร์ที่ 23 กุมภาพันธ์ พ.ศ. 2552
The Future Tenses
เริ่มจากภาษาอังกฤษก่อน คำว่า "จะ" มี 2 คำ คือ will กับ be going to
แตกต่างกันดังนี้
เราใช้ will เมื่อตัดสินใจว่ากำลังจะทำบางอย่างในขณะที่กำลังพูดอยู่ แต่การใช้ be going to เป็นการใช้เมื่อมีการเตรียมการล่วงหน้า
เปรียบเทียบการใช้
- " George phoned while you were out " " OK. I'll phone him back "
แต่ " George phoned while you were out " " Yes, I know. I'm going to phone him back "
หากเปรียบเทียบกับภาษาฝรั่งเศส
Will -> Futur Simple
Be going to -> Futur proche (Aller + Infinitif) วิธีจำง่าย ๆ ก็คือ aller แปลว่าไป ก็คือ going to ^_^
สรุปอีกครั้ง
Will -> ไม่คิดไว้ก่อน, คาดการไม่มีหลักฐาน => futur sim -> เกิดไกล ออกไป, สั่ง, ใช้กับภาษาเขียนมากกว่าพูด
going to -> วางแผนไว้ก่อน, คาดการมีหลักฐาน => futur proche -> เกิดเร็ว ๆ นี้, ตั้งใจจะทำ, ใช้กับภาษาพูดมากกว่าเขียน
ตัวอย่างเช่น
I will have a baby. -> J'aurai un enfant. (อาจจะมีลูกวันพรุ่ง หรือ วันอื่น ๆ อีกนาน ในอนาคต ไม่ได้วางแผนคาดคิดไว้ คือ มีลูกแน่ ๆ แต่ยังไม่รู้ว่าวันไหน อีกนานแค่ไหน)
I'm going to have a baby. -> Je vais avoir un enfant. (จะมีลูกเร็ว ๆ นี้แน่ ๆ วางแผนไว้แล้ว ไม่ได้ อาจมีหลักฐาน เช่นหลังจากไปพบแพทย์เสร็จ ก็พูดประโยคนี้ โดยใช้ Futur Proche ได้เลย )
ทิ้งท้าย
Futur proche -> aller -> be going to -> วางแผนไว้แล้ว เกิดเร็วนี้ ๆ
Futur simple -> will -> ไม่ได้วางแผนไว้ ระยะเวลาที่ จะทำ นานกว่า futur proche
แตกต่างกันดังนี้
เราใช้ will เมื่อตัดสินใจว่ากำลังจะทำบางอย่างในขณะที่กำลังพูดอยู่ แต่การใช้ be going to เป็นการใช้เมื่อมีการเตรียมการล่วงหน้า
เปรียบเทียบการใช้
- " George phoned while you were out " " OK. I'll phone him back "
แต่ " George phoned while you were out " " Yes, I know. I'm going to phone him back "
หากเปรียบเทียบกับภาษาฝรั่งเศส
Will -> Futur Simple
Be going to -> Futur proche (Aller + Infinitif) วิธีจำง่าย ๆ ก็คือ aller แปลว่าไป ก็คือ going to ^_^
สรุปอีกครั้ง
Will -> ไม่คิดไว้ก่อน, คาดการไม่มีหลักฐาน => futur sim -> เกิดไกล ออกไป, สั่ง, ใช้กับภาษาเขียนมากกว่าพูด
going to -> วางแผนไว้ก่อน, คาดการมีหลักฐาน => futur proche -> เกิดเร็ว ๆ นี้, ตั้งใจจะทำ, ใช้กับภาษาพูดมากกว่าเขียน
ตัวอย่างเช่น
I will have a baby. -> J'aurai un enfant. (อาจจะมีลูกวันพรุ่ง หรือ วันอื่น ๆ อีกนาน ในอนาคต ไม่ได้วางแผนคาดคิดไว้ คือ มีลูกแน่ ๆ แต่ยังไม่รู้ว่าวันไหน อีกนานแค่ไหน)
I'm going to have a baby. -> Je vais avoir un enfant. (จะมีลูกเร็ว ๆ นี้แน่ ๆ วางแผนไว้แล้ว ไม่ได้ อาจมีหลักฐาน เช่นหลังจากไปพบแพทย์เสร็จ ก็พูดประโยคนี้ โดยใช้ Futur Proche ได้เลย )
ทิ้งท้าย
Futur proche -> aller -> be going to -> วางแผนไว้แล้ว เกิดเร็วนี้ ๆ
Futur simple -> will -> ไม่ได้วางแผนไว้ ระยะเวลาที่ จะทำ นานกว่า futur proche
วันพฤหัสบดีที่ 22 มกราคม พ.ศ. 2552
Packet Data Protocol (PDP)
Packet Data Protocol (PDP)
PDP ก็คือ protocol ที่ใช้ในการแลกเปลี่ยนข้อมูลระหว่าง User Equipment (UE) กับ Network เช่น P-CSCF ใน IMS โดยมีวัตถุประสงค์หลัก 2 อย่างคือ
1. กำหนด IPv4 / IPv6 Address ให้กับ Mobile terminal คล้าย ๆ กับ DHCP
2. กำหนด logical connection กับ QoS profile และกำหนดค่า parameter ต่าง ๆ เพื่อใช้ใน PDP Context ของ Mobile terminal ในเครือข่าย UMTS
PDP ก็คือ protocol ที่ใช้ในการแลกเปลี่ยนข้อมูลระหว่าง User Equipment (UE) กับ Network เช่น P-CSCF ใน IMS โดยมีวัตถุประสงค์หลัก 2 อย่างคือ
1. กำหนด IPv4 / IPv6 Address ให้กับ Mobile terminal คล้าย ๆ กับ DHCP
2. กำหนด logical connection กับ QoS profile และกำหนดค่า parameter ต่าง ๆ เพื่อใช้ใน PDP Context ของ Mobile terminal ในเครือข่าย UMTS
วันพุธที่ 21 มกราคม พ.ศ. 2552
Quality of Services #2
มีบทความทางวิชาการเกีึ่ยวกับ QoS ออกมามากมาย โดยเฉพาะ IntServ กับ Diffserv แต่ ผมก็เพิ่งรู้ไม่นานมานี้เองว่า
อ่าน QoS มาได้ระยะหนึ่ง นึกว่า จะมีใช้งานจริงกันเยอะ แต่จริง ๆ QoS นั้นเป็นเพียงแค่ทฤษฎีเป็นส่วนใหญ่ ส่วนที่ใช้งานจริง ยกตัวอย่างเช่น Skype ที่ว่าเสียงชัด ๆ ตอนแรกผมก็เข้าใจว่ามีการทำ QoS ด้วย แต่จริง ๆ แล้ว ที่ประสิทธิภาพของมันดีนั้น เกิดจากการที่ตัว Application ของมันเอง ใช้ bandwidth ที่น้อย (เพราะมีการ compression ที่ดี) รวมถึง การใช้ สถาปัตยกรรมแบบ P2P ด้วย ทำให้เสียงดังฟังชัด
แต่ถ้าพูดในเรื่องของการทำ QoS กันจริง ๆ ก็ยังไปได้ไม่ไกล ก็หวังว่าสักวันหนึ่งเราคงจะมี QoS ดี ๆ ใช้กันนะครับ
- IntServ ใช้วิธีการจองเส้นทางก่อนที่จะทำ QoS ซึ่งมีความยุ่งยากซับซ้อนมาก ซึ่งจะเอามา deployment ใช้งานจริง ๆ แบบ multi-domain ไม่ได้ พูดง่าย ๆ ก็คือ Intserv เป็น idea อย่างหนึ่งในการทำ QoS มีการ implementation จริง ๆ ที่สามารถนำไปใช้ได้ แต่ในโลกของ internet ปัจจุบันนี้ ไม่ได้มีการนำ Intserv ไปใช้งานแต่อย่างใด (นอกจากจะมีใครเอาไปใช้ส่วนตัว) หรือพูดง่าย ๆ ว่ามีเฉพาะ idea + implementation แต่ไม่มีการนำไป deployment
- DiffServ ใช้วิธีการให้คะแนน โดยติด Tag (รวมถึงการ Mark ที่ ToS ของ IP header ด้วย) วิธีการนี้ไม่ซับซ้อนมาก มีการ deployment ไปใช้งานจริง แต่ก็เฉพาะ ระหว่าง ISP บางแห่งเท่านั้น user ตามบ้าน ๆ อย่างเรา ไม่สามารถกำหนดเองได้ โดยมีการ กำหนด policy ระหว่าง border router ด้วยกัน
อ่าน QoS มาได้ระยะหนึ่ง นึกว่า จะมีใช้งานจริงกันเยอะ แต่จริง ๆ QoS นั้นเป็นเพียงแค่ทฤษฎีเป็นส่วนใหญ่ ส่วนที่ใช้งานจริง ยกตัวอย่างเช่น Skype ที่ว่าเสียงชัด ๆ ตอนแรกผมก็เข้าใจว่ามีการทำ QoS ด้วย แต่จริง ๆ แล้ว ที่ประสิทธิภาพของมันดีนั้น เกิดจากการที่ตัว Application ของมันเอง ใช้ bandwidth ที่น้อย (เพราะมีการ compression ที่ดี) รวมถึง การใช้ สถาปัตยกรรมแบบ P2P ด้วย ทำให้เสียงดังฟังชัด
แต่ถ้าพูดในเรื่องของการทำ QoS กันจริง ๆ ก็ยังไปได้ไม่ไกล ก็หวังว่าสักวันหนึ่งเราคงจะมี QoS ดี ๆ ใช้กันนะครับ
วันจันทร์ที่ 19 มกราคม พ.ศ. 2552
Policy-based Admission Control
Policy-based Admission Control
PEP - Policy Enforcement Point เป็นจุดตรวจสอบข้อมูล ซึ่งจะรับ RSVP request มาจาก router (จากผู้ใช้ที่ขอบริการ QoS) โดยใน request นั้นจะระบุข้อมูลต่าง ๆ สำหรับ flow ข้อมูล เช่น ต้องการ bandwidth เท่าไร จากนั้นก็จะส่งต่อไปให้ PDP ตัดสินใจ โดยส่ง Policy request ไปให้
PDP - Policy Decision Point จะตรวจสอบ request กับ resource ที่มีอยู่ในปัจจุบัน รวมถึง policy ของ user คนนั้น ๆ ว่าจะยอมให้ใช้หรือไม่ โดยส่ง Policy response ตอบกลับมาหา PEP

COPS เป็น protocol การเชื่อมต่อระหว่าง PDP และ PEP โดยใช้ใน IMS R7 แต่ปัจจุบันได้ถูกยกเลิกและใช้ Diameter (RFC 3588) แทนแล้ว
PEP - Policy Enforcement Point เป็นจุดตรวจสอบข้อมูล ซึ่งจะรับ RSVP request มาจาก router (จากผู้ใช้ที่ขอบริการ QoS) โดยใน request นั้นจะระบุข้อมูลต่าง ๆ สำหรับ flow ข้อมูล เช่น ต้องการ bandwidth เท่าไร จากนั้นก็จะส่งต่อไปให้ PDP ตัดสินใจ โดยส่ง Policy request ไปให้
PDP - Policy Decision Point จะตรวจสอบ request กับ resource ที่มีอยู่ในปัจจุบัน รวมถึง policy ของ user คนนั้น ๆ ว่าจะยอมให้ใช้หรือไม่ โดยส่ง Policy response ตอบกลับมาหา PEP

COPS เป็น protocol การเชื่อมต่อระหว่าง PDP และ PEP โดยใช้ใน IMS R7 แต่ปัจจุบันได้ถูกยกเลิกและใช้ Diameter (RFC 3588) แทนแล้ว
JAIN-SIP #1
JAIN-SIP คืออะไร?
Jain sip คือ Java api integrated network หรือ เรียกง่าย ๆ ว่า เป็น API ของ java ที่ใช้ในการเีขียนโปรแกรมในระดับ low-level ที่ใช้จัดการ signaling multimedia ที่ใช้งาน SIP protocol นั่นเอง
Jain sip แตกย่อยออกมา มากมาย เช่น jain sip servlet, jslee ไว้ มีโอกาสได้ทดลองจะเอามาเขียนไว้นะครับ
เรามาทดลองเล่น jain-sip เลยดีกว่า
1. load jain-sip จาก https://jain-sip.dev.java.net/ จากนั้นก็ upzip ออกมา
2. load apache ant มาจาก http://ant.apache.org/ จากนั้นก็ unzip ออกมา แล้วก็ทำการ set environment ดังนี้
=> ANT_HOME=C:\Program Files\Java\apache-ant-1.7.1
PATH= path เก่าแล้วก็เพิ่ม C:\Program Files\Java\apache-ant-1.7.1\bin เข้าไป
3. เข้าไปใน folder E:\java\sip\jain-sip\ (ที่ได้ unzip jain-sip ไว้) แล้ว ant (make) มันซะเลย
4. ทดลอง run IMS application เข้าไปที่ folder E:\java\sip\jain-sip\src\examples\ims
แล้วก็สั่ง ant shootme
5. จะเจอ error ดังนี้ =>
6. หลังจากที่ผมใช้เวลาอยู่หลายชั่วโมง ในการ หา error นี้ ก็ได้ความรู้ใหม่ โดยการทำดังนี้
สั่ง ant shootme -debug จะพบว่ามันหา lib ไม่เจอ ดังนั้นจึงต้องแก้ lib path ให้มันใหม่ โดยการ แก้ file E:\java\sip\jain-sip\src\examples\ims\build.xml
จากเดิม
< property name="log4j_jar" value="${root}/lib/${log4j}" >
< property name="junit_jar" value="${root}/lib/${junit}" >
เป็น
< property name="log4j_jar" value="${root}/${log4j}" >
< property name="junit_jar" value="${root}/${junit}" >
7. คราวนี้ก็ สั่ง ant shootme แล้วก็เปิด console อีกหน้าต่างสั่ง ant shootist
เราก็จะเห็น IMS message วิ่งวนไป ๆ มา ๆ หน้า console แล้ว

ส่วนเรื่องความหมายของ message ขอแยกไว้เป็นบทความหน้าแล้วกันนะครับ :-)
Jain sip คือ Java api integrated network หรือ เรียกง่าย ๆ ว่า เป็น API ของ java ที่ใช้ในการเีขียนโปรแกรมในระดับ low-level ที่ใช้จัดการ signaling multimedia ที่ใช้งาน SIP protocol นั่นเอง
Jain sip แตกย่อยออกมา มากมาย เช่น jain sip servlet, jslee ไว้ มีโอกาสได้ทดลองจะเอามาเขียนไว้นะครับ
เรามาทดลองเล่น jain-sip เลยดีกว่า
1. load jain-sip จาก https://jain-sip.dev.java.net/ จากนั้นก็ upzip ออกมา
2. load apache ant มาจาก http://ant.apache.org/ จากนั้นก็ unzip ออกมา แล้วก็ทำการ set environment ดังนี้
=> ANT_HOME=C:\Program Files\Java\apache-ant-1.7.1
PATH= path เก่าแล้วก็เพิ่ม C:\Program Files\Java\apache-ant-1.7.1\bin เข้าไป
3. เข้าไปใน folder E:\java\sip\jain-sip\ (ที่ได้ unzip jain-sip ไว้) แล้ว ant (make) มันซะเลย
4. ทดลอง run IMS application เข้าไปที่ folder E:\java\sip\jain-sip\src\examples\ims
แล้วก็สั่ง ant shootme
5. จะเจอ error ดังนี้ =>
[java] javax.sip.PeerUnavailableException: The Peer SIP Stack: gov.nist.javax.sip.SipStackImpl could not be instantiated. Ensure the Path Name has been set
6. หลังจากที่ผมใช้เวลาอยู่หลายชั่วโมง ในการ หา error นี้ ก็ได้ความรู้ใหม่ โดยการทำดังนี้
สั่ง ant shootme -debug จะพบว่ามันหา lib ไม่เจอ ดังนั้นจึงต้องแก้ lib path ให้มันใหม่ โดยการ แก้ file E:\java\sip\jain-sip\src\examples\ims\build.xml
จากเดิม
< property name="log4j_jar" value="${root}/lib/${log4j}" >
< property name="junit_jar" value="${root}/lib/${junit}" >
เป็น
< property name="log4j_jar" value="${root}/${log4j}" >
< property name="junit_jar" value="${root}/${junit}" >
7. คราวนี้ก็ สั่ง ant shootme แล้วก็เปิด console อีกหน้าต่างสั่ง ant shootist
เราก็จะเห็น IMS message วิ่งวนไป ๆ มา ๆ หน้า console แล้ว

ส่วนเรื่องความหมายของ message ขอแยกไว้เป็นบทความหน้าแล้วกันนะครับ :-)
สมัครสมาชิก:
บทความ (Atom)