Are you saying that Bell is less secure than T-Mobile for providing me with only one APN one my phone?
Yes. It opens you up to DNS spoofing attacks. Specifically, all a malicious person would need to do in order to be able to push you a malicious MMS message is be in control of your DNS and point mms.bell.ca to their server. Bonus points if they also point web.wireless.bell.ca to something they control as that is Bell's APN proxy, which would effectively give them all of your traffic. As it is, Bell's proxy can capture all of your traffic (and likely does under the guise of "caching"), while T-Mobile does not employ a proxy as per their APN settings.
The only reason it exists is because they pander to the carriers who don't care about net neutrality.
No, the reason it exists is because the phone must handle multiple data sources, such as the privateMMS network and the public internet. The functionality you are complaining about is the very same functionality that allows that. It's not pandering to anyone but the user's security; that some carriers (in your view) abuse it for other purposes is a completely different issue.
The phone would work just fine by sending both phone and tethering data through the same pipe
You're absolutely correct, assuming a full NAT implementation (which has apparently existed in Android as of 3.1, thanks again for pointing that out). However, the functionality you are complaining about would still need to be present to allow for MMS to use a separate and segregated network. That, right there, is a technical reason for its inclusion in phones. Not sure how you're having trouble grasping that, but I've run out of ways to explain it at this point so we're pretty much through unless you have a specific question I can answer to help you understand.
Even if T-Mobile supports 3 or even hundreds of differents APN, there is no technical reason for them to force its users to use different APN for phone and tethering data. Or at least, if there is one, you didn't present it in this thread.
Oh well, that seems fine enough to me since you were asking for a technical reason for Android to support multiple APNs that didn't involve pandering to the carriers. I gave you that. Good day, sir.
And finally, as I originally said, most smartphones do have the ability to perform NAT,
That may be, I'm not arguing that.
and there is no valid technical reason to segregate phone and tethering traffic.
I'll say it again, for the fourth time. Tethering-enabled dumb phones.
Android have the ability to segregate these two types of traffic, and again, it's not for a technical reason
Except that it is. Before Android supported NAT (and even now that it does as some, if not most, carriers use same network for all phones), it used the same method tethering-enabled dumb phones use. Oh and, for the 5th time, tethering-enabled dumb-phones. They still use the carrier-NATed APN.
but because Google pandered to carriers such as yours, which do not care at all about net neutrality
Oh, really? And they've thus far lived up to those words.
Why is CONFIG_NF_NAT=y enabled by default on base Android configuration then?
Why yes, thank you for pointing out that it's been there since 3.1. Froyo (2.2) introduced tethering, though, and NAT wasn't available on Android at that time; I haven't looked at the kernel in... wow, it really has been that long.
For the phone CPU, handling over all the packets to the radio, or NAT/routing them, make no difference in terms of battery or CPU usage.
You're probably right, except that it's not an either-or proposition. The packets have to be passed to the radio either way, it's not like doing the routing in CPU magically means you don't have to pass data to the radio for transmission. Even ignoring that the radio can do this many times more efficiently than the CPU, having the CPU do it then pass it to the radio, rather than just passing it to the radio, does incur a cost. As for why this is enabled in the kernel by default, consider apps like Barnacle, which originally implemented NAT in DALVIK, slow as balls. It makes the platform more attractive to give those apps the ability to do those things natively. You'd have to ask the Android development team for specifics, but I bet the answer won't involve tethering on most carriers.
We are not talking about a lot of packets here
If we're talking about more than 7GB/mo (specifically, 2TB/mo) we're talking about a lot of packets; and if we're not, then how did the discussion start in the first place?
nor a gigabit link
I suppose you've never used external references to illustrate a point? Oh, wait, you literally just did.
But at first you were claiming that the PC was getting an IP address from the carrier instead of the phone.
Quote me on that? I claimed that the phone pulled an IP address to route the computer's traffic to. That's very different.
NATing or not, when the device already does routing and powering both radios, must have negligible impacts on battery life and CPU usage.
The radios handle the networking internally; they, and not the device itself, do the routing. The device only configures the radios which, being specialized devices, use less power to do that work than the CPU would use. To give you some perspective on that, a 5-port gigabit switch can function with an ASIC running in the hundreds of megahertz, maintaining 100% throughput on all ports, while we're still able to walk into a store and buy computers with GHz-class CPUs that can't manage to saturate a single gigabit link because the CPU can't keep up and the system lacks the specialized hardware necessary to offload the task. Mind you, I'm talking bottom-of-the-barrel laptops and the computing appliances Dell, HP, and Asus have started selling, but I'm also talking 1.5-2.5GHz CPUs and 4+GB of RAM being outclassed by a 450MHz ASIC and a couple MB of RAM. Why? Because the specialized hardware just does the job faster, at lower power.
And that's why Android routing is done in the radios; specifically because yes, it would impact CPU and, therefore, battery.
Finally, you need a degree to be an engineer where I live.
And quotation marks have a special meaning where I live. Clearly, not an English major, either.
"Don't think; let the machine do it for you!" -- E. C. Berkeley