1. Juniper Networks TechLibrary
Junos OS Routing Protocols Library
BGP Feature Guide
next-hop-self: "By default
BGP advertises routes that it learns from an external BGP (EBGP) peer to an internal BGP (IBGP) peer without modifying the next-hop address... To change the next-hop address
include the next-hop-self statement... This statement causes the advertising routing device to substitute its own IP address for the third-party next-hop address." This reference directly supports option B.
2. Juniper Networks TechLibrary
Junos OS Routing Protocols Library
OSPF Feature Guide
"Example: Redistributing Routes into OSPF": This documentation provides examples of configuring a routing policy to redistribute routes from other protocols (such as direct interface routes) into an IGP like OSPF. Applying this concept
R4 could redistribute its external link (192.168.1.0/30) into the IGP
making the BGP next-hop 192.168.1.1 reachable for R5. This reference supports the methodology in option D.
3. RFC 4271 - A Border Gateway Protocol 4 (BGP-4)
Section 5.1.3. NEXTHOP: This RFC specifies the behavior of the NEXTHOP attribute. It states
"The NEXTHOP attribute for a route learned via IBGP is the IP address of the BGP speaker that advertised the route to the local BGP speaker." This confirms that without intervention
R5 will receive the original next-hop from R4
which is the source of the problem.