I have a hard time understanding how a 3G USB modem communicates with OS. As far as I understand, pretty much all USB modems work in a similar fashion - they expose USB CDC device and to connect, system sends standard AT commands to this device. Linux shouldn't need any special drivers at all and common tools should suffice. But what happens after modem is connected to the 3G network? How are IP packets sent/received?