grpc / grpc/grpc-java

Support for TLS/plaintext Port Unification

Abierto
#9,002 11 comentarios 1 reacción 0 asignados Ver en GitHub
enhancement
Lenguaje dominante
Java
Estrellas
12.1k
Forks
4k
Merge medio
2 d 17 h
PR fusionados (30 d)
37

Descripción

### Is your feature request related to a problem?

While trying to work with TLS, I was scanning through the current server setup. The NettyServerBuilder configures the port to be TLS or plaintext based on the presence or absence of `SslContext`, correspondingly.
https://github.com/grpc/grpc-java/blob/012dbaf5be3fb0d532d977d288a0e42a58f30a7c/netty/src/main/java/io/grpc/netty/NettyServerBuilder.java#L352-L364

Resulting in a very little flexibility for the users to customize the port. Specifically, I was trying to see if we can accept both TLS & non-TLS connections on the same port without the need for creating a duplicate port. Netty demonstrates this through the [doc](https://netty.io/4.1/xref/io/netty/example/portunification/PortUnificationServerHandler.html#PortUnificationServerHandler).

### Describe the solution you'd like

**Approach1**
Explicit public interface in `NettyServerBuilder` for enabling/disabling/multiplexing TLS.
We could follow a [similar approach](https://netty.io/4.1/xref/io/netty/example/portunification/PortUnificationServerHandler.html#PortUnificationServerHandler) of spiffing the initial bytes & dynamically configuring TLS.

**Approach2**
A public interface for adding child handlers to customize the connections.
https://github.com/grpc/grpc-java/blob/012dbaf5be3fb0d532d977d288a0e42a58f30a7c/netty/src/main/java/io/grpc/netty/NettyServer.java#L228

### Additional context

Relevant thread in stackoverflow:
https://stackoverflow.com/questions/71484231/port-unification-in-grpc-java

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Start with NettyServerBuilder.java at the TLS/plaintext configuration around lines 352-364, then inspect NettyServer.java around line 228 and the linked Netty PortUnificationServerHandler example. Compare the two proposed public interfaces and define how one port should accept both TLS and non-TLS connections without requiring a duplicate port.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
backend-api-design, networking
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Tranquilo
Claridad
Bastante claro
Aptitud para principiantes
38/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.