nndocs:sandbox
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
nndocs:sandbox [2024/09/08 21:30] – updates naptastic | nndocs:sandbox [2025/05/04 02:15] (current) – [Networks] make a table. Might be fun. naptastic | ||
---|---|---|---|
Line 1: | Line 1: | ||
=====Names===== | =====Names===== | ||
- | ===Hosts=== | + | ====Hosts==== |
A hostname must be pronounced and spelled one way, unambiguously. It should be a member of a set, but not any set another host belongs to. It must be lowercase. It should be possible to type from primitive typing devices like TV remotes. | A hostname must be pronounced and spelled one way, unambiguously. It should be a member of a set, but not any set another host belongs to. It must be lowercase. It should be possible to type from primitive typing devices like TV remotes. | ||
Line 8: | Line 8: | ||
| Days of the week | sunday | | | Days of the week | sunday | | ||
| Medications | pepto | | | Medications | pepto | | ||
+ | | Animals | duckling, shark (oops; there shouldn' | ||
+ | | Food | cherry | | ||
- | === Interfaces === | + | ====IQN and NQN==== |
+ | We do iSCSI and NVMe Qualified Names by the book, but as simply as possible. A couple of examples: | ||
+ | |||
+ | iqn.2014-08.rocks.narf.southpark: | ||
+ | nqn.2004-12.com.naptastic.quirk: | ||
+ | |||
+ | * ' | ||
+ | * YYYY-MM is the month in which the domain was registered. | ||
+ | * the hostname is in backwards DNS order | ||
+ | * :initiator or : | ||
+ | |||
+ | From the perspective of a host, every storage bus has a number. Bus 0 is the local PCI bus. Bus 1 is for the host acting as an initiator. Higher numbers are for a host acting as a target. Connections go like this: | ||
+ | |||
+ | iqn.2004-12.com.naptastic.rocky: | ||
+ | |||
+ | Since rocky' | ||
+ | |||
+ | ====Interfaces==== | ||
All hosts currently have 1 or 2 Ethernet ports on the mainboard, 0 or 1 wireless devices, 0 or 1 quad-port Ethernet cards, 0 or 1 Infiniband/ | All hosts currently have 1 or 2 Ethernet ports on the mainboard, 0 or 1 wireless devices, 0 or 1 quad-port Ethernet cards, 0 or 1 Infiniband/ | ||
Line 19: | Line 38: | ||
* mlxX: mlx ports when they are configured for Ethernet operation | * mlxX: mlx ports when they are configured for Ethernet operation | ||
- | ===MAC addresses=== | + | |
+ | ---- | ||
+ | =====Numbers===== | ||
+ | |||
+ | ====MAC addresses==== | ||
I'm not actually forcing MAC addresses on anything... yet. Just making a note that | I'm not actually forcing MAC addresses on anything... yet. Just making a note that | ||
* NAP is 6e:61:70 in hexadecimal | * NAP is 6e:61:70 in hexadecimal | ||
- | * nap is 4e:41:40 in hexadecimal | + | * nap is 4e:41:50 in hexadecimal |
As of September 2024, neither prefix has been assigned to a vendor. | As of September 2024, neither prefix has been assigned to a vendor. | ||
- | ===IP Addresses=== | + | === MAC addresses for the quad-port gigabit cards === |
+ | southpark en(0..3): | ||
+ | hardware ethernet 00: | ||
+ | hardware ethernet 00: | ||
+ | hardware ethernet 00: | ||
+ | hardware ethernet 00: | ||
+ | |||
+ | in a drawer: | ||
+ | hardware ethernet 00: | ||
+ | hardware ethernet 00: | ||
+ | hardware ethernet 00: | ||
+ | hardware ethernet 00: | ||
+ | |||
+ | ====IPv6==== | ||
+ | IPv6 local unique addresses have four parts: | ||
+ | - 8 bits of fixed prefix (fd) | ||
+ | - 40 bits of pseudorandom prefix | ||
+ | - 16 bits of subnet | ||
+ | - 64 bits of GUID | ||
+ | |||
+ | My top 48 bits are going to be fd20: | ||
+ | |||
+ | ====IP Addresses==== | ||
We use 172.20.0.0/ | We use 172.20.0.0/ | ||
Line 35: | Line 80: | ||
* (0x3000 isn't a valid range for IB subnets since it would result in partial membership. Setting the high bit to 1 gives 0xb000.) | * (0x3000 isn't a valid range for IB subnets since it would result in partial membership. Setting the high bit to 1 gives 0xb000.) | ||
- | === Function Numbers (fun) === | + | ====Networks==== |
- | | + | |
+ | ^ Network ^ IPv4 Range ^ IPv6 Range ^ IB Subnet ^ VLAN ^ VXLAN IP ^ VXLAN ID ^ | ||
+ | | green | 172.20.0/22 | fd20: | ||
+ | |||
+ | | ||
* 0: .1 is the network controller (router, DHCP, DNS); .2+ is for assigned hosts | * 0: .1 is the network controller (router, DHCP, DNS); .2+ is for assigned hosts | ||
* 1: .0-255 contains IPMI interfaces and nothing else right now | * 1: .0-255 contains IPMI interfaces and nothing else right now | ||
* 2: .0-255 is for unassigned DHCP hosts | * 2: .0-255 is for unassigned DHCP hosts | ||
- | * 3: .0-254 is for VMs that are expected to only run on a specific physical host. Hosts | + | * 3: .0-254 is for VMs that are expected to only run on a specific physical host. |
- | * .32-39: butler | + | |
* .72-79: carbon | * .72-79: carbon | ||
* .80-87: duckling | * .80-87: duckling | ||
Line 52: | Line 100: | ||
* Unused: 16-31 (/20) | * Unused: 16-31 (/20) | ||
* Unused: 32-63 (/19) | * Unused: 32-63 (/19) | ||
- | * RDMA networks (/19): IP over InfiniBand and Ethernet can't be bridged, so they need to be separate subnets. | + | * RDMA networks (/19): IP over InfiniBand and Ethernet can't be bridged, so they need to be separate subnets. I //could// bridge ib0+ib1 or mlx0+mlx1 but that takes away flexibility so I'm not going to. |
- | * 64-65 (/24): ib0, ib1 | + | * 64: ib0 |
- | * 66-67 (/24): mlx0, mlx1 | + | * 65: ib1 |
+ | * 66: mlx0 | ||
+ | * 67: mlx1 | ||
* 68-79 (/22): Reserved | * 68-79 (/22): Reserved | ||
* 80-95 (/21): Reserved | * 80-95 (/21): Reserved | ||
Line 79: | Line 129: | ||
I am no longer able to manage the TP-link switch. It's fixed configuration. I'm not using VLANs so I don't know how it will behave with them. | I am no longer able to manage the TP-link switch. It's fixed configuration. I'm not using VLANs so I don't know how it will behave with them. | ||
- | ===Host Numbers=== | + | ====Host Numbers==== |
* 3: sunday | * 3: sunday | ||
Line 88: | Line 138: | ||
* 13: southpark (2023) | * 13: southpark (2023) | ||
* 14: pepto (2026) | * 14: pepto (2026) | ||
- | * 15..23: (mainframe expanders. If we get bigger than 16 nodes I don't mind renumbering again.) | + | * 15..23: (future expansion) |
* 24..31: switches | * 24..31: switches | ||
* 24: butwhy b4: | * 24: butwhy b4: | ||
Line 99: | Line 149: | ||
* 35: xp-pe (tbh idk if this still exists) | * 35: xp-pe (tbh idk if this still exists) | ||
* 36: tf2 | * 36: tf2 | ||
+ | * 68: rocky (VM with SR-IOV parts) | ||
- | === MAC addresses for the quad-port gigabit | + | ---- |
- | This was in shark, and is now in a drawer: | + | |
- | | + | =====Big Idea Dumping Ground===== |
- | | + | ====SoC on a PCI card==== |
- | | + | Mostly this is to enable other projects. It needs at least these features: |
- | | + | |
+ | * reasonable amount of CPU and DRAM | ||
+ | * PCIe 3.0 x1 or better | ||
+ | * Internal ports: | ||
+ | - m.2 slot | ||
+ | - 40-pin with GPIO, I2C, etc... | ||
+ | - LP-DIMM | ||
+ | * External ports: | ||
+ | - HDMI | ||
+ | | ||
+ | - (2) USB 3.1 | ||
+ | |||
+ | The card presents itself to its host as one or more devices. It can pass through its USB host adapter, network adapter, and m.2 slot, and act as a GPU. It supports SR-IOV. You can boot off it. With the right hardware support, it should be able to stay awake while the host powers off or reboots. | ||
+ | |||
+ | ====PCIe networking==== | ||
+ | These products: | ||
+ | |||
+ | - Retimer cards in x4, x8, and x16 | ||
+ | - Switch cards in x8 and x16 | ||
+ | - Outboard switches with just ports | ||
+ | - Device shelves | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | - USB device holder | ||
+ | - SATA/SAS and NVMe backplanes | ||
+ | |||
+ | The paradigm is " | ||
+ | |||
+ | Everything except retimer cards needs an API and UI for managing things. | ||
+ | |||
+ | ====Better Audio Stack==== | ||
+ | Want to: | ||
+ | - Connect to all ports in the system | ||
+ | - Dynamically resample to buffers in shared memory | ||
+ | - RDMA to/from other hosts | ||
+ | (is RDMA multicast possible? That would be so fucking sick) | ||
+ | - Full mixing capability | ||
+ | - Backend for jackd | ||
+ | |||
+ | ====Better DAW==== | ||
+ | Core concept is a piece of virtual tape that's infinitely long, infinitely wide, and has an infinite number of tape heads that can all be accessed remotely. A recording session is a server you log into, send recorded audio, receive mixed audio, and update a database of what should play when and with what settings. | ||
+ | |||
+ | ====RDMA to a Commodore 64==== | ||
+ | The 6502 can't drive the C64's memory anywhere near full-speed, but the ROM port has a DMA pin, so a DMA-capable cartridge can do impossibly cool things. I'd like to find a good demo playback engine that already exists, and adapt it to play back data being streamed in over a network. | ||
- | duckling en(0..3) | + | ====Better Mixer==== |
- | | + | FIXME |
- | hardware ethernet 00: | + | |
- | hardware ethernet 00: | + | |
- | hardware ethernet 00: | + |
nndocs/sandbox.1725831042.txt.gz · Last modified: 2024/09/08 21:30 by naptastic