I am studying BGP and came across the concept of iBGP full mesh.
If I understand correctly, the need to use iBGP full mesh is to let the internal routers within the Autonomous System (AS) learn the best BGP routes.
Also, there's a BGP rule which states that:
"When a router learns routes from an iBGP peer, that router does not advertise those same routes to another iBGP peer"
Applying the above information to the topology , my question is why would I need iBGP peering between routers R1 and R3 when there would be no exchange of BGP routing information at all between the two?
The important part of that sentence is 'learns routes from an(other) iBGP peer'. In your example, R1 may have its own routes (redistributed from connected, network statements, etc) or routes learned from an eBGP peer. Those two categories of routes (and others I'm probably forgetting) would be sent to other iBGP peers.
While that's true, in real life its very hard to make those sort of authoritative statements about a meshy network, so it's usually much easier to fully mesh everything and let the links carry the traffic to the right destination.
If R1 & R3 are not uniquely originating any prefixes into the AS, they do not need to peer. This set of prefixes would even include the routers' own loopback interfaces and any subnets that are local to those two routers only. However, on the assumption that you have an IGP establishing reachability within your AS, the question has to be why are these two routers running BGP at all? If they add no benefit to the AS, why include them?
Hope this helps
Yes it is required , cause lets say router R1 or R3 learn a route via IGP , it will not send it to each other and the other IGP routers will not advertise within the AS , so the route will be lost to the device that is not meshed.