Xin chào ! Nếu đây là lần đầu tiên bạn đến với diễn đàn, xin vui lòng danh ra một phút bấm vào đây để đăng kí và tham gia thảo luận cùng VnPro.

Announcement

Collapse
No announcement yet.

OpenSER ( OpenSIP) được kết nối như thế nào với Asterisk ? Cùng tìm hiểu !

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • OpenSER ( OpenSIP) được kết nối như thế nào với Asterisk ? Cùng tìm hiểu !

    OpenSER ra đời cũng được một thời gian rồi, nhưng ở Việt Nam nó cũng chưa được nói đến nhiều. Ở trường đại học của em, luận văn tốt nghiệp làm về OpenSER cũng là luận văn đầu tiên ở trường làm về vấn đề này, và thầy hướng dẫn của em cũng chưa thử xây dựng hệ thống trên Openser, dù thầy cũng chuyên về asterisk. Vì thế trong khi làm, có nhiều bất cập, nhiều vấn đề mà em chưa tìm thấy câu trả lời rõ ràng, tài liệu tham khảo cũng toàn là nước ngoài, rất hiếm một tài liệu nào, kể cả các ý trao đổi về openser bằng tiếng Việt.

    Hiện tại, em với thầy đang "tranh cãi" về kết nối giữa Openser với asterisk. Nếu như giữa 2 aisterisk server với nhau, và thuộc lớp mạng khác nhau, ví dụ giữa Hà Nội và Sài Gòn, thì ta dùng kênh IAX2 để kết nối, ( thầy em gọi đó là dùng giao thức IAX để liên kết 2 server). Nhưng với asterisk ở HN và openser ở SG thì sao ? Có một số câu hỏi đặt ra là
    - Giữa 2 server thuộc 2 nơi này, chúng sẽ dùng phương thức nào để kết nối, trao đổi, điều khiển lẫn nhau.
    - Cơ chế trao đổi ở đây là gì, phần nào trong asterisk và openser chịu trách nhiệm về việc trao đổi qua lại này.

    - Theo em biết, ở câu hỏi đầu, giữa 2 server này không dùng một giao thức đặc biệt nào để trao đổi. Nếu như asterisk -asterisk ta dùng IAX protocol thì openser với asterisk chỉ đơn giản là foward các bản tin SIP tới server mà ta muốn nó tới bằng cách thêm thông tin về địa chỉ đích vào trường thông tin định tuyến của các bản tin Sip, khi các bản tin này tới server đích, server này sẽ xử lý các bản tin theo lập trình có sẵn, trong asterisk thì phần lập trình được tạo ở file extension.conf và sip.conf; còn trong openser thì được tạo ở file openser.conf. Một số khác cho là giứa ser và asterisk dùng giao thức sip để điều khiển. Thầy em thì bác bỏ điều này vì thầy cho là sip protocol chỉ dùng để kết nối server với client còn asterisk với ser thì phải dùng giao thức gì đó, cái "gì đó" thì thấy chưa biết!!!

    - Việc asterisk ở HN và openser ở SG mà điều khiển, quản lí được lẫn nhau được thực hiện như thế nào? Trước tiên chúng cần thấy được nhau rồi mới nói chuyện quản lí nhau. Để 2 server ở 2 đầu Nam Bắc thấy nhau thì không khó, nhưng để bản tin sip từ client A đăng kí trên asterisk được asterisk xử lí và chuyển tới openser ở HN thì cơ chế ở đây là gì. Bản thân asterisk có module nào chịu trách nhiệm về việc định tuyến các bản tin này hay không. Nếu trong openser em có thấy một số module hay hàm làm việc lưu thông tin định tuyến, thêm bớt các thông số về IP destination address và hàm t_relay cung cấp các cơ chế như DNS định tuyến bản tin tới đích thì trong asterisk em không biết có làm được điều này hay không? Mong mọi người giúp đỡ

  • #2
    Nói qua 1 chút về cái này:
    OpenSER, sau đổi tên là Kamailio và phát triển lên, ngoài ra 1 bản fork của OpenSER có tên là OpenSIP thì lại đi theo hướng khác. 2 nhánh này do sự xung đột về nhóm core nên họ tách làm 2. Đến Kamailio phiên bản 3.0, thì 2 nhóm lại hoà giải với nhau và cùng share chung nhiều thứ để 2 cái tương thích với nhau, có thể sẽ hợp nhất lại 1 trong tương lại.
    Kamailio là SIP Server, gồm các vai trò: SIP Registrar, SIP Proxy, SIP Redirector. Nói tóm lại là chỉ làm việc với SIP Message mà thôi.
    Asterisk là BUA: Back-to-back User Agent. Ngoài xử lý SIP còn 1 số giao thức khác, IAX hay H323, xử lý cả media lẫn cả control. Asterisk giống như 1 media gateway trong mô hình làm việc của SIP, ngoài ra còn làm được SIP Registrar, SIP Client (UA). Chú ý rằng Asterisk không bao giờ là SIP Proxy nhé. Asterisk là IP PBX, còn Kamailio thì ng ta gọi nó là SIP Server, 1 phần của hệ thống SIP (chỉ quan tâm tới control), chứ ko gọi là IP PBX (1 bộ hoàn chỉnh cả control lẫn media). Cũng vì lý do chỉ quan tâm tới control, nên khả năng xử lý của Kamailio rất kinh khủng. 1 server bình thường (2 core, vài GB RAM) có khả năng quản lý hàng chục ngàn subsciber, định tuyến hàng ngàn hướng khác nhau, và hàng trăm cuộc gọi/1 giây. Asterisk để đạt được cỡ đó thì phải rất nhiều server mạnh.
    Xem cái mô hình ở đây http://en.wikipedia.org/wiki/Session...ation_Protocol để tham khảo.
    Nhìn qua mấy cái chức năng trên, ta thấy là mỗi cái có chức năng khác nhau, cả 2 cùng support SIP. Kết nối 2 cái này với nhau hoàn toàn là khả thi (và đã nhiều người làm). Tuy nhiên với mục đích nào và xem xét mỗi thứ với vai trò như thế nào.

    Nếu triển khai Kamailio là hệ thống PBX, kiểu như Asterisk vẫn làm, thì nó còn cần mấy cái nữa mới gần đủ chức năng như Asterisk: media gateway (ví dụ FXO gate kết nối đi PSTN, cái này Asterisk có thể tự làm hoặc là sử dụng ngoài), MCU (conference server), IVR gateway, ACD Gateway, Recording Server, Voice Mail server (mấy chức năng này Asterisk có sẵn, đó là meetme, IVR, queue, record...)... Tóm lại là hàng loạt cái liên quan đến media.

    Do đó, kết nối Asterisk với Kamailio, với mô hình PBX - PBX, thì nhìn từ phía Asterisk, phía Kamailio là 1 trunk (luôn luôn là trunk, ko thể là extension/subcriber được).
    Còn nhìn từ Kamailio, thì Asterisk là 1 gateway hoặc là 1 subsciber. Nếu là gateway thì hoặc là đơn giản nhất dùng hàm sethostport và t_relay, hoặc là dùng module lcr (least cost routing) để khai báo gateway và xử lý t_relay. Ngoài ra còn phải khai báo trusted gateway (để Kamailio nhận SIP message từ Asterisk mà ko yêu cầu xác thực chẳn hạn). Nếu coi Asterisk là subsciber thì phía Asterisk chỉ phải config cái register, còn phía Kamailio phải khai báo module registrar và tạo user/pass là xong.

    Còn nếu Kamailio trong mô hình như là SIP Server, đúng vai trò của nó (1 trong các vai trò, và 1 cái hay dùng nhất là proxy, với load balance proxy), và Asterisk là media gateway (hay ACD, IVR... mọi thứ mà Asterisk có) thì mô hình sẽ khác, Asterisk sẽ giống như các thành phần trong SIP, ko còn thực hiện việc quản lý extension (subscriber) nữa, mà do Kamailio thực hiện. Kết nối thường dùng là gateway - gateway, 2 bên coi nhau là gateway.

    Cả 2 hệ thống Kamailio và Asterisk đều sử dụng file cấu hình là dạng ngôn ngữ scripting, rất linh hoạt và đáp ứng nhiều yêu cầu khác nhau. Nhưng theo kinh nghiệm của tớ thì file config của Asterisk .. tương đối đơn giản, dễ làm. Còn Kamailio thì khá củ chuối và mất nhiều công lao học, nó thực sự là ngôn ngữ lập trình chứ ko còn đơn giản là "macro" như là Asterisk, kamailio gần như ko có tool, GUI hỗ trợ tạo file cấu hình. Phải học cái cú pháp và cách làm việc của nó, thì sẽ làm được việc kết nối 2 bên. Bạn có thể xem 1 số ví dụ của Kamailio, trong mô hình là load balance cho asterisk và mô hình Asterisk là voice mail server ở đây: http://www.kamailio.org/dokuwiki/doku.php

    Bạn là sinh viên sắp ra trường, nếu có yêu thích về cái Kamailio và hệ thống VoIP dựa trên SIP này và nếu bạn ở HN, mình muốn mời bạn về chỗ mình làm. Chỗ mình đã triển khai hệ thống VoIP dựa trên nền SIP, lấy Kamailio làm trung tâm của hệ thống này, dùng Asterisk và một số các media gateway hãng khác làm râu ria. Nó cũng nhiều cái thú vị lắm. Hãy PM nếu có quan tâm nhé.

    Comment


    • #3
      Thanks, bài viết rất hay !
      If I\'m wrong, please Correct me !!!!.
      Thanks so much, my friends !!!!!!

      prepro

      Comment


      • #4
        Originally posted by myquartz View Post
        Nói qua 1 chút về cái này:
        OpenSER, sau đổi tên là Kamailio và phát triển lên, ngoài ra 1 bản fork của OpenSER có tên là OpenSIP thì lại đi theo hướng khác. 2 nhánh này do sự xung đột về nhóm core nên họ tách làm 2. Đến Kamailio phiên bản 3.0, thì 2 nhóm lại hoà giải với nhau và cùng share chung nhiều thứ để 2 cái tương thích với nhau, có thể sẽ hợp nhất lại 1 trong tương lại.
        Kamailio là SIP Server, gồm các vai trò: SIP Registrar, SIP Proxy, SIP Redirector. Nói tóm lại là chỉ làm việc với SIP Message mà thôi.
        Asterisk là BUA: Back-to-back User Agent. Ngoài xử lý SIP còn 1 số giao thức khác, IAX hay H323, xử lý cả media lẫn cả control. Asterisk giống như 1 media gateway trong mô hình làm việc của SIP, ngoài ra còn làm được SIP Registrar, SIP Client (UA). Chú ý rằng Asterisk không bao giờ là SIP Proxy nhé. Asterisk là IP PBX, còn Kamailio thì ng ta gọi nó là SIP Server, 1 phần của hệ thống SIP (chỉ quan tâm tới control), chứ ko gọi là IP PBX (1 bộ hoàn chỉnh cả control lẫn media). Cũng vì lý do chỉ quan tâm tới control, nên khả năng xử lý của Kamailio rất kinh khủng. 1 server bình thường (2 core, vài GB RAM) có khả năng quản lý hàng chục ngàn subsciber, định tuyến hàng ngàn hướng khác nhau, và hàng trăm cuộc gọi/1 giây. Asterisk để đạt được cỡ đó thì phải rất nhiều server mạnh.
        Xem cái mô hình ở đây http://en.wikipedia.org/wiki/Session...ation_Protocol để tham khảo.
        Nhìn qua mấy cái chức năng trên, ta thấy là mỗi cái có chức năng khác nhau, cả 2 cùng support SIP. Kết nối 2 cái này với nhau hoàn toàn là khả thi (và đã nhiều người làm). Tuy nhiên với mục đích nào và xem xét mỗi thứ với vai trò như thế nào.

        Nếu triển khai Kamailio là hệ thống PBX, kiểu như Asterisk vẫn làm, thì nó còn cần mấy cái nữa mới gần đủ chức năng như Asterisk: media gateway (ví dụ FXO gate kết nối đi PSTN, cái này Asterisk có thể tự làm hoặc là sử dụng ngoài), MCU (conference server), IVR gateway, ACD Gateway, Recording Server, Voice Mail server (mấy chức năng này Asterisk có sẵn, đó là meetme, IVR, queue, record...)... Tóm lại là hàng loạt cái liên quan đến media.

        Do đó, kết nối Asterisk với Kamailio, với mô hình PBX - PBX, thì nhìn từ phía Asterisk, phía Kamailio là 1 trunk (luôn luôn là trunk, ko thể là extension/subcriber được).
        Còn nhìn từ Kamailio, thì Asterisk là 1 gateway hoặc là 1 subsciber. Nếu là gateway thì hoặc là đơn giản nhất dùng hàm sethostport và t_relay, hoặc là dùng module lcr (least cost routing) để khai báo gateway và xử lý t_relay. Ngoài ra còn phải khai báo trusted gateway (để Kamailio nhận SIP message từ Asterisk mà ko yêu cầu xác thực chẳn hạn). Nếu coi Asterisk là subsciber thì phía Asterisk chỉ phải config cái register, còn phía Kamailio phải khai báo module registrar và tạo user/pass là xong.

        Còn nếu Kamailio trong mô hình như là SIP Server, đúng vai trò của nó (1 trong các vai trò, và 1 cái hay dùng nhất là proxy, với load balance proxy), và Asterisk là media gateway (hay ACD, IVR... mọi thứ mà Asterisk có) thì mô hình sẽ khác, Asterisk sẽ giống như các thành phần trong SIP, ko còn thực hiện việc quản lý extension (subscriber) nữa, mà do Kamailio thực hiện. Kết nối thường dùng là gateway - gateway, 2 bên coi nhau là gateway.

        Cả 2 hệ thống Kamailio và Asterisk đều sử dụng file cấu hình là dạng ngôn ngữ scripting, rất linh hoạt và đáp ứng nhiều yêu cầu khác nhau. Nhưng theo kinh nghiệm của tớ thì file config của Asterisk .. tương đối đơn giản, dễ làm. Còn Kamailio thì khá củ chuối và mất nhiều công lao học, nó thực sự là ngôn ngữ lập trình chứ ko còn đơn giản là "macro" như là Asterisk, kamailio gần như ko có tool, GUI hỗ trợ tạo file cấu hình. Phải học cái cú pháp và cách làm việc của nó, thì sẽ làm được việc kết nối 2 bên. Bạn có thể xem 1 số ví dụ của Kamailio, trong mô hình là load balance cho asterisk và mô hình Asterisk là voice mail server ở đây: http://www.kamailio.org/dokuwiki/doku.php

        Bạn là sinh viên sắp ra trường, nếu có yêu thích về cái Kamailio và hệ thống VoIP dựa trên SIP này và nếu bạn ở HN, mình muốn mời bạn về chỗ mình làm. Chỗ mình đã triển khai hệ thống VoIP dựa trên nền SIP, lấy Kamailio làm trung tâm của hệ thống này, dùng Asterisk và một số các media gateway hãng khác làm râu ria. Nó cũng nhiều cái thú vị lắm. Hãy PM nếu có quan tâm nhé.
        Bài viết của anh rất hay và bổ ích. Những kiến thức anh nêu đã bổ sung rất nhiều chỗ hổng cho em
        Nếu triển khai Kamailio là hệ thống PBX, kiểu như Asterisk vẫn làm, thì nó còn cần mấy cái nữa mới gần đủ chức năng như Asterisk: media gateway (ví dụ FXO gate kết nối đi PSTN, cái này Asterisk có thể tự làm hoặc là sử dụng ngoài), MCU (conference server), IVR gateway, ACD Gateway, Recording Server, Voice Mail server (mấy chức năng này Asterisk có sẵn, đó là meetme, IVR, queue, record...)... Tóm lại là hàng loạt cái liên quan đến media.
        Sáng nay em nói chuyện với thầy em, em nói là sở dĩ cần dùng OpenSER với Asterisk là vì OpenSER không thể làm nhiều chức năng giống của một IP PBX, nó không có voice mail ... thầy em phán là CÓ, và quạt em, khi chưa biết chắc đừng có phát biểu!!! Thầy nói cái này còn có cả Billing, thì em đồng ý là Có, nhưng mà ngay cả billing cũng do MySQL hoặc Radius đảm nhận, OpenSER chỉ giúp giám sát và cung cấp bản tin INVITE và BYE trong việc billing này, đúng không ạ?
        Trước kia, em muốn thử xem Asterisk và OpenSER có khả năng kết hợp với nhau hay không, em làm một mô hình khá đơn giản,cho 979 đăng kí trên Asterisk, 202 đăng kí trên OpenSER. Gọi 2 cái qua lại cho nhau. Trong mô hình này, đóng vai trò ngang hàng như nhau, cùng là PBX-PBX.Em tạo ra một SIP trunk để thông giữa 2 cái. Để tạo SIP trunk như thế có 2 cách, một là khai báo asterisk như một subscriber của openser ( em không làm cách này), cách 2 là khai báo tĩnh một SIP trunk tới asterisk ( em làm cách này). 2 server thuộc cùng một lớp mạng, mọi chuyện như ý. Bây giờ, cũng mô hình trên PBX-PBX nhưng 2 server này nằm ở 2 lớp mạng khác nhau, thì ta phải cấu hình như thế nào ạ? Anh có thể cho em ví dụ file cấu hình được không?
        Sau khi dùng mô hình PBX-PBX, giờ em muốn thử OpenSER với đúng vai trò của nó là một SIP proxy còn asterisk là mọt media gateway. Trong cùng một lớp mạng, thì ta cũng có thể tạo ra một SIP trunk cho chúng, cấu hình tương tự như trên, nhưng giờ đây tất cả các thuê bao đều đăng kí trên Openser, việc định tuyến, chuyển tiếp cuộc gọi do Openser quản lí, asterisk giờ chỉ đóng vai trò media gateway , cung cấp các dịch vụ conference, voice mail... Còn nếu khác lớp mạng nữa thì sao ạ?

        Xuyên suốt vấn đề em gặp, là nếu 2 server nằm giữa 2 lớp mạng khác nhau, thì cần cấu hình như thế nào để dù với mô hình kết nối nào asterisk và openser vẫn làm việc qua lại được với nhau. Anh có thể cho em những tài liệu hướng dẫn việc này không ạ.
        Hiện tại em đang học Bách Khoa Tp Hồ Chí Minh, nhưng quê em ở miền Bắc, gần Hà Nội, VoIP cũng là lĩnh vực em quan tâm và dành nhiều thời gian cho, em rất muốn sau này cũng được làm về lĩnh vực này. Tháng 7 em mới tốt nghiệp và hiện tại em chưa có xác định được nơi làm việc :). Nick yahoo của em là pukinsson@yahoo.com. Anh pm cho em nick của anh nhé! Cám ơn anh nhìu nhìu
        Last edited by k12; 28-05-2010, 03:29 PM.

        Comment


        • #5
          Originally posted by k12 View Post
          Bài viết của anh rất hay và bổ ích. Những kiến thức anh nêu đã bổ sung rất nhiều chỗ hổng cho em
          Sáng nay em nói chuyện với thầy em, em nói là sở dĩ cần dùng OpenSER với Asterisk là vì OpenSER không thể làm nhiều chức năng giống của một IP PBX, nó không có voice mail ... thầy em phán là CÓ, và quạt em, khi chưa biết chắc đừng có phát biểu!!! Thầy nói cái này còn có cả Billing, thì em đồng ý là Có, nhưng mà ngay cả billing cũng do MySQL hoặc Radius đảm nhận, OpenSER chỉ giúp giám sát và cung cấp bản tin INVITE và BYE trong việc billing này, đúng không ạ?
          Trước kia, em muốn thử xem Asterisk và OpenSER có khả năng kết hợp với nhau hay không, em làm một mô hình khá đơn giản,cho 979 đăng kí trên Asterisk, 202 đăng kí trên OpenSER. Gọi 2 cái qua lại cho nhau. Trong mô hình này, đóng vai trò ngang hàng như nhau, cùng là PBX-PBX.Em tạo ra một SIP trunk để thông giữa 2 cái. Để tạo SIP trunk như thế có 2 cách, một là khai báo asterisk như một subscriber của openser ( em không làm cách này), cách 2 là khai báo tĩnh một SIP trunk tới asterisk ( em làm cách này). 2 server thuộc cùng một lớp mạng, mọi chuyện như ý. Bây giờ, cũng mô hình trên PBX-PBX nhưng 2 server này nằm ở 2 lớp mạng khác nhau, thì ta phải cấu hình như thế nào ạ? Anh có thể cho em ví dụ file cấu hình được không?
          Sau khi dùng mô hình PBX-PBX, giờ em muốn thử OpenSER với đúng vai trò của nó là một SIP proxy còn asterisk là mọt media gateway. Trong cùng một lớp mạng, thì ta cũng có thể tạo ra một SIP trunk cho chúng, cấu hình tương tự như trên, nhưng giờ đây tất cả các thuê bao đều đăng kí trên Openser, việc định tuyến, chuyển tiếp cuộc gọi do Openser quản lí, asterisk giờ chỉ đóng vai trò media gateway , cung cấp các dịch vụ conference, voice mail... Còn nếu khác lớp mạng nữa thì sao ạ?

          Xuyên suốt vấn đề em gặp, là nếu 2 server nằm giữa 2 lớp mạng khác nhau, thì cần cấu hình như thế nào để dù với mô hình kết nối nào asterisk và openser vẫn làm việc qua lại được với nhau. Anh có thể cho em những tài liệu hướng dẫn việc này không ạ.
          Hiện tại em đang học Bách Khoa Tp Hồ Chí Minh, nhưng quê em ở miền Bắc, gần Hà Nội, VoIP cũng là lĩnh vực em quan tâm và dành nhiều thời gian cho, em rất muốn sau này cũng được làm về lĩnh vực này. Tháng 7 em mới tốt nghiệp và hiện tại em chưa có xác định được nơi làm việc :). Nick yahoo của em là pukinsson@yahoo.com. Anh pm cho em nick của anh nhé! Cám ơn anh nhìu nhìu
          Trả lời cho 1 số điểm như sau:
          1. vấn đề voice mail. Kamailio có hỗ trợ, nhưng chỉ là hỗ trợ phần control, ko có media. Do đó vẫn cần 1 ứng dụng khác để tiếp nhận media và xử lý nó (ví dụ nén, gửi mail...). Kamailio có thể xác định 1 subscriber ko online, hoặc đang busy, bị timeout để redirect đến 1 media server làm cái việc nhận voice mail đó (theo 1 quy tắc nào đó). Kamailio cũng hỗ trợ xử lý các packet MWI, với việc báo có bao nhiêu voice mail.
          2. vấn đề kết nối PBX - PBX thành công nhưng khác lớp mạng thì ko chạy. Vì Asterisk là BUA, client A gọi client B, cả control lẫn media đều đi tới Asterisk rồi mới đi tới bên kia. Kamailio nó chỉ xử lý control, A gọi B thì chỉ có SIP message đi tới Kamailio và đi tới B, còn media (RTP) thì A - B trao đổi trực tiếp với nhau. Vì lý do này, nên A ở Asterisk gọi B ở Kamailio, thì control sẽ đi là A -> Asterisk -> Kamailio -> B, nhưng media (RTP) thì: A -> Asterisk -> B.
          Việc ko liên lạc đc (ko có âm thanh chẳng hạn) là do 2 lớp mạng ko liên thông nhau được, hoặc do NAT (nếu dùng Internet).
          Mô hình dạng thế này:
          Control: A --> Asterisk [NAT gateway A] ---- Internet ------ [NAT gateway B] Kamailio ----> B.
          Media: A --> Asterisk [NAT gateway A] ---- Internet ------ [NAT gateway B] --------> B.
          Thì việc Asterisk liên kết media với B sẽ rất khó do phải qua NAT B mới tới B, NAt từ ngoài vào và việc chuyển đổi địa chỉ/port khá lằng nhằng. NAT gateway B loại gọi là ko support SIP ALG sẽ rất stupid với các cuộc gọi SIP và sẽ ko hỗ trợ việc chuyển IP cho đúng (tức thay đổi SIP message sao cho chỉ định đúng IP/port). Nếu B gọi A thì B phải liên hệ kênh RTP trực tiếp được với Asterisk (NAT từ trong ra) cũng khó khăn do cách hành xử của NAT gateway với việc RTP bên nào xuất phát trước (thường thì bên bị gọi sẽ gửi RTP đi trước). Nên nhớ là ta có nhiều B, NAT đúng B nào là việc ko phải dễ, nhất là khi B địa chỉ nó là dynamic.
          Do đó, trong mô hình Kamailio, người ta hay sử dụng 1 cái gọi là RTP Proxy cho trường hợp này. Cái này ở vị trí NAT Gateway B (hoặc được NAT). RPT Proxy sẽ làm việc với Kamailio, và sẽ xác định các cuộc gọi cần NAT để trung chuyển media, chuyển đổi IP/port cho phù hợp. Như thế mô hình A - > B hay ngược lại sẽ như sau:
          Với control: A --> Asterisk - [NAT gateway A] ---- Internet ------ [NAT gateway B] - Kamailio ----> B.
          Với media: A --> Asterisk - [NAT gateway A] ---- Internet ------ [NAT gateway B] - RTP Proxy ----> B.

          Một cách khác nữa là dùng NAT gateway B hỗ trợ SIP ALG. SIP ALG là một ứng dụng đặc biệt, có chức năng gần giống RTP Proxy, nó sẽ lắng nghe các SIP message, và khi xác định có cuộc gọi thì sẽ mở các port, forward tới các máy B tuỳ theo cuộc gọi. Tuy nhiên theo tôi biết việc hỗ trợ này không được hoàn hảo lắm với đa số các sản phẩm NAT gateway (ở đây chính là cổng ra Internet, ví dụ ADSL router), chạy hay bị lỗi và nói chung rất đau đầu khi phải NAT. 1 điểm nữa SIP ALG thường chỉ hỗ trợ 1 chiều, tức là chỉ outbound gọi ra (B gọi cho A) thì ngon, nhưng chiều ngược lại thì rất khó (A -> B). Đấy là tôi rút kinh nghiệm với SIP ALG của 1 hãng danh tiếng: Juniper với dòng SSG (netscreen) đấy. SIP ALG sẽ hoạt động rất tốt nếu ko phải NAT (chỉ routing), ví dụ khi SIP server hay client B ở trong vùng DMZ, ko bị NAT địa chỉ, dùng Public IP, nó sẽ mở các port trên firewall khá chính xác.

          Lời khuyên là nên thử với RTP Proxy, hoặc 1 ứng dụng tương tự mà Kamailio support, tôi quên tên rồi.

          Quê em ở HN, nếu về HN làm ok chứ? nay học BK HCM là ngon rồi, PM anh nếu thấy cần liên hệ (a rất hay có mặt ở HCMCity).

          Comment


          • #6
            Cám ơn anh, em đang tìm hiểu lại phần NAT để có thể hiểu hơn. Với điều kiện làm LV của em hiện nay, làm một mình, trên máy ảo, muốn test xem hệ thống hoạt động thế nào, thử chất lượng thoại... cũng khó. Nhiều lúc bức xúc vì không có đồ xài :))



            Về việc làm, em rất cám ơn ý tốt của anh. Nhưng thực ra em còn gà lắm. Chỉ sợ lúc anh bít trình em sẽ refuse thôi. Anh cho em thêm thông tin về công ty anh được không ạ, ví dụ như địa chỉ, site, chuyên làm về những mảng nào... Em cám ơn anh!
            Last edited by k12; 31-05-2010, 11:22 AM.

            Comment


            • #7
              Lời khuyên là nên thử với RTP Proxy, hoặc 1 ứng dụng tương tự mà Kamailio support, tôi quên tên rồi.
              Có phải cái đó là Media proxy của AG projects không anh, em định thử cài cái media proxy lên cùng server của Openser, chắc không ảnh hưởng gì hết ạ?

              Comment


              • #8
                Originally posted by k12 View Post
                Có phải cái đó là Media proxy của AG projects không anh, em định thử cài cái media proxy lên cùng server của Openser, chắc không ảnh hưởng gì hết ạ?
                Đúng tên đó rồi. Cái đó phức tạp hơn RTP Proxy 1 chút.
                Cài chung không sao cả. Chỉ cần config cho chúng liên lạc với nhau 1 cách ăn ý là được.

                Comment


                • #9
                  Các bạn có phần mềm nào có thể thực hiện được việc đăng kí cùng lúc hàng thuê bao, thực hiện cùng lúc hàng trăm cuộc gọi, các bạn cho mình xin với. Mình muốn thực hiện một số kiểm tra về khả năng quản lý, xử lý các bản tin SIP của Asterisk và OpenSER. Mình cám ơn nhiều, các bạn có cho mình gấp với!

                  Comment


                  • #10
                    Xem thử 1 tool trong link này:
                    How to debug and troubleshoot VoIP problems? Monitor ethernet traffic and debugging displays from a VoIP program. Find out helpful tools for that.

                    Comment


                    • #11
                      em xem roi anh, nhung toan phan mem co ban quyen, sau nhieu ngay tim kiem, chac em dung SIPp qua. Anh co ban crack cua cai software nao khac cho em voi nhe. Em co cai WinSIP co keygen ban 2.7.x, ban nao can cu pm nhe, nhung ma no co van de nen ko tao hang tram cuoc goi duoc !!! Cac ban muon cu thu dung xem, biet dau lai xai duoc, vi cai nay minh xai cho openser duoc nhung khong dung cho asterisk duoc! Xin loi vi danh ko dau, do o tiem net!!!!

                      Comment


                      • #12
                        Với control: A --> Asterisk - [NAT gateway A] ---- Internet ------ [NAT gateway B] - Kamailio ----> B.
                        Với media: A --> Asterisk - [NAT gateway A] ---- Internet ------ [NAT gateway B] - RTP Proxy ----> B.

                        khong nen lam nhu vay
                        Phai dat opensips ra ngoai internet - co IP wan that su, luc nay ban se de dang config hon. Cach config nen dung opensips dial PPPoE thong qua modem ADSL(modem ADSL chi dong vai tro cam day DSL vao ma thoi - bat che do cho phep quay PPPoe tren modem)

                        Một cách khác nữa là dùng NAT gateway B hỗ trợ SIP ALG --> ko nen dung SIP ALG lun, vi moi SIP ALG se lam cho ban ko biet cach debug khi co loi xay ra

                        Mo hinh tui de xuat cho ban nhu sau:

                        IP phone1 ---> Asterisk(sip client '1000' doi voi OPENSIPS) ---modem ADSL -- Opensips(co IP WAN nhe) <-- ip phone2('1002')

                        media: IP phone1 ----asterisk ----RTP proxy/media proxy ----IP phone2

                        *** Astersik se nhu la 1 SIP client doi voi OPENSIPS
                        *** ip phone2 la SIP client doi voi OPENSIPS
                        *** ip phone1 la SIP client cua Asterisk

                        hy vong giup ban

                        Comment

                        Working...
                        X