کامیلیو(Kamailio) چیست؟ با غول ویپ سرورها آشنا شوید

Icons 1 Moarefi

 کامیلیو (Kamailio)، یک SIP Server  رایگان است، کامیلیو (Kamaillio) در سال های نچندان دور با نام OpenSER مطرح بود که طی تغییراتی این پروژه با نام کامیلیو (Kamailio) به راه خود ادامه می دهد.

کامیلیو (Kamilio) می تواند در مقیاس یک ثانیه هزاران تماس را مدیریت و هدایت کند، این جزء خصوصیات این SIP Proxy  است، کامیلیو (Kamailio) بر اساس لایسنس GPL ارائه می شود پس به راحتی می توانید در پروژه ها از آن استفاده کنید و یا با اعمال تغییراتی در کد، آن را برای نیاز خود آماده سازید.

کامیلیو (Kamailio) می تواند به عنوان یک برنامه مدیریت کننده تماس های ویپ، WebRTC و یا یک گیت وی برای ارتباط Media Server ها همچون استریسک یا فری سوئیچ با دنیای بیرون مورد استفاده قرار گیرد، در ادامه مقاله به امکانات بی نظیر و همچنین موارد کاربرد این برنامه اشاره خواهیم کرد.

تفاوت استریسک و کامیلیو (Kamailio):

شاید برای درک بهتر این برنامه بهتر است آن را با استریسک قیاس کنیم، ببینیم چه تفاوت هایی با هم دارند و هر کدام در چه جایگاهی قرار می گیرند.

همانطور که می دانیم استریسک (Asterisk) یک B2BUA است، این به این معنی است که مکالمات ویپ از دل سرور استریسک عبور می کند، همانطور که در تصویر زیر مشخص است چه هنگام تلاش برای برقراری تماس و چه حین مکالمه بسته های ویپ از دل استریسک عبور می کنند.

این معماری B2BUA چند خصوصیت را برای سیستم تلفنی به ارمغان می آورد، مواردی همچون، ضبط مکالمه، امکان دریافت DTMF، شنود مکالمه و … اما از طرفی دارای ضعفی نیز هست که آن پایین آمدن ظرفیت و توان پردازش مکالمات همزمان است.

اما کامیلیو (Kamailio) یک SIP Proxy است یعنی فقط بحث مدیریت بر روی بسته ها را به عهده دارد و بسته های Media از داخل سرور عبور نمی کنند به همین دلیل این نوع سرور ها قابلیت مدیریت هزاران مکالمه در ثانیه را دارند اما از طرفی قابیت های سیستم های B2BUA را که در بالا اشاره شد را از دست می دهند.

درواقع مهم ترین تفاوت استریسک و  کامیلیو (Kamailio) در ساختار آنهاست که البته هر کدام را برای نوع خاصی از سیستم های تلفنی مناسب می کند.

در تصویر زیر برخی امکانات که نباید از کامیلیو (Kamailio) انتظار داشته باشید را مشاهده می نمایید، در واقع برای داشتن این ویژگی ها باید سراغ استریسک (Asterisk) بروید.

Kamailio A Quick Introduction 8 638

No کامیلیو (Kamailio) نمی تواند بر روی بسته های صوتی یا همان داده های روی پروتکل RTP نظارتی داشته باشد.

No کامیلیو (Kamailio) نمی تواند از سوی کاربران عددی دریافت کند، این اعداد همان DTMF ها هستند که به طور مثال در استریسک برای برنامه IVR مورد استفاده قرار می گیرند.

No کامیلیو (Kamailio) نمی تواند پروتکل ها را به یکدیگر تبدیل کند.

No بر روی کامیلیو (Kamailio) چیزی به عنوان انتظار پشت خط نخواهید داشت.

No کامیلیو (Kamailio) امکان برقراری کنفرانس را ندارد.

No کامیلیو (Kamailio) امکان ضبط مکالمه را نیز ندارد.

 امکانات کامیلیو (Kamailio)

اما از کامیلیو (Kamailio) برای چه پروژه هایی استفاده کنیم؟ در ادامه به برخی ویژگی های خاص این برنامه اشاره می کنیم.

Yes SIP Server : کامیلیو (Kamailio) می تواند به تنهایی یک Sip Server برای ارتباط هزاران داخلی باشد، به طور مثال وقتی قصد دارید یک سیستمی شبیه اسکایپ یا وایبر راه اندازی کنید به سختی گزینه ای بهتر از کامیلیو (Kamailio) بتوانید پیدا کنید، با این برنامه به راحتی هزاران تماس را مدیریت خواهید کرد، البته فراموش نکنید به دلیل ساختار آن که در بالا نیز اشاره شد برخی امکانات را نخواهید داشت و در کنار آن باید از سیستم های دیگر همچون استریسک بهره ببرید.

وقتی کامیلیو (Kamailio) را کنار استریسک استفاده می کنیم، این برنامه با امکانات بیشمار خود می تواند سیستم تلفنی ما را بینهایت پرقدرت کند، در ادامه به نقش هایی که کامیلیو (Kamailio) می تواند در یک سناریو در کنار استریسک بازی کند می پردازیم.

Yes NAT Traversal: اگر ویپ کار هستید پس حتما با مشکل صدای یک طرفه آشنایی کامل دارید ! بله کامیلیو (Kamailio) می تواند مشکل NAT پروتکل SIP و RTP را بر طرف کند، قرار گیری کامیلیو (Kamailio) کنار استریسک خیال شما را از بابت مشکل NAT راحت خواهد کرد. این کار را به واسطه داشتن STUN و RTP Proxy در دل خود انجام می دهد.

 Load Balancing: کامیلیو (Kamailio) می تواند ورودی تماس های ویپ شما باشد و این تماس ها را بین چندین سرور استریسک پخش نماید.

Yes Routing Failover: به واسطه ماژول Dispatch می توان در صورتی که یک سرور استریسک از کار افتاد بلافاصله تماس های ورودی را به سرور دوم مسیر دهی کرد، با این کار سیستمی با قابلیت HA خواهید داشت که هیچگاه از کار نمی افتد.

Yes Registrar Server: کامیلیو (Kamailio) تنها با ۴ گیک رم و یک سیستم متوسط می تواند ۵۰۰۰ تماس همزمان را در یک ثانیه مدیریت کند ! حال اگر می خواهید بر روی سیستم تلفنی خود مکالمات زیادی داشته باشید بهترین راه استفاده از کامیلیو (Kamailio) به عنوان Registrar Server است، در این حالت وظیفه بررسی و احراز هویت داخلی های با کامیلیو (Kamailio) خواهد بود و تمامی گوشی ها به جای رجیستر شدن به روی استریسک، به روی کامیلیو (Kamailio) رجیستر می شوند. این امر از طرفی باعث بالا رفتن ظرفیت سیستم شما می شود و از طرفی امنیت شما را نیز بسیار بالا خواهد برد چون جلوی بسیاری از حملات همانند DDOS و Fraud Attack ها گرفته می شود و خطری استریسک شما را تهدید نخواهد کرد.

 Yes Application Server: کامیلیو (Kamailio) این امکان را می دهد تا به راحتی بر روی آن برنامه نویسی کرده و ماژول های خاص خود را بنویسید، در حال حاضر بیش از ۱۰۰ ماژول برای این SIP Server وجود دارد، کامیلیو (Kamailio) از زبان های LUA, JAVA, PYTHON برای ماژول نویسی پشتیبانی می کند.

کامیلیو (Kamailio) و استریسک

حال می دانیم استریسک و کامیلیو (Kamailio) هرکدام در چه جایگاهی هستند، با ترکیب این ۲ می توان از قدرت هر ۲ برای راه اندازی سیستم های مطمئن تر و پرظرفیت استفاده کرد.

با مثال چند سناریو به بررسی قرار گیری این ۲ سیستم تلفنی در کنار هم می پردازیم:

سناریو۱:

 فرض کنید می خواهید برای مجموعه ای که دارای ۱۰۰۰۰ داخلی است یک سیستم تلفنی راه اندازی کنید، البته این مجموعه الزاما یکپارچه نیست، یعنی ممکن است کاربران شما همه در یک یا چند ساختمان نباشند، به طور مثال می خواهید تمامی مجموعه نقاط مربوط به شهرداری تهران را در این سیستم قرار دهید، همانطور که در تصویر می بینید از کامیلیو (Kamailio) برای مدیریت کاربران، احراز هویت و ارتباط آنها با یکدیگر استفاده کرده ایم همچنین از ۳ سرور مجزای استریسک برای ارائه خدمات صندوق صوتی، IVR و ارتباط با شهری کمک گرفته ایم.

یک سناریو کاملا حرفه ای و پرقدرت برای راه اندازی یک مخابرات کوچک با امکانات بیشمار، همین سناریو با سیستم های تجاری همچون آوایا، اریکسون و یا سیسکو بیش از یک میلیارد تومان هزینه راه اندازی خواهد داشت.

سناریو۲

این سناریو می تواند برای سیستم های کم ظرفیت تر نیز اجرا شود، فرض کنید می خواهید یک مرکز تلفن با حدود ۱۰۰۰ داخلی راه اندازی نمایید، در این الگو از کامیلیو (Kamailio) هم به عنوان رجیستر سرور و به عنوان Failover سرور می توان استفاده کرد، در تصویر شما سیستم تلفنی Freeswitch را کنار کامیلیو (Kamailio) می بینید، این فقط برای این است که نشان دهیم Freeswitch نیز می تواند کنار کامیلیو (Kamailio) کار کند.

در این سناریو شما ۲ سرور استریسکی در کنار هم خواهید داشت که به واسطه ابزار مربوطه کاملا مثل هم هستند، حال اگر سرور اصلی به هر دلیلی از دسترس خارج شود،  کامیلیو (Kamailio) تماس ها را به سرور دوم هدایت می کند.

سناریو۳

 الزاما کامیلیو برای پروژه های با حجم بالا استفاده نمی گردد، فرض کنید شما استریسکی دارید با ۳۰۰ داخلی، کامیلیو (Kamailio) در این مجموعه می تواند نقش پراکسی مجموعه تلفنی شما را بازی کند که مزایای بسیاری دارد، همچون: برطرف کردن مشکل NAT که همان عامل صدای یکطرفه ویا قطعی صداست. بالابردن ظرفیت مجموعه تلفنی برای پاسخگویی مکالمات همزمان، اعمال نقش کامیلیو (Kamailio) به عنوان SBC و یک فایروال ویپ.

همانطور که می دانید الستیکس نسخه جدیدی ارائه کرده است به نام ElastixMT، جالب است بدانید در این نسخه به طور پیش فرض کامیلیو (Kamailio) نیز نصب شده است.

در آینده با این غول دنیای SIP Server ها  بیشتر آشنا خواهیم شد.

حامد کوه فلاح

0 0 رای ها
امتیازدهی به مقاله
اشتراک در
اطلاع از
guest

0 نظرات
قدیمی‌ترین
تازه‌ترین بیشترین رأی
بازخورد (Feedback) های اینلاین
مشاهده همه دیدگاه ها