{"id":21034,"date":"2026-08-26T18:20:23","date_gmt":"2026-08-26T16:20:23","guid":{"rendered":"https:\/\/webhosting.de\/tcp-small-queues-linux-latency-optimization-netzwerkperformance\/"},"modified":"2026-08-26T18:20:23","modified_gmt":"2026-08-26T16:20:23","slug":"tcp-colas-pequenas-linux-optimizacion-de-la-latencia-rendimiento-de-la-red","status":"publish","type":"post","link":"https:\/\/webhosting.de\/es\/tcp-small-queues-linux-latency-optimization-netzwerkperformance\/","title":{"rendered":"Colas peque\u00f1as de TCP: c\u00f3mo reducir de forma espec\u00edfica la latencia en la red de Linux"},"content":{"rendered":"<p>La funci\u00f3n \u00abTCP Small Queues\u00bb limita, por cada flujo TCP, los bytes pendientes en la ruta de transmisi\u00f3n de Linux, lo que reduce as\u00ed <strong>Latencia<\/strong> reduciendo de forma selectiva el \u00abbufferbloat\u00bb. Voy a explicar c\u00f3mo funciona este mecanismo en el <strong>redes en Linux<\/strong> Stack muestra c\u00f3mo establecer l\u00edmites razonables y qu\u00e9 interacciones se producen con el ritmo (pacing), los QDiscs y el control de congesti\u00f3n.<\/p>\n\n<h2>Puntos centrales<\/h2>\n\n<ul>\n  <li><strong>L\u00edmite de caudal<\/strong>: TSQ limita el n\u00famero de bytes pendientes por cada socket TCP.<\/li>\n  <li><strong>Menos \u00abbufferbloat\u00bb<\/strong>: Las colas m\u00e1s cortas reducen el RTT.<\/li>\n  <li><strong>Contrapresi\u00f3n<\/strong>: Las aplicaciones escriben m\u00e1s lentamente cuando se alcanza el l\u00edmite.<\/li>\n  <li><strong>Equidad<\/strong>: Ning\u00fan flujo por s\u00ed solo ocupa colas completas.<\/li>\n  <li><strong>Adaptativo<\/strong> Control: El l\u00edmite depende de la tasa y del tama\u00f1o del segmento.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp-small-queues-4739.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>C\u00f3mo funciona TCP Small Queues<\/h2>\n\n<p>TSQ entra en acci\u00f3n en el punto en el que los segmentos TCP se... <strong>QDisc<\/strong> y al controlador. Cuando escribo datos en un socket, el n\u00facleo comprueba, antes de cada operaci\u00f3n de puesta en cola, los bytes ya asignados para ese flujo. Si el flujo alcanza el l\u00edmite, la l\u00f3gica marca el socket como limitado y detiene cualquier nueva operaci\u00f3n de puesta en cola. Solo cuando la tarjeta de red libera memoria del b\u00fafer, el socket puede volver a enviar y yo puedo volver a introducir datos en la pila. Esta restricci\u00f3n estricta mantiene la <strong>Colas<\/strong> es breve y hace que los tiempos de respuesta sean m\u00e1s predecibles.<\/p>\n\n<h2>Por qu\u00e9 las colas largas aumentan el tiempo de respuesta<\/h2>\n\n<p>Crear colas de controladores y QDisc de gran tama\u00f1o <strong>Bufferbloat<\/strong>, sobre todo con TSO\/GSO y grandes vol\u00famenes de tr\u00e1fico de salida. Una descarga pesada puede saturar las colas de salida, mientras que los flujos interactivos, como SSH, las llamadas a la API o el VoIP, quedan relegados a un segundo plano. La cola sobrecargada acaba dominando la <strong>RTT<\/strong> en lugar del tiempo real de enlace. El control de congesti\u00f3n reacciona con lentitud porque los acks llegan tarde y toma decisiones menos acertadas sobre el cwnd. El TSQ limita los bytes almacenados en el b\u00fafer por flujo, para que los paquetes peque\u00f1os y urgentes lleguen r\u00e1pidamente a la l\u00ednea.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp_small_queues_meeting_2974.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Una mirada bajo el cap\u00f3: lo que cuenta en el n\u00facleo<\/h2>\n\n<p>En el fondo, el n\u00facleo no cuenta \u201epaquetes\u201c, sino bytes; m\u00e1s concretamente: los bytes de memoria que el socket ya ha puesto en cola. Lo que cuenta es lo que la pila contiene en estructuras skbuff, incluyendo <em>truesize<\/em> que se ha asignado y que la NIC a\u00fan no ha procesado. TSQ vincula a ello un <strong>Acelerar\/Desacelerar<\/strong>\u2011Ruta: Si un socket alcanza el cr\u00e9dito, la pila activa un indicador de limitaci\u00f3n y no vuelve a llamar hasta que se hayan completado las transmisiones (NAPI\/IRQ) <em>write_space()<\/em> para que la aplicaci\u00f3n pueda volver a enviar datos. Esta retroalimentaci\u00f3n es m\u00e1s r\u00e1pida que las se\u00f1ales basadas exclusivamente en p\u00e9rdidas del control de congesti\u00f3n y act\u00faa antes que el QDisc. Con TSO\/GSO, el mecanismo sigue siendo eficaz porque el l\u00edmite en el <em>antes de<\/em> utiliza el presupuesto de bytes asignado a la segmentaci\u00f3n: las supertramas grandes solo se admiten en el QDisc si hay suficiente cr\u00e9dito disponible, lo que permite contener las r\u00e1fagas.<\/p>\n\n<h2>L\u00edmites din\u00e1micos y ritmo de entrenamiento<\/h2>\n\n<p>Me beneficio de TSQ porque el l\u00edmite no se mantiene est\u00e1tico, sino que se ajusta a <strong>Tarifa<\/strong> y el tama\u00f1o de los segmentos. El objetivo es mantener unos datos de aproximadamente un milisegundo en la ruta de transmisi\u00f3n por flujo, independientemente de si la velocidad es de 100 Mbit, 1 Gbit o 10 Gbit. Con una conexi\u00f3n r\u00e1pida, el cr\u00e9dito de bytes permitido aumenta; con una conexi\u00f3n lenta, disminuye. En combinaci\u00f3n con el TCP-Pacing, los picos de tr\u00e1fico se mantienen reducidos y los acuses de recibo llegan m\u00e1s r\u00e1pido. De este modo, consigo una reducci\u00f3n notable de <strong>Picos de latencia<\/strong>, sin reducir innecesariamente el rendimiento.<\/p>\n\n<h2>Interacci\u00f3n por socket y entre aplicaciones<\/h2>\n\n<p>El TSQ solo surte efecto si la aplicaci\u00f3n tambi\u00e9n detecta la contrapresi\u00f3n. Por eso tengo en cuenta ajustes como <strong>SO_SNDBUF<\/strong>, <strong>TCP_NOTSENT_LOWAT<\/strong> y el autocorking. Una ventana de b\u00fafer de env\u00edo demasiado grande puede empujar muchos bytes a la pila en un breve lapso de tiempo; aunque el TSQ frena el proceso, la aplicaci\u00f3n no se da cuenta hasta que <em>send()<\/em> se bloquea o devuelve el c\u00f3digo de error EAGAIN. Con <strong>TCP_NOTSENT_LOWAT<\/strong> retraso la parte \u201eno enviada\u201c en el espacio de usuario y, con ello, completo el TSQ en el lado del n\u00facleo. Autocorking (o expl\u00edcitamente <em>TCP_CORK<\/em>\/MSG_MORE) ayuda a agrupar peque\u00f1as operaciones de escritura sin generar picos de latencia. L\u00edmites de ritmo por socket (por ejemplo, mediante <em>SO_MAX_PACING_RATE<\/em>) se adaptan a TSQ: la tasa se suaviza en el tiempo y el l\u00edmite de bytes se restringe en el espacio. Importante: <strong>TCP_NODELAY<\/strong> Desactiva Nagle y puede aumentar la interactividad, pero sin TSQ aumenta el riesgo de picos de tr\u00e1fico; con TSQ tengo ambos aspectos bajo control.<\/p>\n\n<h2>Gu\u00eda pr\u00e1ctica: valores adecuados de TSQ<\/h2>\n\n<p>Establezco el marco general con <strong>net.ipv4.tcp_limit_output_bytes<\/strong> (Sysctl). Los valores predeterminados habituales oscilan entre 128 y 262 KB por flujo. Para muchas cargas de trabajo web y de API, elijo valores m\u00e1s bajos para que las respuestas interactivas sigan siendo r\u00e1pidas. Para las copias de seguridad o la replicaci\u00f3n, aumento moderadamente el l\u00edmite, siempre y cuando el RTT se mantenga estable. Quien quiera profundizar m\u00e1s en el tema de las colas, encontrar\u00e1 conceptos b\u00e1sicos sobre <a href=\"https:\/\/webhosting.de\/es\/servidor-colas-de-paquetes-estabilidad-de-la-red-optimizacion-del-alojamiento-latencia\/\">Colas de paquetes en el servidor<\/a>, que ayudan a clasificar.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th><strong>Escenario<\/strong><\/th>\n      <th><strong>Tasa de enlaces<\/strong><\/th>\n      <th><strong>Valor de referencia tcp_limit_output_bytes<\/strong><\/th>\n      <th><strong>Objetivo<\/strong><\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>API\/HTTP muy interactiva<\/td>\n      <td>100 Mbit \u2013 1 Gbit<\/td>\n      <td>64-128 KB<\/td>\n      <td>baja <strong>RTT<\/strong>, p\u00faas cortas<\/td>\n    <\/tr>\n    <tr>\n      <td>Carga mixta: web + descargas<\/td>\n      <td>1\u201310 Gbit<\/td>\n      <td>128-256 KB<\/td>\n      <td>Saldo de <strong>Rendimiento<\/strong> y latencia<\/td>\n    <\/tr>\n    <tr>\n      <td>Replicaci\u00f3n\/Copias de seguridad<\/td>\n      <td>1\u201310 Gbit<\/td>\n      <td>256\u2013512 KB<\/td>\n      <td>caudal a granel constante, aceptable <strong>Latencia<\/strong><\/td>\n    <\/tr>\n    <tr>\n      <td>WAN con un RTT elevado<\/td>\n      <td>10-100 Mbit<\/td>\n      <td>96\u2013192 KB<\/td>\n      <td>r\u00e1fagas m\u00e1s cortas, m\u00e1s justas <strong>Cues<\/strong><\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp-small-queues-linux-latency-2748.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>QDisc y el control de congesti\u00f3n en combinaci\u00f3n<\/h2>\n\n<p>El TSQ funciona a la entrada de la <strong>QDisc<\/strong>, mientras que algoritmos como fq_codel gestionan la congesti\u00f3n en la l\u00ednea. Juntos reducen las colas y garantizan una distribuci\u00f3n equitativa. Con <a href=\"https:\/\/webhosting.de\/es\/tcp-bbr-control-de-congestion-optimizacion-de-servidores-web-ancho-de-banda\/\">TCP BBR<\/a> Adem\u00e1s, me beneficio de ello, ya que unas mediciones de RTT m\u00e1s realistas permiten un mejor control del ritmo y de la cwnd. CUBIC tambi\u00e9n responde de forma m\u00e1s fluida cuando elimino los tiempos de cola excesivos. De este modo, el rendimiento crece de forma org\u00e1nica, mientras que la <strong>Tiempo de respuesta<\/strong> se mantiene bajo control.<\/p>\n\n<h2>Virtualizaci\u00f3n y plataformas en la nube<\/h2>\n\n<p>En las m\u00e1quinas virtuales se acumulan varios niveles de b\u00fafer: el QDisc del invitado, las colas de virtio\/vhost, el QDisc del host y la tarjeta de red f\u00edsica. Mantengo activo el TSQ en el invitado y elijo all\u00ed un l\u00edmite conservador para que no lleguen grandes r\u00e1fagas al host. En el hipervisor, me aseguro de que las cadenas de latencia sean cortas mediante QDiscs equitativos, anillos TX moderados y una asignaci\u00f3n limpia de IRQ. SR-IOV puede reducir la latencia, pero traslada la responsabilidad a los invitados: sin TSQ en el invitado, existe el riesgo de que se produzcan colas VF largas. En los contenedores, el TSQ por <em>NetNS<\/em> Como de costumbre; mediante el control de ritmo de cgroup y los l\u00edmites de CPU evito que un vecino ruidoso aumente indirectamente la latencia. Tambi\u00e9n es importante prestar atenci\u00f3n a la coalescencia y a las descargas en la ruta virtio: una agrupaci\u00f3n excesiva alarga los acks, mientras que una demasiado escasa reduce la eficiencia; yo realizo los ajustes en funci\u00f3n del objetivo de latencia, sin ser dogm\u00e1tico.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp-small-queues-latenz-8472.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>WLAN y sistemas embebidos: c\u00f3mo abordar correctamente los casos especiales<\/h2>\n\n<p>En las conexiones Wi-Fi, lo que cuenta es la <strong>Agregaci\u00f3n<\/strong> en la capa MAC. Si dejo muy pocos bytes en la ruta de transmisi\u00f3n, el controlador no puede agrupar tantas tramas, lo que reduce la eficiencia. En este tipo de configuraciones, aumento el l\u00edmite con cautela y compruebo el grado de agregaci\u00f3n. Las plataformas OpenWrt y embebidas se benefician adem\u00e1s de rutas optimizadas en los controladores y de un menor n\u00famero de operaciones at\u00f3micas. Pruebo cada ajuste bajo una carga de radio real antes de... <strong>Perfil<\/strong> desplegar ampliamente.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp_latenz_reduzieren_2837.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Seguimiento y m\u00e9tricas que realmente cuentan<\/h2>\n\n<p>Observo el <strong>RTT<\/strong>\u2011Distribuci\u00f3n por socket y presto atenci\u00f3n a los valores at\u00edpicos, no solo a los valores medios. Con ss, tc y exportadores, leo las longitudes de las colas, las retransmisiones y la tasa de pacing. Los programas eBPF me env\u00edan eventos cuando los sockets se limitan y vuelven a quedar libres. El \u00abTime-to-First-Byte\u00bb y los percentiles 95 y 99 indican si TSQ est\u00e1 surtiendo efecto. Sin valores de medici\u00f3n, cualquier <strong>Optimizaci\u00f3n<\/strong> un vuelo a ciegas.<\/p>\n\n<h2>Pruebas A\/B y de carga con resultados significativos<\/h2>\n\n<p>Mido los efectos TSQ de forma reproducible: primero la l\u00ednea de base sin cambios, luego barridos de par\u00e1metros aislados (por ejemplo, 64, 96, 128, 192 KB). Para cargas de trabajo mixtas, ejecuto flujos paralelos (vol\u00famenes masivos + muchas peticiones cortas) y comparo los percentiles 95 y 99 de las latencias, no solo la mediana. Si interrumpo claramente las ejecuciones de prueba (calentamiento, ventana de medici\u00f3n, enfriamiento), los artefactos siguen siendo detectables. Presto atenci\u00f3n a las constantes: mismos patrones de carga \u00fatil, ruta y MTU id\u00e9nticas, frecuencias de CPU id\u00e9nticas tanto en el servidor como en el cliente. En tramos de WAN simulo el retraso, la fluctuaci\u00f3n y la p\u00e9rdida con <em>tc netem<\/em>, para comprobar si los l\u00edmites de TSQ no se alcanzan demasiado pronto cuando el BDP es elevado. Solo cuando los percentiles se estrechan y las retransmisiones y las p\u00e9rdidas se mantienen estables, incorporo los valores a la producci\u00f3n.<\/p>\n\n<h2>Optimizaci\u00f3n del hardware y detalles de los controladores<\/h2>\n\n<p>Compruebo la configuraci\u00f3n de TSO\/GSO, el b\u00fafer circular de la tarjeta de red y el control de IRQ, para que <strong>TSQ<\/strong> funciona correctamente. Los anillos TX demasiado grandes alargan la cola en el dispositivo; los demasiado peque\u00f1os reducen la carga de trabajo. Una agrupaci\u00f3n de interrupciones demasiado gruesa retrasa los acks, mientras que una agrupaci\u00f3n m\u00e1s fina aumenta la carga de la CPU. Adapto la explicaci\u00f3n a la pr\u00e1ctica y, para empezar, remito a <a href=\"https:\/\/webhosting.de\/es\/interrupt-coalescing-optimizacion-de-la-red-serverflux\/\">Coalescencia de interrupciones<\/a>. El objetivo sigue siendo una <strong>Latencia<\/strong> con un rendimiento viable.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/tcp_small_queues_9271.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>NUMA, RSS y afinidad de CPU<\/h2>\n\n<p>Las colas cortas sirven de poco si los paquetes cruzan constantemente los l\u00edmites de NUMA. Vinculo las colas RX\/TX mediante RSS\/irqbalance a los n\u00facleos del mismo dominio NUMA en el que se ejecuta la aplicaci\u00f3n. Con XPS\/RPS controlo qu\u00e9 CPUs se encargan del trabajo de transmisi\u00f3n (TX), evitando as\u00ed los saltos entre sockets. Un menor n\u00famero de fallos de cach\u00e9 y menos conflictos de bloqueo ayudan indirectamente a TSQ: las confirmaciones de finalizaci\u00f3n se reciben m\u00e1s r\u00e1pido, el socket se \u201edeslimita\u201c antes y no se producen picos de latencia. Cuando hay un gran n\u00famero de flujos por host, planifico colas suficientes y evito que varios flujos intensos entren en colisi\u00f3n en el mismo anillo TX.<\/p>\n\n<h2>Paso a paso: comprobar si TSQ est\u00e1 activo<\/h2>\n\n<p>Empiezo echando un vistazo a <strong>Sysctl<\/strong>: sysctl net.ipv4.tcp_limit_output_bytes muestra el l\u00edmite actual. A continuaci\u00f3n, consulto ss -tin para cada socket, presto atenci\u00f3n a send\u2011q y rtt, y comparo las fases de carga con y sin ajuste del l\u00edmite. Con iperf3 genero carga en segundo plano y mido en paralelo los tiempos de respuesta de la API para hacer visibles las prioridades. tc -s qdisc me proporciona las cifras de paquetes y de descartes de la disciplina de salida. Si los percentiles 95 y 99 se mantienen ajustados y la <strong>CPU<\/strong>\u2011Carga en el bastidor: ajusta el l\u00edmite seleccionado.<\/p>\n\n<h2>Errores comunes y antipatrones<\/h2>\n\n<ul>\n  <li>\u201eM\u00e1s margen = mayor rendimiento\u201c: esto es cierto en las pruebas de rendimiento sin un objetivo de latencia, pero falla en los servicios interactivos. TSQ sustituye las colas sobredimensionadas por un cr\u00e9dito adaptado a las necesidades de cada flujo.<\/li>\n  <li>\u201eEl TSQ reduce el rendimiento\u201c: si se configura correctamente, el TSQ limita los picos de tr\u00e1fico, no la tasa media. En cargas de trabajo masivas, aumento moderadamente el l\u00edmite y mido los percentiles en lugar de limitarme solo al pico de Mbit\/s.<\/li>\n  <li>\u201eEl pacing por s\u00ed solo es suficiente\u201c: el suavizado temporal es importante, pero sin un l\u00edmite de bytes, las tramas GSO de gran tama\u00f1o siguen col\u00e1ndose en el QDisc. El TSQ y el pacing se complementan.<\/li>\n  <li>\u201eUn valor para todos\u201c: las cargas de trabajo, los enlaces y las tarjetas de red son diferentes. Trabajo con rangos de valores y los valido por cada entorno.<\/li>\n  <li>\u201eSolo afecta a TCP\u201c: la atenci\u00f3n se centra en TCP, pero en el sistema hay otros par\u00e1metros de ajuste (por ejemplo, para la carga de UDP). Evito que los protocolos paralelos saturen las mismas colas de forma incontrolada.<\/li>\n<\/ul>\n\n<h2>Conclusi\u00f3n: control espec\u00edfico de la latencia<\/h2>\n\n<p>TSQ traslada el control de las colas de controladores al <strong>Z\u00f3calo<\/strong> y, de este modo, reduce los atascos directamente en su origen. Limito los bytes almacenados en el b\u00fafer por flujo y, as\u00ed, garantizo acuses de recibo r\u00e1pidos, un RTT m\u00e1s bajo y colas distribuidas de forma equitativa. En combinaci\u00f3n con fq_codel y un control de congesti\u00f3n moderno, el tiempo de respuesta se mantiene fiable incluso bajo carga. Los casos especiales de WLAN y sistemas embebidos los trato con l\u00edmites adaptados y pruebas en condiciones reales. Quien supervise los indicadores y ajuste los l\u00edmites de forma gradual, mantendr\u00e1 la <strong>Latencia<\/strong> consistentemente bajo, sin perder rendimiento innecesario.<\/p>","protected":false},"excerpt":{"rendered":"<p>TCP Small Queues (TSQ) en el n\u00facleo de Linux limita el n\u00famero de paquetes TCP almacenados en el b\u00fafer por flujo y es una herramienta muy eficaz para la optimizaci\u00f3n de la latencia. Descubre c\u00f3mo TSQ reduce el \u00abbufferbloat\u00bb y mejora los tiempos de respuesta de los servidores.<\/p>","protected":false},"author":1,"featured_media":21027,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-21034","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"123","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"TCP Small","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"21027","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/21034","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/comments?post=21034"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/posts\/21034\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media\/21027"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/media?parent=21034"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/categories?post=21034"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/es\/wp-json\/wp\/v2\/tags?post=21034"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}