A router running External BGP with Interprovider VPNS for Option B:
https://www.juniper.net/documentation/us/en/software/junos/vpn-l3/topics/topic-map/l3-vpns-interprovider.html
Is seeing a problem with route installation. The test/topology uses a VRF:
set routing-instances 100 instance-type vrf
set routing-instances 100 interface et-0/0/4.2
set routing-instances 100 interface lo0.100
set routing-instances 100 vrf-target import target:577:100
set routing-instances 100 vrf-target export target:577:100
set routing-instances 100 vrf-table-label
With an EBGP peer in the parent routing-instance. That peer runs inet-vpn and inet6-vpn address families and is set to use IPv4 as the neighbor protocol:
set protocols bgp group e1 type external
set protocols bgp group e1 accept-remote-nexthop
set protocols bgp group e1 family inet-vpn unicast
set protocols bgp group e1 family inet6-vpn unicast
set protocols bgp group e1 peer-as 65002
set protocols bgp group e1 neighbor 1.0.0.2
VPNv4 routes are received and installed as expected:
labroot@e12-44> show bgp summary
Threading mode: BGP I/O
Default eBGP mode: advertise - accept, receive - accept
Groups: 1 Peers: 1 Down peers: 0
Table Tot Paths Act Paths Suppressed History Damp State Pending
bgp.l3vpn.0
2 2 0 0 0 0
bgp.l3vpn-inet6.0
2 0 0 0 0 0
Peer AS InPkt OutPkt OutQ Flaps Last Up/Dwn State|#Active/Received/Accepted/Damped...
1.0.0.2 65002 9457 9450 0 9 2d 22:48:08 Establ
bgp.l3vpn.0: 2/2/2/0
100.inet.0: 2/2/2/0
bgp.l3vpn-inet6.0: 0/2/2/0
100.inet6.0: 0/2/2/0
labroot@e12-44> show route receive-protocol bgp 1.0.0.2 detail table bgp.l3vpn.0
bgp.l3vpn.0: 5 destinations, 5 routes (5 active, 0 holddown, 0 hidden)
* 2.2.2.2:6:99.99.99.2/32 (1 entry, 0 announced)
Import Accepted
Route Distinguisher: 2.2.2.2:6
VPN Label: 16
Nexthop: 1.0.0.2
AS path: 65002 I
Communities: target:577:100
* 2.2.2.2:6:100.0.0.0/24 (1 entry, 0 announced)
But, the vpnv6 routes sent by the peer are marked hidden:
labroot@e12-44> show route receive-protocol bgp 1.0.0.2 detail table bgp.l3vpn-inet6.0 hidden
bgp.l3vpn-inet6.0: 6 destinations, 6 routes (4 active, 0 holddown, 2 hidden)
- 2.2.2.2:6:2000:99::2/128 (1 entry, 0 announced)
Nexthop: ::ffff:1.0.0.2
- 2.2.2.2:6:2100::/64 (1 entry, 0 announced)
Because the IPv6 to IPv4 converted NH (::ffff:1.0.0.2) cannot be resolved:
2.2.2.2:6:2000:99::2/128 (1 entry, 0 announced)
-BGP Preference: 170/-101
Next hop type: Unusable, Next hop index: 0
Address: 0x559437b5b47c
Next-hop reference count: 4
Kernel Table Id: 0
Source: 1.0.0.2
State: <Hidden Ext Changed ProtectionPath ProtectionCand>
Local AS: 65001 Peer AS: 65002
Age: 3:18
Validation State: unverified
Task: BGP_65002.1.0.0.2
Localpref: 100
Router ID: 2.2.2.2
Secondary Tables: 100.inet6.0
Thread: junos-main
Indirect next hops: 1
Protocol next hop: ::ffff:1.0.0.2 ResolvState: PnhUnresolv
Label operation: Push 16
Label TTL action: prop-ttl
Load balance label: Label 16: None;
Indirect next hop: (nil) - INH Session ID: 0
Indirect next hop: INH non-key opaque: (nil) INH key opaque: (nil)
The issue here is that the protocol next-hop cannot be resolved. Router is set with a rib-group to import/share between inet6.0 and inet6.3:
set routing-options interface-routes rib-group inet ifrg-inet0toinet3
set routing-options interface-routes rib-group inet6 ifrg-inet60toinet63
set routing-options rib-groups ifrg-inet0toinet3 import-rib inet.0
set routing-options rib-groups ifrg-inet0toinet3 import-rib inet.3
set routing-options rib-groups ifrg-inet60toinet63 import-rib inet6.0
set routing-options rib-groups ifrg-inet60toinet63 import-rib inet6.3
But, resolution does not work. For the routes to be installed, BGP needs reachability to the protocol next-hop. That next-hop is the mapped IPv4/IPv6 value:
::ffff:1.0.0.2
If that address is configured on the interface used for the peering on each device:
set interfaces et-0/0/6 unit 0 family inet6 address ::ffff:1.0.0.1/126
The route is no longer hidden. It is received:
labroot@e12-44> show route receive-protocol bgp 1.0.0.2 detail table bgp.l3vpn-inet6.0
bgp.l3vpn-inet6.0: 6 destinations, 6 routes (6 active, 0 holddown, 0 hidden)
* 2.2.2.2:6:2000:99::2/128 (1 entry, 0 announced)
* 2.2.2.2:6:2100::/64 (1 entry, 0 announced)
And, installed in the VRF:
labroot@e12-44> show route protocol bgp table 100.inet6.0
100.inet6.0: 8 destinations, 8 routes (8 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
2000:99::2/128 *[BGP/170] 04:51:57, localpref 100, from 1.0.0.2
AS path: 65002 I, validation-state: unverified
> to ::ffff:1.0.0.2 via et-0/0/6.0, Push 16
2100::/64 *[BGP/170] 04:51:57, localpref 100, from 1.0.0.2