เมื่อวันก่อนคนที่ผมดูแลเครื่องให้เขาได้เร้าท์ที่เป็น H.323 มา แต่เซอร์เวอร์ที่เขาใช้เป็น Asterisk ซึ่งปกติก็ใช้แต่ SIP ผมเองไม่เคยทำ H.323 บน Asterisk มาก่อน (แต่รู้ว่ามันทำได้) เคยแต่คอมไพล์แต่ไม่เคยใช้งานจริงสักที ถึงคราวจะได้ใช้งานจริงสักที ผมลองแล้วก็เวอร์คนะครับใช้งานได้ดีด้วยอีกต่างหาก จะมีปัญหาอยู่นิดนึงก็ตรงเรื่องของ DTMF นี่แหล่ะ เวอร์คบ้างไม่เวอร์คบ้าง แต่คนที่ดูแล H.323 Softswitch ก็บอกว่าตัวเซอร์เวอร์เขาเองก็มีปัญหาเรื่อง DTMF อยู่ด้วย ผมเลยไม่รู้ว่าตกลงปัญหามันอยู่ที่ Asterisk หรือว่า H.323 Softswitch กันแน่ ผมก็เคยได้ยินมาว่าเวลาใช้ Asterisk แปลงระหว่าง SIP-H.323 จะมีปัญหาเรื่อง DTMF ว่าจะลองปรับจูนดูซะหน่อย เลยได้ลองกันหล่ะ
มาดูรูปกันดีกว่าครับ คอนฟิกนี้ลูกค้าส่งมาเป็น SIP ส่งมาเข้า Asterisk แล้วให้ Asterisk แปลงเป็น H.323 แล้วส่งไปยัง H.323 Gateway/Softswitch คอนฟิกนี้ไม่มี Gatekeeper นะครับ
มาเริ่มทำงานกันดีกว่าครับ
1. คอมไพล์ Asterisk ให้รองรับ H.323
บทความนี้ Asterisk H.323
2. คอนฟิกไฟล์ h323.conf
- โค้ด: เลือกทั้งหมด
vi /etc/asterisk/h323.conf
[general]
port=1720
;บรรทัด bindaddr ควรใส่เป็น ip จริงๆ ไม่ควรใส่ 0.0.0.0 เดี๋ยวไม่งั้น h.323 อาจจะใช้ 127.0.0.1 เป็นไอพีของมัน เวลาโทรจะไม่ได้ยินเสียง
bindaddr=192.168.4.55
;tos=lowdelay
;amaflags=billing
;accountcode=myh323
;disallow=all
;allow=g729
;allow=g723
;allow=gsm
;allow=ulaw
;allow=alaw
;dtmfmode=rfc2833
;เซ็ต rfc2833 payload type ปกติใช้ค่า 101 แต่มีบางยี่ห้อ บางรุ่นใช้ 97 ต้องคอนฟิกให้ตรงกันครับ ไม่งั้น dtmf จะไม่เวอร์ค
;dtmfcodec=101
;ไม่ได้ใช้งาน gatekeeper
gatekeeper=disable
allowgkrouted=no
;ยอมรับ anonymous call หรือ call ที่ไม่ได้คอนฟิก host/ip ไว้
acceptanonymous=no
;เช็ต authorize จาก ip address ไม่ใช่ h.323 alias
userbyalias=no
;เซ็ต context สำหรับ anonymous call
context=default
;เซ็ต progress_setup=3 ให้คุยกับ cisco gateway ได้
progress_setup=3
progress_alert=8
progress_audio=yes
tunneling=none
;เซ็ต jitter buffer
;jbenable=no
[trunk_h323]
type=peer
host=192.168.100.1
port=1720
context=trunk_h323
incominglimit=300
faststart=yes
h245tunneling=no
disallow=all
allow=g729
dtmfmode=rfc2833
dtmfcodec=101
amaflags=billing
rtptimeout=60
h323id=H323-Gw
3. คอนฟิก Dialplan
[from-internal]
include => trunk_h323
exten => _1XX.,1,Dial(SIP/${EXTEN},30,tT)
exten => _1XX.,n,Hangup
[trunk_h323]
exten => _0X.,1,Dial(H323/${EXTEN}@trunk_h323,30,tT)
exten => _0X.,n,Hangup
4. กราฟพิสูจน์ว่าใช้งานได้จริงๆ
ผมมีกราฟที่พิสูจน์ว่า H.323 ใช้งานได้ดีบน Asterisk กราฟนี้ผมสร้างจากโปรแกรม Cacti และมอนิเตอร์ Asterisk SNMP โดยมอนิเตอร์ H.323 Channel โดยใช้ค่า OID = .1.3.6.1.4.1.22736.1.5.4.1.7.1 อ่อเครื่องนี้ผมใช้ Asterisk 1.4 นะครับ
กราฟนี้แสดงจำนวน Active H.323 Channels ที่ 60 Concurrent ครับ ระหว่างทำงานผมเช็ค CPU, Process, Load ก็ปกติดีครับ