import type { TrainingLesson } from "./types";

export const switchesLessons: TrainingLesson[] = [
  {
    id: "sw-compatibility",
    category: "switches",
    title: "How Switch-Transceiver Compatibility Works",
    title_de: "Wie Switch-Transceiver-Kompatibilitaet funktioniert",
    level: "beginner",
    duration_min: 12,
    summary:
      "Understand why some switches block third-party transceivers, how vendor locking works via EEPROM, and what options you have to use compatible modules on major platforms.",
    summary_de:
      "Verstehen Sie, warum manche Switches Drittanbieter-Transceiver blockieren, wie Vendor-Locking ueber EEPROM funktioniert und welche Moeglichkeiten Sie haben, kompatible Module auf grossen Plattformen zu nutzen.",
    tags: ["compatibility", "eeprom", "vendor-lock", "cisco", "juniper", "arista"],
    sections: [
      {
        heading: "The EEPROM Vendor ID — How Switches Recognize Modules",
        heading_de: "Die EEPROM-Herstellerkennung — Wie Switches Module erkennen",
        blocks: [
          {
            type: "p",
            text: "Every optical transceiver contains an EEPROM (non-volatile memory) that stores identification data. The first bytes of the SFP EEPROM (page A0h, bytes 0–1) contain the 'Identifier' and 'Extended Identifier'. Bytes 20–35 store the vendor name in ASCII. Bytes 68–83 store the vendor OUI (Organizationally Unique Identifier — the manufacturer's registered MAC prefix).",
            text_de:
              "Jeder optische Transceiver enthaelt ein EEPROM (nicht-fluechtige Speicher), das Identifikationsdaten speichert. Die ersten Bytes des SFP-EEPROMs (Seite A0h, Bytes 0–1) enthalten den 'Identifier' und 'Extended Identifier'. Bytes 20–35 speichern den Herstellernamen in ASCII. Bytes 68–83 speichern den Hersteller-OUI (Organizationally Unique Identifier — das registrierte MAC-Praefix des Herstellers).",
          },
          {
            type: "p",
            text: "When a switch boots or a module is inserted, the switch NOS reads these EEPROM fields and compares the vendor name and OUI against an internal whitelist. If the module is not on the whitelist, the switch may block the port, display a warning, or log an error — depending on the NOS and platform configuration.",
            text_de:
              "Wenn ein Switch bootet oder ein Modul eingesteckt wird, liest das Switch-NOS diese EEPROM-Felder und vergleicht Herstellername und OUI mit einer internen Whitelist. Wenn das Modul nicht auf der Whitelist steht, kann der Switch den Port blockieren, eine Warnung anzeigen oder einen Fehler protokollieren — je nach NOS und Plattformkonfiguration.",
          },
          {
            type: "callout",
            variant: "info",
            text: "Reputable compatible module vendors (like those sold by FLEXOPTIX) program the EEPROM with the correct OUI and vendor strings for the target platform. This is legal, fully MSA-compliant, and is how 'compatible' modules work — not by hacking, but by following the MSA specification.",
            text_de:
              "Serioeser Kompatibel-Modulanbieter (wie von FLEXOPTIX verkaufte Module) programmieren das EEPROM mit korrektem OUI und Herstellerstrings fuer die Zielplattform. Das ist legal, vollstaendig MSA-konform und funktioniert so — nicht durch Hacking, sondern durch Einhaltung der MSA-Spezifikation.",
          },
        ],
      },
      {
        heading: "Vendor Lock Comparison by Platform",
        heading_de: "Vendor-Lock-Vergleich nach Plattform",
        blocks: [
          {
            type: "table",
            headers: ["Vendor/NOS", "Lock Level", "Workaround", "3rd-Party DOM?", "Notes"],
            headers_de: ["Hersteller/NOS", "Lock-Level", "Workaround", "3rd-Party DOM?", "Hinweise"],
            rows: [
              ["Cisco IOS/IOS-XE", "Soft lock", "'service unsupported-transceiver'", "Yes (most platforms)", "Warning logged; module works after command"],
              ["Cisco NX-OS", "Soft lock", "'service unsupported-transceiver'", "Varies by platform", "Some Nexus platforms show limited DOM for 3rd party"],
              ["Cisco IOS-XR", "Hard lock (some PICs)", "Requires Cisco-coded EEPROM", "Only with Cisco coding", "ASR 9000, NCS-5500 strict on line cards"],
              ["Juniper Junos (EX/QFX)", "Minimal lock", "None needed", "Yes", "EX/QFX very open; PTX/MX some restrictions"],
              ["Arista EOS", "No lock", "None needed", "Yes", "Arista is the most open major vendor"],
              ["Nokia SR OS", "Hard lock", "Nokia-coded modules required", "No for 3rd party", "Nokia requires Nokia part number coding"],
              ["Huawei VRP", "Hard lock", "Huawei-coded modules required", "Partial", "Very strict on most platforms"],
              ["Dell OS10", "Soft lock", "Configuration override available", "Yes", "Relatively open"],
              ["HPE Comware", "Soft lock", "Transceiver override command", "Yes", "Similar to Cisco approach"],
            ],
          },
        ],
      },
      {
        heading: "What MSA Compliance Means",
        heading_de: "Was MSA-Konformitaet bedeutet",
        blocks: [
          {
            type: "p",
            text: "MSA (Multi-Source Agreement) compliance means a module meets the physical, electrical, optical, and management interface specifications defined by the relevant MSA document. This does NOT guarantee that the vendor's NOS will accept the module — vendor lock is a software-level decision, not an electrical incompatibility.",
            text_de:
              "MSA-Konformitaet (Multi-Source Agreement) bedeutet, dass ein Modul die physikalischen, elektrischen, optischen und Management-Schnittstellen-Spezifikationen des relevanten MSA-Dokuments erfuellt. Das garantiert NICHT, dass das NOS des Herstellers das Modul akzeptiert — Vendor Lock ist eine Software-Entscheidung, keine elektrische Inkompatibilitaet.",
          },
          {
            type: "callout",
            variant: "key",
            text: "Compatible does NOT mean incompatible. MSA-compliant third-party modules with correct EEPROM coding work on 95%+ of platforms. They are electrically and optically identical to OEM. The only risk is a software policy on some NOSes — not hardware damage or performance degradation.",
            text_de:
              "Kompatibel bedeutet NICHT inkompatibel. MSA-konforme Drittanbieter-Module mit korrekter EEPROM-Kodierung funktionieren auf 95%+ aller Plattformen. Sie sind elektrisch und optisch identisch mit OEM. Das einzige Risiko ist eine Software-Richtlinie auf manchen NOSes — keine Hardwareeinschraenkungen oder Leistungsdegradierung.",
          },
        ],
      },
    ],
    quiz: [
      {
        id: "sw-compat-q1",
        lesson: "sw-compatibility",
        q: "How does a switch identify whether a transceiver is from the OEM vendor?",
        q_de: "Wie identifiziert ein Switch, ob ein Transceiver vom OEM-Hersteller stammt?",
        options: [
          "By measuring the optical power output",
          "By reading the vendor name and OUI from the EEPROM",
          "By the color of the module's bail latch",
          "By checking the module's serial number against a cloud database",
        ],
        options_de: [
          "Durch Messung der optischen Ausgangsleistung",
          "Durch Lesen von Herstellername und OUI aus dem EEPROM",
          "Durch die Farbe des Verriegelungshebels",
          "Durch Pruefen der Seriennummer in einer Cloud-Datenbank",
        ],
        answer: 1,
        explanation:
          "The switch NOS reads the EEPROM vendor name field (bytes 20-35) and vendor OUI (bytes 68-83) and compares against its internal whitelist to determine if a module is 'approved'.",
        explanation_de:
          "Das Switch-NOS liest das EEPROM-Herstellernamenfeld (Bytes 20–35) und Hersteller-OUI (Bytes 68–83) und vergleicht mit der internen Whitelist, um zu bestimmen, ob ein Modul 'genehmigt' ist.",
      },
      {
        id: "sw-compat-q2",
        lesson: "sw-compatibility",
        q: "Which major switch vendor has NO vendor lock on transceivers?",
        q_de: "Welcher grosse Switch-Hersteller hat KEINEN Vendor-Lock fuer Transceiver?",
        options: ["Cisco", "Nokia", "Arista", "Huawei"],
        options_de: ["Cisco", "Nokia", "Arista", "Huawei"],
        answer: 2,
        explanation:
          "Arista EOS does not implement vendor locking. Any MSA-compliant module with correct EEPROM will work without any configuration changes. Arista also shows DOM for third-party modules.",
        explanation_de:
          "Arista EOS implementiert keinen Vendor-Lock. Jedes MSA-konforme Modul mit korrektem EEPROM funktioniert ohne Konfigurationsa nderungen. Arista zeigt auch DOM fuer Drittanbieter-Module.",
      },
      {
        id: "sw-compat-q3",
        lesson: "sw-compatibility",
        q: "On Cisco IOS, what command removes the block on third-party transceivers?",
        q_de: "Welcher Befehl entfernt auf Cisco IOS die Blockierung von Drittanbieter-Transceivern?",
        options: [
          "no transceiver vendor-lock",
          "service unsupported-transceiver",
          "transceiver allow-all",
          "interface override optics",
        ],
        options_de: [
          "no transceiver vendor-lock",
          "service unsupported-transceiver",
          "transceiver allow-all",
          "interface override optics",
        ],
        answer: 1,
        explanation:
          "'service unsupported-transceiver' (global config on IOS/IOS-XE) suppresses the error message and allows the port to operate. It does not affect performance or DOM availability.",
        explanation_de:
          "'service unsupported-transceiver' (globale Konfiguration auf IOS/IOS-XE) unterdrueckt die Fehlermeldung und erlaubt den Portbetrieb. Es beeinflusst weder Leistung noch DOM-Verfuegbarkeit.",
      },
      {
        id: "sw-compat-q4",
        lesson: "sw-compatibility",
        q: "MSA compliance guarantees what?",
        q_de: "Was garantiert MSA-Konformitaet?",
        options: [
          "The module will be accepted by any NOS without workaround",
          "Physical, electrical, and optical compliance with the MSA standard — not NOS whitelist acceptance",
          "Full warranty support from the switch vendor",
          "Automatic firmware updates from the switch",
        ],
        options_de: [
          "Das Modul wird von jedem NOS ohne Workaround akzeptiert",
          "Physikalische, elektrische und optische Konformitaet mit dem MSA-Standard — nicht Whitelist-Akzeptanz des NOS",
          "Vollstaendige Garantieunterstuetzung durch den Switch-Hersteller",
          "Automatische Firmware-Updates durch den Switch",
        ],
        answer: 1,
        explanation:
          "MSA compliance verifies the module meets technical specifications. Whether the NOS accepts it is a separate (software policy) question. Reputable vendors also program the EEPROM correctly for the target platform.",
        explanation_de:
          "MSA-Konformitaet prueft, ob das Modul technische Spezifikationen erfuellt. Ob das NOS es akzeptiert, ist eine separate (Software-Richtlinien-)Frage. Serioeser Anbieter programmieren das EEPROM auch korrekt fuer die Zielplattform.",
      },
      {
        id: "sw-compat-q5",
        lesson: "sw-compatibility",
        q: "Which platform has the strictest vendor lock — typically requiring vendor-coded modules?",
        q_de: "Welche Plattform hat den strengsten Vendor-Lock — erfordert typischerweise herstellerkodierte Module?",
        options: ["Arista EOS 7050", "Cisco Catalyst 9300", "Nokia SR OS / Huawei VRP", "Juniper EX4300"],
        options_de: ["Arista EOS 7050", "Cisco Catalyst 9300", "Nokia SR OS / Huawei VRP", "Juniper EX4300"],
        answer: 2,
        explanation:
          "Nokia SR OS and Huawei VRP enforce hard locks — modules must be programmed with Nokia/Huawei-specific vendor codes and part numbers to operate. This is unlike Cisco (soft lock with workaround) or Arista (no lock).",
        explanation_de:
          "Nokia SR OS und Huawei VRP erzwingen harte Locks — Module muessen mit Nokia/Huawei-spezifischen Herstellercodes und Teilenummern programmiert sein. Das unterscheidet sich von Cisco (weicher Lock mit Workaround) oder Arista (kein Lock).",
      },
    ],
  },

  {
    id: "sw-cisco",
    category: "switches",
    title: "Cisco IOS, NX-OS, and IOS-XR Transceiver Guide",
    title_de: "Cisco IOS, NX-OS und IOS-XR Transceiver-Leitfaden",
    level: "intermediate",
    duration_min: 12,
    summary:
      "Navigate Cisco's three main NOS platforms — IOS/IOS-XE, NX-OS, and IOS-XR — and understand the specific transceiver acceptance policies, DOM commands, and workarounds for each.",
    summary_de:
      "Navigieren Sie durch Ciscos drei Haupt-NOS-Plattformen — IOS/IOS-XE, NX-OS und IOS-XR — und verstehen Sie die spezifischen Transceiver-Akzeptanzrichtlinien, DOM-Befehle und Workarounds fuer jede.",
    tags: ["cisco", "ios", "nxos", "ios-xr", "nexus", "catalyst"],
    sections: [
      {
        heading: "Cisco Platform Overview",
        heading_de: "Cisco Plattform-Ueberblick",
        blocks: [
          {
            type: "table",
            headers: ["Platform Family", "NOS", "Typical Use Case", "Lock Level"],
            headers_de: ["Plattform-Familie", "NOS", "Typischer Anwendungsfall", "Lock-Level"],
            rows: [
              ["Catalyst 9000 / 3800", "IOS-XE", "Enterprise access/distribution", "Soft — 'service unsupported-transceiver'"],
              ["Catalyst 6500 / 6880", "IOS / IOS-XE", "Legacy campus core", "Soft — 'service unsupported-transceiver'"],
              ["Nexus 9000 / 7000 / 5000", "NX-OS", "Data center leaf/spine", "Soft — 'service unsupported-transceiver'"],
              ["ASR 9000", "IOS-XR", "Service provider edge/core", "Hard on some PICs"],
              ["NCS 5500 / NCS 540", "IOS-XR", "SP core / peering", "Hard — requires Cisco-coded EEPROM on many PICs"],
              ["CRS-X / ASR 1000", "IOS-XR / IOS-XE", "Carrier core / WAN aggregation", "Varies by linecard"],
            ],
          },
          {
            type: "callout",
            variant: "info",
            text: "IOS and IOS-XE use the same transceiver workaround command. NX-OS uses the same command name. IOS-XR is separate and stricter — always check the specific PIC compatibility before ordering for XR platforms.",
            text_de:
              "IOS und IOS-XE verwenden denselben Transceiver-Workaround-Befehl. NX-OS verwendet denselben Befehlsnamen. IOS-XR ist separat und strenger — immer die spezifische PIC-Kompatibilitaet pruefen, bevor fuer XR-Plattformen bestellt wird.",
          },
        ],
      },
      {
        heading: "IOS and IOS-XE: The Workaround",
        heading_de: "IOS und IOS-XE: Der Workaround",
        blocks: [
          {
            type: "p",
            text: "On Catalyst switches running IOS or IOS-XE, inserting an unsupported transceiver generates an error log message and may prevent the port from coming up. The fix is a single global configuration command.",
            text_de:
              "Auf Catalyst-Switches mit IOS oder IOS-XE erzeugt das Einstecken eines nicht unterstuetzten Transceivers eine Fehlerprotokollmeldung und kann verhindern, dass der Port hochkommt. Die Loesung ist ein einzelner globaler Konfigurationsbefehl.",
          },
          {
            type: "code",
            text: "! Cisco IOS / IOS-XE — allow unsupported transceivers:\nSwitch(config)# service unsupported-transceiver\n\n! Verify transceiver DOM:\nSwitch# show interfaces GigabitEthernet1/0/1 transceiver\n\n! More detail on all transceivers in chassis:\nSwitch# show inventory\nSwitch# show interfaces transceiver",
          },
          {
            type: "p",
            text: "The 'service unsupported-transceiver' command is persistent across reboots. It generates a one-time syslog: '%PHY-4-SFP_NOT_SUPPORTED'. After applying the command, the port links normally and DOM is visible for modules with properly coded EEPROM.",
            text_de:
              "Der Befehl 'service unsupported-transceiver' ist rebootpersistent. Er erzeugt ein einmaliges Syslog: '%PHY-4-SFP_NOT_SUPPORTED'. Nach Anwenden des Befehls verbindet der Port normal und DOM ist fuer Module mit korrekt kodiertem EEPROM sichtbar.",
          },
        ],
      },
      {
        heading: "NX-OS: Data Center Switches",
        heading_de: "NX-OS: Data-Center-Switches",
        blocks: [
          {
            type: "code",
            text: "! Cisco NX-OS (Nexus switches) — allow unsupported transceivers:\nnexus(config)# service unsupported-transceiver\n\n! Check transceiver info:\nnexus# show interface ethernet 1/1 transceiver\n\n! Check all transceivers:\nnexus# show transceiver\n\n! For QSFP modules on Nexus 9000:\nnexus# show interface ethernet 1/1 transceiver detail",
          },
          {
            type: "callout",
            variant: "warning",
            text: "Cisco TAC (Technical Assistance Center) may ask you to swap a third-party module for an OEM one if you call with a problem. This is a SUPPORT POLICY, not a technical requirement. The module itself works fine — but TAC will decline to troubleshoot until you use an approved module.",
            text_de:
              "Cisco TAC (Technical Assistance Center) kann Sie bitten, ein Drittanbieter-Modul gegen ein OEM-Modul auszutauschen, wenn Sie mit einem Problem anrufen. Das ist eine SUPPORT-RICHTLINIE, keine technische Anforderung. Das Modul selbst funktioniert einwandfrei — aber TAC wird die Fehlersuche ablehnen, bis Sie ein genehmigtes Modul verwenden.",
          },
        ],
      },
      {
        heading: "DOM Commands on Cisco",
        heading_de: "DOM-Befehle auf Cisco",
        blocks: [
          {
            type: "code",
            text: "! IOS-XE full DOM output example:\nSwitch# show interfaces GigabitEthernet1/0/1 transceiver detail\n\nTransceiver is present\nType                : SFP-10G-LR\nName                : FLEXOPTIX\nPN                  : SFP-10G-LR\n...\nOptical Tx Power    : -2.8 dBm\nOptical Rx Power    : -3.1 dBm\nTemperature         : 33.5 C\nVoltage             : 3.27 V\nCurrent             : 42.7 mA\n\n! NX-OS example:\nnexus# show interface ethernet 1/1 transceiver\n...\nrx_pwr_dbm    -3.5\ntx_pwr_dbm    -2.8\ntemperature   34.0",
          },
          {
            type: "p",
            text: "DOM values are available when the module has a properly coded EEPROM page A2h (SFP) or the corresponding diagnostic page (QSFP/QSFP-DD). FLEXOPTIX-coded modules include full DOM support for Cisco platforms.",
            text_de:
              "DOM-Werte sind verfuegbar, wenn das Modul eine korrekt kodierte EEPROM-Seite A2h (SFP) oder die entsprechende Diagnoseseite (QSFP/QSFP-DD) hat. FLEXOPTIX-kodierte Module enthalten vollstaendige DOM-Unterstuetzung fuer Cisco-Plattformen.",
          },
        ],
      },
    ],
    quiz: [
      {
        id: "sw-cisco-q1",
        lesson: "sw-cisco",
        q: "On Cisco IOS, which command enables third-party transceivers?",
        q_de: "Welcher Befehl aktiviert auf Cisco IOS Drittanbieter-Transceiver?",
        options: [
          "transceiver override all",
          "service unsupported-transceiver",
          "no transceiver vendor-check",
          "permit transceiver third-party",
        ],
        options_de: [
          "transceiver override all",
          "service unsupported-transceiver",
          "no transceiver vendor-check",
          "permit transceiver third-party",
        ],
        answer: 1,
        explanation:
          "'service unsupported-transceiver' (global config mode) enables third-party transceivers on Cisco IOS, IOS-XE, and NX-OS platforms.",
        explanation_de:
          "'service unsupported-transceiver' (globaler Konfigurationsmodus) aktiviert Drittanbieter-Transceiver auf Cisco IOS, IOS-XE und NX-OS-Plattformen.",
      },
      {
        id: "sw-cisco-q2",
        lesson: "sw-cisco",
        q: "Which Cisco NOS typically has the strictest transceiver lock?",
        q_de: "Welches Cisco-NOS hat typischerweise den strengsten Transceiver-Lock?",
        options: ["IOS-XE on Catalyst 9000", "NX-OS on Nexus 9000", "IOS-XR on NCS-5500 and ASR 9000", "IOS on Catalyst 3750"],
        options_de: [
          "IOS-XE auf Catalyst 9000",
          "NX-OS auf Nexus 9000",
          "IOS-XR auf NCS-5500 und ASR 9000",
          "IOS auf Catalyst 3750",
        ],
        answer: 2,
        explanation:
          "IOS-XR on service provider platforms (NCS-5500, ASR 9000) often enforces hard locks on specific line cards (PICs) where only Cisco-coded modules are accepted, regardless of software configuration.",
        explanation_de:
          "IOS-XR auf Service-Provider-Plattformen (NCS-5500, ASR 9000) erzwingt oft harte Locks auf bestimmten Line Cards (PICs), wo nur Cisco-kodierte Module akzeptiert werden, unabhaengig von der Software-Konfiguration.",
      },
      {
        id: "sw-cisco-q3",
        lesson: "sw-cisco",
        q: "If Cisco TAC asks you to swap a third-party module, this means:",
        q_de: "Wenn Cisco TAC Sie bittet, ein Drittanbieter-Modul auszutauschen, bedeutet das:",
        options: [
          "The module is technically defective",
          "This is a support policy — not an indication the module is faulty",
          "The switch hardware is incompatible",
          "You must buy a Cisco module or void your switch warranty",
        ],
        options_de: [
          "Das Modul ist technisch defekt",
          "Das ist eine Support-Richtlinie — kein Hinweis darauf, dass das Modul fehlerhaft ist",
          "Die Switch-Hardware ist inkompatibel",
          "Sie muessen ein Cisco-Modul kaufen oder Ihre Switch-Garantie verlieren",
        ],
        answer: 1,
        explanation:
          "Cisco TAC's policy is to only support Cisco-approved modules. If you call with a problem and have a third-party module, TAC will ask you to swap it. This is a support policy — not evidence the module is faulty.",
        explanation_de:
          "Die Cisco-TAC-Richtlinie ist es, nur Cisco-genehmigte Module zu unterstuetzen. Wenn Sie mit einem Problem anrufen und ein Drittanbieter-Modul haben, wird TAC Sie bitten, es auszutauschen. Das ist eine Support-Richtlinie — kein Beweis, dass das Modul fehlerhaft ist.",
      },
      {
        id: "sw-cisco-q4",
        lesson: "sw-cisco",
        q: "What command shows DOM data on Cisco NX-OS?",
        q_de: "Welcher Befehl zeigt DOM-Daten auf Cisco NX-OS?",
        options: [
          "show interface GigabitEthernet1/1 optics",
          "show interface ethernet 1/1 transceiver",
          "show sfp diagnostics",
          "show transceiver dom",
        ],
        options_de: [
          "show interface GigabitEthernet1/1 optics",
          "show interface ethernet 1/1 transceiver",
          "show sfp diagnostics",
          "show transceiver dom",
        ],
        answer: 1,
        explanation:
          "On NX-OS: 'show interface ethernet 1/1 transceiver' displays DOM values including Tx power, Rx power, temperature, voltage, and bias current.",
        explanation_de:
          "Auf NX-OS: 'show interface ethernet 1/1 transceiver' zeigt DOM-Werte einschliesslich Tx-Leistung, Rx-Leistung, Temperatur, Spannung und Vorspannungsstrom.",
      },
    ],
  },

  {
    id: "sw-juniper-arista",
    category: "switches",
    title: "Juniper Junos and Arista EOS Compatibility",
    title_de: "Juniper Junos und Arista EOS Kompatibilitaet",
    level: "intermediate",
    duration_min: 12,
    summary:
      "Juniper and Arista are the two most open major switch vendors for third-party transceivers. Learn their platform specifics, DOM commands, and any restrictions that do exist.",
    summary_de:
      "Juniper und Arista sind die zwei offensten grossen Switch-Hersteller fuer Drittanbieter-Transceiver. Lernen Sie deren Plattform-Details, DOM-Befehle und vorhandene Einschraenkungen.",
    tags: ["juniper", "arista", "eos", "junos", "qfx", "ex", "7050"],
    sections: [
      {
        heading: "Juniper Junos: Platform Overview",
        heading_de: "Juniper Junos: Plattform-Ueberblick",
        blocks: [
          {
            type: "table",
            headers: ["Platform", "Use Case", "3rd-Party Friendly?", "Notes"],
            headers_de: ["Plattform", "Anwendungsfall", "Drittanbieter-freundlich?", "Hinweise"],
            rows: [
              ["EX2300 / EX3400", "SMB access switches", "Yes", "Very open, no restrictions"],
              ["EX4300 / EX4650", "Enterprise access/agg", "Yes", "Full DOM visible"],
              ["QFX5100 / QFX5120", "Data center leaf", "Yes", "Some 100G module restrictions"],
              ["QFX10002 / QFX10008", "Data center spine", "Mostly yes", "400G QSFP-DD some restrictions"],
              ["MX204 / MX480", "SP edge", "Yes (most MICs)", "Requires module type match"],
              ["MX10003 / MX10008", "SP core", "Varies by MIC/PIC", "Check MIC compatibility list"],
              ["PTX1000 / PTX10001", "SP core / peering", "Yes", "Generally open"],
            ],
          },
          {
            type: "callout",
            variant: "tip",
            text: "Juniper generally does not enforce vendor lock. However, some platforms require a minimum JunOS release for specific module types. Always check the Juniper Hardware Guide for your specific switch + module combination.",
            text_de:
              "Juniper erzwingt generell keinen Vendor-Lock. Einige Plattformen erfordern jedoch eine Mindest-JunOS-Version fuer bestimmte Modultypen. Immer den Juniper Hardware-Leitfaden fuer Ihre spezifische Switch+Modul-Kombination pruefen.",
          },
        ],
      },
      {
        heading: "Juniper DOM Commands",
        heading_de: "Juniper DOM-Befehle",
        blocks: [
          {
            type: "code",
            text: "# Juniper Junos — optical diagnostics:\nuser@switch> show interfaces xe-0/0/0 media detail\nuser@switch> show interfaces et-0/0/0 diagnostics optics\n\n# Example output:\nPhysical interface: xe-0/0/0\n  Optical diagnostics:\n    Laser output power : 0.398 mW / -4.00 dBm\n    Laser rx power     : 0.230 mW / -6.38 dBm\n    Module temperature : 40 degrees C / 104 degrees F\n    Module voltage     : 3.25 V\n    Laser bias current : 45.300 mA\n\n# Check module identity:\nuser@switch> show chassis hardware",
          },
        ],
      },
      {
        heading: "Arista EOS: The Open Platform",
        heading_de: "Arista EOS: Die offene Plattform",
        blocks: [
          {
            type: "p",
            text: "Arista is well known in the industry for having essentially no transceiver vendor lock. Any MSA-compliant module with correct EEPROM will operate in an Arista switch without any configuration changes. Arista also shows full DOM for any module that supports it.",
            text_de:
              "Arista ist in der Branche bekannt fuer quasi keinen Transceiver-Vendor-Lock. Jedes MSA-konforme Modul mit korrektem EEPROM funktioniert in einem Arista-Switch ohne Konfigurationsaenderungen. Arista zeigt auch vollstaendiges DOM fuer jedes Modul, das es unterstuetzt.",
          },
          {
            type: "table",
            headers: ["Arista Platform", "Use Case", "Key Form Factors", "Notes"],
            headers_de: ["Arista Plattform", "Anwendungsfall", "Wichtige Formfaktoren", "Hinweise"],
            rows: [
              ["7020", "ToR, 1G/10G access", "SFP, SFP+", "Very open"],
              ["7050CX3 / 7060CX2", "100G leaf switch", "QSFP28, QSFP-DD (compat)", "QSFP-DD slot accepts QSFP28"],
              ["7170", "100G leaf + programmable", "QSFP28", "Tofino ASIC, very open"],
              ["7280 / 7300", "100G/400G spine", "QSFP28, QSFP-DD", "400G ports on 7300"],
              ["7500 / 7800", "400G spine chassis", "QSFP-DD, OSFP", "Line card dependent — verify per card"],
            ],
          },
          {
            type: "code",
            text: "# Arista EOS transceiver commands:\nswitch# show interfaces Ethernet1 transceiver\nswitch# show transceiver Ethernet1\n\n# Detailed output:\nswitch# show interfaces Ethernet1 transceiver detail\n\n# Example output:\nEthernet1: Not present\n   Tx Power  : -2.9 dBm\n   Rx Power  : -3.4 dBm\n   Temp      : 34.1 Celsius\n   Voltage   : 3.27 V\n   Bias      : 42.3 mA",
          },
        ],
      },
    ],
    quiz: [
      {
        id: "sw-jnpr-q1",
        lesson: "sw-juniper-arista",
        q: "Which Juniper command shows optical diagnostics including Tx/Rx power?",
        q_de: "Welcher Juniper-Befehl zeigt optische Diagnosen einschliesslich Tx/Rx-Leistung?",
        options: [
          "show transceiver detail",
          "show interfaces et-0/0/0 diagnostics optics",
          "show sfp optical et-0/0/0",
          "show optics dom et-0/0/0",
        ],
        options_de: [
          "show transceiver detail",
          "show interfaces et-0/0/0 diagnostics optics",
          "show sfp optical et-0/0/0",
          "show optics dom et-0/0/0",
        ],
        answer: 1,
        explanation:
          "'show interfaces et-0/0/0 diagnostics optics' is the Junos command for optical diagnostic (DOM) data including laser power, temperature, voltage, and bias current.",
        explanation_de:
          "'show interfaces et-0/0/0 diagnostics optics' ist der Junos-Befehl fuer optische Diagnosedaten (DOM) einschliesslich Laserleistung, Temperatur, Spannung und Vorspannungsstrom.",
      },
      {
        id: "sw-jnpr-q2",
        lesson: "sw-juniper-arista",
        q: "What is Arista EOS's policy on third-party transceivers?",
        q_de: "Was ist die Richtlinie von Arista EOS zu Drittanbieter-Transceivern?",
        options: [
          "Hard lock — requires Arista-coded modules",
          "Soft lock — requires 'service unsupported-transceiver' command",
          "No lock — any MSA-compliant module works without configuration",
          "Soft lock — requires license key per port",
        ],
        options_de: [
          "Harter Lock — erfordert Arista-kodierte Module",
          "Weicher Lock — erfordert Befehl 'service unsupported-transceiver'",
          "Kein Lock — jedes MSA-konforme Modul funktioniert ohne Konfiguration",
          "Weicher Lock — erfordert Lizenzschluessel pro Port",
        ],
        answer: 2,
        explanation:
          "Arista EOS has no vendor lock. Any MSA-compliant transceiver with correct EEPROM works without any configuration changes. Full DOM support is also provided for third-party modules.",
        explanation_de:
          "Arista EOS hat keinen Vendor-Lock. Jeder MSA-konforme Transceiver mit korrektem EEPROM funktioniert ohne Konfigurationsaenderungen. Vollstaendige DOM-Unterstuetzung ist auch fuer Drittanbieter-Module vorhanden.",
      },
      {
        id: "sw-jnpr-q3",
        lesson: "sw-juniper-arista",
        q: "On Arista, which command shows DOM data for Ethernet1?",
        q_de: "Welcher Befehl zeigt auf Arista DOM-Daten fuer Ethernet1?",
        options: [
          "show interface Ethernet1 transceiver",
          "show sfp Ethernet1 diagnostics",
          "show optics Ethernet1",
          "show dom Ethernet1",
        ],
        options_de: [
          "show interface Ethernet1 transceiver",
          "show sfp Ethernet1 diagnostics",
          "show optics Ethernet1",
          "show dom Ethernet1",
        ],
        answer: 0,
        explanation:
          "'show interfaces Ethernet1 transceiver' or 'show transceiver Ethernet1' both work on Arista EOS to display DOM data.",
        explanation_de:
          "'show interfaces Ethernet1 transceiver' oder 'show transceiver Ethernet1' funktionieren beide auf Arista EOS zur Anzeige von DOM-Daten.",
      },
    ],
  },

  {
    id: "sw-fec-config",
    category: "switches",
    title: "FEC Configuration for Optical Interfaces",
    title_de: "FEC-Konfiguration fuer optische Schnittstellen",
    level: "advanced",
    duration_min: 12,
    summary:
      "Forward Error Correction (FEC) is mandatory at 25G and above. Mismatched FEC is the #1 cause of unexplained link-down events. Learn which FEC is required at each speed and how to configure it.",
    summary_de:
      "Forward Error Correction (FEC) ist ab 25G Pflicht. Fehlangepasstes FEC ist die haeufigste Ursache unerklaerter Link-Down-Ereignisse. Lernen Sie, welches FEC bei welcher Geschwindigkeit erforderlich ist und wie es konfiguriert wird.",
    tags: ["fec", "rs-fec", "kp4", "25g", "100g", "400g", "troubleshooting"],
    sections: [
      {
        heading: "What is FEC and Why Does It Matter?",
        heading_de: "Was ist FEC und warum ist es wichtig?",
        blocks: [
          {
            type: "p",
            text: "FEC (Forward Error Correction) is a mathematical technique that adds redundant bits to transmitted data, allowing the receiver to detect and correct bit errors without retransmission. As data rates increased to 25G and beyond, signal-to-noise ratios decreased and raw bit error rates increased. FEC compensates for this, enabling reliable links over real-world fiber and copper.",
            text_de:
              "FEC (Forward Error Correction) ist eine mathematische Technik, die uebertragenen Daten redundante Bits hinzufuegt und es dem Empfaenger ermooglicht, Bit-Fehler ohne Wiederuebertragung zu erkennen und zu korrigieren. Mit steigenden Datenraten auf 25G und hoeher sanken Signal-Rausch-Abstaende und stieg die rohe Bitfehlerrate. FEC kompensiert dies fuer zuverlaessige Verbindungen.",
          },
          {
            type: "table",
            headers: ["FEC Type", "IEEE Clause", "Used At", "Overhead", "Error Correction Capability"],
            headers_de: ["FEC-Typ", "IEEE-Klausel", "Verwendet bei", "Overhead", "Fehlerkorrekturkapazitaet"],
            rows: [
              ["No FEC", "—", "1G, 10G (usually)", "0%", "None — bit errors cause frame loss"],
              ["FC-FEC (CL74)", "Clause 74", "25G, some 40G", "~2.4%", "Corrects burst errors up to 11 bits"],
              ["RS-FEC (CL91)", "Clause 91", "100G, 25G SR/LR", "~2.4%", "Corrects up to 15 symbol errors per codeword"],
              ["KP4 RS-FEC", "Clause 134", "400G, 800G PAM4", "~2.4%", "Higher correction for PAM4 noise environment"],
            ],
          },
          {
            type: "callout",
            variant: "key",
            text: "FEC must match on BOTH ends of the link. If one side uses RS-FEC and the other uses FC-FEC, the link will come up but with massive bit errors, or it won't come up at all. Always set FEC explicitly — don't rely on auto-negotiation at 25G and above.",
            text_de:
              "FEC muss auf BEIDEN Seiten der Verbindung uebereinstimmen. Wenn eine Seite RS-FEC und die andere FC-FEC verwendet, kommt die Verbindung moeglicherweise mit massiven Bitfehlern hoch oder gar nicht. FEC immer explizit setzen — nicht auf Auto-Negotiation bei 25G und hoeher vertrauen.",
          },
        ],
      },
      {
        heading: "FEC Requirements by Speed and Standard",
        heading_de: "FEC-Anforderungen nach Geschwindigkeit und Standard",
        blocks: [
          {
            type: "table",
            headers: ["Speed / Standard", "FEC Required", "FEC Type"],
            headers_de: ["Geschwindigkeit / Standard", "FEC erforderlich", "FEC-Typ"],
            rows: [
              ["10GBASE-SR/LR", "No", "None"],
              ["25GBASE-SR", "Yes (recommended)", "RS-FEC or FC-FEC"],
              ["25GBASE-LR", "Yes", "RS-FEC (CL91)"],
              ["25GBASE-ER", "Yes", "RS-FEC (CL91)"],
              ["40GBASE-SR4 / LR4", "Optional", "FC-FEC sometimes needed"],
              ["100GBASE-SR4", "Yes", "RS-FEC (CL91)"],
              ["100GBASE-LR4", "Yes", "RS-FEC (CL91)"],
              ["100GBASE-DR", "Yes", "RS-FEC (CL91)"],
              ["400G all PAM4", "Mandatory", "KP4 RS-FEC (CL134)"],
              ["800G all PAM4", "Mandatory", "KP4 RS-FEC"],
            ],
          },
        ],
      },
      {
        heading: "Configuring FEC: Cisco, Juniper, Arista",
        heading_de: "FEC konfigurieren: Cisco, Juniper, Arista",
        blocks: [
          {
            type: "code",
            text: "# CISCO NX-OS (Nexus 9000):\ninterface ethernet 1/1\n  speed 25000\n  fec rs-fec          ! RS-FEC for 25G\n  no shutdown\n\n# For 100G:\ninterface ethernet 1/2\n  speed 100000\n  fec rs-fec\n\n# ARISTA EOS:\ninterface Ethernet1\n  speed forced 25gfull\n  fec rs\n\n# JUNIPER Junos (QFX/EX):\nset interfaces et-0/0/0 ether-options fec fec91\n# or for auto:\nset interfaces et-0/0/0 ether-options auto-negotiation\n\n# JUNIPER — check FEC stats:\nshow interfaces et-0/0/0 statistics detail",
          },
          {
            type: "callout",
            variant: "warning",
            text: "If a 25G link goes down immediately after cabling, or shows very high input errors, FEC mismatch is the most likely cause. Check both ends — the server NIC and the switch port — and ensure they are configured for the same FEC mode.",
            text_de:
              "Wenn eine 25G-Verbindung sofort nach dem Verkabeln untergeht oder sehr hohe Eingabefehler zeigt, ist FEC-Fehlanpassung die wahrscheinlichste Ursache. Beide Enden pruefen — die Server-NIC und den Switch-Port — und sicherstellen, dass beide denselben FEC-Modus konfiguriert haben.",
          },
        ],
      },
    ],
    quiz: [
      {
        id: "sw-fec-q1",
        lesson: "sw-fec-config",
        q: "What FEC is mandatory for all 400G PAM4 interfaces?",
        q_de: "Welches FEC ist fuer alle 400G PAM4-Schnittstellen obligatorisch?",
        options: ["FC-FEC (Clause 74)", "RS-FEC Clause 91", "KP4 RS-FEC (Clause 134)", "No FEC needed at 400G"],
        options_de: [
          "FC-FEC (Klausel 74)",
          "RS-FEC Klausel 91",
          "KP4 RS-FEC (Klausel 134)",
          "Kein FEC bei 400G erforderlich",
        ],
        answer: 2,
        explanation:
          "KP4 RS-FEC (Clause 134) is mandatory for all 400G PAM4 interfaces. PAM4's smaller signal margins require stronger FEC than NRZ links.",
        explanation_de:
          "KP4 RS-FEC (Klausel 134) ist fuer alle 400G PAM4-Schnittstellen obligatorisch. PAM4s kleinere Signalabstaende erfordern starkeres FEC als NRZ-Verbindungen.",
      },
      {
        id: "sw-fec-q2",
        lesson: "sw-fec-config",
        q: "A 25G link comes up but shows very high input errors. What is the most likely cause?",
        q_de: "Eine 25G-Verbindung kommt hoch, zeigt aber sehr hohe Eingabefehler. Was ist die wahrscheinlichste Ursache?",
        options: [
          "The cable is too long",
          "FEC mismatch — one end uses RS-FEC, the other uses FC-FEC or none",
          "The module is third-party and incompatible",
          "The switch ASIC is overloaded",
        ],
        options_de: [
          "Das Kabel ist zu lang",
          "FEC-Fehlanpassung — eine Seite verwendet RS-FEC, die andere FC-FEC oder keins",
          "Das Modul ist ein Drittanbietermodul und inkompatibel",
          "Der Switch-ASIC ist ueberlastet",
        ],
        answer: 1,
        explanation:
          "High input errors at 25G with the link physically up is the classic symptom of FEC mismatch. Check FEC configuration at both ends — switch port and server NIC.",
        explanation_de:
          "Hohe Eingabefehler bei 25G mit physisch verbundener Verbindung ist das klassische Symptom einer FEC-Fehlanpassung. FEC-Konfiguration an beiden Enden pruefen — Switch-Port und Server-NIC.",
      },
      {
        id: "sw-fec-q3",
        lesson: "sw-fec-config",
        q: "On Arista EOS, how do you set RS-FEC on a 25G interface?",
        q_de: "Wie setzt man auf Arista EOS RS-FEC an einer 25G-Schnittstelle?",
        options: [
          "interface Ethernet1 → fec rs",
          "interface Ethernet1 → fec forward-error-correction rs",
          "set fec Ethernet1 rs-fec",
          "fec enable Ethernet1 rs",
        ],
        options_de: [
          "interface Ethernet1 → fec rs",
          "interface Ethernet1 → fec forward-error-correction rs",
          "set fec Ethernet1 rs-fec",
          "fec enable Ethernet1 rs",
        ],
        answer: 0,
        explanation:
          "On Arista EOS: under 'interface Ethernet1', the command 'fec rs' enables RS-FEC (Reed-Solomon).",
        explanation_de:
          "Auf Arista EOS: unter 'interface Ethernet1' aktiviert der Befehl 'fec rs' RS-FEC (Reed-Solomon).",
      },
    ],
  },
];
