New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

gRPC tunneling #14101

Open
ejona86 opened this Issue Jan 20, 2018 · 10 comments

Comments

Projects
None yet
10 participants
@ejona86
Member

ejona86 commented Jan 20, 2018

Issue for cross-language tunneling coordination, especially reverse tunneling (where the client can become a server).

grpc/grpc-java#3987 (functional Java POC)
#14100

@ejona86

This comment has been minimized.

Show comment
Hide comment
@ejona86

ejona86 Mar 26, 2018

Member

The internal push for this fell away. We're looking for user interest. I know there is user interest, but it's hard to say how much there is. If you're interested, vote up the initial comment of this issue and make a comment describing the sort of use-case you're looking at (like Android or firewall-punching). Also mention whether the tunnel component would be generic or app-specific (as app-specific is easier to workaround today with a bidi stream).

Yes, that will produce something not that different from "me too" style of comments, but that's actually what we're asking for here.

Member

ejona86 commented Mar 26, 2018

The internal push for this fell away. We're looking for user interest. I know there is user interest, but it's hard to say how much there is. If you're interested, vote up the initial comment of this issue and make a comment describing the sort of use-case you're looking at (like Android or firewall-punching). Also mention whether the tunnel component would be generic or app-specific (as app-specific is easier to workaround today with a bidi stream).

Yes, that will produce something not that different from "me too" style of comments, but that's actually what we're asking for here.

@rAndom69

This comment has been minimized.

Show comment
Hide comment
@rAndom69

rAndom69 Apr 3, 2018

Well, I will need this (as I definitely do not want to work-around with bidi streams as it's just bad interface for server which needs to connect to client)

So I might as well do pull request for C++ implementation in near-future.

rAndom69 commented Apr 3, 2018

Well, I will need this (as I definitely do not want to work-around with bidi streams as it's just bad interface for server which needs to connect to client)

So I might as well do pull request for C++ implementation in near-future.

@Kasheen

This comment has been minimized.

Show comment
Hide comment
@Kasheen

Kasheen May 2, 2018

I think I have a use case for this which is an app which allows an Android phone's file system to be explored / read / manipulated via a PC application. Essentially the phone is a file server or hosts a remote file system of sorts.

I've read a comment (I think by yourself @ejona86) whereby you say that a listening server on the phone can be flaky depending on screen off / rom configuration and therefore it's possibly appealing to have the connection set up in the reverse direction (PC listens, Android connects) and then reversing the relationship if I'm understanding this feature correctly.

Still looking into GRPC and not entirely sure this is a sensible use case for it, but it seems right now it'd rely on Android netty server working (not sure on the status of this), or doing some kind of bidi stream workaround (not sure how much of a mess this would be when the phone is very much the server in this relationship).

Not exactly a concrete need from me here, but just a 2 cents on a possible use case that might be useful to me. Figured I'd post since you're trying to gauge interest.

Kasheen commented May 2, 2018

I think I have a use case for this which is an app which allows an Android phone's file system to be explored / read / manipulated via a PC application. Essentially the phone is a file server or hosts a remote file system of sorts.

I've read a comment (I think by yourself @ejona86) whereby you say that a listening server on the phone can be flaky depending on screen off / rom configuration and therefore it's possibly appealing to have the connection set up in the reverse direction (PC listens, Android connects) and then reversing the relationship if I'm understanding this feature correctly.

Still looking into GRPC and not entirely sure this is a sensible use case for it, but it seems right now it'd rely on Android netty server working (not sure on the status of this), or doing some kind of bidi stream workaround (not sure how much of a mess this would be when the phone is very much the server in this relationship).

Not exactly a concrete need from me here, but just a 2 cents on a possible use case that might be useful to me. Figured I'd post since you're trying to gauge interest.

@MHDante

This comment has been minimized.

Show comment
Hide comment
@MHDante

MHDante Jun 5, 2018

The use case is a remote operations management platform (kiosks/iot). Due to nat/firewall, we'd like the ability to register a client kiosk to a server, and, on certain events, have the server invert into a client that issues requests to the kiosk. This can currently be done by multiplexing over a bidirectional stream, but would be much better with language support.

MHDante commented Jun 5, 2018

The use case is a remote operations management platform (kiosks/iot). Due to nat/firewall, we'd like the ability to register a client kiosk to a server, and, on certain events, have the server invert into a client that issues requests to the kiosk. This can currently be done by multiplexing over a bidirectional stream, but would be much better with language support.

@overmike

This comment has been minimized.

Show comment
Hide comment
@overmike

overmike Jun 5, 2018

I am interested in this feature for a use case which service A submit a job through a scheduler and we have no idea the job ends up running at, and we need to send events to the job from service A.

But I am concern about how we can scale up service A after having a tunnel established to one instance of service A. May result in a lookaside table or sticky session

overmike commented Jun 5, 2018

I am interested in this feature for a use case which service A submit a job through a scheduler and we have no idea the job ends up running at, and we need to send events to the job from service A.

But I am concern about how we can scale up service A after having a tunnel established to one instance of service A. May result in a lookaside table or sticky session

@fischman

This comment has been minimized.

Show comment
Hide comment
@fischman

fischman Jul 13, 2018

I have a use-case for this motivated by routability - my client can dial a server today but the reverse is not true. The server wants to make side-channel requests of the client, but these "reverse" service definition is largely orthogonal to the "forward" service definition, so intermingling them using bidi streaming and flipping the reverse service are unattractive options.
(this is for a python & C++ app in non-mobile environments, where the server and client are in independent network contexts)

fischman commented Jul 13, 2018

I have a use-case for this motivated by routability - my client can dial a server today but the reverse is not true. The server wants to make side-channel requests of the client, but these "reverse" service definition is largely orthogonal to the "forward" service definition, so intermingling them using bidi streaming and flipping the reverse service are unattractive options.
(this is for a python & C++ app in non-mobile environments, where the server and client are in independent network contexts)

@Anachronomicon

This comment has been minimized.

Show comment
Hide comment
@Anachronomicon

Anachronomicon Aug 8, 2018

I have basically the same use case as @fischman, right down to the language requirements. Something like Crossbar's router is perfect for our needs, but we've already gotten pretty invested in gRPC, so I'd rather not just drop it all and switch to WAMP.

Anachronomicon commented Aug 8, 2018

I have basically the same use case as @fischman, right down to the language requirements. Something like Crossbar's router is perfect for our needs, but we've already gotten pretty invested in gRPC, so I'd rather not just drop it all and switch to WAMP.

@srini100

This comment has been minimized.

Show comment
Hide comment
@srini100

srini100 Aug 19, 2018

Contributor

More users interested in this enhancement grpc/grpc-go#484

Contributor

srini100 commented Aug 19, 2018

More users interested in this enhancement grpc/grpc-go#484

@pgrosu

This comment has been minimized.

Show comment
Hide comment
@pgrosu

pgrosu Aug 19, 2018

@ejona86 I'd ask on the (grpc.io) discussion group - the sample size will be larger :)

pgrosu commented Aug 19, 2018

@ejona86 I'd ask on the (grpc.io) discussion group - the sample size will be larger :)

@mmoehring

This comment has been minimized.

Show comment
Hide comment
@mmoehring

mmoehring Sep 27, 2018

The use case is clients on remote locations behind heavily NATted or downright unreliable connections, like clients which can only connect seldom through mobile wifi hotspots.

mmoehring commented Sep 27, 2018

The use case is clients on remote locations behind heavily NATted or downright unreliable connections, like clients which can only connect seldom through mobile wifi hotspots.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment