モノのインターネットのプロトコルスタック

こんにちは。 しばらくの間、[検閲済み]チームで作業してきました(そうです、そういうものです)。現在、適応型ルーティングを使用してワイヤレスメッシュネットワークを構築するためのスタックを作成しています。 そして、想像してみてください!









そして、たまたま秘密のベールを破り(ta-dam)、私たちがしていること、その理由、そしてまさにそのモノのインターネットと産業インターネットの分野でプロジェクトを開発する機会が私たちのスタックプロトコルによって開かれたのです。



私たちの仕事を始めるきっかけは何だったのかを説明して、この種の物語を始めるのが賢明でしょう。 簡単に言えば、この理由は次のように定式化できます:現代のモバイルネットワークには、根本的に異なるアーキテクチャを備えたテクノロジーを導入しない限り克服できないいくつかの欠点(将来の生活と互換性がない)があるという結論に達しました。



誰が責任があるのか



モバイルネットワークの出現の夜明けには、それらのアーキテクチャ機能のいくつかはまだ欠陥に転じる時間がありませんでした。カバレッジエリアを個別のエリアに分割する概念は、「分割統治」戦略に完全に従って、エレガントで論理的に見えました。 しかし、モバイルデバイス市場は創業以来継続的に拡大しており、サービス品質の要件が厳しくなり、データ転送速度と加入者数が数百倍に増加しています。 この成長により、従来のモバイルネットワークアーキテクチャのスケーラビリティと柔軟性の問題が明らかになりました。 古典を言い換えると、640 KBでは十分ではありませんでした。



1.モバイルネットワークは、セルの数が適切に拡張されません。 新しいセルはそれぞれ、対象エリアでの電波の伝搬のシミュレーション、ノイズレベルの計算、相互干渉を最小限に抑えるための適切な設定の決定(新しいステーションと他のステーションがある場合)、高価な機器、監視サービスからの許可、バックアップ回線の提供です通信と電力、設置、構成、およびメンテナンスの専門家の仕事...-一般に、時間とお金。 そして、この分野でより積極的に無線通信が使用されるほど、コストが高くなります。 まず、LPWANネットワークに関するものです。



2.モバイルネットワークは、加入者数の点でうまくスケーリングしません。 基地局がサポートする各ユニットは、周波数(FDMA)、タイムスロット(TDMA)、またはコードシーケンス(CDMA)を予約します。 これらのリソースはすべて制限されており、サブスクライバーが多すぎると通信の品質が低下し始めます。十分な周波数、スロット、またはコードを持っていない人にとっては、基地局が存在しなくなるようであり、多くの場合、サブスクライバーがネットワークから外れます。



同時に、モノのインターネット市場の成長は、ネットワークアクセスを必要とするデバイスの数の雪崩のような増加につながります。 ガジェットの数は指数関数的に増加しており、開発者は既存のソリューションに依存して通信方法に取り組む必要がありません。ほとんどのスマートガジェットは、ホームルーターネットワークで「ライブ」またはモバイルオペレーターのネットワークを介してインターネットに接続します。 また、同じ部屋にあるデバイスがクラウドサービスを介して互いに通信するという、コミックのような状況をよく見ます。 そして、現在そのようなデバイスが比較的少ないとしても、すぐに通信チャネルと処理ステーションの両方のスループットは十分ではありません。 さようなら、美しい人生!



3.最新のネットワークは完全に柔軟です。 日常モードでも、基本条件を変更する場合、基地局を再計算および再構成する必要があり、緊急および緊急事態の場合、局の1つが「落下」すると、近隣の装置にデバイスが急激に流入し、ほとんどの場合、ネットワーク全体の落下につながります。自然災害またはその他の緊急事態。



新年を覚えておいてください。誰にも連絡することができず、すべての加入者が一時的にサービスを停止しています。 そして新年の流入がかなり早く終了し、心配する特別な理由がない場合、救助活動中に少なくとも何らかの種類の接続の存在が重要な要因です。 そして、お気に入りのスマートフォンのネットワークバッテリーの検索がさらに速く放電されるという事実は、あなたには言えません。



どうする



すべてのトラブルの根本は、かなり厳格な集中化を伴うすべてのトップスタートポロジの通常です。 したがって、アドホックまたはMESHと呼ばれる分散ネットワークの迅速な展開のためのインフラストラクチャの開発を開始することにしました。 アイデアは、接続機能が加入者デバイスに転送される「弱い」リンク(ベースステーション)をネットワークから除外することです。 その結果、通信サービスの消費者の役割に加えて、それらのそれぞれは、近隣のサプライヤーの役割も果たします。 このようなネットワーク内のデバイス自体は、従来ノードと呼ばれています。 このようなネットワークでは、新しいノードの出現または既存のノードの障害が発生すると、ネットワークは操作性を維持しながら自動的にルートを再構築します。これにより、スケーリングが簡素化され、システム全体が非常に柔軟になります。 このようなネットワークの管理と構成の必要性は最小限に抑えられ、リモートで実行できます。 ワイヤレスMESHネットワークを維持するために、高価なインフラストラクチャ、ケーブル接続、基地局の設置、およびそれらの定期的な管理が不要であるため、これらのネットワークの運用は非常に経済的です。



明らかに、分散型ワイヤレスネットワークノードの主な機能は、ルーティングプロセスを制御するアルゴリズムです。これは、従来のルーターよりも複雑になるはずです。 ただし、ほとんどの加入者デバイスには大きなコンピューティングリソースがないため、使用するルーティングアルゴリズムは高度にインテリジェントであるだけでなく、リソースを大量に消費しない必要があります。 このタスクの範囲は、一種の課題として受け入れられました。



何をする



約1年前、集中型ワイヤレスネットワークを構築するためにどのソリューションを実装する必要があるかについていくつかの仮説を提示し、特別に作成したシミュレーションモデルでテストしました。 彼らは私たちの前にさまざまな種類のMESHネットワークを構築しようとしたため、開発者が以前に直面した制限を克服することが重要でした:100を超える、時には12を超える加入者を1つのアドホックネットワークに結合することは困難です。 しかし、シミュレーションの結果は心強いものでした。



最初のパートナーは、システム統合および管理自動化ソリューションに携わる地元企業でした。 スマートストリートライティングシステムの開発プロジェクトに参加するよう招待されました。このシステムでは、プロトコルスタックがデータ転送を保証する正当な場所になります。 しかし、パートナーはハードウェアを設計し、スタックの「クライアント」となる懐中電灯管理アプリケーションを作成する必要がありました。 ハードウェア要件の検討の結果、LoRa規格をサポートするNXP LPC1343マイクロコントローラーとSemtech SX1272(RFM96)無線送信機と連携することが決定されました。 当時、選択されたマイクロコントローラーのリソースは十分に思えたので、目の前には純粋なCのコード行がたくさんありました。



最小限の実装では、スタックは3つのレベルで表され、それらの間でデータが絶えず交換されます:インターフェイスレベル、ルーティングレベル、およびサービスレベル。 独自の並列処理プリミティブを作成するために時間と労力を費やしたくなかったため、FreeRTOSの下でスタックを実装することが決定されました(問題なく、予期しない成功を収めました)。 さらに、このソリューションはクロスプラットフォームを提供し、プロジェクトのさらなる開発に役立ちます。



完全なスタックチェックのために、別のオープン開発プラットフォームを作成することにしました。 Raspberry Piをベースとして選択し、ボックスを作成しました。これにより、LCDディスプレイ、GPSモジュール、無線モジュール用の「ハット」ボードなど、必要な周辺機器のインストールが容易になりました。記事の終わり。



マイクロコントローラーのリソースの経済的支出にもかかわらず、32K FLASHスタックが適合しないことがすぐに明らかになり、ハードウェアの要件が増加しました。 現在、スタックの最小バージョンには次のプラットフォーム機能が必要です。



MCU:Cortex M3

OS:FreeRTOS

フラッシュ:128 Kb

EEPROM:8 Kb

RAM:32 Kb



さらに、スタックはマイクロコントローラの内蔵ADCを使用して擬似乱数を生成しますが、必要に応じて、必要な暗号強度に応じて適切なPSCジェネレーターに置き換えることができます。 実際、このスタックはMOARと呼ばれます。



次に期待すること



私たちが設定した次の目標は、GNU / LinuxバージョンのMOARスタックを開発し、可能な限りPOSIX標準をサポートすることです。 ネットワークデバイスの大部分が、GNU / LinuxでなくてもPOSIXをサポートするオペレーティングシステムで動作する世界では、この決定の理由を詳細に説明する必要はないと考えています。 さらに、当社の計画には、無料のライセンスの下でスタックのソースコードを公開することが含まれます。



最初のバージョンとは異なり、GNU / Linuxのバージョンには、5つの異なるレベルが既に含まれています。以前に使用可能だったものに、チャネル層とプレゼンテーション層が追加されました。 最初のバージョンで使用されていたキューの代わりに、レイヤー間でデータを交換するために標準のUnixソケットが使用されるようになりました。 各レベルは、他のレベルとは別に再起動できます。これは、すでにはるかに便利です。



スタックにはAPIがあり、使い慣れたソケットAPIに近づけようとしています。 このアプローチは、既成のソリューションとしてスタックを使用する開発者の「移動」を大幅に促進すると思われます。 さらに、スタックの微調整は構成ファイルを介して可能で、オンザフライでのアプリケーションの適用とネットワーク自体を介した伝送が可能です-この機能の最も簡単な実装は、GNU / Linux向けに開発および拡張されるスタックの最初のバージョンに既にあります。



開発されたスタックのこのような柔軟性とモジュール性は、審美的な理由と開発の利便性だけでなく選択されました。 将来の計画には、自己学習型ニューラルネットワークを使用して最近傍の状態とルートの優先順位を予測する適応ルーティングなど、多くの息をのむような機会の実装が含まれます。 ソリューションのアーキテクチャ上の特徴により、スタック全体をリロードしたり、ニューラルネットワークを再トレーニングしたりすることなく、データ処理シナリオを変更できます。 計画されているその他の機能は、情報セキュリティの分野に関連しており、後で詳しく説明します。



12月23日に、無料ライセンスの下でMOARスタックのソースコードをリリースし、ご質問、アイデア、コメント、さらにはフォークを楽しみにしています!



写真に興味がある人のために
オープンソースDevKitリリースに加えて、ノードのアセンブリに関する完全な情報を投稿する予定です。 リンクには、簡単なアセンブリ手順と必要な詳細のリストがあります。 お正月の休日に自分で何をすべきかわからず、新年に何をあげるかという質問に答えるのにうんざりしている場合は、1回のサルボで2匹のウサギを殺すことができます。





UPD。 発売日



All Articles