Firstly apologies for the rather basic question, i suspect i am being a little thick here, but i just need something confirming.
Attached is a visio of a very basic MPLS setup, no VPN's, no TE.
When i first set this up i used the physcial interface addresses for the IBGP peering between the PE routers ie.
R2 - 192.168.5.2
R3 - 192.168.6.2
The problem here was that on the P router (R1) when i did a "show mpls forwarding-table" there were no entries.
On R2 the action to reach R3 was to pop the tag. Now i'm assuming that was because of penultimate pop hopping ?
Problem was, once i exchanged routes between SW3 and R4 i could not ping from 10.100.1.1 to 10.90.1.1. The reason being i assume because the packet gets to R3, R3 does not apply an MPLS label but just forwards on to R1 and R1 does not have a route for 10.90.1.1 because only the PE routers are aware of this network.
So i then added loopback 1 interfaces on both PE routers and used these to peer R2 with R3. R1 now had entries in it's MPLS forwarding table and i could ping from 10.100.1.1 to 10.90.1.1.
So my question is twofold
1) Can i not peer between R2 & R3 on the physical interface addresses for IBGP because of penultimate pop hopping.
2) Is there anything i could have done with the original setup to make it work.
Have i just completely misunderstood it all :)
1) You indeed need to peer on the PE loopback addresses for the reason you just explained. If you use the IP address of the physical interface between the P and PE then the ingress PE performs the PHP as the destination is directly connected to the P router and therefore the ingress PE becomes the penultimate hop router.
2) Using the PE loopback address to iBGP peer is the right thing to do. Anything else would go against best practices and recommendations.