mirror of
https://github.com/profullstack/logicsrc.git
synced 2026-10-02 20:57:03 +00:00
Four resource specifications under OpenServer, one per thing that is negotiable when a server is bought. Each is the block of an OpenServer offer (compute, memory, gpu, network) written down on its own, with the units OpenServer 0.1 already uses (vcpu, cores, ram_mb, vram_mb, bandwidth_mbps, transfer_gb, ipv4, ipv6) and one new shape shared by all four: `range`, the field a buyer can dial at checkout, its bounds, the step and what a step costs on top of the base price. - OpenCPU: threads against cores, the processor by its vendor name, dedicated, shared or burstable allocation. - OpenMemory: mebibytes, DDR generation, ECC as three states, reserved, balloonable or shared; wins over compute.ram_mb when both are present. - OpenGPU: the card by its vendor name, count and VRAM per device, interconnect, passthrough, MIG, vGPU or shared access. - OpenBandwidth: port, four meters (transfer, unmetered, percentile, flat), overage, IPv4 and IPv6 addresses as a priced resource. A provider that sells only one resource lists it as an OpenServer offer and may serve the same document at /.well-known/<slug>.json. Landing pages share one component (resource-spec-page.tsx). Registered in DOC_SLUGS, NAV, STATIC_ROUTES and llms.txt. OpenServer, OpenFile and OpenDisk arrive in sibling PRs. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014cmNRtR2vL1p89dbVQ7FZJ
63 lines
3.8 KiB
TypeScript
63 lines
3.8 KiB
TypeScript
import type { ReactNode } from "react";
|
|
import type { Metadata } from "next";
|
|
import { ResourceSpecPage, type ResourceSpec } from "@/components/resource-spec-page";
|
|
|
|
export const metadata: Metadata = {
|
|
title: "OpenBandwidth · LogicSRC",
|
|
description:
|
|
"OpenBandwidth is the network block of an OpenServer offer: port speed, how traffic is metered (transfer, unmetered, 95th percentile, flat), what overage costs, IPv4 and IPv6 addresses as a priced resource, DDoS scrubbing, and a range that says what a buyer can add at checkout and for how much.",
|
|
alternates: { canonical: "/openbandwidth" }
|
|
};
|
|
|
|
const SPEC: ResourceSpec = {
|
|
name: "OpenBandwidth",
|
|
slug: "openbandwidth",
|
|
block: "network",
|
|
tagline:
|
|
"The network line of a server purchase, with the words fixed: the port, the meter, the overage, the addresses, and what more of any of them costs.",
|
|
problem:
|
|
"Unmetered 1 Gbps, 1 Gbps with 20 TB, and 1 Gbps at the 95th percentile with 100 Mbps committed are three products that every comparison site shows as 1 Gbps. The surprise on the invoice is always the network line: overage at a cent a gigabyte here and nine there, ingress free or billed, a second IPv4 address at two a month or unavailable at any price. IPv4 is now a market of its own, leased by the /24, and no catalog format has a place for it.",
|
|
sample: `{
|
|
"network": {
|
|
"bandwidth_mbps": 1000,
|
|
"metering": "transfer",
|
|
"transfer_gb": 20000,
|
|
"counts": "egress",
|
|
"overage": { "amount": 0.01, "currency": "USD", "per_gb": 1 },
|
|
"ipv4": 1,
|
|
"ipv4_price": { "amount": 2, "currency": "USD", "interval": "month", "per": 1 },
|
|
"ipv4_max": 8,
|
|
"ipv6": "/64",
|
|
"ddos": "always-on",
|
|
"range": {
|
|
"key": "bandwidth_mbps", "min": 1000, "max": 10000, "step": 1000,
|
|
"price": { "amount": 15, "currency": "USD", "interval": "month", "per": 1000 }
|
|
}
|
|
}
|
|
}`,
|
|
smallest: `{ "network": { "bandwidth_mbps": 1000 } }`,
|
|
fields: [
|
|
["bandwidth_mbps", "integer, required", "The port speed sold. A shaped link states the shaped rate."],
|
|
["metering", "transfer, unmetered, percentile, flat", "Gigabytes against transfer_gb, no cap, 95th percentile with commit_mbps, or a fixed price for the port."],
|
|
["transfer_gb, counts", "integer per interval; egress, ingress, both, max", "Included traffic and which direction counts. A reader never assumes egress."],
|
|
["overage, over_cap", "amount, currency, per_gb or per_mbps; bill, throttle, suspend", "What traffic past the cap costs, or what happens instead."],
|
|
["ipv4, ipv4_price, ipv4_max, ipv6", "integer; price per address; integer; boolean or prefix", "Addresses as a resource: included, the price of more, the ceiling, and the IPv6 assignment."],
|
|
["ddos, private_network, uplinks", "always-on, on-demand, none; boolean; integer", "That mitigation exists, a private LAN, physical links on a dedicated box."],
|
|
["range", "key bandwidth_mbps, transfer_gb or ipv4; min, max, step, price", "What the buyer can dial and what a step costs."]
|
|
],
|
|
directory: [
|
|
["Meter beside the port", "1 Gbps unmetered and 1 Gbps with 20 TB are two rows with two words."],
|
|
["Price a month of traffic", "Base plus overage at a stated volume, with the volume shown."],
|
|
["Addresses as a resource", "Included count, price of more, ceiling. Zero with no price is unstated, not free."],
|
|
["Never assume direction", "A cap with no counts is a cap with the direction unstated."]
|
|
],
|
|
absent: [
|
|
["No speed test", "bandwidth_mbps is the port sold. Achieved throughput is a measurement."],
|
|
["No carriers or peering", "Upstreams and exchanges are the provider's network page. An ASN goes under the provider's own key."],
|
|
["No SLA", "Uptime percentages and credits are the provider's terms, linked from the offer's url."]
|
|
]
|
|
};
|
|
|
|
export default function OpenBandwidthPage(): ReactNode {
|
|
return <ResourceSpecPage spec={SPEC} />;
|
|
}
|