I have seen similar issues and have been thinking about what could be going wrong.
The link between Danestone and Foresterhill is strong and fast, likely because we are both radiating towards each other in line of sight, using vertically polarized antennas.
However, the link between Foresterhill and the 12.5dBi Yagi is a different matter. While this connection may also be line of sight, a Yagi is highly directional, and since online maps show it only neighbouring Linksfield, I suspect it is not aimed towards Foresterhill or Danestone. Consequently, we may be on the less effective side of the beam. Additionally, most users tend to mount their Yagi antennas horizontally polarised. This misalignment likely results in some packet loss between Foresterhill and the Yagi, leading to slower/failed communication. Adding a third node with a similar issue into the path then there will be delays on the way out, and all the delays repeated again on the way back. It could look exponential.
A Yagi is good for a long-distance dedicated node-to-node link, but I might consider adding an omnidirectional REPEATER node alongside it. This would ensure that all packets transmitted via the directional Yagi are also repeated in all directions, benefiting everyone with the Yagiās gain, and removing the Yagiās deaf side. However, we might all have to increase our hop count. Iāve noticed nodes appearing at Foresterhill with hop counts reaching seven.
There might also be an issue caused by ROUTER and ROUTER_CLIENT configurations. I have read that that if node1 is out of range of node2 and uses an intermediate ROUTER node to establish a link, that route is considered static. If node1 then moves to a position right next to node2, it will still attempt to communicate through the ROUTER node instead of directly with node2. It might even be the case that node1 can no longer reach the ROUTER node.
This becomes even more problematic when mobile nodes are configured as a ROUTER_CLIENT and are driven around the mesh creating a rather chaotic situation. Also, if nodes have directional antennas, and they are on rotators, they shouldnāt be a ROUTER as they are not static and will appear/disappear to other nodes. I understand that the ROUTER_CLIENT configuration is being phased out in the latest firmware, which I anticipate will lead to improvements in every mesh network.
My antenna upgrade idea presents a conundrum. LoRa operates on a line-of-sight basis, and I know I am achieving this as I am being picked up from 40km away due to my height. However, with increased height comes a disadvantage. My setup also picks up signals from everyone else, not just LoRa. The base noise level at Foresterhill is high across all frequencies - HF, VHF, UHF. I suspect that most LoRa boards do not have robust front-end filtering, and many are tuned for 915 MHz. Given that 4G mobile frequencies (800MHz and 900MHz bands) are adjacent to 868 MHz, I wonder if my node is being desensitised by the numerous mobile masts and phones within range. The antenna at Foresterhill is marketed as 5dBi, but since it is based on a dipole design, I expect it to be closer to 2.5dBi. I considered adding a 868 MHz bandpass filter, but the insertion loss would exceed 2dBi, effectively negating the antenna gain. Unless I come up with a good solution, I may choose to leave everything as it is.