อุปกรณ์ที่ใช้ในการทดลอง
1. VoIP Phone adapter Linksys :PAP2T จำนวน 2 เครื่อง
2. เครื่องโทรศัพท์ แบบอนาลอก จำนวน 2 เครื่อง
3. Hub 100Mbit/s with at least 5 ports or equivalent
4. PC ( Trixbox CE installed) ทำหน้าที่เป็น server จำนวน 1 เครื่อง
5. PC ( Wireshark installed )ทำหน้าที่เป็น protocol analyser
วัตถุประสงค์ในการทดลอง
1. เพื่อทดลองตั้งค่าตัวแปรของระบบอุปกรณ์ VoIP
2. เพื่อทดลองการสื่อสารด้วยเสียงผ่านระบบ อินเตอร์เน็ต
3. เพื่อศึกษาขั้นตอนของโปรโตคอลแบบ SIP
Equipment setup diagram
1.Basics of VoIP
2.Overview of SIP สามารถหาอ่านที่ http://www.vcharkarn.com/varticle/17875
การทดลอง Setup TRIXBOX CE server
1. trixbox CE เป็น IP-PBX ซอฟท์แวร์ที่สามารถดาวโหลดได้ฟรี ที่ www.trixbox.org ประกอบด้วยส่วนประกอบหลัก คือ asterisk (www.asterisk.org) และ freepbx (www.freepbx.org) asterisk จะเป็นแกนหลักของระบบ ส่วน freepbx จะเป็น GUI ช่วยให้การจัดการระบบง่ายยิ่งขึ้น
2. Hardware สำหรับระบบที่สามารถรองรับช่องสัญญานได้ประมาณ 10 ช่องสัญญาณพร้อมๆกันนั้น ใช้ PC ที่มี minimum spec. ดังนี้
- CPU PIII or P4 ความเร็ว 1 GHz
- RAM 1 GB
- HD 40 GB
- LAN card 100 Mbps
- TDM400P, TDM800P
จำนวนสายนอก (FXO) และจำนวนสายใน (FXS) ขึ้นอยู่กับความต้องการของหน่วยงานว่า สายนอก PSTN จำนวนเท่าไร สายนอก SIP trunk จำนวนเท่าไร ส่วนสายในก็เช่นเดียวกันว่าจะใช้ softphone หรือhardphone หรือใช้โทรศัพท์แบบดั้งเดิมโดยใช้ตัวแปลง ATA
3. trixbox ce ที่ download มานั้นจะมี CentOS 5.2 เป็นส่วนประกอบด้วย ดังนั้น สามารถติดตั้งได้เลย ในส่วน softphone นั้น มี free อยู่หลายตัว เช่น x-lite (www.counterpath.com)
เมื่อ PC boot จาก trixbox CD ขึ้นมาก็จะเหมือนกันกับการติดตั้ง Linux ทั่วๆ ไป กด F2 เพื่อดู options ต่างๆ เช่น การcheck แผ่น cd ว่ามี error หรือไม่ เมื่อ check เสร็จเรียบร้อยแล้ว ถ้าทุกอย่าง ok ให้กด F1 แล้วกด enter key เพื่อทำการติดตั้ง
เลือก keyboard type = us
เลือก time zone = Asia/Bangkok
กำหนด root password สำหรับ login เข้าระบบ จำ password ให้ดี
installer จะทำติดตั้ง trixbox ce 2.6.2.2 ลงใน harddisk
หลังจากติดตั้งเสร็จ ระบบจะ reboot แล้วจะได้ login console ดังรูป
login = root
password = password ที่ได้กำหนดไว้ระหว่างการติดตั้ง
เมื่อ login เข้าสู่ระบบแล้วให้พิมพ์คำสั่ง help-trixbox ระบบจะแสดงคำสั่งต่างๆ สำหรับปรับแต่งระบบ
เนื่องจากระบบเรายังไม่มี fixed ip address ดังนั้นจะใช้คำสั่ง system-config-network เพื่อกำหนด ip address
เลือก eth0 เพื่อกำหนด ip address
สำหรับเครื่องที่ติดตั้ง trixbox จะต้องกำหนดให้เป็น static ip address
หลังจากกำหนด ip address ให้เครื่องที่ติดตั้ง trixbox แล้วให้ run อีก command คือ
#genzaptelconf เพื่อให้ trixbox คอนฟิก interface card แล้ว restart โดยใช้คำสั่ง #shutdown -r 0
เมื่อเครื่อง start ขึ้นมาใหม่เราจะเห็น welcome message และเราจะสามารถใช้ web browser connect
มาที่เครื่องนี้เพื่อใช้งาน trixbox ได้
การเชื่อมต่อสายนอก PSTN ( ตัวอย่าง )
สภาพแวดล้อมที่จะติดตั้ง IP-PBX ของเรามีโทรศัพท์จากองค์การโทรศัพท์ 1 เลขหมายและมี ADSL 1 port
เป็นระบบ dynamic IP address
PSTN Line : 1 เลขหมายจากองค์การโทรศัพท์
ADSL Router : dynamic IP address จากองค์การโทรศัพท์
internal IP address = 192.168.1.1
dns server (cache) = 192.168.1.1
dhcp provides IP address 192.168.1.10 - 192.168.1.99
IP-PBX IP address : 192.168.1.100
เลขหมายภายใน
แบบใช้กับโทรศัพท์ธรรมดา 1 เลขหมาย : เลขหมาย 2000
แบบใช้กับ x-lite softphone 5 เลขหมาย : เลขหมาย 3000 - 3004
2. การคอนฟิกเลขหมายภายในแบบใช้กับโทรศัพท์ธรรมดา
หลังจากติดตั้ง IP-PBX เรียบร้อยแล้ว โดยมี IP address = 192.168.1.100 ในตอนนี้ เราจะใช้ PC อีกตัวหนึ่ง connect ไปที่ IP-PBX จะเห็นหน้าแรกดังรูปข้างล่างนี้
หน้าแรกจะเป็นหน้าสำหรับ user ทั่วๆ ไป ให้คลิก "switch" ตรงมุมขวาบนจะได้ pop-up ให้ใช้
login=maint password=password ซึ่งเป็น default login เราสามารถเปลี่ยนในภายหลังได้ เราจะเข้ามา
ที่หน้าของ admin ที่จะสามารถคอนฟิกระบบได้ ในหน้านี้เราสามารถดู System Status, ติดตั้งหรือลบ
หรือ update packages, คอนฟิก PBX เป็นต้น
คลิก "PBX" -> "PBX Settings" ก็จะได้หน้าข้างล่างนี้
คลิก "Extensions" -> Add ZAP Extension ZAP Extension คือเลขหมายภายในที่ใช้กับโทรศัพท์
แบบธรรมดาซึ่งเราจะต่อสายออกมาจาก TDM400P card (ในตอนที่ 2 ที่เราติดตั้ง TDM400P ch.1
จะเป็น FXO ซึ่งใช้ต่อไปสายนอกจากองค์การโทรศัพท์ channel 2 จะเป็น FXS ซึ่งเป็นสายในต่อกับ
โทรศัพท์แบบธรรมดา) ในขั้นนี้เราจะคอนฟิกแบบง่ายๆ คือกำหนด parameter ที่จำเป็นเท่านั้น คือ
User Extension = 2000 (ตามที่เราวางแผนไว้)
Dispaly Name = Lek (แล้วแต่จะกำหนด อาจจะเป็น Operator, Secretary, etc)
channel =2 (ซึ่งเป็น FXS)
แล้วคลิก "Submit" ที่ด้านล่างสุดของหน้า
หลังจากคลิก "Submit" แล้ว เราจะต้องคลิกเพื่อยืนยันอีก 2 ครั้งเพื่อให้คอนฟิกใหม่มีผล ตามรูปข้างล่าง
ในที่สุดเราก็ได้มา 1 เลขหมายภายใน คือ เลขหมาย 2000
3. คอนฟิกเลขหมายภายในที่ใช้กับ softphone หรือ hardphone
เราจะต้องคอนฟิกเลขหมายภายในอีก 5 เลขหมาย โดยใช้ softphone x-lite ทั้งหมด
คลิก "Extensions" -> Add SIP Extension SIP Extension คือ เลขหมายภายในที่ใช้ SIP
protocol จะใช้กับ softphone หรือ hardphone ก็ได้ เราจะคอนฟิกแบบง่ายๆ ดังนี้
User Extension = 3000 (ตามที่กำหนดไว้)
Dispaly Name = Yai (ชื่อผู้ใช้)
secret = 1234 (เป็น password อย่าลืม)
คลิก "Submit" ที่ด้านล่างของหน้า แล้วอย่าลืมคลิกยืนยันอีก 2 ครั้ง
เราก็จะได้หมายเลขภายในอีก 1 หมายเลข คือ เลขหมาย 3000
สำหรับเลขหมาย 3001 - 3004 ก็คอนฟิกแบบเดียวกัน
4. คอนฟิก softphone
ให้ download x-lite จาก www.counterpath.com แล้วติดตั้งบนเครื่องที่จะใช้งาน
4. คอนฟิก softphone
ให้ download x-lite จาก www.counterpath.com แล้วติดตั้งบนเครื่องที่จะใช้งาน
x-lite สามารถ register กับ trixbox ได้
ถึงตอนนี้เลขหมาย 2000 และเลขหมาย 3000 ก็สามารถหมุนหากันและคุยกันได้แล้ว
1. ความต้องการเบื้องต้น (แบบง่าย) จากเลขหมายภายใน ถ้าต้องการต่อสายไปภายนอก เรากำหนด ดังนี้
- ตัด 9 เพื่อต่อไปยังผ่าน PSTN ขององค์การโทรศัพท์
- ตัด 6 เพื่อต่อไปยังโครงข่าย VoIP ของ mouthmun.com
2. คอนฟิก PSTN trunk
คลิก PBX -> PBX Settings -> Trunks
คลิก Add ZAP Trunk
Outbound Caller ID = หมายเลขโทรศัพท์ขององค์การโทรศัพท์ที่เรากำหนดให้เป็น PSTN trunk
Maximum Channels =1 (เพราะเรามี 1 ช่องสัญญาณเท่านั้น)
Dial Rules = ปล่อยว่าง หรือใส่ "." ดังรูป (หมายถึง มีหมายเลขอะไรมาก็ส่งออกไปตามนั้น)
trunk name = 1 แล้วคลิก "Submit Changes"
หลังจาก Add trunk แล้วจะต้อง Add outbound route ด้วย ระบบจะ process คอนฟิก outbound route
ก่อนจากนั้นจะ process คอนฟิก trunk
outbound route สำหรับ PSTN เราตั้งชื่อ = 9_outside
dial pattern = 9|. (หมายถึงการโทรออก PSTN จะต้องเริ่มด้วย 9 แล้วตามด้วยเลขหมาย
outbound route คอนฟิกจะตัด 9 ออกแล้วส่งเฉพาะเลขหมายไปยัง trunk
ในรูปที่แล้ว trunk รับอะไรมาก็ส่งออกทั้งหมด ***
trunk sequence = ZAP/1 (คือ trunk ที่เราคอนฟิกไว้แล้ว) จากรูปเราสามารถกำหนดได้ 3 trunks
ตามลำดับ trunk 1 ไม่ว่างก็ไป trunk 2, trunk 3 ตามลำดับ
*** ในการใช้งานจริงจะต้องกำหนดให้รัดกุมกว่านี้
ถึงตอนนี้เรากด 9 + เลขหมาย เราก็โทรออกไปได้แล้ว แล้วถ้ามีโทรเข้าล่ะจะไป ring ที่เลขหมาย
ภายในเลขหมายไหน อันนี้เราจะต้องกำหนด จากรูปข้างล่าง
description = From_PSTN คลิกเลือก extension 2000
โทรเข้าจะ ring ที่ extension 2000 ที่จริงแล้วเราสามารถคอนฟิกระบบตอบรับอัตโนมัติได้ สายเรียก
เข้ามาสามารถต่อเข้าไปหาเลขหมาย ที่ต้องการได้ ซึ่งจะได้กล่าวถึงในตอนต่อไป
3. ก่อนที่เราจะคอนฟิก SIP trunk เราจะต้องไป register กับ VoIP provider ซะก่อน
วันนี้ลองของ mouthmun กันก่อน มีเวลาจะลอง tot netcall และ cat2call
register แล้วได้ username = 0018057885 password หรือ secret = xxxxxxxx
จัดการเติมเงินให้เรียบร้อย ไม่มีเงินใช้ได้เฉพาะ PC to PC เท่านั้น ออกไป PSTN
หรือ Mobile network (AIS, DTAC, International ... ) ไม่ได้
คลิก Add SIP Trunk
outbound caller ID = "Vitaya" <0018057885> หรือ ตามที่คุณต้องการ
dial rules = ปล่อยว่าง หรือ "." ตามรูปข้างล่าง หมายถึง trunk รับอะไรมา
ส่งต่อให้ VoIP provider (mouthmun) ทั้งหมด
trunk name = mm
detail ดูตามรูปเลยครับ คุณเปลี่ยนเฉพาะ username และ secret เท่านั้น
อย่าลืมคอนฟิกขาเข้าด้วยครับ
register string = username:secret@voip.mouthmun.com
แล้วเราก็มาคอนฟิก outbound rule
dial patterns = 6|. (กด 6 + เลขหมายปลายทางตาม format ของ mouthmun)
trunk sequence = SIP/mm ที่คอนฟิกไว้ก่อนหน้านี้
มาถึงตอนนี้ก็สามารถทดสอบได้
โทรภายใน กดเลขหมายได้เลย
โทรสายนอกผ่าน PSTN ขององค์การ กด 9 ตามด้วยเลขหมาย
โทรสายนอกผ่าน VoIP ของ mouthmun กด 6 ตามด้วยเลขหมายตาม format ของ
mouthmun คือ country code + area code + เลขหมาย
โทรเข้าจาก PSTN ก็โทรหมายเลข 02 525 xxxx ระบบจะ ring ที่ extension 2000
โทรจาก VoIP ของ mouthmun ก็โทร 0018057885 ระบบจะ ring ที่ extension 2000
เช่นกัน
Setup อุปกรณ์ Linksys PAP2T
1. เชื่อมต่อโทรศัพท์แบบ Analog เข้าที่ช่อง Phone1 ของ PAP2T และเชื่อมต่อสาย Lan เข้ากับ Computer (Computer ควร Fix IP ให้อยู่ในวงเดียวกัน)
2. ยกหูโทรศัพท์กด **** (* 4 ครั้ง) จะได้ยินเสียงสังเคราะห์เป็นภาษาอังกฤษ
3. กำหนด IP ด้วยการกด 111# แล้วกด 192*168*1*3# และกด 1 เพื่อบันทึก
4. กำหนด Netmask ด้วยการกด 121# แล้วกด 255*255*255*0# และกด 1 เพื่อบันทึก
5. เปิด Internet Explorer เข้า URL: 192.168.1.3 Click ที่ Admin Login และ Switch To Advance View
6. เข้าที่ Menu System เลือกตามนี้
Enable Web Server: Yes
Enable Web Admin Access: Yes
Static IP: 192.168.1.3 (ได้ Set ไว้แล้วตามข้อ 3)
NetMask: 255.255.255.0 (ได้ Set ไว้แล้วตามข้อ 3)
เข้าที่ Menu Line 1 เลือกตามนี้
Line Enable: yes
Proxy: blank
Register: No
Make Call Without Reg.: Yes
Ans Call Without Reg.: Yes
User ID: 2001
Dial Plan: (<3001:3001@192.168.1.4:5060>) คือเมื่อกด 3001 จะ Dial ไปยังเครื่อง 192.168.1.4: 5060
Enable IP Dialing: Yes
จากนั้น Click [Save Settings]
PAP2T Site (3001)
Config เหมือน PAP2T Main (2001) เพียงแต่เปลี่ยน IP เป็น 192.168.1.4 , User ID: 3001 และ Dial Plan เป็น (<2001:2001@192.168.1.3:5060>)
เชื่อมต่อสาย Lan จากพอร์ตหนึ่งของHUB เข้ากับ Linksys PAP2T Main และ อีกพอร์ตหนึ่งเข้าที่ Linksys PAP2T อีกตัวหนึ่ง เสร็จแล้ว ลองยกหุ จะได้ยินเสียงไดอัลโทน เหมือนโทรศัพท์อนาลอก ลองเรียกจาก เครื่อง 2001 เข้า 3001 ดู ถ้า Config ถูกต้อง จะโทรหากันได้ปกติ
การวิเคราะห์ VoIP Calls โดยโปรแกรม Wireshark
To access the VoIP calls analysis use the menu entry "Telephony->VoIP Calls...". The current VoIP supported protocols are:
• SIP
• H323
• ISUP
• MGCP
• UNISTIM
with the corresponding RTP streams.
See VOIPProtocolFamily for an overview of the used VoIP protocols.
To try out this dialog, a small capture file containing a VoIP call can be found at SampleCaptures/rtp_example.raw.gz which contains an example H323call including H225, H245, RTP and RTCP packets.
List VoIP calls
The VoIP calls list shows the following information per call:
• Start Time: Start time of the call.
• Stop Time: Stop time of the call.
• Initial Speaker: The IP source of the packet that initiated the call.
• From: For H323 and ISUP calls, this is the calling number. For SIP calls, it is the "From" field of the INVITE. For MGCP calls, the EndpointID or calling number. For UNISTIM the Terminal ID.
• To: For H323 and ISUP calls, this is the called number. For SIP calls, it is the "To" field of the INVITE. For MGCP calls, the EndpointID or dialed number. For UNISTIM the dialed number.
• Protocol: Any of the protocols listed above
• Packets: Number of packets involved in the call.
• State: The current call state. The possible values are
o CALL SETUP: call in setup state (Setup, Proceeding, Progress or Alerting)
o RINGING: call ringing (only supported for MGCP calls)
o IN CALL: call is still connected
o CANCELLED: call was released before connect from the originated caller
o COMPLETED: call was connected and then released
o REJECTED: call was released before connect by the destination side
o UNKNOWN: call in unknown state
• Comment: An additional comment, this is protocol dependent. For H323 calls it shows if the call uses Fast Start or/and H245 Tunneling.
Filtering a call
To prepare a filter for a particular call, just select the desired call and press "Prepare Filter" button. This will create a filter in the Main Wireshark windows to filter the packets related to this call. This is specially useful when you want to connect ISUP calls according to some CIC value.
VoIP calls Graph analysis
To Graph analysis one or multiple calls from the VoIP List, select them from the list and then press the "Graph" button.
The Graph will show the following information:
• Up to Ten columns representing an IP address each one.
• All packets that belong to the same call are colorized with the same color
• An arrow showing the direction of each packet in the calls
• The label on top of the arrow shows message type. When available, it also shows the media codec.
• The RTP traffic is summarized in a wider arrow with the corresponded Codec.
• Shows the UDP/TCP source and destination port per packet.
• The comment column has protocol dependent information:
o H323:
Fast Start and H245 Tunneling ON/OFF for the packet.
The SETUP message shows the calling and called number
The RELEASE message shows the Q.931 Release cause code
o SIP:
Shows if the packet is a "Request" or a "Staus" message.
The INVITE message also shows the "From" and "To" fields
o ISUP:
The format is as follows: NetworkID-Originating Point Code -> NetworkID-Destination Point Code, CIC
o MGCP:
The MGCP Endpoint ID, and if the packet is a "Request" or "Response" message.
o UNISTIM:
Details of the message, and the sequence #.
o RTP:
Number of RTP packets in the stream, the duration in seconds and the SSRC field.
When clicking a packet in the Graph, the selected frame will be selected in the Main Wireshark window.
Playing VoIP calls
Note: For the moment, this feature works only for G711 A-Law and G711 u-Law RTP streams (other codecs not implemented).
To play the RTP audio stream of one or multiple calls from the VoIP List, select them from the list and then press the "Player" button:
Choose an initial value for the jitter buffer and then press the "Decode button". The jitter buffer emulated by Wireshark is a fixed size jitter buffer and can efficiently be used to reproduce what clients can effectively hear during the VoIP call.
You can now see all RTP streams available for the calls that you selected:
Note that all RTP packets that are dropped because of the jitter buffer are reported ("Drop by Jitter Buff"), as well as the packets that are out of sequence (Out of Seq).
Pressing the "Play" button plays the RTP stream from within Wireshark. A progress bar indicates the position in the stream and is synchronized amongst all RTP streams that are played.
สรุปผลการทดลอง
VOIP Phone ที่ใช้ในการทดลอง 1 ตัว จะมี 2 Port ซึ่งสามารถเสียบสาย LAN ได้ 2 สาย และสามารถเป็นตัวปล่อย Wireless ได้ ขั้นตอนในการติดตั้ง VOIP สามารถติดตั้งได้ตามขั้นตอนในคู่มือของ VOIP โปรแกรม Wireshark เป็นโปรแกรมที่สามารถบอกการทำงานของแต่ละ IP ได้ในการทดลองใช้ IP ที่มีการตั้งไว้ 2 IP คือ 192.168.0.10 กับ 192.168.0.12 ซึ่งมีตัว server คือ 192.168.0.123 และมีการใช้กราฟและ Player ในการดูข้อมูลของสัญญาณที่มีการสื่อสารกันระหว่างสาย 2 สายของโทรศัพท์ ซึ่งกราฟที่ได้จะแสดงผลเกี่ยวกับการแสดงสถานะต่างๆ ของสัญญาณและ Player จะมีการบันทึกข้อมูลที่เป็นเสียงที่สามารถฟังได้ทั้งสาย 2 สายที่มีการสนทนากัน
วิจารณ์ผลการทดลอง
ในการทดลองนี้เป็นการทดลองที่เกี่ยวกับการต่อสาย LAN ที่ตัวคอมพิวเตอร์กับสายโทรศัพท์ที่สามารถพูดคุยกันได้ โดยที่ไม่เสียค่าโทรศัพท์ขณะเล่นอินเทอร์เน็ต และเป็นการต่อโทรศัพท์ภายในที่สามารถติดต่อกันได้ ในการตั้งค่า IP ที่กำหนดตามวิธีการทดลอง และสามารถเช็คค่า IP ได้จากเครื่องโทรศัพท์ ซึ่งกดเครื่องหมาย **** และตามด้วยหมายเลข 110 ว่ามีค่า IP ตรงตามที่ต้องการหรือไม่ และเมื่อนำโปรแกรม Wireshark เป็นโปรแกรมที่สามารถบอกการทำงานของการส่งสัญญาณจากเครื่องโทรศัพท์เครื่องหนึ่งไปยังอีกเครื่องหนึ่ง ซึ่งจะมีตัว server เป็นตัวเชื่อมระหว่างสาย 2 สาย ว่ามีการติดต่อสามารถใช้เวลาเท่าไรในการติดต่อในแต่ละครั้ง มีการบอกสถานะระหว่างผู้ใช้โทรศัพท์ 2 เครื่อง ตั้งแต่มีการกดหมายเลขโทรศัพท์ในการโทรออกและปลายสายมีการรับโทรศัพท์ ซึ่งมีการสนทนาระหว่าง 2 สายจนกระทั่งมีการวางสายเป็นการบอกสถานะว่ามีการวางสายเรียบร้อยแล้ว และมีการบันทึกเสียงของผู้ใช้โทรศัพท์ที่สามารถฟังย้อนหลังได้ ซึ่งสามารถฟังแบบแยกเสียงเดียวหรือฟังพร้อมกันทั้งสองเสียงก็ได้
ไม่มีความคิดเห็น:
แสดงความคิดเห็น