curl / Mailing Lists / curl-library / Single Mail

curl-library

Re: HTTP2 stream id detection

From: Ray Satiro via curl-library <curl-library_at_cool.haxx.se>
Date: Thu, 28 Feb 2019 02:31:34 -0500

On 2/27/2019 6:26 PM, Rajvardhan Deshmukh via curl-library wrote:
> I am trying to get the HTTP/2 stream id (so use h2c (clear-text)) from
> the trace for the experiment that i have run.
> The experiment is communication between mptcp capable nodes.
>
> I use the libcurl based client which allows me to downloaded 2 files
> (video of 2 second) in parallel
> ( video segment #1
> http://10.10.3.2:9001/www-itec.uni-klu.ac.at/ftp/datasets/DASHDataset2014/BigBuckBunny/2sec/bunny_4219897bps/BigBuckBunny_2s13.m4s
>
> video segment #1
> http://10.10.3.2:9001/www-itec.uni-klu.ac.at/ftp/datasets/DASHDataset2014/BigBuckBunny/2sec/bunny_3526922bps/BigBuckBunny_2s13.m4s
>
> )
>
> here is the tcpdump trace
> https://umass.box.com/s/2n7st4012vwp8yirddd23pnexho3trxf
>
>
> Wireshark trace analysis step:
> 1. Edit > Preferences > Protocols > HTTP2 > HTTP2 TCP port 9001
>
> i see multiple tcp and mptcp packets but, only 12 HTTP/2 packets
> (verified that the video segments use 2 different streams)
> on one interface and none on the other interface.
>
> I need the HTTP/2 stream number which is only visible in HTTP/2
> packets to differentiate if the packet belongs to
> video segment #1 or the  video segment#2 . With what i have right now,
> i can't differentiate if the segment belongs to
> video segment #1 or video segment #2.
>
> Let me know if you can direct me to someone who can help.

I don't believe libcurl offers a function to get the stream ID from the
transfer. It's probably possible to manually extract it by using
CURLOPT_DEBUGFUNCTION [1] and then look for CURLINFO_TEXT like this:
* Using Stream ID: 1 (easy handle 0x4c6068)
..and then compare the easy handle I guess.

The rest of what you are asking seems outside the scope of the mailing
list and more a question about Wireshark. I can see the URLs in the
capture in HEADERS:

HyperText Transfer Protocol 2
    Stream: HEADERS, Stream ID: 1, Length 100, GET
/www-itec.uni-klu.ac.at/ftp/datasets/DASHDataset2014/BigBuckBunny/2sec/bunny_4219897bps/BigBuckBunny_2s13.m4s

HyperText Transfer Protocol 2
    Stream: HEADERS, Stream ID: 3, Length 85, GET
/www-itec.uni-klu.ac.at/ftp/datasets/DASHDataset2014/BigBuckBunny/2sec/bunny_3526922bps/BigBuckBunny_2s13.m4s

There's a lot of MPTCP that's not decoded as HTTP2 by wireshark it looks
like? I don't know a lot about that... this is the first I'm seeing of
MPTCP. You'd be better off asking in a Wireshark forum. There's also
GOAWAY PROTOCOL_ERRORs. This looks like some problem that has nothing to
do with curl like you are testing MPTCP. From what I understand curl
just sees the one TCP connection and behind the scenes it's parsed out
or something. So I don't think there's anything we can do here.

-------------------------------------------------------------------
Unsubscribe: https://cool.haxx.se/list/listinfo/curl-library
Etiquette: https://curl.haxx.se/mail/etiquette.html
Received on 2019-02-28