Edit 2:
As you mentioned...
ip route 10.1.0.0 255.255.0.0 iface0
Forces the Brocade to proxy-arp for every destination in 10.1.0.0/16 as if it was directly connected to iface0
.
I can't respond about Brocade's ARP cache implementation, but I would simply point out the easy solution to your problem... configure your route differently:
ip route 10.1.0.0 255.255.0.0 CiscoNextHopIP
By doing this, you prevent the Brocade from ARP-ing for all of 10.1.0.0/16 (note, you might need to renumber the link between R1 and R2 to be outside 10.1.0.0/16, depending on Brocade's implementation of things).
Original answer:
I expect that in most, or even all, implementations, there is a hard limit on the capacity of the ARP table.
Cisco IOS CPU routers are only limited by the amount of DRAM in the router, but that is typically not going to be a limiting factor. Some switches (like Catalyst 6500) have a hard limitation on the adjacency table (which is correlated to the ARP table); Sup2T has 1 Million adjacencies.
So, what happens when the ARP cache is full and a packet is offered with a destination (or next-hop) that isn't cached?
Cisco IOS CPU routers don't run out of space in the ARP table, because those ARPs are stored in DRAM. Let's assume you're talking about Sup2T. Think of it like this, suppose you had a Cat6500 + Sup2T and you configured all Vlans possible, technically that is
4094 total Vlans - Vlan1002 - Vlan1003 - Vlan1004 - Vlan1005 = 4090 Vlans
Assume you make each Vlan a /24 (so that's 252 possible ARPs), and you pack every Vlan full... that is 1 Million ARP entries.
4094 * 252 = 1,030,680 ARP Entries
Every one of those ARPs would consume a certain amount of memory in the ARP table itself, plus the IOS adjacency table. I dont know what it is, but let's say the total ARP overhead is 10 Bytes...
That means you have now consumed 10MB for ARP overhead; it still isn't very much space... if you were that low on memory, you would see something like %SYS-2-MALLOCFAIL
.
With that many ARPs and a four hour ARP timeout, you would have to service almost 70 ARPs per second on average; it's more likely that the maintenance on 1 million ARP entries would drain the CPU of the router (potentially CPUHOG messages).
At this point, you could start bouncing routing protocol adjacencies and have IPs that are just unreachable because the router CPU was too busy to ARP for the IP.
You say you've read "the official documentation", but does that include the actual RFC, RFC 3561?
I believe your concerns are addressed in Section 6.1, Maintaining Sequence Numbers. It says, in part:
The only other circumstance in which a node may change the
destination sequence number in one of its route table entries is in
response to a lost or expired link to the next hop towards that
destination. The node determines which destinations use a particular
next hop by consulting its routing table. In this case, for each
destination that uses the next hop, the node increments the sequence
number and marks the route as invalid (see also sections 6.11, 6.12).
This means that in your example, after Step 4, C knows that the link to D is down and increments the Sequence number appropriately.
Then, utilizing the RERR method described in section 6.11, C sends a message to the other routers letting them know that the route to D is bad. Thus avoiding the loop.
(It has been many years since I've looked at AODV, I might be wrong/rusty...)
Best Answer
What you need to understand about the IPv4 TTL or IPv6 Hop Limit value is that a router (supposed to be the end-host, too, for IPv4, but most OSes don't do this) will decrement the IPv4 TTL or IPv6 Hop Limit when it receives a packet, and it will discard the packet if it decrements to
0
.That means that a packet with a IPv4 TTL or IPv6 Hop Limit of
1
entering a router will result in the router discarding the packet because it will be decremented to0
.For IPv4, see RFC 791, Internet Protocol:
-and-
-and-
For IPv6 see RFC 2460, Internet Protocol, Version 6 (IPv6) Specification:
-and-
Notice that it says, "if the IPv6 Hop Limit is less than or equal to 1," the packet is discarded.
-and-
Edit:
Here is an example where I pinged the next-hop router VLAN interface, and then I pinged the router Loopback0 interface, with a TTL of 1. I received ICMP replies for every ping attempt, but the pings to the loopback expired in transit: