В центре сети коммутатор L2+ достаточно или как у вас L3. На нем терминируются все клиентские аланы, на нем же заводите по влановому интерфейсу с ip адресом - это будет гетвей для каждой подсети.
На аэтом же коммутаторе настраиваете DHCP-Relay (l2+ как правило могут) для каждого влана.
Дальше делаете дефолтный маршрут на ваша роутер, который будет натить все ваши сети.
На роутере маршруты в ответ на каждый сабнет.
Если руками лень, делаете динамическую маршрутизацию по вкусу.
В итоге сети бегут на L3 оттуда либо в соседний влан либо на роутер и в интернет в зависимости от запроса.
Dhcp-сервер может быть где угодно, ему релей все передаст.
Если нужно резервирование роутера - покупаете 2 роутер, настраиваете vrrp. Либо делаем 2 маршрута с разными весами - лучше vrrp конечно же.
Свитч резервируется сложнее и дороже, тут если по простому делаете крон таску которая дампит конфиг, коммитит и рушит в гит репу.