All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Gix, Brian" <brian.gix@intel.com>
To: Danielle Costantino <danielle.costantino@gmail.com>
Cc: "michal.lowas-rzechonek@silvair.com" 
	<michal.lowas-rzechonek@silvair.com>,
	"linux-bluetooth@vger.kernel.org"
	<linux-bluetooth@vger.kernel.org>
Subject: RE: Plans for meshd
Date: Tue, 18 Dec 2018 17:24:38 +0000	[thread overview]
Message-ID: <DEBB0CAA2616974FAE35E4B560B9A4375D8E0CBD@ORSMSX101.amr.corp.intel.com> (raw)
In-Reply-To: <CAAVjN7f2bW5pB-1zB1wZPq-usnHeyoie5M5izQa1-Eqj+9Q2Cg@mail.gmail.com>

Hi Danielle,

> -----Original Message-----
> From: linux-bluetooth-owner@vger.kernel.org [mailto:linux-bluetooth-
> owner@vger.kernel.org] On Behalf Of Danielle Costantino
> Sent: Tuesday, December 18, 2018 9:08 AM
> To: Gix, Brian <brian.gix@intel.com>
> Cc: michal.lowas-rzechonek@silvair.com; linux-bluetooth@vger.kernel.org
> Subject: Re: Plans for meshd
> 
> Thanks for the work done on BLE Mesh but I have to agree with the request
> to support GATT and BLE Mesh simultaneously on a single controller. There
> are many applications that use GATT for higher bandwidth point to point
> connections used in OTA update where the overhead and functionality of
> mesh are not needed or wanted. Until Mesh supports routed packets large
> SAR uploads flood the mesh network and make OTA over mesh nearly
> impossible when the node count goes above 4 relay nodes. Limiting the
> number of GATT nodes to 1 at a time is not a problem for our application
> needs.
> 
> What I am unclear on is why it is not possible to support generic GATT and
> PB-GATT + Proxy Client/Server on the same controller. If PB-ADV is only used
> for provisioning then the time spent in ADV will not affect steady state
> operations.

I am not entirely sure I understand your question, so I will answer the question I *think* you are asking.

Mesh is an Advertising based system, that works best in a steady state when everyone is just
passively scanning for connectionless advertising packets, and sending them when required.

GATT runs over an ACL connection which reserves a certain amount of the available "time" bandwidth, even when the ACL link is idle.  This reduces the opportunities for the controller to hear advertising packets, and there are more missed  mesh (ADV) packets as a result.

Also (with the possible exception of a higher speed Firmware update path) the  GATT Proxy Service is intended as a legacy method for a GATT Only device to join a mesh, and talk to node through the mesh.  It is *not* intended to be the main bearer of the mesh (i.e. all the nodes are *not* interconnected by GATT...   only the nodes that do not support discrete advertising control...  like perhaps older smartphones).

The "Backbone" of any Mesh Network will be ADV bearer only.


> Thanks,
> Danielle
> 
> On Tue, Dec 18, 2018 at 8:28 AM Gix, Brian <brian.gix@intel.com> wrote:
> >
> > Hi Michal,
> >
> > > -----Original Message-----
> > > From: linux-bluetooth-owner@vger.kernel.org [mailto:linux-bluetooth-
> > > owner@vger.kernel.org] On Behalf Of Michal Lowas-Rzechonek
> > > Sent: Tuesday, December 18, 2018 3:09 AM
> > > To: linux-bluetooth@vger.kernel.org
> > > Subject: Re: Plans for meshd
> > >
> > [...]
> > > What I'm thinking about is having both modes of communication
> > > available, even if the embedded device has just one Controller, as
> > > is the case with the majority of off-the-shelf platforms.
> > >
> > > The reason we want/need both BLE/GATT and Mesh on the same node
> has
> > > a lot to do with provisioning - at the moment we configure our
> > > networks using a mobile app, meaning we need devices to support
> > > PB-GATT. This is because Controllers present in mobile devices do
> > > not support Mesh natively, and we can't assume there is a GATT Proxy
> > > nearby, especially when configuring a new network.
> > >
> > > > And I am not opposed to someone starting a project that will allow
> > > > the bluetoothd and meshd share a single controller and taking
> > > > responsibility the reduced performance of each, but that is not
> > > > work we have planned.
> > > Ack.
> > >
> > > FYI, it seems we might be interested in making that happen.
> >
> > Maybe we should start with what you actually need.
> > * Do you need GATT support only for the Provisioning procedure?
> > * or also as a GATT proxy Server?
> >
> > There is a possibility...   We had an internal project where we supported a
> GATT Proxy server without using the bluetooothd services at all.  For
> bluetoothd, the result is the same:  The controller was entirely under the
> control of the mesh executable (it was not a daemon, but a proof-of-concept
> command line tool).  But there are problems with that particular idea given
> the architecture of the meshd daemon:
> >
> > * I do not think we should try to support Proxy Client *at all*. The Proxy
> Client assumes a single Node, which defeats the purpose of having a daemon
> at all.
> >
> > * Only a single node (or unprovisioned GATT server) can use GATT at a
> time.  The protocol does not allow for the multi-node architecture of the
> daemon.
> >
> > *  If we do try to put a GATT Proxy Server on a single controller
> implementation, we may need a special node that loops back data received
> from the Mesh to the Gatt Client.
> >
> > * We will probably need to limit this special GATT supporting node to a
> single node on the daemon.
> >
> > * We may want to make this a build-time option, because ADV handling will
> probably be affected whether an existing GATT connection is established or
> not, if it is possible that a GATT connection could be requested.
> >
> > * This affects the times when we can use Randomized, ever changing BD
> ADDRs, and requires us to interleave connectable advertisements and "be
> connectable", which is not technically allowed with mesh network ADV
> packets.
> >
> >
> >
> >
> > >
> > > regards
> > > --
> > > Michał Lowas-Rzechonek <michal.lowas-rzechonek@silvair.com>
> > > Silvair http://silvair.com
> > > Jasnogórska 44, 31-358 Krakow, POLAND
> 
> 
> 
> --
> - Danielle Costantino

  reply	other threads:[~2018-12-18 17:24 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-12-17 21:09 Plans for meshd Michał Lowas-Rzechonek
2018-12-17 21:48 ` Gix, Brian
2018-12-18 11:08   ` Michał Lowas-Rzechonek
2018-12-18 16:27     ` Gix, Brian
2018-12-18 17:07       ` Danielle Costantino
2018-12-18 17:24         ` Gix, Brian [this message]
2018-12-18 19:29       ` Michal Lowas-Rzechonek

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DEBB0CAA2616974FAE35E4B560B9A4375D8E0CBD@ORSMSX101.amr.corp.intel.com \
    --to=brian.gix@intel.com \
    --cc=danielle.costantino@gmail.com \
    --cc=linux-bluetooth@vger.kernel.org \
    --cc=michal.lowas-rzechonek@silvair.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.