From what I observe, there are four types of network bottlenecks for Storj.
Latency to customers. If you’re “close” to many customers, then you’ll win more races, filling your storage faster and getting more downloads. You can’t control the actual geographical distance, but you may control what ISP you are using—maybe some ISPs are better connected than others. Your local network topology will impact latency, e.g. Ethernet is better than WiFi, and WiFi is (from my experiments) better than networking over powerlines. Your routers and switches may also impact latency if they’re of low grade. You can measure latency to your ISP.
Ingress bandwidth. I think I haven’t seen ingress bigger than around 3 MB/s yet, and these were short peaks anyway. This is per IP /24 block, with a small increase if you have both a vetted and an unvetted node within your network. If your ISP gives you 100 Mbps or more, you shouldn’t worry. Speedtest is probably good enough here.
Egress bandwidth. Again, around 3 MB/s short-term peaks was the highest I observed so far. Egress depends on what kind of data you store, so it’s more difficult to define how it scales. New data is usually downloaded more often than old data, but I do have one node that is full for many months now, but constantly gives pretty good egress revenue. Again, speedtest will give you a good number here.
Number of concurrent TCP/UDP connections. Something I learned the hard way, my old router was restarting every few hours during traffic peaks because its routing tables filled too quickly. Probably the easiest way to test this is to try to download a high-traffic torrent file and check if it kills your router
Regarding the device, there are two interesting metrics here, kinda related though. One is sustained write IOPS measured at the file system level, another is operations on directories with large number of files. SMR drives are worse than CMR drives, btrfs is worse than ext4, checksums and parity schemes often degrade performance, write caches help. Having more RAM for caching direntries and inodes helps. Moving databases to separate storage helps. Disabling synchronous writes should help. Probably a tool like filebench would be of use here, though I have no idea what would be the thresholds to achieve, and a realistic test would take many days.
This is roughly a synthesis of common forum posts. Probably not comprehensive, but should be a good start.