I have a setup where I am bonding 3 GRE tunnels from one box to another.
On the head box I have assigned 3 IP addresses in the same subnet.
On the tail box I have assigned 3 IP address in 3 subnets.
在尾部插入语句路由到ensure that head IP 1 gets routed via subnet 1 on the tail, head IP 2 gets routed via subnet 2 and head IP 3 via subnet 3. In this way I can balance the traffic by destination IP address to ensure the correct egress interface is used on the tail.
I then add EoIP across the link specifying IP1-1, IP2-2 and IP3-3. The tunnels come up fine.
I have then added a bonding interface and enslvaed the three EoIP tunnels. I then added a /30 subnet as a route target. Finally I have enabled ARP link monitoring specifying the /30 as the target for ARP.
Everything seems to work fine when all links are up. If I block traffic between the head and tail to simulate a link failure the link does not detect the failure. The strange thing is this was working.
我已经做了一些诊断和发现something that is odd.
Each router in the link has 2 GRE connections per EoIP tunnel. One is from head to tail and one is from tail to head. I would have expected the connection to send/reply to the same connection but this appears related to the fact that each end opens a connection to the other end and thus two connections open.
I have tested an IPIP tunnel and all traffic flows over one tunnel. Any time I use EoIP to establish a tunnel I get two connections. I am convinced this is affecting the bonding and link detection but I cannot see how to ensure connection tracking.
Does anyone have any ideas how this could be solved? Or any suggestions on why the bonding does not detect the link failure?
Any help would be most welcome.