- user4565 brings up a very important point, you need the redundant connections. You could have all of the redundancy in the world upstream of R1/R2, if a link between R1/R2 and SW1/SW2 goes down, that corresponding R is still going to be offline.
Add the following connections for the best possible redundancy:
Now you can lose either SW1 or SW2, and still have connection to your R's.
As user4565 said, add another trunk between ESW1 and ESW2 - more redundancy isn't a bad thing.
Make sure all of your trunk links carry both VLANs if you decide to use more than the default VLAN.
Just to clarify a couple of extra things, if you're interested:
You will always a native VLAN, one will always exist (VLAN 1 by default).
Unless you're running some seriously ancient gear, Cisco typically runs STP in the default mode of PVST+ or RPVST+. This means that each VLAN you configured, will have it's own instance of STP running (PVST = Per Vlan Spanning Tree). This is helpful because let's say you have 2 VLANs, VLAN 1 and VLAN 10. If something breaks in VLAN10, it will adjust the paths accordingly, and leave VLAN1 completely unaffected, this means zero service disruption for VLAN1.
Just a little bit more older STP context, it used be that only a single instance of STP ran, no matter how many VLANs you had. That means, if you had a link in VLAN1 go down, all other VLANs would have disruptions because STP had to recalculate the loop free paths. This is why PVST is so important.
Along with each VLAN having its own instance of spanning tree, PVST+ adds some other capabilities. The important one being, alternate ports. Let's look at the difference of how an older version of STP would run vs. PVST+ when an outage event happens, if you had two interfaces, connecting the same two devices (in EACH VLAN, so lets just say you have VLAN1 only).
Example:
- R1 Eth1/1 <=> SW1 Eth2/1
- R1 Eth1/2 <=> SW1 Eth2/2
Older STP:
IMPORANT: When STP calculates, there can only be one path, all others are automatically blocking, this is how STP prevents loops.
- R1 Eth1/1 <=> SW1 Eth2/1 - FORWARDING
- R1 Eth1/2 <=> SW1 Eth2/2 - BLOCKING
That blocking port doesn't know anything, if its up, it is only used if STP needs to recalculate.
- Link 1 of 2 breaks in some way (shutting a link, cable being cut, cable failing, etc.)
- STP will tell the entire STP domain to flush its entire topology and recalculate all paths. Resulting in service disruption.
After STP recalculates, the port that was originally BLOCKING will move through the LISTENING, and LEARNING states before entering FORWARDING. This can take some time, thus causing downtime.
- R1 Eth1/2 <=> SW1 Eth2/2 - FORWARDING
PVST+
IMPORANT: When PVST+ calculates, something different happens with those extra interfaces you have connected. If R1 has two ports connected to R2
- R1 Eth1/1 <=> SW1 Eth2/1 - FORWARDING
- R1 Eth1/2 <=> SW1 Eth2/2 - ALTERNATE
The difference with PVST+ is in the initial calculation, when the loop free topology is built, redundant ports facing upstream to the root bridge will be an alternate port. This means that it KNOWS that the alternate port is a way to the root bridge, so should the primary link fail, it doesn't need to recalculate - it can immediately jump to the FORWARDING state and push traffic as normal, instead of being forced to run through all of the phases again.
- Link 1 of 2 breaks in some way.
R1 Eth1/2 immediately switches to forwarding.
- R1 Eth1/2 <=> SW1 Eth2/2 - FORWARDING
No service interruption.
Hope this helps, I apologize if it's a bit long winded - but it helps to know your options. If you need any clarification, feel free to ask.