[GSoC 2016] Wireshark plugin for the gRPC protocol

1,060 views
Skip to first unread message

Sahil Shekhawat

unread,
Mar 4, 2016, 10:45:56 AM3/4/16
to grpc.io
Hi everyone,

I am Sahil Shekhawat, junior at IIIT-Delhi, India and am interested in working on developing Wireshark plugin for gRPC protocol. I poked around and would like to start from fixing bugs but most of the issues are already assigned.Can someone point out where to start and how to study gRPC protocol?

Thank you,
Sahil Shekhawat

Josh Humphries

unread,
Mar 4, 2016, 11:01:45 AM3/4/16
to Sahil Shekhawat, grpc.io
Hey, Sahil, 
Hopefully these pointers help you get going!

The protocol is HTTP/2 at its base.

On top of that, GRPC has conventions of how RPCs are mapped to the HTTP/2 protocol: https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md

Finally, I expect most GRPC usages will use protocol buffers for message encoding:


Protocol buffers are binary encoded and not self-describing. So getting maximum value out of something like WireShark, would likely require pointing a plugin at the service and message definitions (so it can then present the messages in a human-readable form). The service and message schema can be generated by the protocol buffer compile (aka protoc) using the --descriptor_set_out argument. The resulting file is, cleverly enough, also a protocol buffer! So you'd have to link against the protobuf runtime library to inspect and make use of the schema described therein.




----
Josh Humphries
Manager, Shared Systems  |  Platform Engineering
Atlanta, GA  |  678-400-4867

--
You received this message because you are subscribed to the Google Groups "grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+u...@googlegroups.com.
To post to this group, send email to grp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/23b39663-05c1-473f-8e80-8497cb4463e6%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Craig Tiller

unread,
Mar 4, 2016, 12:26:32 PM3/4/16
to Josh Humphries, Sahil Shekhawat, grpc.io
Would it be interesting to be able to hit a reflection service to get those descriptors from within Wireshark?

Sahil Shekhawat

unread,
Mar 5, 2016, 7:46:57 AM3/5/16
to grpc.io, sahilshe...@gmail.com
@Josh, I was reading docs and saw that gRPC can also be used with QUIC rather than HTTP/2. Also, like you said that most users will use protobuf but others can also used flatbufs or thrift.
I want to get a clear view of the project. So, should I only work with HTTP/2 and protobufs or I need to include others use cases as well?

@Craig, yeah! I was thinking about it and it seems interesting.

Thank you,
Sahil Shekhawat

Josh Humphries

unread,
Mar 5, 2016, 8:59:05 AM3/5/16
to Sahil Shekhawat, grpc.io
I don't think GRPC can be used with QUIC. At least I hadn't heard about it. When I do a Google search, the most relevant hits are my own question to this group about it: https://groups.google.com/d/topic/grpc-io/z6b-04clT-g/discussion

So QUIC is a possible future transport for GRPC. For now, it's TCP+HTTP/2. (Googlers can correct me if I'm wrong on this point.)

For the message encoding, if you want to show useful details about the data being transmitted, you'd need to know the schema. I think the encoding currently requires you to know apriori whether it's protobuf, flatbuffer, thrift, etc. Protobuf certainly has the best support right now, and is the main focus for interesting (and relevant) features like service reflection.


----
Josh Humphries
Manager, Shared Systems  |  Platform Engineering
Atlanta, GA  |  678-400-4867

Sahil Shekhawat

unread,
Mar 5, 2016, 10:02:27 AM3/5/16
to grpc.io, sahilshe...@gmail.com
About QUIC, Varun Talvar mentioned it in the podcast https://www.gcppodcast.com/post/episode-15-grpc-with-varun-tarwal/.

Thank you,
Sahil Shekhawat

bb1...@gmail.com

unread,
Mar 9, 2016, 1:01:01 AM3/9/16
to grpc.io
The first decision  we need to make is if this dissector will be a
built-in dissector, included in the main program, or a simply a plugin
?

Plugins are the easiest to write initially.

Sahil Shekhawat

unread,
Mar 18, 2016, 11:11:09 PM3/18/16
to grpc.io
I am working on my proposal but after reading and working with Protobuf and gRPC, it seems like a dissector for protobuf in general. Is it correct?

Also, I am currently attending open source conference "FOSSASIA '16" and will start working on the proposal on 23rd. Can you guys let me know if that will have any negative impact on my application?

Thank you,
Reply all
Reply to author
Forward
0 new messages