I am replacing a CCR2004 with a CCR2116. Since the 2116 has L3HW offloading ability I am wanting to see if I can take advantage of that. The CCR2004 right now is a tower router for one of our ISP tower sites connecting around 250 customers.
My CCR2004 config is not made with L3HW offloading in mind so I have to modify the config. Doing a lab setup I am testing a simplified setup and have L3HW working but I am not sure if it is working by the book as my configuration might be non-standard and I want advice on if the way I have it setup is wrong and will lead to issues when scaled up and put in the field.
My lab setup is R1→CCR2116→Managed switch→R2.
R1 has VLAN interface on Ether9 of 1003. 10.10.97.61/30 is the IP on VLAN1003 interface.
CCR2116 ROS 7.21.2
- L3 HW is enabled on CCR2116 switch ports
- L3 HW disabled on CCR2116 switch
- Bridge with ports Ether 12 and Ether 1
- Bridge vlan filtering enabled
- Ether 12 PVID - 1003
- Ether 1 PVID - 22
- Bridge has Vlan 1003 with bridge and ether 12 tagged
- Bridge has vlan 22 with bridge and ether 1 tagged
- Created Vlan interface Vlan1003 on bridge and enabled L3 HW Offloading
- Put IP address 10.10.97.62/30 on Vlan1003
- Created vlan interface Vlan22 on bridge and enabled L3 HW Offloading
- Created default route of 0.0.0.0/0 w/gateway of 10.10.97.61
- Put IP address 10.20.103.1/26 on Vlan22
- Put IP address of 172.16.2.61/30 on Ether1 for switch management
- Created IP pool and then DHCP server on Vlan22 interface
- Managed Switch is connected to Ether1
Managed switch
- Management IP is 172.16.2.62/30
- Port 5 is Trunk port for vlan 22 and vlan 1
- Port 1 is Access port for vlan 22
R2
- WAN port set to DHCP to get IP address from CCR2116
- WAN port connected to Port 1 (Access port) of Managed switch.
I have the above working at the IP level. R2 gets an IP address in the 10.20.103.x IP pool. R2 can ping and reach R1. R2 can do a Btest to R1. R1 can ping and access CCR2116. R1, R2 and CCR2116 can access management IP of managed switch.
Doing a Btest from R2 to R1 and pushing 1G TCP with L3 HW offload disabled on the CCR2116 switch CPU usage per core is 0-8% (usually only around 4 cores active) and Fastpath counters under IP→Settings are incrementing meaning the low CPU usage is due to fastpath.
If I enabled L3 HW offload CPU usage on all cores go to 0% with 1 core between 0-2% (I assume for non-routing processes). So this config seems to work right.
Now I disabled L3 offload added some FW rules to the system.
Input chain
- Accept established/related
- Accept port 80, 8291
- Drop invalid
- Drop all
Now when I did this fastpath stopped incrementing and CPU usage went to around 16-20% for 4 of the 16 cores. As expected as the CPU is now processing all the traffic because of those FW rules. FW Conn tracker shows 20 TCP connection between R2 and R1 for the Btest with the rate values per connection showing traffic flowing.
I then turned on L3 offload and all core CPU went back to 0% but fast path counters are not incrementing. However, the Input FW rules still function as expected and their counter increase appropriately. L3 HW Monitor shows 2 IPv4 hosts and only 1 IPv4 HW route. It shows 23 CPU routes. 0 Fasttrack anything.
IP→Setting shows 0 Fastpath and 0 Fasttrack traffic. FW Conn tracker shows a single TCP connection between R2 and R1 but Rate is 0bps.
Is that expected to work that way? Will this cause issues when there is normal customer traffic?
Another scenario:
I turn back off L3 offload and then add FW Forward rules along with the previous Input FW rules.
- Fasttrack established/related
- Accept established/related
CPU usage with fasttrack is lower than without fasttrack and fasttrack counters increment in IP-Settings.
Now if I keep the Forward FW rules and then enable L3 Offload CPU usage goes back to 0% on all cores. Forward FW rules counters stop increasing. Also under IP→settings Fastpath and Fasttrack counters do not increase but Fasttrack shows as enabled. FW Conn tracker only shows a single TCP connection from R2 to R2 with a rate of 0bps.
Under L3 Monitor Fasttrack section shows all 0 as well.
In this setup with L3 Offload enabled it seems the Forward rules do nothing and can be removed but the Input FW rules still work.
Is this a valid setup? I ask because the L3 HW offload help page many times makes statements that unexpected things can happen if you do not have it configured correctly.