| Component | Function | Scaling Factor | |-----------|----------|----------------| | Ingest Gateway | Validates, tokenizes, routes documents | Horizontal (CPU-bound) | | Segment Builder | Creates immutable index segments (LSM-tree inspired) | Per-shard | | Index Store | Local NVMe or S3-compatible storage | Read-heavy replicas | | Query Router | Scatter-gather across shards; supports term, prefix, regex | Per-query latency |

cluster:
  name: "logs-prod"
  node.role: [ingest, query, segment]
  discovery.seed: ["seed1.b.net:9300", "seed2.b.net:9300"]

ingest: threads: 8 batch_size: 500 flush_interval: 1s

index: codec: "zstd" vector.enabled: true vector.hnsw.ef_construction: 200

store: path: "/var/bnet/data" type: "mmap" # or "s3" for tiered storage

Allows combining inverted + vector + numeric indexes in a single segment, avoiding separate index hops.

Snapshot to S3:

./bnet-cli snapshot create --repo=s3://bnet-backups --name=snap_20260418

In the context of online gaming infrastructure, an "Index Server" typically serves a specific bureaucratic or structural role:

The jump from Index Server 2 to Index Server 3 was not merely incremental; it was a direct response to the first wave of malicious hacking on Battle.net. By 2000, with the release of Diablo II, a cottage industry of "bot" programs and spoofing tools had emerged. Malicious users could send fake "user present" packets, causing the network to hallucinate non-existent players (a form of denial-of-service) or, worse, impersonate Blizzard staff members like "Syndrom" or "Vex."

IS3 introduced two critical innovations: cryptographic nonces and bidirectional verification. Under IS3, a chat server could not simply tell the Index Server that a user existed; it had to prove it through a challenge-response handshake. When a user joined a channel, the chat server would request a nonce (a random number) from IS3, combine it with the user’s session key, and hash it. Only the correct hash was accepted. This made spoofing exponentially harder, as an attacker would need to reverse the hash or intercept the nonce in real-time—a non-trivial task on 2001 hardware. Consequently, IS3 became the first line of defense against "spoofed ops" (fake operator status), preserving the integrity of the chat ecosystem.

The Index Server 3 is a modern, scalable replacement for legacy Battle.net index services. It handles:

Unlike older versions, Index Server 3 is stateless, uses Redis for ephemeral data, and supports WebSocket for real-time updates.


To force a classic game client to use a custom B.net Index Server 3, you modify the registry (Windows) or bnconf.ini:

[battle.net]
server_index=your.ip.address:6113

Note: Most modern clients also require a gateway editor, as Blizzard hardcoded the original IPs in later patches.