Re: Bearers in mixed CDMA+LTE modems
- From: Aleksander Morgado <aleksander lanedo com>
- To: Dan Williams <dcbw redhat com>
- Cc: "\(Devel\), Network" <networkmanager-list gnome org>
- Subject: Re: Bearers in mixed CDMA+LTE modems
- Date: Fri, 13 Jan 2012 11:19:29 +0100
>> I believe we need a MMBearerType enum in the 0.6 API, so that we can
>> tell in CreateBearer() whether we want a 3GPP or CDMA (well, or POTS)
>> bearer. This property would be redundant for 3GPP-only, CDMA-only or
>> POTS-only modems, but would be mandatory if we have a mixed
>> 3GPP(LTE)+CDMA bearer. This value would also be shown as a property in
>> the Bearer interface, so that we can know the type of the bearer behind
>> a given DBus path. Another possibility to avoid the new enum would be to
>> assume that if "apn" is given when creating the bearer, we want a 3GPP
>> bearer, while if no "apn" is given we really want a CDMA bearer. But not
>> sure I like to rely just on this "apn"-based logic. What do others think?
>
> The problem with that approach is handoffs. If you create a 3GPP/LTE
> bearer and then leave LTE coverage where the device hands off to EVDO,
> now your 3GPP bearer is a CDMA bearer. In this scenario there's no
> interruption of packet data service and you don't even know anything
> happened except that the access technology changed from LTE to EVDO.
Well, that is already some indication that we can use. If we had a 3GPP
bearer connected, and suddenly the access technology changed to EV-DO,
then we could internally mark the CDMA bearer as connected and mark the
3GPP one as disconnected. If done in that order, we wouldn't be issuing
any state change notification. This, assuming that for mixed technology
modems we have different technology-specific bearers. The only drawback
of having technology-specific bearers is that for the user not using the
Simple interface, it would mean needing to create two bearers with two
CreateBearer() calls. But I don't think that that is a big deal; if the
user of a mixed CDMA+LTE modem just creates a 3GPP bearer and gets it
connected, and then we detect the connection handed off to CDMA, we can
request the disconnection of the bearer and that's it. If the user
didn't create a CDMA bearer, we would need to assume she didn't want a
CDMA connection. If using the Simple interface, all that would be
automatic, different bearers would be created automatically.
>
> So I think (as you suggest below) that by default MM should make a best
> guess based on the current registration of the device and the mode
> preference. If you're registered on the LTE network and your mode pref
> is 4G_PREFERRED then of course we'd start an EPS bearer. If your mode
> pref is 3G_4G and you're registered with CDMA then we'd try to start a
> CDMA bearer. There are some carrier-specific issues with this however;
> an ATD#777 CDMA PPP bearer cannot hand off to LTE on Verizon devices,
> but handoff is supposed to be transparent when you use QMI instead of
> PPP.
In that case, if we suddenly found that we can connect in the LTE
network, we can always disconnect the CDMA bearer ourselves and launch
the LTE connection as a single operation (i.e. merging all the state
changes "connected->disconnecting->registered->connecting->connected"
and not notifying any of them). Not really transparent for ModemManager,
but quite transparent for the user.
>
> What you're asking about is what bearer to create if the device is
> registered with (or can register with) two 3G networks that use
> different access technology. For example, in Canada, Bell Mobility and
> Telus run both EVDO and HSPA networks. If you're a user, do you care
> which one you connect to with your Gobi card? Maybe you do.
If you do care which network to use, then using technology-specific
bearers is the way to go. If you only want to use the HSPA network, the
user would create only a 3GPP bearer, and connect it. If using the
simple interface, where we automatically create the bearers, we could
receive a 'bearer-type' entry which would tell us that we only want to
create a single bearer, instead of automatically deciding how many to
create.
>
> So the bearer type property should certainly be a *suggestion*, not
> mandatory. At least for now I don't think most people will use it, but
> it doesn't hurt anything to add it. But the next question is if you
> request a 3GPP bearer and the device later hands off to CDMA, do you
> terminate the connection? I would say no, since the device is making
> the decision to hand off based on your subscriber data (ie, SIM and/or
> ESN/MEID) and that's supposed to be automatic.
>
Well, why not? If your modem supports 3GPP and CDMA, and you just
created a 3GPP bearer, if it automatically hands off to CDMA I would
really disconnect it. That is anyway a very specific use case; in the
general case, when using the Simple interface, we would have created
both a 3GPP bearer and a CDMA bearer, and we would do the hand off
internally without going away from the connected state.
>> On a side note, during the Simple interface's Connect(), for the case of
>> mixed 3GPP+CDMA modems, we would create both a 3GPP and a CDMA bearer,
>> and then connect one or the other based on allowed/preferred modes
>> preferences and based on our registration status in each network. Seems
>> like a good start for the generic case.
>
> Yeah, though handoffs complicate that, since the bearer might not stay a
> 3GPP bearer or a CDMA bearer. This probably complicates the code a
> bunch and I didn't think of this problem until you asked the question.
> So maybe bearer objects need to be "soft" classes too, like modems, that
> can change some details of their implementation on-the-fly?
>
Well, what if we have allowed-mode=4G ony, and we get a hand off from
LTE to CDMA? In that case we also need to detect the handoff and
disconnect the bearer. We should really be trying to detect the
handoffs, so IMHO there's no big benefit at the end in using just a
single mutable bearer object.
> The only post-initialization bearer stuff that might be 3GPP specific is
> the secondary PDP/EPS context and the QoS stuff, but here maybe we can
> just return errors if the bearer doesn't support it. Besides the
> initial hint, I don't know if we want to expose whether the bearer is
> CDMA or 3GPP to clients at all. The access technology of the modem
> indicates the network type, so the bearer probably doesn't need to do it
> too.
>
Exposing the bearer type would be really a convenience for the users not
using the Simple interface.
Cheers,
--
Aleksander
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]