The time has come to replace my poor old Cisco 7301 and the quote I got for an ASR1002-HX made my eyes water. Still waiting for a Juniper quote but the general discussion seemed like similar numbers.
Are there any other reliable options out there that don't cost more than my first house?
For smaller or cost-conscious deployments these days I’d definitely be doing virtual. There are a lot of nice benefits. I like that if your hardware fails you can swing stuff over to a different box without buying two copies of the software. There are some restrictions on that of course, but, in many cases you can make it work well. At least one vendor does network-wide subscriber licensing for virtual, which is nice - others may well do as well.
People have suggested the vSR. Also look at the vMX from Juniper. I’ve done testing with it, it works great. Runs on KVM or VMWare. I’ve tested the latter but I’m sure KVM works fine too. You can get a 60 day fully featured trial from their site to have a play with.
Cisco ASR1000v (and ASR1000 hardware) are a bit naff as you cannot do ambiguous q-in-q for both inner and outer tags. You can either do ambiguous inner, OR outer, but not both at the same time. Every other serious BNG I’m aware of does this fine. You can work around it by pre-configuring all the outer VLANs you expect to see on every interface, but man that sucks.
I dunno what the cost of an ASR9001s is (the s is not plural, it is the half-sized version of the ASR9001) but if you want hardware Cisco, do that. Get a strong understanding of the protocols you run though, as you’ll have to defend your CPEs'/network's implementation etc. to Cisco TAC at some point when it breaks.
I’ve not played with IOS-XRv (Cisco’s vMX/vSR equivalent). I seem to remember they can’t do BNG on it yet though? I maybe be wrong/out of date on that. Last I checked (earlier this year) Cisco were pushing ASR1000v for BNG, anyway.
Whatever you do though, test the performance with your access provider - get some regulated UFB100 circuits from Chorus and make sure the scheduler resolution is good enough to drive it at the full speed - or make sure all your circuits are the modern ones.