I went back and looked at some old modeling data I had from an earlier project. I collected a large sample from existing networks of Edge Router packets per second and CPU load. That data shows a directly proportional relationship at approximately 100Kpps/CPU. The systems were all cloud based nodes, probably 2.4GHz processors, though I didn't record that. That should give you scale. There is a fair distribution around that line, however, the estimate seems conservative for larger loads; the sample is weighted heavily by the lower packet numbers, where the base processing of the application is going to show some load with very few packets forwarded.
That said, I would target 80% utilization at half that number (50Kpps) as a start, and then start watching your own numbers to get a better idea of what your network model does. I would not go below 2 GB RAM except for testing. The base memory load of the runtime is a significant portion of 1GB, so it leaves little room for any events, and like any software, out of memory is a very bad place to be.
As far as controllers go, we haven't been as successful modeling, as there are so many more variables to consider. That said, of a few hundred networks we operate, the majority of in use networks are no more than 4CPU/8GB RAM nodes. That includes one network with a few hundred identities and ERs that averages over 5M call events per day. So 2 CPU/4GB RAM is usually OK for smaller networks, 4/8 if you intend to have a large network, then monitor for capacity beyond that.
I hope this all helps.