exponenta event banner

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

В этом примере показано лавинное перемещение сетевого уровня в ячеистой сети Bluetooth ® с использованием Library™ Communication Toolbox для протокола Bluetooth ®. В этом примере можно выполнить следующие действия.

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

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

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

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

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

Стек сетки Bluetooth

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

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

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

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

  • Ретрансляция сообщений ячеистой сети

  • Внедрение управляемого лавинного потока для оптимизации сетевого лавинного потока

  • Назначение сетевых адресов

  • Настройка безопасности сетевого уровня

Дополнительные сведения об этих операциях на уровне ячеистой сети см. в разделе Bluetooth Mesh Networking.

В этом примере носитель рекламы используется для демонстрации переполнения сетки Bluetooth в беспроводной сети датчиков.

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

  1. Создание и настройка ячеистой сети Bluetooth

  2. Визуализация переполнения сообщений

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

  4. Статистика показа (отсылают Сетевую Статистику Слоя в Каждом Узле) в каждом узле

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

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

Создание и настройка сценариев ячеистой сети Bluetooth

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

Чтобы создать и визуализировать ячеистую сеть, используйте функции helperBLEMeshStartNode и helperBLEMeshVisualityNetwork. Укажите количество узлов (totalNodes) и тип позиции узла (NodePositionType) в функции helperBLEMeshVisualityNetwork. По умолчанию используется позиция узла «Grid». Чтобы указать собственную сеть, задайте значение 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

Укажите количество пар источника и назначения в ячеистой сети с помощью 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 и helperBLEMeshFloodingResults соответственно.

  • Сценарий 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]. Чтобы проанализировать вероятность доставки сообщения от исходного узла к узлу назначения после включения или отключения узлов ретрансляции в ячеистой сети, используйте сценарий helperBLEMeshMonteCarloSimulations. Каждый прогон моделирования выполняется следующим образом.

  1. Использует новое начальное число для генерации случайного числа.

  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 = [];

В примере выполняется 10000 имитаций с использованием вышеописанной конфигурации. Для просмотра результатов моделирования см. раздел bleMeshMonteCarloResults.mat Файл MAT.

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].

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

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

В этом примере можно создать собственную ячеистую сеть Bluetooth и визуализировать лавинную передачу и сетевую статистику. Для получения численных результатов, усредненных по нескольким итерациям, можно выполнить моделирование Монте-Карло в ячеистой сети Bluetooth.

Приложение

В примере используются следующие помощники:

Избранная библиография

  1. Группа специальных интересов Bluetooth (SIG). «Спецификация ядра Bluetooth». Версия 5.0. https://www.bluetooth.com/.

  2. Группа специальных интересов Bluetooth (SIG). «Профиль сетки Bluetooth». Версия 1.0. https://www.bluetooth.com/.

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

Связанные темы