SIP Proxy คืออะไร และอะไรที่ทำให้มันเป็น Stateful

บทความดีๆที่จะทำให้เข้าใจ VoIP มากยิ่งขึ้น

Moderator: jubjang

SIP Proxy คืออะไร และอะไรที่ทำให้มันเป็น Stateful

โพสต์โดย voip4share » 16 ก.พ. 2010 23:27

SIP Proxy และ Stateful Proxy คืออะไร

SIP Proxy ตามที่กำหนดไว้ในมาตรฐาน RFC 3261 หมายถึงเป็นแค่กลไกลการทำงานอย่างหนึ่งในมาตรฐาน SIP เท่านั้นนะครับ ไม่ใช่ตัวอุปกรณ์ เช่น Asterisk หรือว่า SIP Server ทั่วไป ซึ่งในมาตรฐาน RFC 3261 นั้น SIP Proxy จะทำหน้าที่ฟอร์เวอร์ด Request ไปยังปลายทางหนึ่งแห่งหรือหลายแห่ง จากนั้นรับ Response ที่ดีที่สุดจากปลายทางเหล่านั้นและฟอร์เวอร์ด Response กลับไปยังคนที่ส่ง Request มา

ในมาตรฐาน RFC 3261 ยังได้กำหนดความสามารถของ SIP Proxy ไว้เพิ่มเติมคือ มันสามารถส่งกระจาย Single Request ไปยังปลายทางหลายๆแห่งได้พร้อมๆกัน ซึ่งก็จะทำให้คนๆหนึ่งสามารถโทรหาคนหลายๆคนได้พร้อมๆกัน เบอร์โทรศัพท์ของคนเหล่านั้นก็จะดังพร้อมๆกัน นอกจากนั้นเมื่อ SIP Proxy มันส่ง Request ไปแล้วถ้ามันคิดว่า Reponse ช้าเกินไปมันก็สามารถยกเลิก Request ได้และส่ง Request ไปที่อื่นแทน ยกตัวอย่างเช่นเราโทรหาเพื่อนแต่เพื่อนไม่รับสายในเวลาที่กำหนด สายของเราก็จะถูกโอนไปเข้า Voicemail ของเพื่อนแทน

มาตรฐาน RFC3261 ได้กำหนดรูปแบบการทำงานของ Proxy ไว้ 2 แบบ คือ Transaction Stateful และ Transaction Stateless โดยที่ Transaction Stateful Proxy จะบันทึกแทร็คของ Transaction State Machine (เป็น State Machine ของ 1 Server) สำหรับทุกๆ 1 Request ที่มันรับเข้ามา และหลายๆ Client State Machine (1 State Machine สำหรับแต่ละ Request ที่ฟอร์เวอร์ดไป) คำว่า "State" ใน "Transaction Stateful" หมายถึงข้อมูลที่ Proxy จะจำไว้ในขณะที่มันกำลังรับมือกับแต่ละ Request, กำลังรอคอย Response และกำลังรับมือกับ Response ที่กำลังมาถึง การจดจำข้อมูลนี้ทำให้ Transaction Stateful Proxy สามารถแยกแยะว่า Request อันไหนที่เป็นของใหม่อันไหนที่เป็นการส่งซ้ำ แล้วคอยรับ Response ที่สอดคล้องกับ Request นั้น (เลือก Response ที่ดีที่สุดส่งไป) และเพื่อให้แยกแยะเงื่อนไขที่ไม่สำเร็จซึ่งเกิดจากการที่ส่ง Request ไปแล้วแต่ไม่ได้รับ Response ใดๆกลับมาภายในเวลาที่กำหนด

ในทางตรงกันข้าม Transaction Stateless Proxy จะไม่สร้าง Transacton State เมื่อฟอร์เวอร์ด Request ไป เพราะฉะนั้น Request ที่ถูกซ้ำไปใหม่จึงไม่แตกต่างอะไรกับ Request ใหม่ และต้องประมวลผลอีกครั้ง และการประมวลผลนั้นต้องสร้างผลลัพธ์ที่เหมือนกันไม่เช่นนั้นระบบโดยรวมจะทำงานผิดพลาด การใช้งาน Transaction Stateless Proxy ก็มีใช้อยู่เหมือนกันนะครับ โดยใช้ในงานที่ต้องการการทำเร้าท์ติ้งที่พิเศษจริงๆซึ่ง Request จะถูกฟอร์เวอร์ดไปยังสถานที่หนึ่งและสถานที่นั้นจะไม่เปลี่ยนแปลง

มี Stateful อีกแบบหนึ่งซึ่งมีการพูดถึงอยู่บ่อยเหมือนกัน ชื่อว่า Call-Stateful ซึ่ง Call-Stateful Proxy จะจำ INVITEs ที่สำเร็จ และเก็บบันทึก Track ของ Dialog Usages ที่มันสร้างจนกระทั่งมันถูกเทอร์มิเนตด้วย BYE ปกติมักจะใช้ Call-Stateful Proxy เพื่อทำหน้าที่ในส่วนควบคุมบนตัว Firewall เพื่อคอยเก็บสถานะการโฟลว์ของ VoIP แต่ในมาตรฐาน RFC 3261ไม่ได้พูดถึง Call-Stateful Proxy นะครับ

โดยทั่วไปเมื่อมีคนกล่าวถึง "Stateful Proxy" จะหมายถึง Transaction Stateful Proxy ตามที่กำหนดในมาตรฐาน RFC 3261
voip4share
Administrator
 
โพสต์: 656
ลงทะเบียนเมื่อ: 18 พ.ย. 2009 11:26
ที่อยู่: รามคำแหง กรุงเทพฯ

ย้อนกลับไปยัง พื้นฐานเกี่ยวกับ VoIP

ผู้ใช้งานขณะนี้

กำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และ บุคคลทั่วไป 0 ท่าน

cron