I want to know is there anyway to explicitly control the packet routing. I try to connect my computer in HK from San Francisco. It is extremely slow and I use tracert to see what is going on. It seems the packet get routed from HK to Europe and then to New York and then to San Francisco. In US, I am using Astound Cable. Is there any suggestion I can force the packet to not go around the world before it reach my computer? Or it is all ISP dependent?
Unless your a valued business customer ISP's generally aren't going to be making any core routing changes for you.
Basically it's out of your control, your ISP will be routing the packets to who they see as their "best" peer with a route to that destination network.
That next network (ISP) will route it to their "best" peer, and so on until you eventually get to the destination network.
Finally don't forget the route you take there will also be different from the one coming back (most of the time), trace-route is only showing your outbound route to that network.