Kamailio، یک SIP Server رایگان است، Kamaillio در سال‌های نه چندان دور با نام OpenSER مطرح بود که طی تغییراتی این پروژه با نام Kamailio به راه خود ادامه می‌دهد. Kamilio می‌تواند در مقیاس یک ثانیه هزاران تماس را مدیریت و هدایت کند، این جزء خصوصیات این SIP Proxy است، Kamailio بر اساس License GPL ارائه می‌شود پس به راحتی می‌توانید در پروژه‌ها از آن استفاده کنید و یا با اعمال تغییراتی در کد، آن را برای نیاز خود آماده سازید. Kamailio می‌تواند به عنوان یک برنامه مدیریت کننده تماس‌های VOIP، مانند WebRTC و یا یک Gateway برای ارتباط Media Serverها همچون Asterisk یا فری سوئیچ با دنیای بیرون مورد استفاده قرار گیرد، در ادامه مقاله به امکانات بی‌نظیر و همچنین موارد کاربرد این برنامه اشاره خواهیم کرد.

 

تفاوت Asterisk و Kamailio: شاید برای درک بهتر این برنامه بهتر است آن را با Asterisk قیاس کنیم، ببینیم چه تفاوت‌هایی با هم دارند و هر کدام در چه جایگاهی قرار می‌گیرند. همان‌طور که میدانیم Asterisk یک B2BUA است، این به این معنی است که مکالمات VOIP از دل سرور Asterisk عبور می کند، همان‌طور که مشخص است چه هنگام تلاش برای برقراری تماس و چه حین مکالمه بسته‌های VOIP از دل Asterisk عبور می کنند. این معماری B2BUA چند خصوصیت را برای سیستم تلفنی به ارمغان می‌آورد، مواردی همچون، ضبط مکالمه، امکان دریافت DTMF، شنود مکالمه و ... اما از طرفی دارای ضعفی نیز هست که آن پایین آمدن ظرفیت و توان پردازش مکالمات همزمان است. اما Kamailio یک SIP Proxy است یعنی فقط بحث مدیریت بر روی بسته‌ها را به عهده دارد و بسته‌های Media از داخل سرور عبور نمی‌کنند به همین دلیل این نوع سرورها قابلیت مدیریت هزاران مکالمه در ثانیه را دارند اما از طرفی قابلیت‌های سیستم‌های B2BUA را که در بالا اشاره شد را از دست می‌دهند. در واقع مهم‌ترین تفاوت Asterisk و Kamailio در ساختار آنها است که البته هر کدام را برای نوع خاصی از سیستم‌های تلفنی مناسب می‌کند.


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

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

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

 بر روی Kamailio چیزی به عنوان انتظار پشت خط نخواهید داشت.

 Kamailio امکان برقراری کنفرانس را ندارد.

Kamailio امکان ضبط مکالمه را نیز ندارد.


امکانات Kamailio: اما از Kamailio برای چه پروژه‌هایی استفاده کنیم؟ در ادامه به برخی ویژگی‌های خاص این برنامه اشاره می‌کنیم:

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

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

Load Balancing: همچنین Kamailio می‌تواند ورودی تماس‌های VOIP شما باشد و این تماس‌ها را بین چندین سرور Asterisk پخش نماید.

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

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

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


Kamailio و Asterisk: حال می‌دانیم Asterisk و Kamailio هر کدام در چه جایگاهی هستند، با ترکیب این 2 می‌توان از قدرت هر دو برای راه‌اندازی سیستم‌های مطمئن‌تر و پر ظرفیت استفاده کرد.


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

سناریو1: فرض کنید می‌خواهید برای مجموعه‌ای که دارای 10000 داخلی است یک سیستم تلفنی راه‌اندازی کنید، البته این مجموعه الزاماً یکپارچه نیست، یعنی ممکن است کاربران شما همه در یک یا چند ساختمان نباشند، به طور مثال می‌خواهید تمامی مجموعه نقاط مربوط به شهرداری تهران را در این سیستم قرار دهید، از Kamailio برای مدیریت کاربران، احراز هویت و ارتباط آن‌ها با یکدیگر استفاده کرده‌ایم همچنین از 3 سرور مجزای Asterisk برای ارائه خدمات صندوق صوتی، IVR و ارتباط با شهری کمک گرفته‌ایم. یک سناریو کاملاً حرفه‌ای و پر قدرت برای راه‌اندازی یک مخابرات کوچک با امکانات بی‌شمار، همین سناریو با سیستم‌های تجاری همچون آوایا، اریکسون و یا Cisco بیش از یک میلیارد تومان هزینه راه‌اندازی خواهد داشت.

سناریو 2: این سناریو می‌تواند برای سیستم‌های کم ظرفیت‌تر نیز اجرا شود، فرض کنید می‌خواهید یک مرکز تلفن با حدود 1000 داخلی راه‌اندازی نمایید، در این الگو از Kamailio هم به عنوان رجیستر سرور و به عنوان Failover سرور می‌توان استفاده کرد، در تصویر شما سیستم تلفنی Freeswitch را کنار Kamailio می‌بینید، این فقط برای این است که نشان دهیم Freeswitch نیز می‌تواند کنار Kamailio کار کند. در این سناریو شما 2 سرور Asterisk در کنار هم خواهید داشت که به واسطه ابزار مربوطه کاملاً مثل هم هستند، حال اگر سرور اصلی به هر دلیلی از دسترس خارج شود، Kamailio تماس‌ها را به سرور دوم هدایت می‌کند.

سناریو 3: الزاماً Kamailio برای پروژه‌های با حجم بالا استفاده نمی‌گردد، فرض کنید شما Asterisk دارید با 300 داخلی، Kamailio در این مجموعه می‌تواند نقش پراکسی مجموعه تلفنی شما را بازی کند که مزایای بسیاری دارد، همچون: برطرف کردن مشکل NAT که همان عامل صدای یک طرفه و یا قطعی صدا است. بالا بردن ظرفیت مجموعه تلفنی برای پاسخگویی مکالمات همزمان، اعمال نقش Kamailio به عنوان SBC و یک فایروال VOIP.


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


منبع: VOIPIRAN