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.
Set | Hostname |
---|---|
Chemical elements | carbon |
Greek gods | apollo |
Days of the week | sunday |
Medications | pepto |
Animals | duckling, shark (oops; there shouldn't be two in the same category) |
Food | cherry |
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:duckling nqn.2004-12.com.naptastic.quirk:68
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:01 -> iqn.2014-08.rocks.narf.southpark:68
Since rocky's host number is 68, any other host wishing to share storage with rocky should do so on their own target bus number 68. The network is responsible to connect rocky's bus 01 with southpark's bus 68.
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/VPI cards. They all get used differently, so… I'm going to name them differently.
I'm not actually forcing MAC addresses on anything… yet. Just making a note that
As of September 2024, neither prefix has been assigned to a vendor.
southpark en(0..3):
hardware ethernet 00:10:18:f8:02:20; hardware ethernet 00:10:18:f8:02:22; hardware ethernet 00:10:18:f8:02:24; hardware ethernet 00:10:18:f8:02:26;
in a drawer:
hardware ethernet 00:10:18:f8:2e:10; hardware ethernet 00:10:18:f8:2e:12; hardware ethernet 00:10:18:f8:2e:14; hardware ethernet 00:10:18:f8:2e:16;
IPv6 local unique addresses have four parts:
My top 48 bits are going to be fd00:4e41:5000. Subnet bits should match their Infiniband subnet. Host bits come from the hardware address.
We use 172.20.0.0/16. The second octet is always 20, until I expand to multiple sites. The third octet is the function number. The last octet is the host number.
There's an almost perfect correlation between interface name, type, number, and function. There's no need for hosts to have extra addressing for extra interfaces. Subnets will be /24 except napwork, which is /22 to accommodate other functions.
If you add functions please think about whether it makes more sense to assign subnets sequentially, or split a block that's currently unassigned.
There aren't currently any VLANs in use. The Ubiquiti switches might have a stale layout:
there might be other san* VLANs defined. I don't remember.
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.
Mostly this is to enable other projects. It needs at least these features:
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.
These products:
The paradigm is “assign devices to hosts” rather than “hosts communicating”. The storage shelves don't need to have file services or even know about filesystems. They will show up as a PCI device with storage attached to whatever system they're connected. This is a “peripheral area network” and if CXL becomes part of the mix, it's “memory area network” as well.
Everything except retimer cards needs an API and UI for managing things.
Want to:
(is RDMA multicast possible? That would be so fucking sick)
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.
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.