<!-- CANARY: REQ=REQ-DOCS-001; FEATURE="Docs"; ASPECT=Documentation; STATUS=TESTED; OWNER=docs; UPDATED=2026-01-15 -->
<h2 id="network-configuration" class="position-relative d-flex align-items-center group">
<span>Network Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="network-configuration"
aria-haspopup="dialog"
aria-label="Share link: Network Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h2><div id="headingShareModal" class="heading-share-modal" role="dialog" aria-modal="true" aria-labelledby="headingShareTitle" hidden>
<div class="hsm-dialog" role="document">
<div class="hsm-header">
<h2 id="headingShareTitle" class="h6 mb-0 fw-bold">Share this section</h2>
<button type="button" class="hsm-close" aria-label="Close">
<i class="fa-solid fa-xmark"></i>
</button>
</div>
<div class="hsm-body">
<label for="headingShareInput" class="form-label small text-muted mb-1 text-uppercase fw-bold" style="font-size: 0.7rem; letter-spacing: 0.5px;">Permalink</label>
<div class="input-group mb-4 hsm-url-group">
<input id="headingShareInput" type="text" class="form-control font-monospace" readonly aria-readonly="true" style="font-size: 0.85rem;" />
<button class="btn btn-primary hsm-copy" type="button" aria-label="Copy" title="Copy">
<i class="fa-duotone fa-clipboard" aria-hidden="true"></i>
</button>
</div>
<div class="small fw-bold mb-2 text-muted text-uppercase" style="font-size: 0.7rem; letter-spacing: 0.5px;">Share via</div>
<div class="hsm-share-grid">
<a id="share-twitter" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-twitter me-2"></i>Twitter
</a>
<a id="share-linkedin" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-linkedin me-2"></i>LinkedIn
</a>
<a id="share-facebook" class="btn btn-outline-secondary w-100" target="_blank" rel="noopener noreferrer">
<i class="fa-brands fa-facebook me-2"></i>Facebook
</a>
</div>
</div>
</div>
</div>
<style>
.heading-share-modal {
position: fixed;
inset: 0;
display: flex;
justify-content: center;
align-items: center;
background: rgba(0, 0, 0, 0.6);
z-index: 1050;
padding: 1rem;
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.heading-share-modal[hidden] { display: none !important; }
.hsm-dialog {
max-width: 420px;
width: 100%;
background: var(--bs-body-bg, #fff);
color: var(--bs-body-color, #212529);
border: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
border-radius: 1rem;
box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25);
overflow: hidden;
animation: hsm-fade-in 0.2s ease-out;
}
@keyframes hsm-fade-in {
from { opacity: 0; transform: scale(0.95); }
to { opacity: 1; transform: scale(1); }
}
[data-bs-theme="dark"] .hsm-dialog {
background: #1e293b;
border-color: rgba(255,255,255,0.1);
color: #f8f9fa;
}
.hsm-header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 1rem 1.5rem;
border-bottom: 1px solid var(--bs-border-color, rgba(0,0,0,0.1));
background: rgba(0,0,0,0.02);
}
[data-bs-theme="dark"] .hsm-header {
background: rgba(255,255,255,0.02);
border-color: rgba(255,255,255,0.1);
}
.hsm-close {
background: transparent;
border: none;
color: inherit;
opacity: 0.5;
padding: 0.25rem 0.5rem;
border-radius: 0.25rem;
font-size: 1.2rem;
line-height: 1;
transition: opacity 0.2s;
}
.hsm-close:hover {
opacity: 1;
}
.hsm-body {
padding: 1.5rem;
}
.hsm-url-group {
display: flex !important;
align-items: stretch;
}
.hsm-url-group .form-control {
flex: 1;
min-width: 0;
margin: 0;
background: var(--bs-secondary-bg, #f8f9fa);
border-color: var(--bs-border-color, #dee2e6);
border-top-right-radius: 0;
border-bottom-right-radius: 0;
height: 42px;
}
.hsm-url-group .btn {
flex: 0 0 auto;
margin: 0;
margin-left: -1px;
border-top-left-radius: 0;
border-bottom-left-radius: 0;
height: 42px;
display: flex;
align-items: center;
justify-content: center;
padding: 0 1.25rem;
z-index: 2;
}
[data-bs-theme="dark"] .hsm-url-group .form-control {
background: #0f172a;
border-color: #334155;
color: #e2e8f0;
}
.hsm-share-grid {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.hsm-share-grid .btn {
display: flex;
align-items: center;
justify-content: center;
font-size: 0.9rem;
padding: 0.6rem;
border-color: var(--bs-border-color);
width: 100%;
}
[data-bs-theme="dark"] .hsm-share-grid .btn {
color: #e2e8f0;
border-color: #475569;
}
[data-bs-theme="dark"] .hsm-share-grid .btn:hover {
background: #334155;
border-color: #cbd5e1;
}
</style>
<script>
(function(){
const modal = document.getElementById('headingShareModal');
if(!modal) return;
const input = modal.querySelector('#headingShareInput');
const copyBtn = modal.querySelector('.hsm-copy');
const twitter = modal.querySelector('#share-twitter');
const linkedin = modal.querySelector('#share-linkedin');
const facebook = modal.querySelector('#share-facebook');
const closeBtn = modal.querySelector('.hsm-close');
let lastFocus=null;
let trapBound=false;
function buildUrl(id){ return window.location.origin + window.location.pathname + '#' + id; }
function isOpen(){ return !modal.hasAttribute('hidden'); }
function hydrate(id){
const url=buildUrl(id);
input.value=url;
const enc=encodeURIComponent(url);
const text=encodeURIComponent(document.title);
if(twitter) twitter.href=`https://twitter.com/intent/tweet?url=${enc}&text=${text}`;
if(linkedin) linkedin.href=`https://www.linkedin.com/sharing/share-offsite/?url=${enc}`;
if(facebook) facebook.href=`https://www.facebook.com/sharer/sharer.php?u=${enc}`;
}
function openModal(id){
lastFocus=document.activeElement;
hydrate(id);
if(!isOpen()){
modal.removeAttribute('hidden');
}
requestAnimationFrame(()=>{ input.focus(); });
trapFocus();
}
function closeModal(){
if(!isOpen()) return;
modal.setAttribute('hidden','');
if(lastFocus && typeof lastFocus.focus==='function') lastFocus.focus();
}
function copyCurrent(){
try{ navigator.clipboard.writeText(input.value).then(()=>feedback(true),()=>fallback()); }
catch(e){ fallback(); }
}
function fallback(){ input.select(); try{ document.execCommand('copy'); feedback(true);}catch(e){ feedback(false);} }
function feedback(ok){ if(!copyBtn) return; const icon=copyBtn.querySelector('i'); if(!icon) return; const prev=copyBtn.getAttribute('data-prev')||icon.className; if(!copyBtn.getAttribute('data-prev')) copyBtn.setAttribute('data-prev',prev); icon.className= ok ? 'fa-duotone fa-clipboard-check':'fa-duotone fa-circle-exclamation'; setTimeout(()=>{ icon.className=prev; },1800); }
function handleShareClick(e){ e.preventDefault(); const btn=e.currentTarget; const id=btn.getAttribute('data-share-target'); if(id) openModal(id); }
function bindShareButtons(){
document.querySelectorAll('.h-share').forEach(btn=>{
if(!btn.dataset.hShareBound){ btn.addEventListener('click', handleShareClick); btn.dataset.hShareBound='1'; }
});
}
bindShareButtons();
if(document.readyState==='loading'){
document.addEventListener('DOMContentLoaded', bindShareButtons);
} else {
requestAnimationFrame(bindShareButtons);
}
document.addEventListener('click', function(e){
const shareBtn=e.target.closest && e.target.closest('.h-share');
if(shareBtn && !shareBtn.dataset.hShareBound){ handleShareClick.call(shareBtn, e); }
}, true);
document.addEventListener('click', e=>{
if(e.target===modal) closeModal();
if(e.target.closest && e.target.closest('.hsm-close')){ e.preventDefault(); closeModal(); }
if(copyBtn && (e.target===copyBtn || (e.target.closest && e.target.closest('.hsm-copy')))) { e.preventDefault(); copyCurrent(); }
});
document.addEventListener('keydown', e=>{ if(e.key==='Escape' && isOpen()) closeModal(); });
function trapFocus(){
if(trapBound) return;
trapBound=true;
modal.addEventListener('keydown', f=>{ if(f.key==='Tab' && isOpen()){ const focusable=[...modal.querySelectorAll('a[href],button,input,textarea,select,[tabindex]:not([tabindex="-1"])')].filter(el=>!el.hasAttribute('disabled')); if(!focusable.length) return; const first=focusable[0]; const last=focusable[focusable.length-1]; if(f.shiftKey && document.activeElement===first){ f.preventDefault(); last.focus(); } else if(!f.shiftKey && document.activeElement===last){ f.preventDefault(); first.focus(); } } });
}
if(closeBtn) closeBtn.addEventListener('click', e=>{ e.preventDefault(); closeModal(); });
})();
</script><p>Network configuration is fundamental to Geode’s performance, security, and reliability. Geode uses the modern QUIC protocol over UDP with mandatory TLS 1.3 encryption, providing superior performance compared to traditional TCP-based databases while maintaining enterprise-grade security.</p>
<h3 id="introduction-to-geode-networking" class="position-relative d-flex align-items-center group">
<span>Introduction to Geode Networking</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="introduction-to-geode-networking"
aria-haspopup="dialog"
aria-label="Share link: Introduction to Geode Networking">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><p>Geode’s networking architecture is built on QUIC (Quick UDP Internet Connections), the same protocol powering HTTP/3. This choice delivers significant advantages: reduced connection latency through 0-RTT resumption, improved performance on lossy networks with better congestion control, native multiplexing without head-of-line blocking, and mandatory encryption with TLS 1.3.</p>
<p>Unlike traditional databases that use TCP, Geode’s QUIC implementation provides better performance for distributed deployments, especially across geographic regions or unreliable networks.</p>
<p>The default port is 3141, with an alternative port 8443 for environments where only standard HTTPS ports are permitted. All communication is encrypted by default with no insecure fallback options.</p>
<h3 id="basic-network-configuration" class="position-relative d-flex align-items-center group">
<span>Basic Network Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="basic-network-configuration"
aria-haspopup="dialog"
aria-label="Share link: Basic Network Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="server-configuration" class="position-relative d-flex align-items-center group">
<span>Server Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="server-configuration"
aria-haspopup="dialog"
aria-label="Share link: Server Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure Geode server network settings in <code>/etc/geode/geode.conf</code>:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Listen address (0.0.0.0 for all interfaces)</span>
</span></span><span class="line"><span class="cl"><span class="nx">listen_address</span> <span class="p">=</span> <span class="s2">"0.0.0.0"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Port configuration</span>
</span></span><span class="line"><span class="cl"><span class="nx">port</span> <span class="p">=</span> <span class="mi">3141</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Enable IPv6</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable_ipv6</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum concurrent connections</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_connections</span> <span class="p">=</span> <span class="mi">10000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Connection idle timeout (seconds)</span>
</span></span><span class="line"><span class="cl"><span class="nx">idle_timeout</span> <span class="p">=</span> <span class="mi">300</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Keep-alive interval (seconds)</span>
</span></span><span class="line"><span class="cl"><span class="nx">keep_alive_interval</span> <span class="p">=</span> <span class="mi">30</span>
</span></span></code></pre></div><p>Start the server with network configuration:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Start with default configuration</span>
</span></span><span class="line"><span class="cl">geode serve --listen 0.0.0.0:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Bind to specific interface</span>
</span></span><span class="line"><span class="cl">geode serve --listen 192.168.1.100:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Enable IPv6</span>
</span></span><span class="line"><span class="cl">geode serve --listen <span class="o">[</span>::<span class="o">]</span>:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Custom port for restricted environments</span>
</span></span><span class="line"><span class="cl">geode serve --listen 0.0.0.0:8443
</span></span></code></pre></div>
<h4 id="client-configuration" class="position-relative d-flex align-items-center group">
<span>Client Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="client-configuration"
aria-haspopup="dialog"
aria-label="Share link: Client Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure client connections with connection strings:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">geode_client</span> <span class="kn">import</span> <span class="n">Client</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Basic connection</span>
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">"localhost:3141"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Explicit TLS configuration</span>
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">"geode.example.com:3141"</span><span class="p">,</span> <span class="n">tls</span><span class="o">=</span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"verify"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"ca_cert"</span><span class="p">:</span> <span class="s2">"/etc/ssl/certs/geode-ca.pem"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"client_cert"</span><span class="p">:</span> <span class="s2">"/etc/ssl/certs/client.pem"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"client_key"</span><span class="p">:</span> <span class="s2">"/etc/ssl/private/client-key.pem"</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Connection with custom timeout</span>
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">"geode.example.com:3141"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">connect_timeout</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">idle_timeout</span><span class="o">=</span><span class="mi">300</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span></code></pre></div><p>In Go:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">import</span> <span class="s">"geodedb.com/geode"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Basic connection
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">db</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Open</span><span class="p">(</span><span class="s">"geode"</span><span class="p">,</span> <span class="s">"quic://localhost:3141"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// With TLS configuration
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">db</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Open</span><span class="p">(</span><span class="s">"geode"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s">"quic://geode.example.com:3141?"</span><span class="o">+</span>
</span></span><span class="line"><span class="cl"> <span class="s">"ca_cert=/etc/ssl/certs/geode-ca.pem&"</span><span class="o">+</span>
</span></span><span class="line"><span class="cl"> <span class="s">"client_cert=/etc/ssl/certs/client.pem&"</span><span class="o">+</span>
</span></span><span class="line"><span class="cl"> <span class="s">"client_key=/etc/ssl/private/client-key.pem"</span><span class="p">)</span>
</span></span></code></pre></div>
<h3 id="quic-protocol-configuration" class="position-relative d-flex align-items-center group">
<span>QUIC Protocol Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="quic-protocol-configuration"
aria-haspopup="dialog"
aria-label="Share link: QUIC Protocol Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="quic-parameters" class="position-relative d-flex align-items-center group">
<span>QUIC Parameters</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="quic-parameters"
aria-haspopup="dialog"
aria-label="Share link: QUIC Parameters">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Optimize QUIC settings for your network environment:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">quic</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Initial receive window (bytes)</span>
</span></span><span class="line"><span class="cl"><span class="nx">initial_receive_window</span> <span class="p">=</span> <span class="mi">1048576</span> <span class="c"># 1 MB</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum receive window (bytes)</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_receive_window</span> <span class="p">=</span> <span class="mi">16777216</span> <span class="c"># 16 MB</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum idle timeout (milliseconds)</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_idle_timeout</span> <span class="p">=</span> <span class="mi">300000</span> <span class="c"># 5 minutes</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Enable 0-RTT connection resumption</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable_0rtt</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum concurrent bidirectional streams</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_concurrent_streams</span> <span class="p">=</span> <span class="mi">1000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Datagram frame support (for lightweight messages)</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable_datagrams</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Congestion control algorithm (cubic, bbr, newreno)</span>
</span></span><span class="line"><span class="cl"><span class="nx">congestion_control</span> <span class="p">=</span> <span class="s2">"cubic"</span>
</span></span></code></pre></div>
<h4 id="connection-migration" class="position-relative d-flex align-items-center group">
<span>Connection Migration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="connection-migration"
aria-haspopup="dialog"
aria-label="Share link: Connection Migration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>QUIC supports connection migration for mobile and roaming clients:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">quic</span><span class="p">.</span><span class="nx">migration</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Enable connection migration</span>
</span></span><span class="line"><span class="cl"><span class="nx">enabled</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Allow migration to different IP addresses</span>
</span></span><span class="line"><span class="cl"><span class="nx">allow_ip_migration</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Allow migration to different ports</span>
</span></span><span class="line"><span class="cl"><span class="nx">allow_port_migration</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum migration attempts</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_migration_attempts</span> <span class="p">=</span> <span class="mi">5</span>
</span></span></code></pre></div><p>This feature is particularly valuable for applications with mobile clients or clients behind NAT that may change IP addresses.</p>
<h3 id="tls-configuration" class="position-relative d-flex align-items-center group">
<span>TLS Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="tls-configuration"
aria-haspopup="dialog"
aria-label="Share link: TLS Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="certificate-management" class="position-relative d-flex align-items-center group">
<span>Certificate Management</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="certificate-management"
aria-haspopup="dialog"
aria-label="Share link: Certificate Management">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure TLS certificates for secure communication:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Generate self-signed certificate for development</span>
</span></span><span class="line"><span class="cl">geode tls generate-cert <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --output-dir<span class="o">=</span>/etc/geode/tls <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --hostname<span class="o">=</span>geode.example.com <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --validity-days<span class="o">=</span><span class="m">365</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Use Let's Encrypt for production</span>
</span></span><span class="line"><span class="cl">geode tls configure-letsencrypt <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --domain<span class="o">=</span>geode.example.com <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --email<span class="o">=</span>[email protected] <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --auto-renew<span class="o">=</span><span class="nb">true</span>
</span></span></code></pre></div><p>Server TLS configuration:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">tls</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Certificate and key paths</span>
</span></span><span class="line"><span class="cl"><span class="nx">cert_file</span> <span class="p">=</span> <span class="s2">"/etc/geode/tls/server.crt"</span>
</span></span><span class="line"><span class="cl"><span class="nx">key_file</span> <span class="p">=</span> <span class="s2">"/etc/geode/tls/server.key"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># CA certificate for client verification</span>
</span></span><span class="line"><span class="cl"><span class="nx">ca_cert_file</span> <span class="p">=</span> <span class="s2">"/etc/geode/tls/ca.crt"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Require client certificates</span>
</span></span><span class="line"><span class="cl"><span class="nx">require_client_cert</span> <span class="p">=</span> <span class="kc">false</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># TLS minimum version (must be 1.3)</span>
</span></span><span class="line"><span class="cl"><span class="nx">min_version</span> <span class="p">=</span> <span class="s2">"1.3"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Cipher suites (TLS 1.3 only)</span>
</span></span><span class="line"><span class="cl"><span class="nx">cipher_suites</span> <span class="p">=</span> <span class="p">[</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"TLS_AES_256_GCM_SHA384"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"TLS_AES_128_GCM_SHA256"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"TLS_CHACHA20_POLY1305_SHA256"</span>
</span></span><span class="line"><span class="cl"><span class="p">]</span>
</span></span></code></pre></div>
<h4 id="mutual-tls-mtls" class="position-relative d-flex align-items-center group">
<span>Mutual TLS (mTLS)</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="mutual-tls-mtls"
aria-haspopup="dialog"
aria-label="Share link: Mutual TLS (mTLS)">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Enable mutual TLS for enhanced security:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">tls</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Require client certificates</span>
</span></span><span class="line"><span class="cl"><span class="nx">require_client_cert</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># CA certificate for verifying clients</span>
</span></span><span class="line"><span class="cl"><span class="nx">ca_cert_file</span> <span class="p">=</span> <span class="s2">"/etc/geode/tls/client-ca.crt"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Certificate revocation list</span>
</span></span><span class="line"><span class="cl"><span class="nx">crl_file</span> <span class="p">=</span> <span class="s2">"/etc/geode/tls/revocation-list.crl"</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Client certificate verification mode</span>
</span></span><span class="line"><span class="cl"><span class="nx">verify_mode</span> <span class="p">=</span> <span class="s2">"strict"</span> <span class="c"># strict, permissive, or optional</span>
</span></span></code></pre></div><p>Client configuration for mTLS:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">"geode.example.com:3141"</span><span class="p">,</span> <span class="n">tls</span><span class="o">=</span><span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"verify"</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"ca_cert"</span><span class="p">:</span> <span class="s2">"/etc/ssl/certs/geode-ca.pem"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"client_cert"</span><span class="p">:</span> <span class="s2">"/etc/ssl/certs/my-client.pem"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="s2">"client_key"</span><span class="p">:</span> <span class="s2">"/etc/ssl/private/my-client-key.pem"</span>
</span></span><span class="line"><span class="cl"><span class="p">})</span>
</span></span></code></pre></div>
<h3 id="connection-pooling" class="position-relative d-flex align-items-center group">
<span>Connection Pooling</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="connection-pooling"
aria-haspopup="dialog"
aria-label="Share link: Connection Pooling">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="server-side-pooling" class="position-relative d-flex align-items-center group">
<span>Server-Side Pooling</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="server-side-pooling"
aria-haspopup="dialog"
aria-label="Share link: Server-Side Pooling">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure server connection limits:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">connection_pool</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Maximum connections per client IP</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_connections_per_ip</span> <span class="p">=</span> <span class="mi">100</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum total connections</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_total_connections</span> <span class="p">=</span> <span class="mi">10000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Connection queue size</span>
</span></span><span class="line"><span class="cl"><span class="nx">connection_queue_size</span> <span class="p">=</span> <span class="mi">1000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Connection acceptance rate limit</span>
</span></span><span class="line"><span class="cl"><span class="nx">accept_rate_limit</span> <span class="p">=</span> <span class="mi">1000</span> <span class="c"># connections per second</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Enable connection pooling statistics</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable_statistics</span> <span class="p">=</span> <span class="kc">true</span>
</span></span></code></pre></div>
<h4 id="client-side-pooling" class="position-relative d-flex align-items-center group">
<span>Client-Side Pooling</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="client-side-pooling"
aria-haspopup="dialog"
aria-label="Share link: Client-Side Pooling">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure client connection pools for optimal performance:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">geode_client</span> <span class="kn">import</span> <span class="n">Client</span><span class="p">,</span> <span class="n">ConnectionPool</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Create connection pool</span>
</span></span><span class="line"><span class="cl"><span class="n">pool</span> <span class="o">=</span> <span class="n">ConnectionPool</span><span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="n">url</span><span class="o">=</span><span class="s2">"geode.example.com:3141"</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">min_connections</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">max_connections</span><span class="o">=</span><span class="mi">100</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">max_idle_time</span><span class="o">=</span><span class="mi">300</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">connection_timeout</span><span class="o">=</span><span class="mi">10</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"> <span class="n">acquire_timeout</span><span class="o">=</span><span class="mi">5</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Use connection from pool</span>
</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">with</span> <span class="n">pool</span><span class="o">.</span><span class="n">acquire</span><span class="p">()</span> <span class="k">as</span> <span class="n">client</span><span class="p">:</span>
</span></span><span class="line"><span class="cl"> <span class="n">result</span><span class="p">,</span> <span class="n">_</span> <span class="o">=</span> <span class="k">await</span> <span class="n">client</span><span class="o">.</span><span class="n">query</span><span class="p">(</span><span class="s2">"MATCH (n:User) RETURN n LIMIT 10"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Pool statistics</span>
</span></span><span class="line"><span class="cl"><span class="n">stats</span> <span class="o">=</span> <span class="n">pool</span><span class="o">.</span><span class="n">get_statistics</span><span class="p">()</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Active: </span><span class="si">{</span><span class="n">stats</span><span class="o">.</span><span class="n">active_connections</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Idle: </span><span class="si">{</span><span class="n">stats</span><span class="o">.</span><span class="n">idle_connections</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">"Wait queue: </span><span class="si">{</span><span class="n">stats</span><span class="o">.</span><span class="n">waiting_requests</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span>
</span></span></code></pre></div><p>In Go with database/sql:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-go" data-lang="go"><span class="line"><span class="cl"><span class="kn">import</span> <span class="p">(</span>
</span></span><span class="line"><span class="cl"> <span class="s">"database/sql"</span>
</span></span><span class="line"><span class="cl"> <span class="nx">_</span> <span class="s">"geodedb.com/geode"</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="nx">db</span><span class="p">,</span> <span class="nx">err</span> <span class="o">:=</span> <span class="nx">sql</span><span class="p">.</span><span class="nf">Open</span><span class="p">(</span><span class="s">"geode"</span><span class="p">,</span> <span class="s">"quic://localhost:3141"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1">// Configure connection pool
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="nx">db</span><span class="p">.</span><span class="nf">SetMaxOpenConns</span><span class="p">(</span><span class="mi">100</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nx">db</span><span class="p">.</span><span class="nf">SetMaxIdleConns</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nx">db</span><span class="p">.</span><span class="nf">SetConnMaxLifetime</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Minute</span> <span class="o">*</span> <span class="mi">5</span><span class="p">)</span>
</span></span><span class="line"><span class="cl"><span class="nx">db</span><span class="p">.</span><span class="nf">SetConnMaxIdleTime</span><span class="p">(</span><span class="nx">time</span><span class="p">.</span><span class="nx">Minute</span> <span class="o">*</span> <span class="mi">1</span><span class="p">)</span>
</span></span></code></pre></div>
<h3 id="firewall-configuration" class="position-relative d-flex align-items-center group">
<span>Firewall Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="firewall-configuration"
aria-haspopup="dialog"
aria-label="Share link: Firewall Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="inbound-rules" class="position-relative d-flex align-items-center group">
<span>Inbound Rules</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="inbound-rules"
aria-haspopup="dialog"
aria-label="Share link: Inbound Rules">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure firewall rules for Geode server:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># UFW (Ubuntu/Debian)</span>
</span></span><span class="line"><span class="cl">sudo ufw allow 3141/udp comment <span class="s1">'Geode QUIC'</span>
</span></span><span class="line"><span class="cl">sudo ufw allow from 10.0.0.0/8 to any port <span class="m">3141</span> proto udp
</span></span><span class="line"><span class="cl">sudo ufw <span class="nb">enable</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># firewalld (CentOS/RHEL)</span>
</span></span><span class="line"><span class="cl">sudo firewall-cmd --permanent --add-port<span class="o">=</span>3141/udp
</span></span><span class="line"><span class="cl">sudo firewall-cmd --permanent --add-rich-rule<span class="o">=</span><span class="s1">'
</span></span></span><span class="line"><span class="cl"><span class="s1"> rule family="ipv4"
</span></span></span><span class="line"><span class="cl"><span class="s1"> source address="10.0.0.0/8"
</span></span></span><span class="line"><span class="cl"><span class="s1"> port protocol="udp" port="3141" accept'</span>
</span></span><span class="line"><span class="cl">sudo firewall-cmd --reload
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># iptables</span>
</span></span><span class="line"><span class="cl">sudo iptables -A INPUT -p udp --dport <span class="m">3141</span> -j ACCEPT
</span></span><span class="line"><span class="cl">sudo iptables -A INPUT -p udp --dport <span class="m">3141</span> -s 10.0.0.0/8 -j ACCEPT
</span></span><span class="line"><span class="cl">sudo iptables-save > /etc/iptables/rules.v4
</span></span></code></pre></div>
<h4 id="cloud-firewall-configuration" class="position-relative d-flex align-items-center group">
<span>Cloud Firewall Configuration</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="cloud-firewall-configuration"
aria-haspopup="dialog"
aria-label="Share link: Cloud Firewall Configuration">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>AWS Security Group:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Allow Geode traffic from application tier</span>
</span></span><span class="line"><span class="cl">aws ec2 authorize-security-group-ingress <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --group-id sg-geode123 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol udp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --port <span class="m">3141</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-group sg-app456
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Allow Geode traffic from specific CIDR</span>
</span></span><span class="line"><span class="cl">aws ec2 authorize-security-group-ingress <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --group-id sg-geode123 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --protocol udp <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --port <span class="m">3141</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --cidr 10.0.0.0/16
</span></span></code></pre></div><p>Google Cloud Firewall:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">gcloud compute firewall-rules create allow-geode-internal <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --direction<span class="o">=</span>INGRESS <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --priority<span class="o">=</span><span class="m">1000</span> <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --network<span class="o">=</span>default <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --action<span class="o">=</span>ALLOW <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --rules<span class="o">=</span>udp:3141 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --source-ranges<span class="o">=</span>10.0.0.0/8
</span></span></code></pre></div>
<h3 id="network-performance-optimization" class="position-relative d-flex align-items-center group">
<span>Network Performance Optimization</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="network-performance-optimization"
aria-haspopup="dialog"
aria-label="Share link: Network Performance Optimization">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="bandwidth-management" class="position-relative d-flex align-items-center group">
<span>Bandwidth Management</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="bandwidth-management"
aria-haspopup="dialog"
aria-label="Share link: Bandwidth Management">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Configure bandwidth limits and Quality of Service (QoS):</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">bandwidth</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Maximum outbound bandwidth per connection (bytes/sec)</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_bandwidth_per_connection</span> <span class="p">=</span> <span class="mi">10485760</span> <span class="c"># 10 MB/s</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum total server bandwidth (bytes/sec)</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_total_bandwidth</span> <span class="p">=</span> <span class="mi">1073741824</span> <span class="c"># 1 GB/s</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Enable bandwidth throttling</span>
</span></span><span class="line"><span class="cl"><span class="nx">enable_throttling</span> <span class="p">=</span> <span class="kc">true</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Priority queue for different query types</span>
</span></span><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">bandwidth</span><span class="p">.</span><span class="nx">priorities</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="nx">admin_queries</span> <span class="p">=</span> <span class="mi">100</span>
</span></span><span class="line"><span class="cl"><span class="nx">user_queries</span> <span class="p">=</span> <span class="mi">50</span>
</span></span><span class="line"><span class="cl"><span class="nx">batch_queries</span> <span class="p">=</span> <span class="mi">10</span>
</span></span></code></pre></div>
<h4 id="buffer-tuning" class="position-relative d-flex align-items-center group">
<span>Buffer Tuning</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="buffer-tuning"
aria-haspopup="dialog"
aria-label="Share link: Buffer Tuning">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Optimize network buffer sizes for your workload:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-toml" data-lang="toml"><span class="line"><span class="cl"><span class="p">[</span><span class="nx">network</span><span class="p">.</span><span class="nx">buffers</span><span class="p">]</span>
</span></span><span class="line"><span class="cl"><span class="c"># Send buffer size (bytes)</span>
</span></span><span class="line"><span class="cl"><span class="nx">send_buffer_size</span> <span class="p">=</span> <span class="mi">2097152</span> <span class="c"># 2 MB</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Receive buffer size (bytes)</span>
</span></span><span class="line"><span class="cl"><span class="nx">receive_buffer_size</span> <span class="p">=</span> <span class="mi">2097152</span> <span class="c"># 2 MB</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Maximum packet size (bytes)</span>
</span></span><span class="line"><span class="cl"><span class="nx">max_packet_size</span> <span class="p">=</span> <span class="mi">65536</span> <span class="c"># 64 KB</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Read timeout (milliseconds)</span>
</span></span><span class="line"><span class="cl"><span class="nx">read_timeout</span> <span class="p">=</span> <span class="mi">30000</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c"># Write timeout (milliseconds)</span>
</span></span><span class="line"><span class="cl"><span class="nx">write_timeout</span> <span class="p">=</span> <span class="mi">30000</span>
</span></span></code></pre></div>
<h4 id="tcpudp-stack-tuning" class="position-relative d-flex align-items-center group">
<span>TCP/UDP Stack Tuning</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="tcpudp-stack-tuning"
aria-haspopup="dialog"
aria-label="Share link: TCP/UDP Stack Tuning">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Operating system network stack optimization:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Linux sysctl settings for high-performance QUIC</span>
</span></span><span class="line"><span class="cl">cat >> /etc/sysctl.conf <span class="s"><<EOF
</span></span></span><span class="line"><span class="cl"><span class="s"># Increase UDP buffer sizes
</span></span></span><span class="line"><span class="cl"><span class="s">net.core.rmem_max = 134217728
</span></span></span><span class="line"><span class="cl"><span class="s">net.core.wmem_max = 134217728
</span></span></span><span class="line"><span class="cl"><span class="s">net.core.rmem_default = 16777216
</span></span></span><span class="line"><span class="cl"><span class="s">net.core.wmem_default = 16777216
</span></span></span><span class="line"><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="cl"><span class="s"># Increase connection backlog
</span></span></span><span class="line"><span class="cl"><span class="s">net.core.somaxconn = 4096
</span></span></span><span class="line"><span class="cl"><span class="s">net.core.netdev_max_backlog = 8192
</span></span></span><span class="line"><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="cl"><span class="s"># Enable TCP/UDP performance options
</span></span></span><span class="line"><span class="cl"><span class="s">net.ipv4.udp_rmem_min = 8192
</span></span></span><span class="line"><span class="cl"><span class="s">net.ipv4.udp_wmem_min = 8192
</span></span></span><span class="line"><span class="cl"><span class="s">EOF</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl">sudo sysctl -p
</span></span></code></pre></div>
<h3 id="load-balancing" class="position-relative d-flex align-items-center group">
<span>Load Balancing</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="load-balancing"
aria-haspopup="dialog"
aria-label="Share link: Load Balancing">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="dns-round-robin" class="position-relative d-flex align-items-center group">
<span>DNS Round-Robin</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="dns-round-robin"
aria-haspopup="dialog"
aria-label="Share link: DNS Round-Robin">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Simple load balancing with DNS:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Multiple A records for geode.example.com</span>
</span></span><span class="line"><span class="cl">geode.example.com. <span class="m">300</span> IN A 192.168.1.101
</span></span><span class="line"><span class="cl">geode.example.com. <span class="m">300</span> IN A 192.168.1.102
</span></span><span class="line"><span class="cl">geode.example.com. <span class="m">300</span> IN A 192.168.1.103
</span></span></code></pre></div><p>Client automatically tries different IP addresses:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="c1"># Client will try all IPs in round-robin fashion</span>
</span></span><span class="line"><span class="cl"><span class="n">client</span> <span class="o">=</span> <span class="n">Client</span><span class="p">(</span><span class="s2">"geode.example.com:3141"</span><span class="p">)</span>
</span></span></code></pre></div>
<h4 id="layer-4-load-balancing" class="position-relative d-flex align-items-center group">
<span>Layer 4 Load Balancing</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="layer-4-load-balancing"
aria-haspopup="dialog"
aria-label="Share link: Layer 4 Load Balancing">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Use UDP-aware load balancers:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-nginx" data-lang="nginx"><span class="line"><span class="cl"><span class="c1"># NGINX Stream configuration for QUIC
</span></span></span><span class="line"><span class="cl"><span class="c1"></span><span class="k">stream</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kn">upstream</span> <span class="s">geode_cluster</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kn">hash</span> <span class="nv">$remote_addr</span> <span class="s">consistent</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">server</span> <span class="n">192.168.1.101</span><span class="p">:</span><span class="mi">3141</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">server</span> <span class="n">192.168.1.102</span><span class="p">:</span><span class="mi">3141</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">server</span> <span class="n">192.168.1.103</span><span class="p">:</span><span class="mi">3141</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"> <span class="kn">server</span> <span class="p">{</span>
</span></span><span class="line"><span class="cl"> <span class="kn">listen</span> <span class="mi">3141</span> <span class="s">udp</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_pass</span> <span class="s">geode_cluster</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_timeout</span> <span class="mi">5m</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="kn">proxy_responses</span> <span class="mi">1</span><span class="p">;</span>
</span></span><span class="line"><span class="cl"> <span class="p">}</span>
</span></span><span class="line"><span class="cl"><span class="p">}</span>
</span></span></code></pre></div><p>HAProxy configuration:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gdscript3" data-lang="gdscript3"><span class="line"><span class="cl"><span class="c1"># HAProxy UDP load balancing for QUIC</span>
</span></span><span class="line"><span class="cl"><span class="n">frontend</span> <span class="n">geode_frontend</span>
</span></span><span class="line"><span class="cl"> <span class="n">bind</span> <span class="o">*</span><span class="p">:</span><span class="mi">3141</span>
</span></span><span class="line"><span class="cl"> <span class="n">mode</span> <span class="n">udp</span>
</span></span><span class="line"><span class="cl"> <span class="n">default_backend</span> <span class="n">geode_backend</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="n">backend</span> <span class="n">geode_backend</span>
</span></span><span class="line"><span class="cl"> <span class="n">mode</span> <span class="n">udp</span>
</span></span><span class="line"><span class="cl"> <span class="n">balance</span> <span class="n">roundrobin</span>
</span></span><span class="line"><span class="cl"> <span class="nb">hash</span><span class="o">-</span><span class="n">type</span> <span class="n">consistent</span>
</span></span><span class="line"><span class="cl"> <span class="n">server</span> <span class="n">geode1</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">1.101</span><span class="p">:</span><span class="mi">3141</span> <span class="n">check</span>
</span></span><span class="line"><span class="cl"> <span class="n">server</span> <span class="n">geode2</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">1.102</span><span class="p">:</span><span class="mi">3141</span> <span class="n">check</span>
</span></span><span class="line"><span class="cl"> <span class="n">server</span> <span class="n">geode3</span> <span class="mf">192.168</span><span class="o">.</span><span class="mf">1.103</span><span class="p">:</span><span class="mi">3141</span> <span class="n">check</span>
</span></span></code></pre></div>
<h3 id="monitoring-network-performance" class="position-relative d-flex align-items-center group">
<span>Monitoring Network Performance</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="monitoring-network-performance"
aria-haspopup="dialog"
aria-label="Share link: Monitoring Network Performance">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="network-metrics" class="position-relative d-flex align-items-center group">
<span>Network Metrics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="network-metrics"
aria-haspopup="dialog"
aria-label="Share link: Network Metrics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Monitor network performance metrics:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-gql" data-lang="gql"><span class="line"><span class="cl"><span class="err">--</span><span class="w"> </span><span class="py">Query</span><span class="w"> </span><span class="py">network</span><span class="w"> </span><span class="py">statistics</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">SELECT</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">metric_name</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">metric_value</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="py">timestamp</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">FROM</span><span class="w"> </span><span class="py">system</span><span class="err">.</span><span class="py">network_metrics</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">WHERE</span><span class="w"> </span><span class="py">metric_name</span><span class="w"> </span><span class="py">IN</span><span class="w"> </span><span class="p">(</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="err">'</span><span class="py">connections_active</span><span class="err">'</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="err">'</span><span class="py">connections_total</span><span class="err">'</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="err">'</span><span class="py">bytes_sent</span><span class="err">'</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="err">'</span><span class="py">bytes_received</span><span class="err">'</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="err">'</span><span class="py">packets_lost</span><span class="err">'</span><span class="p">,</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="err">'</span><span class="py">rtt_average</span><span class="err">'</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="p">)</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">ORDER</span><span class="w"> </span><span class="py">BY</span><span class="w"> </span><span class="py">timestamp</span><span class="w"> </span><span class="py">DESC</span><span class="w">
</span></span></span><span class="line"><span class="cl"><span class="w"></span><span class="py">LIMIT</span><span class="w"> </span><span class="py">100</span><span class="err">;</span><span class="w">
</span></span></span></code></pre></div><p>Prometheus metrics:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Scrape Geode network metrics</span>
</span></span><span class="line"><span class="cl">curl http://localhost:9090/metrics <span class="p">|</span> grep geode_network
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Example metrics</span>
</span></span><span class="line"><span class="cl">geode_network_connections_active <span class="m">523</span>
</span></span><span class="line"><span class="cl">geode_network_connections_total <span class="m">152847</span>
</span></span><span class="line"><span class="cl">geode_network_bytes_sent_total <span class="m">182374923847</span>
</span></span><span class="line"><span class="cl">geode_network_bytes_received_total <span class="m">93847298347</span>
</span></span><span class="line"><span class="cl">geode_network_packets_lost_total <span class="m">1234</span>
</span></span><span class="line"><span class="cl">geode_network_rtt_milliseconds<span class="o">{</span><span class="nv">quantile</span><span class="o">=</span><span class="s2">"0.5"</span><span class="o">}</span> <span class="m">12</span>
</span></span><span class="line"><span class="cl">geode_network_rtt_milliseconds<span class="o">{</span><span class="nv">quantile</span><span class="o">=</span><span class="s2">"0.95"</span><span class="o">}</span> <span class="m">45</span>
</span></span><span class="line"><span class="cl">geode_network_rtt_milliseconds<span class="o">{</span><span class="nv">quantile</span><span class="o">=</span><span class="s2">"0.99"</span><span class="o">}</span> <span class="m">89</span>
</span></span></code></pre></div>
<h4 id="connection-diagnostics" class="position-relative d-flex align-items-center group">
<span>Connection Diagnostics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="connection-diagnostics"
aria-haspopup="dialog"
aria-label="Share link: Connection Diagnostics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><p>Diagnose connection issues:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Show active connections</span>
</span></span><span class="line"><span class="cl">geode admin connections list
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Show connection details</span>
</span></span><span class="line"><span class="cl">geode admin connection show --id<span class="o">=</span>conn-12345
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Test connectivity</span>
</span></span><span class="line"><span class="cl">geode admin ping --host<span class="o">=</span>geode.example.com:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Trace route with QUIC</span>
</span></span><span class="line"><span class="cl">geode admin traceroute --host<span class="o">=</span>geode.example.com:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Network throughput test</span>
</span></span><span class="line"><span class="cl">geode admin benchmark network <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --host<span class="o">=</span>geode.example.com:3141 <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --duration<span class="o">=</span>60s <span class="se">\
</span></span></span><span class="line"><span class="cl"><span class="se"></span> --packet-size<span class="o">=</span>64KB
</span></span></code></pre></div>
<h3 id="best-practices" class="position-relative d-flex align-items-center group">
<span>Best Practices</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="best-practices"
aria-haspopup="dialog"
aria-label="Share link: Best Practices">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ol>
<li><strong>TLS Certificates</strong>: Use valid TLS certificates from trusted CAs in production</li>
<li><strong>Connection Limits</strong>: Set appropriate connection limits based on server capacity</li>
<li><strong>Firewall Rules</strong>: Restrict access to trusted networks and IP ranges</li>
<li><strong>Monitoring</strong>: Continuously monitor network metrics and connection health</li>
<li><strong>Bandwidth</strong>: Configure bandwidth limits to prevent resource exhaustion</li>
<li><strong>Testing</strong>: Test network configuration under load before production deployment</li>
<li><strong>Redundancy</strong>: Use multiple network paths and load balancing for high availability</li>
<li><strong>Security</strong>: Enable mTLS for sensitive deployments and internal services</li>
</ol>
<h3 id="troubleshooting" class="position-relative d-flex align-items-center group">
<span>Troubleshooting</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="troubleshooting"
aria-haspopup="dialog"
aria-label="Share link: Troubleshooting">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3>
<h4 id="connection-issues" class="position-relative d-flex align-items-center group">
<span>Connection Issues</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="connection-issues"
aria-haspopup="dialog"
aria-label="Share link: Connection Issues">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Test basic connectivity</span>
</span></span><span class="line"><span class="cl">nc -vzu geode.example.com <span class="m">3141</span>
</span></span><span class="line"><span class="cl">nmap -sU -p <span class="m">3141</span> geode.example.com
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check QUIC connectivity</span>
</span></span><span class="line"><span class="cl">geode admin diagnose network --host<span class="o">=</span>geode.example.com:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Verify TLS certificate</span>
</span></span><span class="line"><span class="cl">geode admin tls verify --host<span class="o">=</span>geode.example.com:3141
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check firewall rules</span>
</span></span><span class="line"><span class="cl">sudo iptables -L -n -v <span class="p">|</span> grep <span class="m">3141</span>
</span></span><span class="line"><span class="cl">sudo ufw status <span class="p">|</span> grep <span class="m">3141</span>
</span></span></code></pre></div>
<h4 id="performance-issues" class="position-relative d-flex align-items-center group">
<span>Performance Issues</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="performance-issues"
aria-haspopup="dialog"
aria-label="Share link: Performance Issues">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Monitor network latency</span>
</span></span><span class="line"><span class="cl">geode admin monitor network --interval<span class="o">=</span>1s --duration<span class="o">=</span>60s
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Identify slow connections</span>
</span></span><span class="line"><span class="cl">geode admin connections list --sort-by<span class="o">=</span>latency --limit<span class="o">=</span><span class="m">10</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Check packet loss</span>
</span></span><span class="line"><span class="cl">geode admin stats network --metric<span class="o">=</span>packet_loss --interval<span class="o">=</span>5m
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Bandwidth utilization</span>
</span></span><span class="line"><span class="cl">geode admin stats network --metric<span class="o">=</span>bandwidth --interval<span class="o">=</span>1m
</span></span></code></pre></div>
<h4 id="debugging-quic-issues" class="position-relative d-flex align-items-center group">
<span>Debugging QUIC Issues</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="debugging-quic-issues"
aria-haspopup="dialog"
aria-label="Share link: Debugging QUIC Issues">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h4><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># Enable QUIC debug logging</span>
</span></span><span class="line"><span class="cl">geode serve --listen 0.0.0.0:3141 --log-level<span class="o">=</span>debug --log-filter<span class="o">=</span>quic
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Capture QUIC packets</span>
</span></span><span class="line"><span class="cl">sudo tcpdump -i any -n -s <span class="m">65535</span> -w geode-quic.pcap <span class="s1">'udp port 3141'</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="c1"># Analyze with Wireshark</span>
</span></span><span class="line"><span class="cl">wireshark geode-quic.pcap
</span></span></code></pre></div>
<h3 id="related-topics" class="position-relative d-flex align-items-center group">
<span>Related Topics</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="related-topics"
aria-haspopup="dialog"
aria-label="Share link: Related Topics">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="/tags/quic/"
>QUIC Protocol</a>
- QUIC protocol details and configuration</li>
<li><a
href="/tags/encryption/"
>TLS Security</a>
- TLS configuration and certificate management</li>
<li><a
href="/tags/server/"
>Server Configuration</a>
- General server configuration</li>
<li><a
href="/tags/performance/"
>Performance Optimization</a>
- Performance tuning</li>
<li><a
href="/tags/monitoring/"
>Monitoring</a>
- Monitoring and observability</li>
</ul>
<h3 id="further-reading" class="position-relative d-flex align-items-center group">
<span>Further Reading</span>
<button type="button"
class="h-share btn btn-link p-0 text-decoration-none link-secondary opacity-50 hover-opacity-100 transition-all ms-1"
data-share-target="further-reading"
aria-haspopup="dialog"
aria-label="Share link: Further Reading">
<i class="fa-sharp-duotone fa-solid fa-share-nodes" aria-hidden="true" style="font-size: 0.8em;"></i>
<span class="visually-hidden">Share link</span>
</button>
</h3><ul>
<li><a
href="https://www.rfc-editor.org/rfc/rfc9000.html"
aria-label="QUIC Protocol Specification – opens in new window"
target="_blank" rel="noopener noreferrer"
>QUIC Protocol Specification
<span aria-hidden="true" class="external-icon">↗</span>
</a>
- IETF RFC 9000</li>
<li><a
href="/docs/configuration/server-configuration/"
>Server Configuration</a>
- Detailed server and network setup</li>
<li><a
href="/docs/security/overview/"
>Security Best Practices</a>
- Security guidelines</li>
<li><a
href="/docs/deployment/deployment-patterns/"
>Deployment Patterns</a>
- Load balancer and deployment configuration</li>
<li><a
href="/docs/query/performance-tuning/"
>Performance Tuning</a>
- Performance optimization</li>
</ul>
Related Articles
DSN (Data Source Name) Specification
Official DSN format for connecting to Geode over QUIC or gRPC, including authentication, graph binding, and TLS options
Wire Protocol
Complete wire protocol specification for Geode client-server communication including QUIC/gRPC transport, Protobuf messages, and pagination
Wire Protocol Specification
Complete Geode wire protocol specification with QUIC/gRPC transport, Protobuf messages, streaming, federation, and client-server communication …