BlogLộ trình chuyên gia Kamailio: tận dụng nền tảng OpenSIPS đã có
Bố cục bài viết
Lộ trình chuyên gia Kamailio — tận dụng nền tảng OpenSIPS đã có
Giai đoạn K0 — Định vị: giống và khác OpenSIPS ở đâu (3-5 ngày)
Giai đoạn K1 — Cấu hình nhanh nhờ kiến thức cũ (1-2 tuần, thay vì 4-6 tuần như OpenSIPS)
Giai đoạn K2 — Học KEMI thật sự (3-4 tuần)
Giai đoạn K3 — Topology hiding, NAT/RTPengine, Dispatcher/CarrierRoute (4 tuần)
Giai đoạn K4 — Vận hành production: HA, giám sát, bảo mật (4 tuần)
Giai đoạn K5 — Biết chọn đúng công cụ, không phải chọn phe
Trang này
Sunex
16/09/2026 · 4 phút đọc
Ngày tạo
16/09/2026
Cập nhật
Lượt xem
7
Đọc
4m
Lộ trình chuyên gia Kamailio — tận dụng nền tảng OpenSIPS đã có
Kamailio và OpenSIPS xuất phát từ cùng một gốc (OpenSER cũ), nên phần lớn kiến thức nền (SIP transaction/dialog, method, transaction machine, NAT/media, B2BUA concept) dùng lại được nguyên vẹn. Lộ trình này không dạy lại SIP từ đầu, mà tập trung vào chỗ thật sự khác biệt.
Bản Kamailio ổn định mới nhất hiện tại là phiên bản 6.1.3 (phát hành 27/5/2026), cộng đồng vẫn duy trì song song nhánh 6.0.x cho ai cần độ ổn định lâu năm hơn. Khác với OpenSIPS có chứng chỉ OCP chính thức, Kamailio đi theo hướng cộng đồng thuần tuý — không có chứng chỉ chính thức, uy tín được xây bằng đóng góp GitHub và tham gia hội nghị “Kamailio World” tổ chức hàng năm tại Berlin.
Giai đoạn K0 — Định vị: giống và khác OpenSIPS ở đâu (3-5 ngày)
- Giống hệt (dùng lại kiến thức cũ): khái niệm transaction/dialog, hầu hết tên module trùng (
tm,sl,rr,maxfwd,usrloc,registrar,auth_db,dialog,acc,nathelper,dispatcher,presence,permissions) — cú pháp gọi hàm trong route script gần như song song. - Khác biệt cốt lõi #1 — KEMI: Kamailio cho phép viết toàn bộ logic routing bằng Lua, Python, hoặc JavaScript thật thay vì chỉ dùng cfg script DSL riêng — đây là khác biệt lớn nhất, giúp logic phức tạp (gọi API ngoài, xử lý JSON, unit test được) dễ bảo trì hơn hẳn.
- Khác biệt cốt lõi #2 — topology hiding tích hợp sẵn: module
toposxử lý ẩn toàn bộ header nội bộ (Via, Record-Route, Contact…) tự động bằng cách lưu trạng thái dialog vào DB, thay vì phải tự thao tác thủ công như khi làm ẩn danh bằng B2BUA ở OpenSIPS. - Khác biệt #3 — hệ sinh thái giám sát: Kamailio gắn liền với HEP protocol + Homer/sngrep cho việc bắt gói SIP tập trung ở quy mô lớn — mạnh hơn hẳn so với việc chỉ dùng Wireshark ở quy mô nhỏ.
Giai đoạn K1 — Cấu hình nhanh nhờ kiến thức cũ (1-2 tuần, thay vì 4-6 tuần như OpenSIPS)
- Cấu trúc
kamailio.cfg: gần như song songopensips.cfg— vẫnroute{},failure_route[],branch_route[],onreply_route[], thêmevent_route[]riêng cho một số sự kiện module. - Ánh xạ 1-1 nhanh: module nào đã thạo ở OpenSIPS thì chỉ cần đối chiếu tên hàm khác (một số hàm registrar/auth có thể khác thứ tự tham số).
- Dự án tay: port lại chính xác hệ thống registrar+proxy đã xây ở Giai đoạn 1 OpenSIPS sang Kamailio — bài tập hiệu quả nhất vì tự thấy được điểm khác biệt thật.
Giai đoạn K2 — Học KEMI thật sự (3-4 tuần)
- Viết lại chính route logic ở Giai đoạn K1 bằng Lua (dễ bắt đầu nhất) — gọi các hàm module y hệt cfg nhưng trong cú pháp Lua thật, có thể if/else, loop, gọi thư viện ngoài.
- Hiểu cách KEMI expose các exported function của module (
KSR.sl.sl_send_reply(...),KSR.tm.t_relay()…) — đây là bảng tra cứu sẽ dùng suốt sau này. - So sánh ưu/nhược: KEMI mạnh cho logic phức tạp, dễ test, nhưng debug traceback đôi khi khó hơn cfg thuần vì thêm một lớp interpreter.
Giai đoạn K3 — Topology hiding, NAT/RTPengine, Dispatcher/CarrierRoute (4 tuần)
topos— cấu hình topology hiding tự động, so sánh trực tiếp với cách tự làm ẩn danh bằng B2BUA ở OpenSIPS Giai đoạn 2 để thấy rõ triết lý khác nhau (Kamailio: ẩn tự động ở tầng header; OpenSIPS B2BUA: tách hẳn hai dialog độc lập — mức độ ẩn danh khác nhau, dùng đúng công cụ cho đúng nhu cầu).- NAT/RTPengine: module
rtpenginetrong Kamailio dùng chung giao thức ng-control với RTPengine daemon — kiến thức RTPengine học ở OpenSIPS dùng lại gần như nguyên vẹn. dispatcher(giống OpenSIPS) vscarrierroute— Kamailio cócarrierroutelà module LCR chuyên sâu hơn hẳndroutingbên OpenSIPS, hỗ trợ định tuyến nhiều tầng theo carrier/tariff phức tạp.
Giai đoạn K4 — Vận hành production: HA, giám sát, bảo mật (4 tuần)
dmqmodule — cơ chế đồng bộ dữ liệu phân tán giữa các node Kamailio (usrloc, dialog…) — tương đương vai tròclustererbên OpenSIPS nhưng thiết kế khác.- HEP + Homer/sngrep — thế mạnh riêng của hệ sinh thái Kamailio: gửi toàn bộ bản tin SIP tới một server Homer tập trung, dùng sngrep để trace real-time trên nhiều node cùng lúc.
pike(chống flood, tên module giống hệt OpenSIPS), TLS, rate limiting.
Giai đoạn K5 — Biết chọn đúng công cụ, không phải chọn phe
- Cần logic phức tạp, tích hợp nhiều API ngoài, đội ngũ quen lập trình thật → nghiêng Kamailio (KEMI).
- Cần B2BUA rõ ràng, tách bạch signaling logic đơn giản, hệ sinh thái OCP/tài liệu chính thức mạnh → nghiêng OpenSIPS.
- Thực tế nhiều hệ thống carrier lớn dùng cả hai ở các lớp khác nhau (ví dụ Kamailio làm SBC/registrar farm ở biên, OpenSIPS làm application logic layer phía trong) — kiến trúc nên biết vẽ ra được khi phỏng vấn vị trí senior.