Cómo funciona Bump: Internet compartido entre celulares cercanos

Bump es una app de Android que permite a un celular compartir sus datos móviles o su Wi-Fi con un celular cercano, y le paga a quien comparte por los datos que pasan por él. Esta página explica cómo lo hace la app, con suficiente detalle para que un ingeniero pueda comprobar cada afirmación. Para las respuestas cortas, mira las Preguntas Frecuentes.

La versión corta

  1. Un celular que está compartiendo se anuncia por Bluetooth Low Energy (BLE). Los celulares cercanos captan el anuncio y lo muestran en una lista y en un mapa de cobertura.
  2. Cuando eliges a quien comparte, tu celular abre una conexión Wi-Fi Direct con el suyo. Los datos pasan por ese enlace, no por Internet.
  3. Antes de que pase cualquier tráfico tuyo, tu celular abre un túnel OpenVPN cifrado hasta un servidor de Bump. El celular de quien comparte reenvía los paquetes del túnel, pero no puede leerlos.
  4. Quien comparte te aprueba y fija un límite de datos. Pagas por megabyte con créditos Bump. Esa persona gana puntos de recompensa por los mismos megabytes.
Un salto: tu celular se conecta al celular de quien comparte por Wi-Fi Direct, y un túnel cifrado va desde tu celular, pasando por quien comparte, hasta un servidor VPN de Bump y de ahí a Internet. Tu celular Quien comparte Servidor VPN Bump Internet Bluetooth encuentra Wi-Fi Direct transporta Datos de quien comparte Túnel cifrado: solo tu celular y el servidor de Bump pueden leerlo
Un salto. El celular de quien comparte es un intermediario para paquetes que no puede descifrar.

Encontrar a quien comparte: Bluetooth y el mapa de cobertura

Un celular que está compartiendo se anuncia por BLE. Todo lo que el otro celular necesita para conectarse está en el propio anuncio: si quien comparte está en datos móviles, Wi-Fi o ambos, si es un punto de acceso o un intermediario, y el nombre y la contraseña de la red Wi-Fi Direct. Los celulares compatibles con los anuncios extendidos de Bluetooth 5 incluyen además el nombre de usuario de quien comparte, una estimación de velocidad y el precio por megabyte.

Los celulares que buscan Internet también se anuncian, con una marca que dice “necesito datos”. Así es como el celular de quien comparte sabe que hay gente cerca que quiere conexión antes de que nadie toque nada.

Tu celular escanea continuamente mientras la app está abierta y descarta a cualquier persona que comparte de la que no tenga noticia en cinco segundos, así que la lista que ves está siempre al día. El alcance del Bluetooth es en línea de vista y corto: la misma sala, edificio, plaza o bus. Dos celulares solo se encuentran cuando cada uno está dentro del alcance del otro.

Cuatro celulares con su alcance Bluetooth dibujado como círculos. A la izquierda, un celular que comparte y uno que busca están cada uno dentro del círculo del otro, así que están al alcance. A la derecha, los dos círculos no se tocan, así que esos celulares no se encuentran. Compartiendo Buscando Al alcance Los dos celulares están en la intersección Compartiendo Buscando Fuera de alcance Ninguno de los dos oye al otro
Alcance. El alcance Bluetooth de cada celular es un círculo a su alrededor. Dos celulares solo se encuentran cuando cada uno está dentro del círculo del otro, lo que pone a los dos en la intersección.

Bump no es un Wi-Fi para toda la ciudad, todavía. Queremos llegar ahí aumentando la cobertura, no el alcance. El mapa de cobertura nos dice dónde hay gente buscando conexión y nadie compartiendo. Nuestro programa de recompensas por ubicación ofrece premios extra a quienes comparten y se presentan en una celda específica de la ciudad en una franja horaria definida, verificado con los mismos reportes de ubicación que alimentan el mapa, para que las zonas de mayor demanda se acerquen lo más posible a una cobertura completa.

Un mapa de calles de un barrio dividido en celdas hexagonales. Varias celdas tienen borde naranja con el número 1, una es roja, y un grupo de celdas grises y azules está a la derecha.
Recompensas por ubicación en el mapa de nuestras herramientas de administración. Cada hexágono es una celda. Las celdas naranja son donde la gente buscó conexión y no encontró a nadie compartiendo, y el número es cuántas personas pidieron un punto de acceso ahí. Las celdas azules tienen una recompensa programada, las grises vencieron y la roja fue cancelada. Datos del mapa: Google.

El mapa de cobertura se construye con reportes de ubicación que los celulares adjuntan, si la ubicación está activada, a sus registros de sesión y de búsqueda. Nuestro backend los agrupa en una entrada por dispositivo. La app pide los dispositivos vistos en los últimos 30 minutos en un radio de alrededor de un kilómetro y dibuja cada uno como un círculo pequeño, azul para oferta y rojo para demanda, actualizando cada diez segundos. Las entradas con más de 24 horas se borran.

Conectar celular con celular: Wi-Fi Direct

Cuando eliges a quien comparte, se abren dos enlaces a la vez.

El primero es un canal BLE L2CAP. Está listo en uno o dos segundos y transporta unos cientos de kilobits por segundo. Es suficiente para completar el handshake, obtener las credenciales de la VPN y arrancar el túnel mientras el enlace más rápido todavía se está levantando.

El segundo es Wi-Fi Direct. El celular de quien comparte es el dueño del grupo de un grupo Wi-Fi Direct. Tu celular se une como una estación Wi-Fi normal, usando el nombre y la contraseña de la red que leyó en el anuncio BLE, a través de la API de sugerencia de redes de Android. Luego encuentra la dirección de quien comparte con un multicast UDP en el enlace. Esto tarda de cinco a diez segundos y transporta decenas de megabits por segundo. Cuando está listo, el túnel se reinicia sobre él y la sesión continúa.

Bump no usa el punto de acceso normal del celular. Las APIs de punto de acceso de Android o exigen hardware que pueda ser estación y punto de acceso al mismo tiempo, o no dejan que una app administre la conexión, así que Bump crea su propio grupo Wi-Fi Direct. Por eso también el celular de quien comparte sigue conectado a su propio Wi-Fi o a sus datos móviles mientras comparte.

La contraseña viaja en un anuncio Bluetooth que cualquiera al alcance puede leer. Es intencional. El enlace Wi-Fi solo transporta tráfico cifrado del túnel, y nadie recibe Internet por él hasta que quien comparte lo apruebe, así que la contraseña por sí sola no protege nada.

El túnel: qué puede ver quien comparte y qué no

Tu celular ejecuta la biblioteca OpenVPN 3. Crea una interfaz VPN de Android que captura todo el tráfico de tu celular, incluido el DNS, y lo envía por el túnel. Los paquetes del túnel van a un proxy local en tu celular, que envuelve cada uno en un pequeño encabezado con la dirección del servidor VPN de Bump y lo envía por el enlace Wi-Fi Direct (o por el enlace BLE mientras el Wi-Fi todavía se está conectando). El celular de quien comparte lee el encabezado, abre un socket UDP normal hacia ese servidor y reenvía el paquete. Las respuestas vuelven por el mismo camino.

El celular de quien comparte nunca tiene una llave del túnel. Las credenciales funcionan así:

Entonces quien comparte puede ver:

Quien comparte no puede ver:

Tu tráfico sale a Internet desde el servidor de Bump, no desde la conexión de quien comparte, así que nada de lo que haces parece venir de su dirección IP. El servidor de Bump es donde termina el túnel, así que es el punto que puede ver tu tráfico, exactamente como tu proveedor de Internet o cualquier servicio de VPN. No registramos qué sitios o apps visitas. Guardamos registros de conexión (qué dispositivo, qué servidor, cuándo, cuántos datos, qué IP de salida) durante 12 meses porque el Marco Civil da Internet de Brasil lo exige, y cada acceso de nuestro equipo a esos registros queda a su vez registrado. La política de privacidad tiene los detalles.

Quién aprueba, y los límites de datos

Nada pasa hasta que quien comparte diga que sí. Cuando pides conectarte, quien comparte recibe una notificación con tu nombre y un cuadro de diálogo donde aprueba o bloquea la solicitud y fija un límite de datos para ti. El límite puede ser cualquier cantidad, o ilimitado.

El celular de quien comparte cuenta cada byte en cada dirección por persona conectada. La app muestra el uso de cada persona frente a su límite, y permite a quien comparte subir el límite o desconectarla en cualquier momento. Cuando se alcanza un límite, la conexión se cierra con un motivo que aparece en tu celular. Lo mismo pasa si se te acaban los créditos. Quien comparte también puede dejar de compartir del todo, lo que desconecta a todo el mundo.

Créditos y puntos de recompensa

Los dos celulares reportan sus conteos de bytes al backend de Bump durante la sesión. El backend le cobra a quien usa la conexión por megabyte, al precio de quien comparte, en créditos. Y le otorga a quien comparte puntos de recompensa por los mismos megabytes. Los créditos se compran en la app y nunca vencen. Los puntos de recompensa se convierten en dinero por Bre-B en Colombia y Pix en Brasil. Las tarifas vienen de una configuración en el servidor, no de la app, así que pueden cambiar sin una actualización. Las Preguntas Frecuentes tienen los precios actuales y los detalles de pago.

Pasarlo: la cadena

Un celular conectado a través de Bump también puede compartir lo que tiene con el siguiente celular. A esto lo llamamos pasarlo, o la cadena. Llega a lugares a los que el Wi-Fi de quien comparte primero no llega: el fondo de un mercado, un auditorio en el sótano, el final de un bus.

La cadena: tu celular se conecta a un celular intermediario, que se conecta a quien comparte y tiene Internet. El túnel cifrado va desde tu celular, pasando por los dos, hasta el servidor VPN de Bump. Tu celular Intermediario sin Internet propio Quien comparte tiene Internet Servidor VPN Bump Wi-Fi Direct Wi-Fi Direct Datos de quien comparte Un solo túnel cifrado, de extremo a extremo El intermediario y quien comparte reenvían paquetes que no pueden leer
La cadena. Cada celular en ella reenvía el mismo túnel cifrado.

Técnicamente, el celular intermediario cumple los dos papeles a la vez: es cliente del celular de arriba y comparte hacia el celular de abajo. Cada paquete de tu celular lleva un encabezado que identifica su origen, así que el intermediario lo reenvía, todavía cifrado, por su propio enlace hacia arriba. El túnel es el mismo descrito antes y sigue terminando en el servidor de Bump, así que un intermediario no puede leer más de tu tráfico que quien comparte. La aprobación y las credenciales vienen del celular en la cima de la cadena, el que tiene Internet de verdad.

La velocidad a lo largo de la cadena la fija el celular que está reenviando, no cuántos saltos hay. Un intermediario es cliente Wi-Fi del celular de arriba y dueño del grupo de su propio grupo Wi-Fi Direct para el celular de abajo, los dos en la misma radio, así que es el cuello de botella, y más si es un equipo barato. En nuestras mediciones, un celular de gama baja compartiendo una conexión móvil da alrededor de 50 Mbps, y un celular que está él mismo en Wi-Fi y comparte ese Wi-Fi puede bajar a entre 5 y 10 Mbps. Añadir saltos más allá de eso no reduce el caudal de forma notable, pero cada salto añade latencia. Espera que el video funcione y que las llamadas y los juegos sientan el retraso primero. No hay límite de saltos en el software, y hemos probado cadenas de diez saltos. El límite práctico es cuántos celulares hay alrededor, no el número de saltos. Cada celular puede atender a unos cuatro o cinco celulares conectados directamente, según el equipo, así que la cadena se extiende como un árbol y no como una sola fila.

Pasarlo está en la app detrás de un ajuste y viene apagado por defecto mientras terminamos de probarlo en muchos equipos. Los celulares que lo tienen encendido y los que lo tienen apagado forman redes separadas y no se ven entre sí, y por eso se activará para todo el mundo a la vez y no poco a poco.

Chat sin nada de Internet

Bump incluye un chat que funciona cuando nadie cerca tiene Internet. Los mensajes viajan por BLE directamente cuando la otra persona está al alcance. Cuando no lo está, el mensaje espera en una cola en tu celular. Cada vez que tu celular se encuentra con otro celular con Bump, los dos intercambian los mensajes en cola y las confirmaciones de entrega, así que un mensaje puede saltar por varios celulares antes de llegar a su destinatario, y la confirmación hace el camino de vuelta de la misma forma. Esto es una red tolerante a retrasos: nada tiene garantía de llegar rápido, pero sigue avanzando mientras la gente se mueva.

Los mensajes duran 72 horas. Un celular guarda hasta 100 mensajes propios en cola y lleva hasta 500 de otras personas. Cada mensaje se cifra para los dispositivos del destinatario con un intercambio de llaves X25519 y cifrado autenticado, así que los celulares que lo llevan no pueden leerlo. Cada dispositivo tiene su propio par de llaves y firma una declaración que dice a qué cuenta pertenece, y la app publica esa declaración para que otros celulares puedan verificarla cuando tengan Internet, y confiar en ella en el primer uso cuando no. Si hay algún celular con Internet disponible, la app también puede entregar a través de los servidores de Bump, así que un mensaje nunca tiene que esperar un encuentro físico cuando no hace falta.

Límites que vale la pena saber

Las preguntas que esta página no responde probablemente están en las Preguntas Frecuentes. La app es gratis en Google Play.