chrome-http2-log-parser icon indicating copy to clipboard operation
chrome-http2-log-parser copied to clipboard

nghttp output parser

Open rmurphey opened this issue 9 years ago • 6 comments

The nghttp tool outputs a different style log than Chrome. It would be great if a log like this could be another input type.

-> % nghttp -navs https://localhost:9000/index-separate.html
[  0.002] Connected
[  0.009][NPN] server offers:
          * h2
          * http/1.1
The negotiated protocol: h2
[  0.025] send SETTINGS frame <length=12, flags=0x00, stream_id=0>
          (niv=2)
          [SETTINGS_MAX_CONCURRENT_STREAMS(0x03):100]
          [SETTINGS_INITIAL_WINDOW_SIZE(0x04):65535]
[  0.025] send PRIORITY frame <length=5, flags=0x00, stream_id=3>
          (dep_stream_id=0, weight=201, exclusive=0)
[  0.025] send PRIORITY frame <length=5, flags=0x00, stream_id=5>
          (dep_stream_id=0, weight=101, exclusive=0)
[  0.025] send PRIORITY frame <length=5, flags=0x00, stream_id=7>
          (dep_stream_id=0, weight=1, exclusive=0)
[  0.025] send PRIORITY frame <length=5, flags=0x00, stream_id=9>
          (dep_stream_id=7, weight=1, exclusive=0)
[  0.025] send PRIORITY frame <length=5, flags=0x00, stream_id=11>
          (dep_stream_id=3, weight=1, exclusive=0)
[  0.025] send HEADERS frame <length=53, flags=0x25, stream_id=13>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=11, weight=16, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /index-separate.html
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.057] recv SETTINGS frame <length=18, flags=0x00, stream_id=0>
          (niv=3)
          [SETTINGS_ENABLE_PUSH(0x02):0]
          [SETTINGS_INITIAL_WINDOW_SIZE(0x04):1048576]
          [SETTINGS_MAX_HEADER_LIST_SIZE(0x06):81920]
[  0.057] recv WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=983041)
[  0.057] recv SETTINGS frame <length=0, flags=0x01, stream_id=0>
          ; ACK
          (niv=0)
[  0.057] recv (stream_id=13) :status: 200
[  0.057] recv (stream_id=13) content-type: text/html
[  0.058] recv HEADERS frame <length=10, flags=0x04, stream_id=13>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.058] send SETTINGS frame <length=0, flags=0x01, stream_id=0>
          ; ACK
          (niv=0)
[  0.069] recv DATA frame <length=874, flags=0x00, stream_id=13>
[  0.069] recv DATA frame <length=0, flags=0x01, stream_id=13>
          ; END_STREAM
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=15>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=0
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=17>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=1
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=19>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=2
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=21>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=3
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=23>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=4
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=25>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=5
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=27>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=6
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=29>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=7
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=31>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=8
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.073] send HEADERS frame <length=36, flags=0x25, stream_id=33>
          ; END_STREAM | END_HEADERS | PRIORITY
          (padlen=0, dep_stream_id=5, weight=2, exclusive=0)
          ; Open new stream
          :method: GET
          :path: /common/libs/jquery.min.js?z=9
          :scheme: https
          :authority: localhost:9000
          accept: */*
          accept-encoding: gzip, deflate
          user-agent: nghttp2/1.3.4
[  0.100] recv (stream_id=15) :status: 200
[  0.100] recv (stream_id=15) content-type: application/javascript
[  0.100] recv HEADERS frame <length=19, flags=0x04, stream_id=15>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.100] recv (stream_id=17) :status: 200
[  0.100] recv (stream_id=17) content-type: application/javascript
[  0.100] recv HEADERS frame <length=2, flags=0x04, stream_id=17>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.100] recv (stream_id=19) :status: 200
[  0.100] recv (stream_id=19) content-type: application/javascript
[  0.100] recv HEADERS frame <length=2, flags=0x04, stream_id=19>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.100] recv (stream_id=21) :status: 200
[  0.117] recv (stream_id=21) content-type: application/javascript
[  0.117] recv HEADERS frame <length=2, flags=0x04, stream_id=21>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.117] recv (stream_id=23) :status: 200
[  0.117] recv (stream_id=23) content-type: application/javascript
[  0.117] recv HEADERS frame <length=2, flags=0x04, stream_id=23>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.118] recv (stream_id=25) :status: 200
[  0.118] recv (stream_id=25) content-type: application/javascript
[  0.118] recv HEADERS frame <length=2, flags=0x04, stream_id=25>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.118] recv (stream_id=27) :status: 200
[  0.118] recv (stream_id=27) content-type: application/javascript
[  0.132] recv HEADERS frame <length=2, flags=0x04, stream_id=27>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.132] recv (stream_id=29) :status: 200
[  0.132] recv (stream_id=29) content-type: application/javascript
[  0.132] recv HEADERS frame <length=2, flags=0x04, stream_id=29>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.132] recv (stream_id=31) :status: 200
[  0.132] recv (stream_id=31) content-type: application/javascript
[  0.132] recv HEADERS frame <length=2, flags=0x04, stream_id=31>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.132] recv (stream_id=33) :status: 200
[  0.132] recv (stream_id=33) content-type: application/javascript
[  0.132] recv HEADERS frame <length=2, flags=0x04, stream_id=33>
          ; END_HEADERS
          (padlen=0)
          ; First response header
[  0.132] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.132] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.132] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.132] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.132] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.132] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.132] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.132] recv DATA frame <length=7317, flags=0x00, stream_id=21>
[  0.132] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=33642)
[  0.132] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=21>
          (window_size_increment=32768)
[  0.134] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.134] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.134] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=40085)
[  0.135] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.135] recv DATA frame <length=874, flags=0x00, stream_id=21>
[  0.135] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.135] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=21>
          (window_size_increment=32767)
[  0.136] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.137] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.137] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.137] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.137] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=33642)
[  0.137] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.137] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.138] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.138] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.138] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.138] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.138] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.140] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.140] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.140] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.140] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.140] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.140] recv DATA frame <length=1, flags=0x00, stream_id=21>
[  0.141] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.141] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.142] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.142] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.142] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32769)
[  0.143] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.143] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.144] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.144] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.144] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.146] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.146] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.146] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=19>
          (window_size_increment=32768)
[  0.146] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.146] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.146] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=15>
          (window_size_increment=32768)
[  0.146] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.149] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.149] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.149] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.149] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.149] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=25>
          (window_size_increment=32768)
[  0.149] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=27>
          (window_size_increment=32768)
[  0.149] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=17>
          (window_size_increment=32768)
[  0.149] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.150] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.150] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.150] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=29>
          (window_size_increment=32768)
[  0.150] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.151] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.151] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=33>
          (window_size_increment=32768)
[  0.151] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.151] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=23>
          (window_size_increment=32768)
[  0.152] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.152] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.153] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.153] recv DATA frame <length=8192, flags=0x00, stream_id=21>
[  0.153] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.156] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.156] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.157] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.157] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.157] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.157] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=31>
          (window_size_increment=32768)
[  0.159] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.159] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.159] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.159] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.159] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.161] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.161] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.162] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.162] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.162] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.162] recv DATA frame <length=2460, flags=0x00, stream_id=21>
[  0.162] recv DATA frame <length=0, flags=0x01, stream_id=21>
          ; END_STREAM
[  0.165] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.165] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.165] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.165] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.165] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=35228)
[  0.166] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.166] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.166] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=19>
          (window_size_increment=32768)
[  0.166] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.166] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.166] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.167] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.167] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.167] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=25>
          (window_size_increment=32768)
[  0.167] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=27>
          (window_size_increment=32768)
[  0.167] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.167] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.167] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.168] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.168] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.168] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=29>
          (window_size_increment=32768)
[  0.182] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.182] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.182] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.182] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.182] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.182] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.182] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=15>
          (window_size_increment=32768)
[  0.182] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.182] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=33>
          (window_size_increment=32768)
[  0.182] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=17>
          (window_size_increment=32768)
[  0.182] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.184] recv DATA frame <length=8192, flags=0x00, stream_id=19>
[  0.184] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.184] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.184] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.184] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.186] recv DATA frame <length=8192, flags=0x00, stream_id=25>
[  0.186] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.186] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.186] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.186] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=32768)
[  0.186] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=23>
          (window_size_increment=32768)
[  0.188] recv DATA frame <length=2460, flags=0x00, stream_id=19>
[  0.188] recv DATA frame <length=8192, flags=0x00, stream_id=27>
[  0.188] recv DATA frame <length=8192, flags=0x00, stream_id=29>
[  0.188] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.188] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.188] recv DATA frame <length=0, flags=0x01, stream_id=19>
          ; END_STREAM
[  0.188] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=35228)
[  0.188] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=31>
          (window_size_increment=32768)
[  0.189] recv DATA frame <length=2460, flags=0x00, stream_id=25>
[  0.189] recv DATA frame <length=2460, flags=0x00, stream_id=27>
[  0.189] recv DATA frame <length=2460, flags=0x00, stream_id=29>
[  0.189] recv DATA frame <length=8192, flags=0x00, stream_id=33>
[  0.189] recv DATA frame <length=8192, flags=0x00, stream_id=15>
[  0.189] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.189] recv DATA frame <length=0, flags=0x01, stream_id=25>
          ; END_STREAM
[  0.189] recv DATA frame <length=0, flags=0x01, stream_id=27>
          ; END_STREAM
[  0.189] recv DATA frame <length=0, flags=0x01, stream_id=29>
          ; END_STREAM
[  0.191] recv DATA frame <length=2460, flags=0x00, stream_id=33>
[  0.191] recv DATA frame <length=2460, flags=0x00, stream_id=15>
[  0.191] recv DATA frame <length=8192, flags=0x00, stream_id=17>
[  0.191] recv DATA frame <length=8192, flags=0x00, stream_id=23>
[  0.191] recv DATA frame <length=8192, flags=0x00, stream_id=31>
[  0.191] recv DATA frame <length=0, flags=0x01, stream_id=33>
          ; END_STREAM
[  0.191] recv DATA frame <length=0, flags=0x01, stream_id=15>
          ; END_STREAM
[  0.191] recv DATA frame <length=2460, flags=0x00, stream_id=17>
[  0.191] recv DATA frame <length=2460, flags=0x00, stream_id=23>
[  0.191] recv DATA frame <length=0, flags=0x01, stream_id=17>
          ; END_STREAM
[  0.191] recv DATA frame <length=0, flags=0x01, stream_id=23>
          ; END_STREAM
[  0.191] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=34416)
[  0.192] recv DATA frame <length=4083, flags=0x00, stream_id=31>
[  0.192] recv DATA frame <length=6569, flags=0x00, stream_id=31>
[  0.192] recv DATA frame <length=0, flags=0x01, stream_id=31>
          ; END_STREAM
[  0.192] send WINDOW_UPDATE frame <length=4, flags=0x00, stream_id=0>
          (window_size_increment=36039)
[  0.192] send GOAWAY frame <length=8, flags=0x00, stream_id=0>
          (last_stream_id=0, error_code=NO_ERROR(0x00), opaque_data(0)=[])

rmurphey avatar Dec 01 '15 14:12 rmurphey

I think @summerwind may be doing similar parsing of the nghttpd server output on an as-yet unpublished piece of work

LPardue avatar Dec 02 '15 14:12 LPardue

@LPardue it was actually @summerwind's screenshot (much prettier than what I've made so far!) from earlier this year that inspired me to make this.

rmurphey avatar Dec 02 '15 15:12 rmurphey

I have released very rough prototype ;-) https://github.com/summerwind/nghttp2-stream-analyzer

summerwind avatar Dec 03 '15 14:12 summerwind

Awesome both!

I really like this visualisation.

LPardue avatar Dec 03 '15 22:12 LPardue

BTW @summerwind, I saw you had a desire to be able to analyze Wireshark/PCAP files, in order to make this kind of parser a little less tool specific. Did you have much luck?

LPardue avatar Dec 03 '15 22:12 LPardue

Yeah, I'd like to analyze h2 communication between each browsers and servers. I thought that the Wireshark meets my requirements but I didn't. Instead of that, I'm working on the "proxy style" analyzer for h2. I will publish that in few weeks ;)

summerwind avatar Dec 09 '15 14:12 summerwind