FreeSwitch או אסטריסק ?

הקדמה

מזה כשנה שאני מתעסק ממש לעומק עם FreeSwitch ומוצא את עצמי מאוד מעריך את הכלי הזה.
התחלתי להיכנס אליו בעקבות מספר בעיות ממש קשות עם אסטריסק שנתקלתי בהם עבור מערכות שפיתחתי, וחיפשתי מערכת אחרת שתוכל לעמוד טוב יותר בדרישות שלי.

החלטתי לסכם קצת יותר לעומק את המצב הקיים כיום כפי שאני לפחות מבין אותו, ובעיקר מה שלמדתי עד עכשיו.
המטרה היא לא להתנגח בכלים שונים, אלא לנסות ולהכיר לעומק יותר את הכלים בשימוש ובמה להשתמש במצבים שונים.

FreeSwitch

FreeSwitch היא מרכזיית קוד פתוח (MPL) אשר התחילה את דרכה ב2006 בהכרזה, אך רק ב2008 יצאה גרסה 1.0.

המרכזיה תוכננה מחדש לאחר לימוד בעיות שונות שהיו (וחלקם עדיין קיימים) באסטריסק.
המרכזיה מתוכננת להיות מאוד רובסטית ומסוגלת להתמודד עם המון בקשות בו זמנית, חיבור לתוספים שונים והיכולת להגיע למצב סקלבילי מאוד.

כאשר צריך לכתוב מערכות עם שימוש רב, אני שם לב כי FreeSwitch (או FS בקיצור) מתפקדת טוב הרבה יותר מאשר אסטריסק, ומסוגלת לתת הרבה יותר מאסטריסק על אותו שימוש, כאשר לרוב ההגבלות שאני מוצא הן של חומרה ופחות בתוכנה.

החיסרון העיקרי של FS הוא שאין ממשק אחד שבפיתוח אשר מאפשר לנהל את המרכזיה ככלי משרדי גם לאנשים אשר אינם אנשי מקצוע, דבר ההופך אותה למרכזיה עבור אנשי מקצוע בלבד, וקשה מאוד לפרוס אותה ככה סתם במשרדים.

FS מסוגלת להיות הרבה מאוד דברים, כולל SBC עם המון עבודה בנושא, אך גם שרת מדיה בנפרד, או שרת סיגנלים בנפרד.
היא יודעת לעבוד עם MQ שונים וגם מסדי נתונים שונים, כולל מונגו ורדיס.
בגרסה 1.4 (אשר עדיין לא שוחררה בצורה רשמית), היא גם תומכת בWebRTC.
תוכלו לנסות את השימוש בה באתר המיועד לכך.

אבל הכוח האימתי שבה, הוא בכך שניתן לשלוט בכולה בצורה תכנותית באמצעות פרוטוקול בשם ESL אשר מאפשר לתכנת את המערכת במקומות בהם לא ניתן לעשות זאת בקלות עם Asterisk למשל.
בנוסף, תוסף בשם mod_xml_curl מאפשר גם לשנות בזמן ריצה קבצי הגדרות רק עד אתחול המרכזיה מחדש.

לאחרונה גם נכתב תוסף לתמיכה בפרוטוקול Rayo שהוא תת פרוטוקול של XMPP המאפשר לשלוט בשיחות טלפון באמצעות XMPP כולל הקלטות, קבלת DTMF, תמיכה בText To Speech/ASR, שיחות ועידה ועוד מספר דברים.
התוסף מימש גם את פרוטוקול SSML ויצר פרוטוקול בשם mod_ssml לשם כך.

FS תומך בSIP באמצעות הספרייה Sofia SIP (דבר המאוד מורגש בפקודות ה cli של התוכנה, וכן בהגדרות השונות), הפותחה במקור על ידי חברת Nokia.

אסטריסק

אסטריסק החלה את דרכה ב1999 על ידי בחור בשם מארק ספנסר כמרכזייה לעסק שלו, אשר שינתה את העסק שלו להיות חברה המפתחת מרכזייה. המרכזיה משוחררת כGPL

אסטריסק מאוד נפוצה כיום כמענה לשוק העסקי כאשר השוק אינו מעוניין לשלם סכומים עצומים עבור מרכזיות מסחריות, אך עדיין לקבל את הפונקציונאליות שלהם, לפעמים אף מעבר למה שהן מכילות

באסטריסק (עד 1.11 כולל), יש ממשקים שונים לניהול המרכזיה, אך היא אינה מתאימה לשימוש מאוד מסיבי. בראש ובראשונה השימוש של אסטריסק הוא כמרכזייה משרדית, אך גם אני משתמש בה עבור יצירת תוכנות טלפוניה שונות.
אסטריסק מכיל כיום תמיכה ב WebRTC, ובהרבה פרוטוקולים שונים

לאסטריסק יש הרבה מאוד כלים צד שלישי, כדוגמת CTI, התממשקות ל CRM שונים ועוד.

הסיבה שאסטריסק אינה מתאימה לדעתי האישית לשימוש מאוד מסיבי, היא העבודה כי התכנון שלה לא לקח בחשבון המון צורות שימוש כאשר הוא נבנה, וישנם כלים כדוגמת ה Manager אשר הוא עקב אכילס מאוד גדול של אסטריסק בצורתו הנוכחית.
אני מוצא כי Manager נתקע או מקבל Deadlocks כאשר יש שימוש מאוד מסיבי באסטריסק, ובכך גורם לה להיות לא אמינה בשימוש שכזה.

גרסה 1.12 תתחיל להשתוות ל FS בנושא, אם כי עוד לא התנסתי בגרסה זו. הסיבה לכך היא שכתוב מאוד מסיבי לאסטריסק, הסרה של מודולים כדוגמת chan_sip ושינוי גישה וחשיבה באיך המרכזיה צריכה להיות.

במקום chan_sip שוכתבה התמיכה לעבוד עם ספריית קוד פתוח בשם pjSIP. לגרסה החדשה קיבלה את השם chan_pjsip.

חלק גדול מה Manager של אסטריסק ב1.12 שוכתב, אך צריך לבדוק לעמוק האם הוא פותר את הבעיות השונות שיש בו.

אז איך לבחור ?

אני חושב כי גם אסטריסק וגם FS טובות. ולמעשה ממליץ להשתמש בשניהם ולתעדף אותם לפני השימוש במרכזיות מסחריות רגילות בשוק.

העניין הוא שכרגע אני עדיין חושב כי אסטריסק אינה מתאימה לפיתוח אפליקטיבי מסיבי עם שימוש נרחב בכלי המרכזיה (לאחר ניסיון של למעלה מ6 איתה) .
אני מוצא כי FS הרבה יותר יציב ונוח לעבוד לשם כך, ומסוגל להחזיק מעמד כמו שצריך.

ממליץ בחום לבדוק את הצרכים שלכם. במידה ואתם צריכים שימוש מאוד מסיבי, לכו על FS, אך במידה וזו מרכזייה למשרד שלכם, אסטריסק טובה, מאוד ותעשה עבורכם את העבודה.

2 מחשבות על “FreeSwitch או אסטריסק ?

  1. צפריר כהן

    נראה לי שלא התרגלת עדיין למספרי הגרסאות החדשים של אסטריסק. הגרסאות שמעל 1.8 נקראות 10 (ללא תחילית של 1, אך גם ללא דילוג של 0.2 עבור גרסת פיתוח), ולכן הגרסאות שהזכרת הן 11 ו־12, בהתאמה.

    השינוי בממשק ה־Manager (זה שידוע בקיצור כ־AMI. אסטריסק שופע ראשי תיבות של שלוש אותיות שהראשונה בהם היא A) הוא חלק מאוסף של שינויים פנימיים: נעשה גם פישוט של הפקודות והאירועים בממשק הזה. אולם השינוי העיקרי היה שכתוב חלקים מהליבה (בעיקר כל מה שקשור ל־bridgng, כלומר – חיבור של שני (או יותר) ערוצי תקשורת לשיחה אחת. נוסף ממשק תכנות חדש בשם ARI (כמו שהבטחתי. ולא. לא מדובר על התוכנה הישנה Asterisk Recording Interface. לא מדובר גם על ARA) שהוא ממשק וובי מסוג REST (להבדיל מגרסת ה־HTTP הקיימת של AMI, שבה כמעט אין שימוש) וחושף החוצה פעולות רבות.

    1. ik_5 מאת

      אני מכיר את כל זה, אבל מסתבר שהרבה אנשים אפילו ברשימה של אסטריסק לא מצליחים לעכל את זה, אז למדתי שאי אפשר ככה סתם להסיר את ה1.

      בכוונה לא נכנסתי לכל השינויים שנעשו, זה דורש פוסט נפרד וארוך באותה מידה אם לא יותר 🙂

להשאיר תגובה

הזינו את פרטיכם בטופס, או לחצו על אחד מהאייקונים כדי להשתמש בחשבון קיים:

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s