I got the problem with L3VPN on ASR9K which has topology as below;
CE1<--->PE1<---->PE2<--Gi0/0/0/0-->CE2 << I used subinterface for this link
<--Gi0/0/0/1-->CE3 << I usde routed interface for this link
I tried to do L3VPN between CE1 and CE2 via both PE (PE1,PE2) and after I completed the configuration I can see routing for each other on both CE then I tried to PING between CE1 and CE2 but fail. Then I tried to ping from PE2 to CE1 and vice versa from PE1 to CE2 on that VRF which working normally. From my investigation the problem seem to be on PE2 which is ASR9K it can't forward traffic that receive from CE2 to PE1 or from PE1 to CE2. At that time I tried to verify CE2 can talk to other device by I connecting Gi0/0/0/1 to CE3 and put that interfcace into same VRF with difference IP SUBNET. Then I can ping between CE1-CE2 because I run ping test contunously on both CE1 and CE2.
I would like to make sure for this behavior then I tried to remove Gi0/0/0/1 that connected to CE3 out of VRF and then CE1 and CE2 can't ping to each other. And I after I put Gi0/0/0/1 into same VRF CE1 and CE2 can ping again. CE1 and CE2 still can ping to each other even I shutdown interface Gi0/0/0/1 but it cannot ping if I remove IP ADDRESS or VRF out of Gi0/0/0/1. And vice versa I tried to do the same scenario between CE1 and CE3 which I can't ping except I put Gi0/0/0/0 into same VRF with Gi0/0/0/1.
My wondering is I dont' know why I can't use only one interface belong to VRF or I miss something IOS XR. This is first time for me on IOS XR and I tried to see in configuration guide but didn't see anything related my problem.
Thx for opening the ticket and here is the summary of our troubleshooting session for the rest of the world
BVI does not support native MPLS forwarding and hence we need to use per-vrf allocation mode: http://www.cisco.com/en/US/docs/routers/asr9000/software/asr9k_r4.1/interfaces/configuration/guide/hc41irb.html#wp1030591 With this configuration we'd use an aggregate label and would do VRF IP lookup instead when a packet arrives from the core.