In the lesson, when configuring MPLS you state “Once again I will configure iBGP between PE1 and PE2 but this time I will use their loopback interfaces. You will see why in a minute”, however I’m not seeing why you decided to use the loopback interfaces, please explain.
Also, I created a 5-router lab just as the one you’re using in that lesson and tried to do MPLS but configuring iBGP using the physical interfaces along with the next-hop-self option and couldn’t get it to work. I then changed the configuration to use loopback interfaces and still couldn’t get it to work. Then I noticed that I did not advertise loopback 0 on router P and once I advertised that network all of a sudden MPLS started working. It’s as if it requires the loopback interfaces of all routers to be advertised, is this in fact the case?