sipcapture / homer

HOMER - 100% Open-Source SIP, VoIP, RTC Packet Capture & Monitoring
https://sipcapture.org
GNU Affero General Public License v3.0
1.61k stars 240 forks source link

NO RTCP/MOS CAPTAGENT #578

Closed Integration-IT closed 1 year ago

Integration-IT commented 1 year ago

Hi,

Homer can't display Qos informations.

Here extra debug information added in rtcp_capture_plan.cfg inside captagent module:

[DEBUG] protocol_rtcp.c:121 JSON RTCP { "ssrc":xxxx,"type":201, "report_blocks":[{"source_ssrc":yyyy,"highest_seq_no":313,"fraction_lost":1,"ia_jitter":0,"packets_lost":1,"lsr":0,"dlsr":0}],"report_count":1,"sdes_ssrc":xxxx,"sdes_report_count":1,"sdes_information":[{"type":1,"text":"monkeytester@mylab"}]}
[DEBUG] protocol_sip.c:143 [+] CHECK RTCP PARSING : TRUE
[DEBUG] protocol_sip.c:143 [+] CHECK MESSAGE SIZE 30 : TRUE
[DEBUG] protocol_sip.c:143 [+] CHECK RTCP MESSAGE : TRUE
[DEBUG] protocol_sip.c:143 [+] CHECK RTCP EXIST : TRUE
capture[pcap] {

    # here we can check source/destination IP/port, message size
    if(msg_check("size", "30")) {
        clog("INFO", "[+] CHECK MESSAGE SIZE 30 : TRUE");
        #Check for correct version 
        if(is_rtcp()) {
            clog("INFO", "[+] CHECK RTCP MESSAGE : TRUE");

            #Only for redis!
            if(is_rtcp_exist()) {
                clog("INFO", "[+] CHECK RTCP EXIST : TRUE");

                #Convert to JSON if needed.
                if(parse_rtcp_to_json()) {
                    clog("INFO", "[+] CHECK RTCP PARSING : TRUE");

                    #Can be defined many profiles in transport_hep.xml
                    if(!send_hep("hepsocket")) {
                        clog("INFO", "[+] CHECK SEND SOCKET : FALSE");
                        clog("ERROR", "Error sending HEP!!!!");
                    }

                } else {
                    clog("ERROR", "couldn't parse RTCP to json");
                    clog("INFO", "[+] CHECK SEND SOCKET - couldn't parse RTCP to json : FALSE");
                }

            } else {
                clog("ERROR", "Couldnot find this call");
                clog("INFO", "[+] CHECK RTCP - Couldnot find this call");
            }
        } else {
            clog("ERROR", "This is not RTCP");
            clog("INFO", "[+] CHECK RTCP - This is not RTCP");
        }
        }
    drop;
    clog("INFO", "[+] CHECK RTCP - ACTION DROP RTCP");
}

HOMER7 - Message : Empty RTCP HOMER7 - Qos : Empty RTCP HOMER7 - Qos counters : ALL 0

github-actions[bot] commented 1 year ago

Your report is appreciated. Please star this repository to motivate its developers! :star:

github-actions[bot] commented 1 year ago

Please star this repository to motivate the developers and to get higher priority! :star:

lmangani commented 1 year ago

Hard to comment or reproduce without seeing the traffic and packets. I would suggest to give heplify a try for comparison with the same range settings to see if it produces RTCP statistics.

Integration-IT commented 1 year ago

Hi @lmangani ,

* FIXED * Miss configuration issue in my side, it was from rtpengine side.

Need add extra options at script level:

full-rtcp-attribute generate-RTCP

Define homer destination at config level:

homer = x.x.x.x:yyyy
homer-protocol = udp
homer-id = zzzz

Set nat-mode to true in the database_hash.xml for nated UA.

<param name="nat-mode" value="true"/>

Conversational quality et listening quality are working both and displayed in QoS/RTCP Homer field. heplify is a very useful alternative during the Tshoot stage and an easy one-handed binary, Congratulations!!!

lmangani commented 1 year ago

Glad you find HOMER useful and to see you solved your issue! Welcome to the Community