719 lines
33 KiB
TypeScript
719 lines
33 KiB
TypeScript
/**
|
|
* Switch & Router Seed Data — Comprehensive global catalog
|
|
*
|
|
* Hand-curated seed data for major switch/router models from all vendors.
|
|
* This provides the baseline that scrapers then enrich with live data.
|
|
* Sources: Public datasheets, vendor product pages, OCP specs.
|
|
*/
|
|
import { pool, ensureVendor, findOrCreateSwitch } from "../utils/db";
|
|
|
|
interface SwitchSeed {
|
|
vendor: string;
|
|
vendorType: string;
|
|
vendorWebsite: string;
|
|
model: string;
|
|
series: string;
|
|
category: "DataCenter" | "Campus" | "Edge" | "Core" | "SP" | "Industrial";
|
|
layer: "L2" | "L3" | "L2/L3";
|
|
portsConfig: Record<string, number>;
|
|
totalPorts: number;
|
|
uplinkSpeedGbps?: number;
|
|
maxSpeedGbps: number;
|
|
switchingCapacityTbps?: number;
|
|
forwardingRateMpps?: number;
|
|
asicVendor?: string;
|
|
asicModel?: string;
|
|
rackUnits?: number;
|
|
maxPowerW?: number;
|
|
poeSupport?: string;
|
|
stackingSupport?: boolean;
|
|
vxlanSupport?: boolean;
|
|
evpnSupport?: boolean;
|
|
bgpSupport?: boolean;
|
|
mplsSupport?: boolean;
|
|
openconfigSupport?: boolean;
|
|
sonicCompatible?: boolean;
|
|
macsecSupport?: boolean;
|
|
lifecycleStatus?: string;
|
|
tags?: string[];
|
|
}
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// ARISTA NETWORKS
|
|
// ═══════════════════════════════════════════════════════
|
|
const ARISTA: SwitchSeed[] = [
|
|
// 7800R4 Series — Chassis (800G/400G spine)
|
|
{
|
|
vendor: "Arista Networks", vendorType: "oem", vendorWebsite: "https://www.arista.com",
|
|
model: "7800R4-36D2-LC", series: "7800R4", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "800G_OSFP": 36, "400G_QSFP-DD": 72 }, totalPorts: 36,
|
|
maxSpeedGbps: 800, switchingCapacityTbps: 57.6, forwardingRateMpps: 36000,
|
|
asicVendor: "Broadcom", asicModel: "Memory Tomahawk 5",
|
|
rackUnits: 7, maxPowerW: 6000,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
macsecSupport: true, sonicCompatible: false,
|
|
tags: ["800G", "spine", "AI-fabric", "chassis"],
|
|
},
|
|
// 7060X6 Series — 800G fixed
|
|
{
|
|
vendor: "Arista Networks", vendorType: "oem", vendorWebsite: "https://www.arista.com",
|
|
model: "7060X6-64PE", series: "7060X6", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "800G_OSFP": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 800, switchingCapacityTbps: 51.2, forwardingRateMpps: 30000,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 5",
|
|
rackUnits: 2, maxPowerW: 3200,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
macsecSupport: true,
|
|
tags: ["800G", "spine", "AI-fabric", "leaf"],
|
|
},
|
|
// 7060X5 Series — 400G spine/leaf
|
|
{
|
|
vendor: "Arista Networks", vendorType: "oem", vendorWebsite: "https://www.arista.com",
|
|
model: "7060X5-64S", series: "7060X5", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 25.6, forwardingRateMpps: 16000,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 2, maxPowerW: 2200,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
macsecSupport: true,
|
|
tags: ["400G", "spine", "leaf"],
|
|
},
|
|
{
|
|
vendor: "Arista Networks", vendorType: "oem", vendorWebsite: "https://www.arista.com",
|
|
model: "7060X5-32QS", series: "7060X5", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32, "100G_QSFP28": 2 }, totalPorts: 34,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 1, maxPowerW: 1200,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
tags: ["400G", "leaf", "ToR"],
|
|
},
|
|
// 7050X4 Series — 100G/400G leaf
|
|
{
|
|
vendor: "Arista Networks", vendorType: "oem", vendorWebsite: "https://www.arista.com",
|
|
model: "7050X4-32S", series: "7050X4", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "100G_QSFP28": 32 }, totalPorts: 32,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 6.4, forwardingRateMpps: 4760,
|
|
asicVendor: "Broadcom", asicModel: "Memory Memory",
|
|
rackUnits: 1, maxPowerW: 750,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
stackingSupport: true,
|
|
tags: ["100G", "leaf", "ToR"],
|
|
},
|
|
// 7280R3 Series — Universal routing
|
|
{
|
|
vendor: "Arista Networks", vendorType: "oem", vendorWebsite: "https://www.arista.com",
|
|
model: "7280R3-48YC6", series: "7280R3", category: "Core", layer: "L3",
|
|
portsConfig: { "25G_SFP28": 48, "100G_QSFP28": 6 }, totalPorts: 54,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 3.6,
|
|
asicVendor: "Broadcom", asicModel: "Jericho2",
|
|
rackUnits: 1, maxPowerW: 950,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true, openconfigSupport: true,
|
|
tags: ["routing", "peering", "DCI"],
|
|
},
|
|
// 7020R Series — Campus
|
|
{
|
|
vendor: "Arista Networks", vendorType: "oem", vendorWebsite: "https://www.arista.com",
|
|
model: "7020R-48YM", series: "7020R", category: "Campus", layer: "L3",
|
|
portsConfig: { "1G_RJ45": 48, "10G_SFP+": 6 }, totalPorts: 54,
|
|
maxSpeedGbps: 10, switchingCapacityTbps: 0.176,
|
|
rackUnits: 1, maxPowerW: 450,
|
|
poeSupport: "PoE++", stackingSupport: true,
|
|
bgpSupport: true, macsecSupport: true,
|
|
tags: ["campus", "PoE", "access"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// CISCO SYSTEMS
|
|
// ═══════════════════════════════════════════════════════
|
|
const CISCO: SwitchSeed[] = [
|
|
// Nexus 9000 Series
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "N9K-C93600CD-GX", series: "Nexus 9300", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 28, "100G_QSFP28": 8 }, totalPorts: 36,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8, forwardingRateMpps: 8900,
|
|
asicVendor: "Cisco", asicModel: "Cloud Scale",
|
|
rackUnits: 1, maxPowerW: 2000,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true,
|
|
openconfigSupport: true, macsecSupport: true,
|
|
tags: ["400G", "ACI", "spine", "VXLAN"],
|
|
},
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "N9K-C9364D-GX2A", series: "Nexus 9300", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 25.6,
|
|
asicVendor: "Cisco", asicModel: "Cloud Scale G2",
|
|
rackUnits: 2, maxPowerW: 3000,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
tags: ["400G", "ACI", "spine"],
|
|
},
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "N9K-C9332D-GX2B", series: "Nexus 9300", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32, "100G_QSFP28": 2 }, totalPorts: 34,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Cisco", asicModel: "Cloud Scale G2",
|
|
rackUnits: 1, maxPowerW: 1500,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true,
|
|
tags: ["400G", "leaf", "ToR"],
|
|
},
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "N9K-C93108TC-FX3P", series: "Nexus 9300", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "10G_RJ45": 48, "100G_QSFP28": 6 }, totalPorts: 54,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 3.6,
|
|
asicVendor: "Cisco", asicModel: "Cloud Scale",
|
|
rackUnits: 1, maxPowerW: 1100,
|
|
poeSupport: "PoE+", vxlanSupport: true, evpnSupport: true,
|
|
tags: ["access", "ToR", "PoE"],
|
|
},
|
|
// Nexus 9500 Chassis
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "N9K-C9508", series: "Nexus 9500", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 576 }, totalPorts: 576,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 172.8,
|
|
asicVendor: "Cisco", asicModel: "Cloud Scale G2",
|
|
rackUnits: 13, maxPowerW: 24000,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true,
|
|
tags: ["chassis", "spine", "modular", "ACI"],
|
|
},
|
|
// Catalyst 9000 — Campus
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "C9300-48UXM", series: "Catalyst 9300", category: "Campus", layer: "L3",
|
|
portsConfig: { "1G_RJ45": 36, "mGig_RJ45": 12, "10G_SFP+": 4 }, totalPorts: 52,
|
|
maxSpeedGbps: 10, switchingCapacityTbps: 0.480,
|
|
rackUnits: 1, maxPowerW: 1100,
|
|
poeSupport: "UPOE+", stackingSupport: true, macsecSupport: true,
|
|
tags: ["campus", "PoE", "SD-Access", "DNA"],
|
|
},
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "C9300X-24Y", series: "Catalyst 9300X", category: "Campus", layer: "L3",
|
|
portsConfig: { "25G_SFP28": 24, "100G_QSFP28": 2 }, totalPorts: 26,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 1.2,
|
|
rackUnits: 1, maxPowerW: 750,
|
|
stackingSupport: true, vxlanSupport: true, macsecSupport: true,
|
|
tags: ["campus", "distribution", "25G"],
|
|
},
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "C9500-48Y4C", series: "Catalyst 9500", category: "Campus", layer: "L3",
|
|
portsConfig: { "25G_SFP28": 48, "100G_QSFP28": 4 }, totalPorts: 52,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 3.2,
|
|
rackUnits: 1, maxPowerW: 750,
|
|
bgpSupport: true, vxlanSupport: true, evpnSupport: true, macsecSupport: true,
|
|
tags: ["campus", "core", "SD-Access"],
|
|
},
|
|
// NCS 5500 — Service Provider
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "NCS-5504", series: "NCS 5500", category: "SP", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 288 }, totalPorts: 288,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 57.6,
|
|
asicVendor: "Cisco", asicModel: "Silicon One",
|
|
rackUnits: 7, maxPowerW: 15000,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true,
|
|
tags: ["SP", "core", "routing", "chassis", "MPLS"],
|
|
},
|
|
// Cisco 8000 — Silicon One
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "8101-32FH", series: "Cisco 8000", category: "SP", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32 }, totalPorts: 32,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Cisco", asicModel: "Silicon One Q200",
|
|
rackUnits: 1, maxPowerW: 1800,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true, openconfigSupport: true,
|
|
tags: ["SP", "peering", "core", "Silicon-One"],
|
|
},
|
|
{
|
|
vendor: "Cisco Systems", vendorType: "oem", vendorWebsite: "https://www.cisco.com",
|
|
model: "8111-32EH", series: "Cisco 8000", category: "SP", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32 }, totalPorts: 32,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Cisco", asicModel: "Silicon One G100",
|
|
rackUnits: 1, maxPowerW: 1800,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true,
|
|
tags: ["SP", "peering", "400G"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// JUNIPER NETWORKS
|
|
// ═══════════════════════════════════════════════════════
|
|
const JUNIPER: SwitchSeed[] = [
|
|
{
|
|
vendor: "Juniper Networks", vendorType: "oem", vendorWebsite: "https://www.juniper.net",
|
|
model: "QFX5130-32CD", series: "QFX5130", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32 }, totalPorts: 32,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 1, maxPowerW: 1500,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
tags: ["400G", "leaf", "spine"],
|
|
},
|
|
{
|
|
vendor: "Juniper Networks", vendorType: "oem", vendorWebsite: "https://www.juniper.net",
|
|
model: "QFX5220-32CD", series: "QFX5220", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32, "100G_QSFP28": 2 }, totalPorts: 34,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 3",
|
|
rackUnits: 1, maxPowerW: 1400,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
tags: ["400G", "leaf"],
|
|
},
|
|
{
|
|
vendor: "Juniper Networks", vendorType: "oem", vendorWebsite: "https://www.juniper.net",
|
|
model: "QFX5120-48Y", series: "QFX5120", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "25G_SFP28": 48, "100G_QSFP28": 8 }, totalPorts: 56,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 3.2,
|
|
asicVendor: "Broadcom", asicModel: "Memory",
|
|
rackUnits: 1, maxPowerW: 550,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
tags: ["25G", "leaf", "ToR"],
|
|
},
|
|
// PTX Series — Core routing
|
|
{
|
|
vendor: "Juniper Networks", vendorType: "oem", vendorWebsite: "https://www.juniper.net",
|
|
model: "PTX10004", series: "PTX10000", category: "SP", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 576 }, totalPorts: 576,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 172.8,
|
|
asicVendor: "Juniper", asicModel: "Express5",
|
|
rackUnits: 8, maxPowerW: 18000,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true, openconfigSupport: true,
|
|
tags: ["SP", "core", "chassis", "MPLS", "400G"],
|
|
},
|
|
{
|
|
vendor: "Juniper Networks", vendorType: "oem", vendorWebsite: "https://www.juniper.net",
|
|
model: "PTX10001-36MR", series: "PTX10000", category: "SP", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 36 }, totalPorts: 36,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 14.4,
|
|
asicVendor: "Juniper", asicModel: "Express5",
|
|
rackUnits: 2, maxPowerW: 2500,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true,
|
|
tags: ["SP", "peering", "400G"],
|
|
},
|
|
// EX Series — Campus
|
|
{
|
|
vendor: "Juniper Networks", vendorType: "oem", vendorWebsite: "https://www.juniper.net",
|
|
model: "EX4400-48T", series: "EX4400", category: "Campus", layer: "L3",
|
|
portsConfig: { "1G_RJ45": 48, "10G_SFP+": 4, "25G_SFP28": 2 }, totalPorts: 54,
|
|
maxSpeedGbps: 25, switchingCapacityTbps: 0.200,
|
|
rackUnits: 1, maxPowerW: 600,
|
|
poeSupport: "PoE++", stackingSupport: true, macsecSupport: true,
|
|
tags: ["campus", "access", "PoE"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// NOKIA (ex-Alcatel-Lucent)
|
|
// ═══════════════════════════════════════════════════════
|
|
const NOKIA: SwitchSeed[] = [
|
|
{
|
|
vendor: "Nokia", vendorType: "oem", vendorWebsite: "https://www.nokia.com",
|
|
model: "7220 IXR-D3L", series: "7220 IXR", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32, "10G_SFP+": 2 }, totalPorts: 34,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 1, maxPowerW: 1400,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
sonicCompatible: true,
|
|
tags: ["400G", "SR-Linux", "leaf"],
|
|
},
|
|
{
|
|
vendor: "Nokia", vendorType: "oem", vendorWebsite: "https://www.nokia.com",
|
|
model: "7750 SR-1e", series: "7750 SR", category: "SP", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 36 }, totalPorts: 36,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 14.4,
|
|
asicVendor: "Nokia", asicModel: "FP5",
|
|
rackUnits: 2, maxPowerW: 3500,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true, openconfigSupport: true,
|
|
tags: ["SP", "routing", "MPLS", "SR-OS"],
|
|
},
|
|
{
|
|
vendor: "Nokia", vendorType: "oem", vendorWebsite: "https://www.nokia.com",
|
|
model: "7750 SR-14s", series: "7750 SR", category: "SP", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 672 }, totalPorts: 672,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 268.8,
|
|
asicVendor: "Nokia", asicModel: "FP5",
|
|
rackUnits: 22, maxPowerW: 38000,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true,
|
|
tags: ["SP", "core", "chassis", "MPLS"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// HUAWEI
|
|
// ═══════════════════════════════════════════════════════
|
|
const HUAWEI: SwitchSeed[] = [
|
|
{
|
|
vendor: "Huawei", vendorType: "oem", vendorWebsite: "https://e.huawei.com",
|
|
model: "CloudEngine 16800-X32", series: "CloudEngine 16800", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 768 }, totalPorts: 768,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 230.4,
|
|
asicVendor: "Huawei", asicModel: "Solar 6.0",
|
|
rackUnits: 22, maxPowerW: 40000,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true,
|
|
tags: ["chassis", "spine", "AI-fabric"],
|
|
},
|
|
{
|
|
vendor: "Huawei", vendorType: "oem", vendorWebsite: "https://e.huawei.com",
|
|
model: "CloudEngine 8850-32CQ", series: "CloudEngine 8850", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "100G_QSFP28": 32 }, totalPorts: 32,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 6.4,
|
|
rackUnits: 1, maxPowerW: 950,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true,
|
|
tags: ["100G", "leaf", "spine"],
|
|
},
|
|
{
|
|
vendor: "Huawei", vendorType: "oem", vendorWebsite: "https://e.huawei.com",
|
|
model: "NetEngine 8000 F8", series: "NetEngine 8000", category: "SP", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 192 }, totalPorts: 192,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 57.6,
|
|
asicVendor: "Huawei", asicModel: "Solar 6.0",
|
|
rackUnits: 9, maxPowerW: 12000,
|
|
bgpSupport: true, mplsSupport: true, evpnSupport: true,
|
|
tags: ["SP", "core", "MPLS"],
|
|
},
|
|
{
|
|
vendor: "Huawei", vendorType: "oem", vendorWebsite: "https://e.huawei.com",
|
|
model: "S5731-H48T4XC", series: "S5700", category: "Campus", layer: "L3",
|
|
portsConfig: { "1G_RJ45": 48, "10G_SFP+": 4 }, totalPorts: 52,
|
|
maxSpeedGbps: 10, switchingCapacityTbps: 0.176,
|
|
rackUnits: 1, maxPowerW: 600,
|
|
poeSupport: "PoE++", stackingSupport: true,
|
|
tags: ["campus", "access", "PoE"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// HPE / ARUBA
|
|
// ═══════════════════════════════════════════════════════
|
|
const HPE: SwitchSeed[] = [
|
|
{
|
|
vendor: "HPE Aruba", vendorType: "oem", vendorWebsite: "https://www.arubanetworks.com",
|
|
model: "CX 10000-48Y6C", series: "CX 10000", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "25G_SFP28": 48, "100G_QSFP28": 6 }, totalPorts: 54,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 3.2,
|
|
asicVendor: "AMD/Pensando", asicModel: "Elba",
|
|
rackUnits: 1, maxPowerW: 950,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true,
|
|
tags: ["DPU", "stateful", "microsegmentation"],
|
|
},
|
|
{
|
|
vendor: "HPE Aruba", vendorType: "oem", vendorWebsite: "https://www.arubanetworks.com",
|
|
model: "CX 9300-32D", series: "CX 9300", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32 }, totalPorts: 32,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 1, maxPowerW: 1500,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
tags: ["400G", "spine", "leaf"],
|
|
},
|
|
{
|
|
vendor: "HPE Aruba", vendorType: "oem", vendorWebsite: "https://www.arubanetworks.com",
|
|
model: "CX 6300-48G-4SFP56", series: "CX 6300", category: "Campus", layer: "L3",
|
|
portsConfig: { "1G_RJ45": 48, "50G_SFP56": 4 }, totalPorts: 52,
|
|
maxSpeedGbps: 50, switchingCapacityTbps: 0.296,
|
|
rackUnits: 1, maxPowerW: 800,
|
|
poeSupport: "PoE++", stackingSupport: true,
|
|
tags: ["campus", "access", "PoE"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// NVIDIA / MELLANOX
|
|
// ═══════════════════════════════════════════════════════
|
|
const NVIDIA: SwitchSeed[] = [
|
|
{
|
|
vendor: "NVIDIA Networking", vendorType: "oem", vendorWebsite: "https://www.nvidia.com/networking",
|
|
model: "SN5600", series: "Spectrum-4", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "800G_OSFP": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 800, switchingCapacityTbps: 51.2, forwardingRateMpps: 33000,
|
|
asicVendor: "NVIDIA", asicModel: "Spectrum-4",
|
|
rackUnits: 2, maxPowerW: 3000,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
sonicCompatible: true,
|
|
tags: ["800G", "AI-fabric", "Cumulus", "SONiC"],
|
|
},
|
|
{
|
|
vendor: "NVIDIA Networking", vendorType: "oem", vendorWebsite: "https://www.nvidia.com/networking",
|
|
model: "SN5400", series: "Spectrum-4", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 25.6,
|
|
asicVendor: "NVIDIA", asicModel: "Spectrum-4",
|
|
rackUnits: 2, maxPowerW: 2400,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
sonicCompatible: true,
|
|
tags: ["400G", "spine", "Cumulus", "SONiC"],
|
|
},
|
|
{
|
|
vendor: "NVIDIA Networking", vendorType: "oem", vendorWebsite: "https://www.nvidia.com/networking",
|
|
model: "SN4700", series: "Spectrum-3", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32 }, totalPorts: 32,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "NVIDIA", asicModel: "Spectrum-3",
|
|
rackUnits: 1, maxPowerW: 1200,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, openconfigSupport: true,
|
|
sonicCompatible: true,
|
|
tags: ["400G", "leaf", "SONiC"],
|
|
},
|
|
{
|
|
vendor: "NVIDIA Networking", vendorType: "oem", vendorWebsite: "https://www.nvidia.com/networking",
|
|
model: "SN2201", series: "Spectrum-1", category: "DataCenter", layer: "L2/L3",
|
|
portsConfig: { "1G_RJ45": 48, "100G_QSFP28": 4 }, totalPorts: 52,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 0.496,
|
|
asicVendor: "NVIDIA", asicModel: "Spectrum-1",
|
|
rackUnits: 1, maxPowerW: 400,
|
|
sonicCompatible: true,
|
|
tags: ["management", "OOB", "SONiC"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// EDGECORE / WHITEBOX
|
|
// ═══════════════════════════════════════════════════════
|
|
const EDGECORE: SwitchSeed[] = [
|
|
{
|
|
vendor: "Edgecore Networks", vendorType: "oem", vendorWebsite: "https://www.edge-core.com",
|
|
model: "DCS810", series: "DCS800", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "800G_OSFP": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 800, switchingCapacityTbps: 51.2,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 5",
|
|
rackUnits: 2, maxPowerW: 3500,
|
|
sonicCompatible: true, openconfigSupport: true,
|
|
tags: ["800G", "whitebox", "SONiC", "OCP"],
|
|
},
|
|
{
|
|
vendor: "Edgecore Networks", vendorType: "oem", vendorWebsite: "https://www.edge-core.com",
|
|
model: "DCS510", series: "DCS500", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 25.6,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 2, maxPowerW: 2200,
|
|
sonicCompatible: true, openconfigSupport: true,
|
|
tags: ["400G", "whitebox", "SONiC", "OCP"],
|
|
},
|
|
{
|
|
vendor: "Edgecore Networks", vendorType: "oem", vendorWebsite: "https://www.edge-core.com",
|
|
model: "DCS204", series: "DCS200", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "100G_QSFP28": 32, "10G_SFP+": 2 }, totalPorts: 34,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 6.4,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 3",
|
|
rackUnits: 1, maxPowerW: 750,
|
|
sonicCompatible: true, openconfigSupport: true,
|
|
tags: ["100G", "whitebox", "SONiC"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// DELL TECHNOLOGIES
|
|
// ═══════════════════════════════════════════════════════
|
|
const DELL: SwitchSeed[] = [
|
|
{
|
|
vendor: "Dell Technologies", vendorType: "oem", vendorWebsite: "https://www.dell.com",
|
|
model: "PowerSwitch Z9664F-ON", series: "Z9664F", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 25.6,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 2, maxPowerW: 2500,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true,
|
|
sonicCompatible: true, openconfigSupport: true,
|
|
tags: ["400G", "spine", "SONiC", "OS10"],
|
|
},
|
|
{
|
|
vendor: "Dell Technologies", vendorType: "oem", vendorWebsite: "https://www.dell.com",
|
|
model: "PowerSwitch Z9332F-ON", series: "Z9332F", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32, "10G_SFP+": 2 }, totalPorts: 34,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 3",
|
|
rackUnits: 1, maxPowerW: 1200,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, sonicCompatible: true,
|
|
tags: ["400G", "leaf", "SONiC", "OS10"],
|
|
},
|
|
{
|
|
vendor: "Dell Technologies", vendorType: "oem", vendorWebsite: "https://www.dell.com",
|
|
model: "PowerSwitch S5248F-ON", series: "S5248F", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "25G_SFP28": 48, "100G_QSFP28": 4, "100G_QSFP-DD": 2 }, totalPorts: 54,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 3.2,
|
|
asicVendor: "Broadcom", asicModel: "Trident 3",
|
|
rackUnits: 1, maxPowerW: 550,
|
|
vxlanSupport: true, evpnSupport: true, sonicCompatible: true,
|
|
tags: ["25G", "leaf", "ToR"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// EXTREME NETWORKS
|
|
// ═══════════════════════════════════════════════════════
|
|
const EXTREME: SwitchSeed[] = [
|
|
{
|
|
vendor: "Extreme Networks", vendorType: "oem", vendorWebsite: "https://www.extremenetworks.com",
|
|
model: "SLX 9740-40C", series: "SLX 9740", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "100G_QSFP28": 40 }, totalPorts: 40,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 8.0,
|
|
rackUnits: 1, maxPowerW: 1100,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true,
|
|
tags: ["100G", "spine", "EVPN"],
|
|
},
|
|
{
|
|
vendor: "Extreme Networks", vendorType: "oem", vendorWebsite: "https://www.extremenetworks.com",
|
|
model: "X695-48Y-8C", series: "ExtremeSwitching X695", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "25G_SFP28": 48, "100G_QSFP28": 8 }, totalPorts: 56,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 3.2,
|
|
rackUnits: 1, maxPowerW: 750,
|
|
vxlanSupport: true, evpnSupport: true, bgpSupport: true, stackingSupport: true,
|
|
tags: ["25G", "leaf", "fabric"],
|
|
},
|
|
{
|
|
vendor: "Extreme Networks", vendorType: "oem", vendorWebsite: "https://www.extremenetworks.com",
|
|
model: "5520-48T", series: "ExtremeSwitching 5520", category: "Campus", layer: "L3",
|
|
portsConfig: { "1G_RJ45": 48, "10G_SFP+": 4 }, totalPorts: 52,
|
|
maxSpeedGbps: 10, switchingCapacityTbps: 0.176,
|
|
rackUnits: 1, maxPowerW: 500,
|
|
poeSupport: "PoE++", stackingSupport: true,
|
|
tags: ["campus", "access", "PoE", "ExtremeCloud"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// UFISPACE (OCP-focused whitebox)
|
|
// ═══════════════════════════════════════════════════════
|
|
const UFISPACE: SwitchSeed[] = [
|
|
{
|
|
vendor: "UfiSpace", vendorType: "oem", vendorWebsite: "https://www.ufispace.com",
|
|
model: "S9710-76D", series: "S9710", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 76 }, totalPorts: 76,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 25.6,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 2, maxPowerW: 2800,
|
|
sonicCompatible: true, openconfigSupport: true,
|
|
tags: ["400G", "whitebox", "OCP", "SONiC"],
|
|
},
|
|
{
|
|
vendor: "UfiSpace", vendorType: "oem", vendorWebsite: "https://www.ufispace.com",
|
|
model: "S9600-72XC", series: "S9600", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "100G_QSFP28": 72 }, totalPorts: 72,
|
|
maxSpeedGbps: 100, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 3",
|
|
rackUnits: 2, maxPowerW: 1500,
|
|
sonicCompatible: true,
|
|
tags: ["100G", "whitebox", "SONiC"],
|
|
},
|
|
];
|
|
|
|
// ═══════════════════════════════════════════════════════
|
|
// CELESTICA (OCP whitebox)
|
|
// ═══════════════════════════════════════════════════════
|
|
const CELESTICA: SwitchSeed[] = [
|
|
{
|
|
vendor: "Celestica", vendorType: "oem", vendorWebsite: "https://www.celestica.com",
|
|
model: "DS5000", series: "DS5000", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "800G_OSFP": 64 }, totalPorts: 64,
|
|
maxSpeedGbps: 800, switchingCapacityTbps: 51.2,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 5",
|
|
rackUnits: 2, maxPowerW: 3500,
|
|
sonicCompatible: true, openconfigSupport: true,
|
|
tags: ["800G", "whitebox", "OCP", "SONiC"],
|
|
},
|
|
{
|
|
vendor: "Celestica", vendorType: "oem", vendorWebsite: "https://www.celestica.com",
|
|
model: "DS4000", series: "DS4000", category: "DataCenter", layer: "L3",
|
|
portsConfig: { "400G_QSFP-DD": 32 }, totalPorts: 32,
|
|
maxSpeedGbps: 400, switchingCapacityTbps: 12.8,
|
|
asicVendor: "Broadcom", asicModel: "Tomahawk 4",
|
|
rackUnits: 1, maxPowerW: 1400,
|
|
sonicCompatible: true,
|
|
tags: ["400G", "whitebox", "SONiC"],
|
|
},
|
|
];
|
|
|
|
// Combine all vendors
|
|
const ALL_SWITCHES: SwitchSeed[] = [
|
|
...ARISTA,
|
|
...CISCO,
|
|
...JUNIPER,
|
|
...NOKIA,
|
|
...HUAWEI,
|
|
...HPE,
|
|
...NVIDIA,
|
|
...EDGECORE,
|
|
...DELL,
|
|
...EXTREME,
|
|
...UFISPACE,
|
|
...CELESTICA,
|
|
];
|
|
|
|
export async function seedSwitches(): Promise<void> {
|
|
console.log("=== Switch & Router Seed Data ===\n");
|
|
console.log(`Seeding ${ALL_SWITCHES.length} switches from ${new Set(ALL_SWITCHES.map(s => s.vendor)).size} vendors...\n`);
|
|
|
|
const vendorCache = new Map<string, string>();
|
|
let created = 0;
|
|
let updated = 0;
|
|
|
|
for (const sw of ALL_SWITCHES) {
|
|
try {
|
|
let vendorId = vendorCache.get(sw.vendor);
|
|
if (!vendorId) {
|
|
vendorId = await ensureVendor(sw.vendor, sw.vendorType, sw.vendorWebsite);
|
|
vendorCache.set(sw.vendor, vendorId);
|
|
}
|
|
|
|
const existing = await pool.query(
|
|
`SELECT id FROM switches WHERE model = $1 AND vendor_id = $2`,
|
|
[sw.model, vendorId]
|
|
);
|
|
|
|
await findOrCreateSwitch({
|
|
model: sw.model,
|
|
vendorId,
|
|
series: sw.series,
|
|
category: sw.category,
|
|
layer: sw.layer,
|
|
portsConfig: sw.portsConfig,
|
|
totalPorts: sw.totalPorts,
|
|
uplinkSpeedGbps: sw.uplinkSpeedGbps,
|
|
maxSpeedGbps: sw.maxSpeedGbps,
|
|
switchingCapacityTbps: sw.switchingCapacityTbps,
|
|
forwardingRateMpps: sw.forwardingRateMpps,
|
|
asicVendor: sw.asicVendor,
|
|
asicModel: sw.asicModel,
|
|
rackUnits: sw.rackUnits,
|
|
maxPowerW: sw.maxPowerW,
|
|
poeSupport: sw.poeSupport,
|
|
stackingSupport: sw.stackingSupport,
|
|
vxlanSupport: sw.vxlanSupport,
|
|
evpnSupport: sw.evpnSupport,
|
|
bgpSupport: sw.bgpSupport,
|
|
mplsSupport: sw.mplsSupport,
|
|
openconfigSupport: sw.openconfigSupport,
|
|
sonicCompatible: sw.sonicCompatible,
|
|
macsecSupport: sw.macsecSupport,
|
|
tags: sw.tags,
|
|
});
|
|
|
|
if (existing.rows.length > 0) {
|
|
updated++;
|
|
} else {
|
|
created++;
|
|
}
|
|
} catch (err) {
|
|
console.error(` Error [${sw.vendor} ${sw.model}]: ${(err as Error).message.slice(0, 100)}`);
|
|
}
|
|
}
|
|
|
|
console.log(`\n=== Seed Complete: ${created} created, ${updated} updated ===`);
|
|
}
|
|
|
|
if (require.main === module) {
|
|
seedSwitches()
|
|
.then(() => pool.end())
|
|
.catch((err) => { console.error("Fatal:", err); pool.end(); process.exit(1); });
|
|
}
|