sipcapture / heplify-server

HEP Capture Server for HOMER
https://sipcapture.org
GNU Affero General Public License v3.0
186 stars 87 forks source link

question - RTCPXR via PUBLISH support #120

Closed JonConnor closed 6 years ago

JonConnor commented 6 years ago

i read the past issue on this similar topic but I didn't follow the expected behavior. I notice in my setup when I use captagent to forward SIP-PUBLISH with rtcp-xr stats to the Homer5 backend, the SIP PUBLISH messages are stored and displayed.

when i use captagent to send the same to the heplify-server docker instance (port 9060), the publish does not show up in the Homer5 gui instance of that docker system. Also tried using heplify to send the PUBLISH to heplify-server and no luck.

Just wanted to confirm if this is the expected behavior and would possibly be addressed as part of Homer7.

lmangani commented 6 years ago

Hi,

Those are converted to timeseries in HEPlify-Server since there is really no need to use those messages for anything once the metrics and tags are extracted.

negbie commented 6 years ago

@lmangani I guess his problem is that kamailio stores SIP-PUBLISH messages with RTCPXR inside the report_capture table: link

Since the API will look into that table: link

It will find nothing because heplify-server will insert every publish message into the sip_capturerest* table. So to make heplify-server fully h5 compatible I should check every publish content-type for vq-rtcpxr and insert that msg into the report table.

negbie commented 6 years ago

@JonConnor I pushed some changes. Please update the homer-webapp and heplify-server container. It would be nice to get some feedback.

negbie commented 6 years ago

@JonConnor And keep in mind that it's a good habit to give open source projects you use at least a github star!

lmangani commented 6 years ago

All those issues and not even a star??? :) shame on you @JonConnor hehe

negbie commented 6 years ago

@lmangani since you are my gif superstar is there one like working for github stars :laughing:

lmangani commented 6 years ago

We need a trigger integration for Github issues that checks if the user starred the project first :) image

negbie commented 6 years ago

This!

negbie commented 6 years ago

Damit its early monday and things get already out of control :rofl:

JonConnor commented 6 years ago

Shame! Shame! 🔔 My bad, if I could give it 5 stars I would ;)

@negbie Will pull the changes tonight and let you know. Thanks!

JonConnor commented 6 years ago

@negbie pulled the docker image and restarted, but still didn't see any PUBLISH show up in the homer GUI when using captagent to send hep packets to port 9060. looking to see if there are any logs that may be telling .. let me know if there's something specific you want me to capture?

negbie commented 6 years ago

You pulled not only the heplify-server but the homer-webapp container too right? Both needs to be updated. When this is the case please exec into the db container and check the report table for the current day. Does the column type has the value 35 or still 1? Since heplify-server puts packets based on the type into the right tables I couldn't use 1 and extended the api logic to query for 1 or 35.

JonConnor commented 6 years ago

i did a docker-compose pull and then docker-compose up -d. I did see it pull down something new for both heplify-server and homer-webapp.

I'm not sure what to look for when u refer to '35' vs '1'... this is the current table columns:

MariaDB [homer_data]> desc report_capture_all_20180817 ; +------------------+---------------------+------+-----+---------------------+----------------+ | Field | Type | Null | Key | Default | Extra | +------------------+---------------------+------+-----+---------------------+----------------+ | id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | date | timestamp | NO | PRI | current_timestamp() | | | micro_ts | bigint(18) | NO | | 0 | | | correlation_id | varchar(256) | NO | MUL | | | | source_ip | varchar(60) | NO | | | | | source_port | int(10) | NO | | 0 | | | destination_ip | varchar(60) | NO | | | | | destination_port | int(10) | NO | | 0 | | | proto | int(5) | NO | | 0 | | | family | int(1) | YES | | NULL | | | type | int(5) | NO | | 0 | | | node | varchar(125) | NO | | | | | msg | varchar(1500) | NO | | | | +------------------+---------------------+------+-----+---------------------+----------------+

please let me know if there's something else I'm supposed to be looking for.

JonConnor commented 6 years ago

oh and there are no records in the reportcapture table.

negbie commented 6 years ago

I mean the value inside the type column. But when your report_capture_all_20180817 table is empty there is nothing to spot ;)

Ok a empty report_capture_all_20180817 table could mean following: Mby you did not pulled the latest version. Or your SIP publish message is missing the Content-Type "application/vq-rtcpxr"

Today I build a new heplify-server container. https://hub.docker.com/r/sipcapture/heplify-server/

Now you will see the version in the first log line and it should be heplify-server 0.951

JonConnor commented 6 years ago

OK the sip publish does contain these: Event: vq-rtcpxr Content-Type: application/vq-rtcpxr

I will pull the latest docker and re-verify.

JonConnor commented 6 years ago

docker updated. will double-check the version info. Publish not making it thru, wanted to share the actual PUBLISH message in case there's something throwing off the parsing. sensitive info was removed.

PUBLISH sip:A.B.C.D;user=phone SIP/2.0 Max-Breadth: 60 Via: SIP/2.0/UDP A.B.C.D:5110;branch=z9hG4bK7a39eb0b Max-Forwards: 70 Call-ID: 587d0697-c010fe226fd2787000980080f0808080@KX-TGP600(M) From: sip:+123456789@domain;user=phone;tag=150947209 To: <sip:A.B.C.D;user=phone> CSeq: 1 PUBLISH Allow: INVITE,ACK,CANCEL,BYE,INFO,UPDATE,OPTIONS,MESSAGE,NOTIFY,REFER Event: vq-rtcpxr Content-Type: application/vq-rtcpxr User-Agent: XXXXXXXXXXXX Content-Length: 809

VQSessionReport: CallTerm CallID: 78abdf6d-b710fe22dabc9b71ff970080f0808080@KXXXXXX0(M) LocalID: sip:+1234566749999@domain:5110;user=phone RemoteID: sip:5555555555@domain;user=phone OrigID: sip:+155555555@domain:5110;user=phone LocalAddr: IP=1.1.1.1 PORT=56904 SSRC=0 RemoteAddr: IP=2.2.2.2 PORT=5159 SSRC=0 LocalGroupID: RemoteGroupID: LocalMetrics: TimeStamps: START=2018-08-13T20:36:11Z STOP=2018-08-13T20:36:16Z SessionDesc: PT=0 PD=PCMU SR=8000 PPS=50 FD=20 FO=80 FPP=2 FMTP=0 PLC=2 SSUP=0 JitterBuffer: JBA=3 JBR=12 JBN=10 JBM=150 JBX=200 PacketLoss: NLR=0 JDR=0 BurstGapLoss: BLD=0 BD=0 GLD=0 GD=4860 GMIN=16 Delay: RTD=4409885 ESD=85 OWD=21964 Signal: SL=-13 NL=-46 RERL=40 QualityEst: RLQ=90 EXTRI=127 MOSLQ=4.3 MOSCQ=4.3

negbie commented 6 years ago

Publish looks normal. Please check the first log line from heplify-server. Do you have version 0.951?

JonConnor commented 6 years ago

help on where that log exists? was trying to find it on my own sorry ... looking around in the container but don't see where it is.

negbie commented 6 years ago

docker logs heplify-server

should give you:

INFO start heplify-server 0.951 with config.HeplifyServer{HEPAddr:"0.0.0.0:9060", ESAddr:"", ESDiscovery:true, PipeAddr:"", PipeFilter:[]string(nil), MQDriver:"", MQAddr:"", MQTopic:"", PromAddr:"0.0.0.0:9096", PromTargetIP:"", PromTargetName:"", HoraclifixStats:false, RTPAgentStats:false, DBShema:"homer5", DBDriver:"mysql", DBAddr:"db:3306", DBUser:"root", DBPass:"", DBDataTable:"homer_data", DBConfTable:"homer_configuration", DBTableSpace:"", DBBulk:200, DBTimer:2, DBRotate:true, DBPartLog:"6h", DBPartSip:"2h", DBPartQos:"12h", DBDropDays:4, DBDropOnStart:false, Dedup:false, DiscardMethod:[]string(nil), AlegIDs:[]string(nil), LogDbg:"", LogLvl:"info", LogStd:true, Config:"./heplify-server.toml", Version:false}

negbie commented 6 years ago

On docker heplify-server will log to stdout. So you don't need to exec into the container. Just paste docker logs heplify-server inside your terminal.

JonConnor commented 6 years ago

INFO start heplify-server 0.951 with config.HeplifyServer

negbie commented 6 years ago

Ok and do you still have nothing in the report table?

JonConnor commented 6 years ago

actually entries are in the current day's table now, but i don't see it in homer-gui.

negbie commented 6 years ago

Ok thats good. Notice that the CallID in the SIP message differs the one in the SIP Body

Call-ID: 587d0697-c010fe226fd2787000980080f0808080@KX-TGP600(M) CallID: 78abdf6d-b710fe22dabc9b71ff970080f0808080@KXXXXXX0(M)

negbie commented 6 years ago

I will store the CallID from the SIP Body (the rtcpxr report) into the table.

JonConnor commented 6 years ago

ya that was a manual edit when i posted it here. It actually matches.

negbie commented 6 years ago

I guess I know what could be wrong. I expect the CallID in this format CallID:abc but you have CallID: abc

Could you check if you really have this whitespace in between?

JonConnor commented 6 years ago

Ya there's a white space between CallID: and the actual value, as below:

VQSessionReport: CallTerm CallID: 78abdf6d-b710fe22dabc9b71ff970080f0808080@KX-TGP600(M)

negbie commented 6 years ago

Ok thats likely the issue. Give me some minutes to fix this.

negbie commented 6 years ago

New image should be ready in 10 min. Docker hub is a bit slow.

negbie commented 6 years ago

Ok docker hub has finished the build. Version should be 0.952.

JonConnor commented 6 years ago

heplify-server 0.952

but still not showing :/

negbie commented 6 years ago

What value do you see in the report table for the column 'type'?

JonConnor commented 6 years ago

MariaDB [homer_data]> select type from report_capture_all_20180816 ; +------+ | type | +------+ | 35 | | 35 | | 35 | | 35 | | 35 | | 35 | | 35 | | 35 | | 35 | | 35 | | 35 | | 35 |

negbie commented 6 years ago

Ok let's put the engineers hat on and first invest half an hour to write a tool instead simply google for a example pcap :laughing:

https://github.com/negbie/edcap

Let me build a basic publish rtcpxr pcap to test things out ;)

negbie commented 6 years ago

Ok back at home and tried following prepared pcap: edcap_out.zip

It has some SIP, RTCP and SIP-PUBLISH RTCP-XR. So I extracted it and send it with heplify to heplify-server

./heplify -rf edcap_out.pcap -pr 4000-50000 -e -lp 10 -l debug

-lp 10 means it will do it 10 times to get some more packets to display. Now when I go into the GUI I can see RTCP+RTCP-XR graph's.

So I have to say I cannot reproduce your issue right now. Please test it like I explained above.

JonConnor commented 6 years ago

tried the pcap. Added the flag -hs heplifyserver:9060 at the end to send it to the heplify-server. However not seeing the PUBLISH nor the INVITE that was in the pcap. Tried it from one of my other servers that have heplify client running and sending traffic, so i'm sure the ip connectivty is good. Will continue to look if its something I'm doing wrong on my side.

negbie commented 6 years ago

Don't forget the portrange flag because the packets inside the pcap have non standard sip portrange. The other thing is you said you see no PUBLISH. That is ok. I just store it inside the report table and not the sip table. So it's just for the stats. But you should see the SIP messages and the rtcp-xr chart. Please try with

./heplify -rf edcap_out.pcap -pr 4000-50000 -e -lp 10 -l debug -hs heplifyserver:9060

lmangani commented 6 years ago

@JonConnor should buy @negbie a dinner or two? #DONATE

negbie commented 6 years ago

When you need the PUBLISH too I have to change some lines and store it into the sip_capture table. But mostly the only interesting part from those messages are the stats.

negbie commented 6 years ago

@lmangani yeah I probably spent to much time on this ;)

negbie commented 6 years ago

So since it's working in general I close this here.

JonConnor commented 6 years ago

thanks for the clarification. I don't see the data even in the rtcp metrics but seems the issue may be unique to me or my setup. will troubleshoot and update if i find anything interesting.

will definitely send at least a few beers your way for all the help! Thanks again.

negbie commented 6 years ago

@JonConnor Did you try it with the provided pcap? With that you should see rtcp-xr stats. I freshly pulled the images and used heplify to ship it.

JonConnor commented 6 years ago

ya i did try that but didn't see anything in the graphs. Heplify-server does push the publish message to Elasticsearch so I know it's receiving it. I'll continue to dig around.

negbie commented 6 years ago

Mby a timezone thing? Did you try it with the today option from the time panel?