mhsaleh
01-19-2014, 01:24 PM
انتخاب یک نرم*افزار مناسب از اهمیت بسیار زیادی برخوردار است. در حوزه سامانه های تلفنی مبتنی بر VoIP همیشه این مسأله مطرح بوده که بین دو نرم*افزار Freeswitch و Asterisk کدامیک بهتر هستند. واقعیت آن است که نمی*توان جواب این سؤال به* طور قاطع و یکجا داد چرا که خود سؤال دارای ابهام و نادرست است.
برای مقایسه دو چیز ابتدا باید پارامترهای مد نظر را مشخص کرد و برای هر یک ارزیابی صحیحی انجام داد تا در نهایت بتوان قیاسی بین آن دو مورد انجام داد. برای مشخص کردن برتری یک مورد نسب به دیگری توجه به این نکته ضروریست که کدام پارامتر برای ما مهم است و در کاری که می*خواهیم انجام دهیم مؤثر می باشد.
برای مقایسه دو نرم*افزار Asterisk و Freeswitch با یکدیگر ما مشخصات هر یک را به تفکیک بیان می*کنیم و مقایسه اصلی را به عهده خواننده می*گذاریم تا بر اساس نیاز خود گزینه مناسب را انتخاب نماید.
پروژه Asterisk در سال ۱۹۹۹ توسط شخصی به نام Mark Spencer آغاز گردید و تحت گواهی GPL به شکل Open source توسعه یافت. در سال ۲۰۰۵ شرکت Digium حمایت از پروژه Asterisk را برای توسعه به شکل production را آغاز نمود و با همکاری جامعه توسعه*دهنده این نرم*افزار، محصولات تجاری متعددی ارائه شده است.
داستان Freeswitch کمی متفاوت از Asterisk است. پروژه Freeswitch توسط Anthony Minessale با کمک Brian West و Michael Jerris که همگی عضو تیم توسعه*دهنده Asterisk بودند آغاز شد. به گفته توسعه*دهنده اصلی Freeswitch، وی اولین تجربه کار با استریسک را در سال ۲۰۰۳ در زمانی که استریسک نسخه pre 1.0 بود داشته است. تجربه وی در پیاده*سازی یک سامانه تلفنی مبتنی بر VoIP در آن سالها بسیار هیجان انگیز بود به طوری که تصمیم گرفت به توسعه Asterisk کمک کند. وی کار خود را با توسعه Application صف (app_queue) و Management Interface (AMI) آغاز نمود تا اینکه به مشکلاتی از جمله Deadlock و Segmentation Fault در زبان C برخورد کرد و سرعت پیسرفت وی را بسیار کاهش داد اما متوقف نکرد. به دلیل برخی مسائل فنی وی ترجیه داد که ساختار Asterisk را که به اعتقاد وی دارای مشکلات فراوان بود کنار بگذارد و در سال ۲۰۰۶ شروع به توسعه نرم*افزار جدیدی با ساختاری مناسب*تر نماید.
استریسک از یک ساختار ماژولار بهره می برد. در این ساختار هسته اصل ماژولهای مختلف را برای کاربردهای مختلف Load می نماید. برخی از این ماژول ها مسئول پیاده*سازی پروتکل های ارتباطی از جمله SIP، IAX و … هستند. هسته Asterisk از ساختار بسیار خاصی برای threading استفاده می نماید. در این ساختار فقط چنلهایی که یک سمت آن*ها Application است و چنل هایی که Originate می*شوند دارای Thread مستقل هستند. در ساختار Asterisk پایه B هر تماس باید در همان Threadی باشد که پایه A است که سبب بروز بسیاری از مشکلات در مواردی همچون Call Transfer می شود.
مدیریت Channelهای باز در Asterisk توسط یک ساختار Link list صورت می*پذیرد. در این ساختار مشخصات هر Channel در یک عضو Link list قرار می*گیرد و هر عضو دارای یک اشاره گر به عضو بعدی است. با این ساختار امکان دستیابی به تعداد نا محدودی از Channelها میسر می*شود اما استفاده از این ساختا به همراه Threading پیچیدگی بسیاری را به همراه می*آورد که می*تواند مشکلات زیادی ایجاد کنند. در یک Link list اگر یک عضو به دلایل نا متعارف از بین برود، کل ساختار به هم می*ریزد و این مورد سبب از دست رفتن تماس ها خواهد شد.
امروزه اکثر سامانه ها و تجهیزات تلفنی در حوزه VoIP از پورتکل SIP استفاده می کنند. لذا بررسی این دو پروتکل در هر دو نرم*افزار Asterisk و Freeswitch خالی از لطف نیست. نرم*افزار Asterisk برای پیاده*سازی SIP Stack از کتابخانه Open Source با نام PJSIP استفاده می کند. نرم*افزار Freeswitch از کتابخانه ای که توسط مرکز تحقیقات شرکت Nokia به شکل Open Source ارائه شده با نام sofia استفاده می کند. عملکرد هر دو کتابخانه و امکاناتی که ارائه می نمایند تا حد زیادی مشابه یکدیگر است اما آنچه می*توان سبب برتری FreeSwitch نسبت به Asterisk دانست، ساختار خود نرم*افزار و پشتوانه یک مجموعه عظیم مخابراتی همچون Nokia از SIP Stack آن است. لذا با توجه به اینکه هیچ آماری از حداکثر تماس همزمان برای Freeswitch ارائه نشده، شاهد آن هستیم که بسیاری از منابع غیر رسمی از ظرفیتی بین ۴ تا ۱۰ برابر بیشتر جهت تماس همزمان در Freeswitch نسبت به Asterisk صحبت می کنند.
از بابت توسعه نرم افزاری می*توان گفت که Asterisk دارای گستردگی و بلوغ بسیار بیشتر است. ماژول ها و افزونه هاس متعددی برای Asterisk نوشته شده که اغلب آن*ها روز به روز در حال گسترش هستند.
هر دو نرم*افزار freeswitch و asterisk (غیر realtime) از ساختاری مبتنی بر فایل جهت پیکربندی استفاده می*کنند با این تفاوت که در استریسک این فایل به شکل یک فایل متنی ساده با پارامترها و ساختاری مخصوص خود که پسوند .conf دارند وجود دارد اما در Freeswitch این ساختار به شکل یک فایل با قالب xml است. استفاده از ساختار xml به دلیل آنکه خواندن و نوشتن در آن طبق الگوی استاندارد و مشخصی انجام می*شود، برای اموری همچون اتوماسیون تنظیمات بسیار مفید است.
معماری freeswitch به گونه*ای طراحی شده تا بتواند حداکثر انعطاف و گسترش پذیری را داشته باشد. هسته Freeswitch را می*توان در یک برنامه دیگر embed کرد. ارتباط با هر دو نرم*افزار Asterisk و Freeswitch به واسطه API میسر است و Freeswitch در این راستا از زبان*های مختلف از جمله Python، C/C++, .net, Perl, Lua, Javascript و … پشتیبانی می نماید.
برای جمع*بندی می*توان اینطور نتیجه گرفت که هر دو نرم*افزار Asterisk و Freeswitch در حوزه های مختلف دارای قدرت فراوان هستند به طوری که نرم*افزار Asterisk را برای پیاده*سازی یک IP PBX در ابعاد متوسط مناسب ساخته و Freeswitch را برای پیاده*سازی یک Softswitch و موتور قدرتمند برای مراکز تلفنی عظیم گزینه برتر گردانیده.
برای مقایسه دو چیز ابتدا باید پارامترهای مد نظر را مشخص کرد و برای هر یک ارزیابی صحیحی انجام داد تا در نهایت بتوان قیاسی بین آن دو مورد انجام داد. برای مشخص کردن برتری یک مورد نسب به دیگری توجه به این نکته ضروریست که کدام پارامتر برای ما مهم است و در کاری که می*خواهیم انجام دهیم مؤثر می باشد.
برای مقایسه دو نرم*افزار Asterisk و Freeswitch با یکدیگر ما مشخصات هر یک را به تفکیک بیان می*کنیم و مقایسه اصلی را به عهده خواننده می*گذاریم تا بر اساس نیاز خود گزینه مناسب را انتخاب نماید.
پروژه Asterisk در سال ۱۹۹۹ توسط شخصی به نام Mark Spencer آغاز گردید و تحت گواهی GPL به شکل Open source توسعه یافت. در سال ۲۰۰۵ شرکت Digium حمایت از پروژه Asterisk را برای توسعه به شکل production را آغاز نمود و با همکاری جامعه توسعه*دهنده این نرم*افزار، محصولات تجاری متعددی ارائه شده است.
داستان Freeswitch کمی متفاوت از Asterisk است. پروژه Freeswitch توسط Anthony Minessale با کمک Brian West و Michael Jerris که همگی عضو تیم توسعه*دهنده Asterisk بودند آغاز شد. به گفته توسعه*دهنده اصلی Freeswitch، وی اولین تجربه کار با استریسک را در سال ۲۰۰۳ در زمانی که استریسک نسخه pre 1.0 بود داشته است. تجربه وی در پیاده*سازی یک سامانه تلفنی مبتنی بر VoIP در آن سالها بسیار هیجان انگیز بود به طوری که تصمیم گرفت به توسعه Asterisk کمک کند. وی کار خود را با توسعه Application صف (app_queue) و Management Interface (AMI) آغاز نمود تا اینکه به مشکلاتی از جمله Deadlock و Segmentation Fault در زبان C برخورد کرد و سرعت پیسرفت وی را بسیار کاهش داد اما متوقف نکرد. به دلیل برخی مسائل فنی وی ترجیه داد که ساختار Asterisk را که به اعتقاد وی دارای مشکلات فراوان بود کنار بگذارد و در سال ۲۰۰۶ شروع به توسعه نرم*افزار جدیدی با ساختاری مناسب*تر نماید.
استریسک از یک ساختار ماژولار بهره می برد. در این ساختار هسته اصل ماژولهای مختلف را برای کاربردهای مختلف Load می نماید. برخی از این ماژول ها مسئول پیاده*سازی پروتکل های ارتباطی از جمله SIP، IAX و … هستند. هسته Asterisk از ساختار بسیار خاصی برای threading استفاده می نماید. در این ساختار فقط چنلهایی که یک سمت آن*ها Application است و چنل هایی که Originate می*شوند دارای Thread مستقل هستند. در ساختار Asterisk پایه B هر تماس باید در همان Threadی باشد که پایه A است که سبب بروز بسیاری از مشکلات در مواردی همچون Call Transfer می شود.
مدیریت Channelهای باز در Asterisk توسط یک ساختار Link list صورت می*پذیرد. در این ساختار مشخصات هر Channel در یک عضو Link list قرار می*گیرد و هر عضو دارای یک اشاره گر به عضو بعدی است. با این ساختار امکان دستیابی به تعداد نا محدودی از Channelها میسر می*شود اما استفاده از این ساختا به همراه Threading پیچیدگی بسیاری را به همراه می*آورد که می*تواند مشکلات زیادی ایجاد کنند. در یک Link list اگر یک عضو به دلایل نا متعارف از بین برود، کل ساختار به هم می*ریزد و این مورد سبب از دست رفتن تماس ها خواهد شد.
امروزه اکثر سامانه ها و تجهیزات تلفنی در حوزه VoIP از پورتکل SIP استفاده می کنند. لذا بررسی این دو پروتکل در هر دو نرم*افزار Asterisk و Freeswitch خالی از لطف نیست. نرم*افزار Asterisk برای پیاده*سازی SIP Stack از کتابخانه Open Source با نام PJSIP استفاده می کند. نرم*افزار Freeswitch از کتابخانه ای که توسط مرکز تحقیقات شرکت Nokia به شکل Open Source ارائه شده با نام sofia استفاده می کند. عملکرد هر دو کتابخانه و امکاناتی که ارائه می نمایند تا حد زیادی مشابه یکدیگر است اما آنچه می*توان سبب برتری FreeSwitch نسبت به Asterisk دانست، ساختار خود نرم*افزار و پشتوانه یک مجموعه عظیم مخابراتی همچون Nokia از SIP Stack آن است. لذا با توجه به اینکه هیچ آماری از حداکثر تماس همزمان برای Freeswitch ارائه نشده، شاهد آن هستیم که بسیاری از منابع غیر رسمی از ظرفیتی بین ۴ تا ۱۰ برابر بیشتر جهت تماس همزمان در Freeswitch نسبت به Asterisk صحبت می کنند.
از بابت توسعه نرم افزاری می*توان گفت که Asterisk دارای گستردگی و بلوغ بسیار بیشتر است. ماژول ها و افزونه هاس متعددی برای Asterisk نوشته شده که اغلب آن*ها روز به روز در حال گسترش هستند.
هر دو نرم*افزار freeswitch و asterisk (غیر realtime) از ساختاری مبتنی بر فایل جهت پیکربندی استفاده می*کنند با این تفاوت که در استریسک این فایل به شکل یک فایل متنی ساده با پارامترها و ساختاری مخصوص خود که پسوند .conf دارند وجود دارد اما در Freeswitch این ساختار به شکل یک فایل با قالب xml است. استفاده از ساختار xml به دلیل آنکه خواندن و نوشتن در آن طبق الگوی استاندارد و مشخصی انجام می*شود، برای اموری همچون اتوماسیون تنظیمات بسیار مفید است.
معماری freeswitch به گونه*ای طراحی شده تا بتواند حداکثر انعطاف و گسترش پذیری را داشته باشد. هسته Freeswitch را می*توان در یک برنامه دیگر embed کرد. ارتباط با هر دو نرم*افزار Asterisk و Freeswitch به واسطه API میسر است و Freeswitch در این راستا از زبان*های مختلف از جمله Python، C/C++, .net, Perl, Lua, Javascript و … پشتیبانی می نماید.
برای جمع*بندی می*توان اینطور نتیجه گرفت که هر دو نرم*افزار Asterisk و Freeswitch در حوزه های مختلف دارای قدرت فراوان هستند به طوری که نرم*افزار Asterisk را برای پیاده*سازی یک IP PBX در ابعاد متوسط مناسب ساخته و Freeswitch را برای پیاده*سازی یک Softswitch و موتور قدرتمند برای مراکز تلفنی عظیم گزینه برتر گردانیده.