The mobile user directly communicates with VLR because to avoid overloading of HLR.HLR is the one which consist the permanent data of sub connected to that MSC.when the sub moves to other MSC for his permanet data neen not be stored in HLR, he is identified just for making or receiving calls.Hence it is better to keep temporary data of sub.Thats why all subs are conacting VLR, Not HLR