Лавинная рассылка Mesh Bluetooth в беспроводных сетях датчика

Этот пример демонстрирует лавинную рассылку слоя сети в сети mesh Bluetooth® с помощью Коммуникационного Тулбокса Library™ для Протокола Bluetooth®. Используя этот пример, вы можете:

  • Создайте и сконфигурируйте сеть mesh Bluetooth путем расположения узлов в сетку.

  • Задайте свою собственную сеть путем конфигурирования положений узла и типа выделения положения узла.

  • Классифицируйте и сконфигурируйте узлы mesh как источник, место назначения, реле и конечные узлы и наблюдайте, как лавинная рассылка слоя сети помогает в связи между источником и местом назначения даже после отключения немногих промежуточных релейных узлов.

  • Визуализируйте поток пакетов от источника до места назначения.

Пример также показывает, как выполнить симуляции Монте-Карло в сети mesh Bluetooth, чтобы получить числовые результаты (как количество релейных узлов требуемые, критические релейные узлы между источником и местом назначения) усредненный по нескольким итерациям.

Стек Mesh Bluetooth

Спецификация [1] Ядра Bluetooth включает Низкую энергетическую версию для беспроводных персональных сетей области с низкой ставкой, называемых Bluetooth низкой энергией (BLE) или Умным Bluetooth. Стек BLE состоит из типового профиля атрибута (GATT), протокол атрибута (ATT), протокол менеджера безопасности (SMP), управление логической ссылкой и протокол (L2CAP) адаптации, слой ссылки (LL) и физический уровень. BLE был добавлен к стандарту для низких энергетических устройств, генерирующих небольшие количества данных, такие как предупреждения уведомления, используемые в таких приложениях как домашняя автоматизация, здравоохранение, фитнес и Интернет вещей (IoT). Для получения дополнительной информации о стеке протокола BLE, смотрите Стек Протокола Bluetooth.

Профиль mesh Bluetooth [2] задает основные требования, чтобы реализовать сетевое решение mesh для BLE. Стек mesh расположен сверху базовой спецификации BLE и состоит из слоя модели, слоя модели основы, слоя доступа, верхнего транспортного уровня, более низкого транспортного уровня, слоя сети и слоя несущей. Организация сети mesh Bluetooth включает крупномасштабные сети устройства в приложениях, таких как умная подсветка, промышленная автоматизация, организация сети датчика, отслеживание актива и много других решений IoT. Для получения дополнительной информации о стеке mesh Bluetooth, смотрите, что Mesh Bluetooth Объединяется в сеть.

Слой сети mesh Bluetooth выполняет эти первичные операции.

  • Передайте сообщения верхнего уровня по сети с помощью слоя несущей

  • Релейные сообщения mesh

  • Реализуйте управляемую лавинную рассылку, чтобы оптимизировать сетевую лавинную рассылку

  • Присвойте сетевые адреса

  • Сконфигурируйте безопасность слоя сети

Для получения дополнительной информации об этих операциях слоя сети mesh, смотрите, что Mesh Bluetooth Объединяется в сеть.

Этот пример использует рекламную несущую, чтобы продемонстрировать лавинную рассылку mesh Bluetooth в беспроводной сети датчика.

Основные цели этого примера:

  1. Создайте и сконфигурируйте сеть mesh Bluetooth

  2. Визуализируйте лавинную рассылку сообщения

  3. Выведите путь между выбранным источником и местом назначения

  4. Отобразитесь статистика (отошлите Статистику Слоя сети в Каждом Узле) в каждом узле

Проверяйте на установку пакета поддержки

% Check if the 'Communications Toolbox Library for the Bluetooth Protocol'
% support package is installed or not.
commSupportPackageCheck('BLUETOOTH');

Создайте и сконфигурируйте сценарии сети Mesh Bluetooth

Этот пример позволяет вам создать и сконфигурировать два сценария сети mesh Bluetooth. Каждый сценарий является сетью с 50 узлами. Узлы в сети классифицируются как реле, источник, место назначения и конечные узлы. Задайте соответствующие значения времени, чтобы жить (TTL) источника и целевых узлов. В первом сценарии пример идентифицирует пути между источником и целевыми узлами. Можно визуализировать поток сообщений в сети со статистикой слоя сети. Во втором сценарии пример отключает некоторые релейные узлы и конечные узлы. В этом случае симуляции показывают, что сеть имеет вероятность установления пути между заданным источником и целевой парой.

Чтобы создать и визуализировать сеть mesh, используйте функции helperBLEMeshVisualizeNetwork и helperBLEMeshNetworkNode. Задайте количество узлов (totalNodes) и тип положения узла (NodePositionType) в функции helperBLEMeshVisualizeNetwork. Типом по умолчанию положения узла является 'Сетка'. Чтобы задать вашу собственную сеть, установите значение NodePositionType к 'UserInput' и положениям узла к Positions.

% Set random number generator seed to 'default'
sprev = rng('default');

% Specify the number of nodes in the mesh network
totalNodes = 50;

% Initialize 'bleMeshNodes' vector with objects of type
% helperBLEMeshNetworkNode
bleMeshNodes(1, totalNodes) = helperBLEMeshNetworkNode;

% Configure each mesh node with unique identifier
for idx = 1:totalNodes
    meshNode = helperBLEMeshNetworkNode;
    meshNode.Identifier = idx;
    meshNode.NetworkLayer.ElementAddresses = dec2hex(idx, 4);
    bleMeshNodes(idx) = meshNode;
end

% Load node positions from the MAT file
load('bleMeshNetworkNodePositions.mat');

% Number of scenarios simulated in this examples
numberOfScenarios = 2;

% Initialize 'meshNetworkPlots' vector with objects of type
% helperBLEMeshVisualizeNetwork
meshNetworkPlots(1, numberOfScenarios) = helperBLEMeshVisualizeNetwork;

for idx = 1:numberOfScenarios
    meshNetworkPlots(idx) = helperBLEMeshVisualizeNetwork;
    meshNetworkPlots(idx).NumberOfNodes = totalNodes;
    % Set the type of the node position allocation as 'Grid' or
    % 'UserInput'
    meshNetworkPlots(idx).NodePositionType = 'UserInput';

    % Set node positions based on number of nodes (applicable for
    % 'UserInput'), in meters
    meshNetworkPlots(idx).Positions = bleMeshNetworkNodePositions;

    % Set vicinity range based on node positions, in meters
    meshNetworkPlots(idx).VicinityRange = 25;

    % Set title to the network visualization
    meshNetworkPlots(idx).Title = ...
        ['Scenario ' num2str(idx) ': Bluetooth Mesh Flooding'];
end

Задайте количество источника и целевых пар в сети mesh использование srcDstPairs параметр. Задайте значения TTL для пакета, порожденного в каждом исходном узле.

% Specify the simulation time in milliseconds
simulationTime = 600;

% Enable or disable visualization
enableVisualization = true;

% Specify the source and destination pairs
srcDstPairs = [1 7; 13 29];

% Specify TTL values for packet originated at each source node
ttl = [25; 25];

Симуляции

Чтобы запустить симуляцию и получить результаты, используйте helperBLEMeshFloodingSimulation и функции helperBLEMeshFloodingSimulationResults, соответственно.

  • Сценарий 1: В этом сценарии все эти пятьдесят узлов в сети активны. Некоторые из этих узлов выбраны как реле и в этом сценарии нет никаких не пройдено узлов.

% Specify the relay nodes
relayNodeIDs = [3 4 5 8 10 11 15 19 20 21 23 25 28 30 32 34 36 37 38 39 41 ...
    42 43 44 45 46 47 48 49];

% Specify the failed nodes (nodes that are out of network)
failedNodeIDs = [];

Этот график показывает соответствующие пути между каждым источником и целевой парой. scenarioOneResults переменная рабочей области хранит результаты, содержащие полученные пути в сценарии 1.

% Run the simulation with scenario 1 configuration
pathScenarioOne = helperBLEMeshFloodingSimulation(totalNodes, bleMeshNodes, meshNetworkPlots(1), ...
    simulationTime, srcDstPairs, ttl, relayNodeIDs, failedNodeIDs, ...
    enableVisualization);

% Display the results of the scenario 1
scenarioOneResults = helperBLEMeshFloodingSimulationResults(srcDstPairs, pathScenarioOne)
scenarioOneResults =

  2x4 table

    Source    Destination               Path                NumberOfHops
    ______    ___________    ___________________________    ____________

       1           7         {[1 46 19 4 39 41 48 23 7]}         8      
      13          29         {[     13 5 3 28 36 44 29]}         6      

  • Сценарий 2: В этом сценарии отключите релейную опцию Узла 41. Удалите Узел 3 и Узел 43 от сети.

% Specify the relay nodes
relayNodeIDs = [4 5 8 10 11 15 19 20 21 23 25 28 30 32 34 36 37 38 39 42 ...
    44 45 46 47 48 49];

% Specify the failed nodes (nodes that are out of network)
failedNodeIDs = [3, 43];

Этот график показывает соответствующие пути между каждым источником и целевой парой. scenarioTwoResults переменная рабочей области хранит результаты, содержащие полученные пути в сценарии 2.

% Run the simulation with scenario 2 configuration
pathScenarioTwo = helperBLEMeshFloodingSimulation(totalNodes, bleMeshNodes, meshNetworkPlots(2), ...
    simulationTime, srcDstPairs, ttl, relayNodeIDs, failedNodeIDs, ...
    enableVisualization);

% Display the results of the scenario 2
scenarioTwoResults = helperBLEMeshFloodingSimulationResults(srcDstPairs, pathScenarioTwo)
scenarioTwoResults =

  2x4 table

    Source    Destination                  Path                  NumberOfHops
    ______    ___________    ________________________________    ____________

       1           7         {[1 46 19 4 8 20 37 45 34 23 7]}         10     
      13          29         {[     13 30 45 34 28 36 44 29]}          7     

Статистика слоя сети

В каждом узле пример получает эти статистические данные слоя сети.

  • Количество сообщений передается узлом

  • Количество сообщений получено узлом

  • Количество сообщений приложения получено

  • Количество сообщений передается узлом

  • Количество сообщений пропущено в узле

statisticsAtEachNode переменная рабочей области содержит совокупную сетевую статистику всех узлов в сценарии 1 и сценарии 2. Для определенной запущенной симуляции вы видите сетевую статистику для только сначала пяти узлов. Это сетевая статистика для первых пяти узлов в сети.

statisticsAtEachNode = helperBLEMeshFloodingSimulationResults(bleMeshNodes);
statisticsForFirstFiveNodes = statisticsAtEachNode(1:min(5, totalNodes), :)
statisticsForFirstFiveNodes =

  5x6 table

    NodeID    TotalTxMsgs    TotalRxMsgs    TotalAppRxMsgs    TotalRelayedMsgs    TotalDroppedMsgs
    ______    ___________    ___________    ______________    ________________    ________________

      1            2              4               0                  0                   4        
      2            0              8               0                  0                   8        
      3            0              5               0                  2                   3        
      4            0             10               0                  4                   6        
      5            0              9               0                  4                   5        

Дальнейшее исследование

Чтобы получить числовые результаты, усредненные по нескольким симуляциям, пример реализует Метод Монте-Карло [3]. Чтобы анализировать вероятность доставки сообщений от исходного узла до целевого узла после включения или отключения релейных узлов в сети mesh, используйте helperBLEMeshMonteCarloSimulations скрипт. Каждая запущенная симуляция выполняет эти шаги.

  1. Использует новый seed, чтобы сгенерировать случайное число.

  2. Случайным образом отключает релейные узлы, пока только один путь не существует между источником и целевыми узлами.

  3. Хранит путь.

Симуляции Монте-Карло выводят эти статистические данные.

  • Вероятность доставки сообщений от источника до места назначения, когда релейные узлы случайным образом отключены в сети

  • Среднее число переходов между источником и целевыми узлами

  • Критические реле, требуемые гарантировать пакетную доставку от источника до места назначения

Пример выполняет симуляции Монте-Карло при помощи этих параметров конфигурации.

% Source and destination nodes
srcDstPair = [16 12];

% TTL value for the message originated at the above source node
ttl = 25;

% Relay nodes
relayNodeIDs = [21 15 25 11 38 19 46 8 39 20 37 32 30 5 45 49 43 3 28 36 47 ...
    34 23 48 41 44 42 10 4];

% Failed nodes (nodes that are out of network)
failedNodeIDs = [];

Пример выполняет 10 000 симуляций при помощи вышеупомянутой настройки. Чтобы просмотреть результаты симуляции, смотрите bleMeshMonteCarloResults.mat Matfile.

load('bleMeshMonteCarloResults.mat');
disp(['Probability of having a path between nodes Node ' num2str(srcDstPair(1)) ...
    ' and Node ' num2str(srcDstPair(2)) ' is ' ...
    num2str(probabilityOfSuccess) '%.']);
disp(['Average hop count between nodes Node ' num2str(srcDstPair(1)) ' and Node ' ...
    num2str(srcDstPair(2)) ' is ' ...
    num2str(averageHopCount) '.']);
disp(['Critical relay nodes required to derive a path between Node ' num2str(srcDstPair(1)) ...
    ' and Node ' num2str(srcDstPair(2)) ' are [' num2str(criticalRelaysInfo{1:5, 1}') ...
    '].']);
% Restore the previous setting of random number generation
rng(sprev);
Probability of having a path between nodes Node 16 and Node 12 is 88.6428%.
Average hop count between nodes Node 16 and Node 12 is 8.
Critical relay nodes required to derive a path between Node 16 and Node 12 are [39  37   8  38   4].

Чтобы выполнить симуляции Монте-Карло для параметров пользовательской конфигурации, измените и запустите helperBLEMeshMonteCarloSimulations скрипт.

Этот пример позволяет вам создать и сконфигурировать мультиузел сеть mesh Bluetooth и анализировать лавинную рассылку слоя сети. Чтобы изучить поведение лавинной рассылки, пример рассматривает два сценария симуляции. В первом сценарии путь между источником и целевыми узлами идентифицируется и визуализируется путем выбора некоторых промежуточных узлов как релейных узлов. Во втором сценарии пропущены некоторые узлы (Реле и Конец), и релейная опция некоторых релейных узлов отключена. Полученные результаты показывают, что там существует путь между источником и целевыми узлами, даже если узлы (Реле и Конец) перестали работать случайным образом в сети.

Этот пример позволяет вам создать свою собственную сеть mesh Bluetooth и визуализировать лавинную рассылку mesh и сетевую статистику. Получить числовые результаты составило в среднем по нескольким итерациям, можно выполнить симуляции Монте-Карло в сети mesh Bluetooth.

Приложение

Пример использует этих помощников:

Выбранная библиография

  1. Специальная группа (SIG) Bluetooth. "Спецификация Ядра Bluetooth". Версия 5.0. https://www.bluetooth.com/.

  2. Специальная группа (SIG) Bluetooth. "Профиль Mesh Bluetooth". Версия 1.0. https://www.bluetooth.com/.

  3. Столица, Николас и С. Улэм. "Метод Монте-Карло". Журнал американской Статистической Ассоциации 44, № 247 (сентябрь 1949): 335–41. https://doi.org/10.1080/01621459.1949.10483310.

Похожие темы