【實時Linux實戰系列】實時以太網與 TSN 基礎

在實時系統中,網絡通信的實時性和可靠性是確保系統正常運行的關鍵。實時以太網和時間敏感網絡(TSN)技術為實時數據傳輸提供了強大的支持。TSN通過一系列協議和機制,確保數據能夠在預定的時間內可靠傳輸,滿足工業自動化、汽車網絡和音視頻傳輸等領域對實時性的嚴格要求。本文將介紹實時以太網與TSN的基礎知識,包括PREEMPT_RT下的配置流程,以及如何實現精準報文收發。

核心概念

實時網絡通信需求

實時網絡通信要求數據能夠在嚴格的時間約束內傳輸,以確保系統的實時性和可靠性。在工業自動化、汽車網絡等領域,實時數據傳輸對于系統的正常運行至關重要。

時間敏感網絡(TSN)

TSN是一組協議和標準,旨在為以太網提供確定性低延遲和高可靠性的數據傳輸能力。TSN的核心功能包括時間同步、流量調度、幀搶占和流過濾等

相關協議

  • IEEE 802.1AS:用于時鐘同步,確保網絡中的所有設備具有共同的時間參考

  • IEEE 802.1Qbv:定義了時間感知整形器(TAS),用于流量調度和時隙劃分

  • IEEE 802.1Qbu:支持幀搶占,允許高優先級流量中斷低優先級幀的傳輸

環境準備

硬件環境

  • 計算機:支持Linux操作系統的計算機。

  • 支持TSN的網絡設備:例如支持TSN功能的網卡或交換機

軟件環境

  • 操作系統:實時Linux發行版,例如帶有PREEMPT_RT補丁的Linux內核

  • 開發工具:GNU C編譯器(GCC)、GDB調試器、Make工具等。

  • 版本信息

    • Linux內核版本:5.10或更高(建議使用帶有PREEMPT_RT補丁的內核)

      • GCC版本:9.3或更高。

      • GDB版本:8.2或更高。

環境安裝與配置

  1. 安裝實時Linux內核

    • 下載帶有PREEMPT_RT補丁的Linux內核源碼:

    • wget https://www.kernel.org/pub/linux/kernel/v5.x/linux-5.10.tar.xz
      wget https://mirrors.edge.kernel.org/pub/linux/kernel/projects/rt/5.10/patch-5.10-rt23.patch.xz
    • 解壓并應用補丁:

      tar -xf linux-5.10.tar.xz
      cd linux-5.10
      xz -d ../patch-5.10-rt23.patch.xz
      patch -p1 < ../patch-5.10-rt23.patch
    • 配置內核并編譯:

    • make menuconfig
      make -j$(nproc)
      sudo make modules_install install
    • 安裝開發工具

      • 安裝GCC和GDB:

      • sudo apt-get update
        sudo apt-get install build-essential gdb
    • 安裝TSN相關工具

      • 安裝iproute2linuxptpethtool

      • sudo apt-get install iproute2 linuxptp ethtool
    • 驗證環境

      • 檢查內核版本:

uname -r

輸出應包含-rt,例如5.10.0-rt23

  • 檢查GCC版本:

  • gcc --version

    輸出應顯示版本號為9.3或更高。

實際案例與步驟

配置TSN網絡

  1. 配置時間同步(IEEE 802.1AS)

    • 安裝并配置linuxptp

    • sudo apt-get install linuxptp
    • 啟動PTP服務:

    • sudo systemctl start ptp4l
    • 配置流量調度(IEEE 802.1Qbv)

      • 使用iproute2配置網絡策略:

      • sudo tc qdisc add dev eth0 root handle 1: tbf rate 100mbit burst 10kb latency 10ms
    • 配置幀搶占(IEEE 802.1Qbu)

      • 使用ethtool配置幀搶占:

      • sudo ethtool -K eth0 tx-early-on

    測試TSN功能

    1. 發送和接收報文

      • 使用iperfnetcat測試報文傳輸:

      • sudo apt-get install iperf
        iperf -c <server_ip>
    • 驗證報文傳輸的實時性

      • 使用tcpdumpwireshark捕獲和分析報文:

      • sudo tcpdump -i eth0

      常見問題與解答

      問題1:如何驗證TSN配置是否成功?

      解決方案: 使用tcpdumpwireshark捕獲和分析報文,檢查報文的時間戳和優先級

      問題2:如何配置時間同步(IEEE 802.1AS)?

      解決方案: 安裝并配置linuxptp,啟動PTP服務:

      sudo apt-get install linuxptp
      sudo systemctl start ptp4l

      問題3:如何配置流量調度(IEEE 802.1Qbv)?

      解決方案: 使用iproute2配置網絡策略:

      sudo tc qdisc add dev eth0 root handle 1: tbf rate 100mbit burst 10kb latency 10ms

      問題4:如何配置幀搶占(IEEE 802.1Qbu)?

      解決方案: 使用ethtool配置幀搶占:

      sudo ethtool -K eth0 tx-early-on

      實踐建議與最佳實踐

      實用操作技巧

      • 定期驗證配置:定期使用tcpdumpwireshark驗證TSN配置是否成功。

      • 監控網絡性能:使用工具監控網絡性能,確保實時數據傳輸的穩定性和可靠性。

      • 調整配置:根據實際需求調整TSN配置,優化網絡性能。

      最佳實踐

      • 合理選擇硬件:確保網絡設備支持TSN功能,例如支持TSN的網卡或交換機

      • 結合多種協議:結合使用IEEE 802.1AS、IEEE 802.1Qbv和IEEE 802.1Qbu等協議,全面優化實時網絡性能。

      • 備份配置文件:在修改配置文件之前,建議備份原始文件,以便在出現問題時快速恢復。

      總結

      通過本篇文章的學習,我們了解了實時以太網與TSN的基礎知識,包括PREEMPT_RT下的配置流程和精準報文收發的實現方法。TSN技術為實時網絡通信提供了強大的支持,能夠滿足工業自動化、汽車網絡和音視頻傳輸等領域對實時性的嚴格要求。希望讀者能夠將所學知識應用到實際項目中,進一步提升系統的性能和可靠性。

      本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
      如若轉載,請注明出處:http://www.pswp.cn/news/913510.shtml
      繁體地址,請注明出處:http://hk.pswp.cn/news/913510.shtml
      英文地址,請注明出處:http://en.pswp.cn/news/913510.shtml

      如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

      相關文章

      茶顏悅色JAVA面試分享

      1、自我介紹項目2、設計一個爆款飲品秒殺系統&#xff1a;如何解決“幽蘭拿鐵”上新時的瞬時10萬QPS&#xff1f;從緩存、限流、庫存扣減到訂單創建的全流程設計。3、訂單超市未支付自動取消&#xff1a;如何實現高精度&#xff08;30分鐘精確到秒&#xff09;且低延遲的訂單狀…

      OneCode圖表配置速查手冊

      前言 在數據可視化日益成為業務決策核心驅動力的今天&#xff0c;高效、靈活的圖表配置系統已成為開發人員不可或缺的工具。OneCode圖表組件憑借其豐富的圖表類型與精細化的配置能力&#xff0c;為開發者提供了構建專業數據可視化界面的完整解決方案。然而&#xff0c;隨著圖表…

      二維碼驅動的獨立站視頻集成方案

      一、獨立站視頻嵌入的技術挑戰與架構設計 在獨立站建設中&#xff0c;視頻內容的集成面臨著性能、安全與用戶體驗的三重挑戰。傳統直接嵌入方式會導致頁面加載緩慢&#xff08;平均增加3-5秒首屏時間&#xff09;、服務器帶寬消耗激增&#xff08;單視頻日均播放1000次約產生50…

      【STM32】預分頻因子(Prescaler)和重裝載值(Reload Value)

      在 STM32 的 獨立看門狗&#xff08;IWDG&#xff09; 中&#xff08;結合上文【STM32】獨立看門狗&#xff08;提供完整實例代碼&#xff09;&#xff09;&#xff0c;為了控制看門狗的超時時間&#xff08;溢出時間&#xff09;&#xff0c;我們主要設置兩個參數&#xff1a;…

      從0到1搭建同城O2O外賣平臺:外賣系統源碼架構解析與實戰指南

      當下&#xff0c;越來越多的創業者、品牌連鎖商家&#xff0c;甚至社區集群&#xff0c;開始布局屬于自己的本地外賣平臺。而對于軟件開發者和技術團隊而言&#xff0c;如何從0到1搭建一套可落地、可擴展、可持續運營的外賣系統&#xff0c;成為了一個既現實又挑戰性十足的話題…

      MySQL 8.0 OCP 1Z0-908 題目解析(16)

      題目61 Choose the best answer. Examine this command, which executes successfully: mysqlbackup --defaults-file/backups/server-my.cnf --backup-dir/backups/full copy-backWhich statement is true about the copy-back process? ○ A) It restores files from the da…

      WSL命令

      以下是 WSL&#xff08;Windows Subsystem for Linux&#xff09;的常用命令大全&#xff0c;涵蓋安裝、管理、網絡、文件交互等場景&#xff0c;方便快速查閱和使用&#xff1a;1. 安裝與版本管理命令說明wsl --install默認安裝 WSL 和 Ubuntuwsl --install -d <發行版名&g…

      AI語音訓練——GPT-SoVITS(GSV)

      鏈接說明 github項目地址&#xff1a;RVC-Boss/GPT-SoVITS: 1 min voice data can also be used to train a good TTS model! (few shot voice cloning) 項目中文說明書&#xff1a; GPT-SoVITS指南//項目說明書里也有在線使用的鏈接 原項目作者B站教學視頻&#xff1a;耗時兩個…

      事件委托版本tab欄切換

      事件委托&#xff1a;是JavaScript中注冊事件的常用技巧&#xff0c;也稱事件委派、事件代理簡單理解&#xff1a;原本需要注冊在子元素的事件委托給父元素&#xff0c;讓父元素擔當事件監聽的職務優點&#xff1a;減少注冊次數&#xff0c;可提高程序性能原理&#xff1a;事件…

      FLAN-T5:規模化指令微調的語言模型

      摘要 在將數據集表述為指令的形式上進行語言模型微調&#xff0c;已被證明能夠提升模型性能及其對未見任務的泛化能力。本文探討了指令微調&#xff0c;特別關注以下三個方面&#xff1a;(1) 任務數量的擴展&#xff0c;(2) 模型規模的擴展&#xff0c;以及 (3) 基于鏈式思維&…

      設計模式文章

      1. 工廠模式 | 菜鳥教程

      Xilinx Vivado開發環境快速導出hdf文件(bat批處理)

      Xilinx FPGA使用Vivado開發環境創建MicroBlaze軟核或ZYNQ PS側SDK邏輯工程時&#xff0c;需要FPGA側搭建的硬件平臺文件&#xff0c;即hdf文件&#xff0c;常規方式是編譯完成生成bit流文件后&#xff0c;通過File->Export->Export Hardware菜單來導出&#xff0c;在彈出…

      UniApp 中實現智能吸頂 Tab 標簽導航效果

      前言在移動端應用開發中&#xff0c;Tab 標簽導航是一種常見的交互模式。本文將詳細介紹如何在 UniApp 中實現一個功能完善的智能吸頂 Tab 導航組件&#xff0c;該組件具有以下特性&#xff1a;&#x1f3af; 智能顯示&#xff1a;根據滾動位置動態顯示/隱藏&#x1f4cc; 吸頂…

      ElasticSearch快速入門-1

      文章目錄Elasticsearch簡介ES概念ES和關系型數據庫的對比正序索引和倒序索引安裝es、kibana、IK分詞器ES操作_cat操作Mapping映射屬性索引庫操作索引庫CRUD文檔CRUD文檔批處理操作Java客戶端操作ESElasticsearch簡介 就是一個搜索引擎數據庫 以下都簡稱ES ES概念 ES和關系型…

      【論文撰寫】如何把AI生成的文本公式復制在word中,完整的復制公式,拷貝豆包生成的公式

      1、問題描述 AI生成的內容 在對于含有公式的生成內容&#xff0c;直接拷貝到Word 會呈現類Markdown的格式&#xff0c;除了格式上&#xff0c;公式也不是標準格式。 如下列兩個圖片對比 2、工具 這時&#xff0c;就需要用另一個工具進行轉換 Home - Snip Web Mathpix Acc…

      【機器學習筆記 Ⅱ】5 矩陣乘法

      矩陣乘法是神經網絡、圖形學、科學計算等領域的核心運算&#xff0c;用于高效處理線性變換和批量數據計算。以下是其數學定義、計算規則及實際應用的系統解析。1. 數學定義2. 計算步驟&#xff08;示例&#xff09;3. 代碼實現 (1) Python&#xff08;NumPy&#xff09; import…

      【數字后端】- 衡量design的congestion情況

      基礎概念 通常在RP的placement之后&#xff0c;就要去去查看設計的Density和Congestion情況。 而congestion的衡量指標有以下兩點&#xff1a; &#xff08;1&#xff09;Overflow Congestion 分析基于一個基本『單元』稱為GCELL: Routing Grid cell. Gcell 是工具自己定義…

      Oracle面試題-體系結構

      &#x1f4cc;1.如何查看 Oracle 數據庫的版本信息&#xff1f; 1. 標準 SQL 查詢&#xff08;推薦&#xff09; 方法 1&#xff1a;查詢 v$version 視圖&#xff08;最常用&#xff09; SELECT * FROM v$version;輸出示例&#xff1a; BANNER -------------------------------…

      Flex布局原理

      1.布局原理 flex 是 flexible Box 的縮寫&#xff0c;意為"彈性布局"&#xff0c;用來為盒狀模型提供最大的靈活性&#xff0c;任何一個容器都可以 指定為 flex 布局。 當我們為父盒子設為 flex 布局以后&#xff0c;子元素的 float、clear 和 vertical-align 屬性將…

      JavaScript 模塊系統二十年:混亂、分裂與出路

      JavaScript 模塊系統&#xff1a;一場至今未醒的歷史夢魘 一、引言&#xff1a;我們真的解決了“模塊化”嗎&#xff1f; 你可能以為&#xff0c;JavaScript 模塊系統早已標準化&#xff0c;import/export 就是答案。 但現實卻是另一番景象&#xff1a;構建報錯、依賴沖突、加…