Flannel后端為UDP模式下,分析數據包的發送方式——tun設備(三)

在分析 Kubernetes 環境中 Flannel UDP 模式的數據包轉發時,我們提到 flannel.1 是一個 TUN 設備,它在數據包處理中起到了關鍵作用。


什么是 TUN 設備?

TUN 設備(Tunnel 設備)是 Linux 系統中一種虛擬網絡接口,工作在 網絡層(Layer 3),用于在用戶態和內核態之間傳遞 IP 數據包。TUN 設備是 虛擬化網絡 的核心組件,常用于 VPN、隧道技術(如 Flannel、OpenVPN)和網絡虛擬化場景。

關鍵特性

  • 工作層次:TUN 設備處理 IP 數據包(網絡層),而不處理鏈路層幀(如以太網幀)。相比之下,TAP 設備 工作在鏈路層(Layer 2),處理以太網幀。
  • 用戶態與內核態橋接:TUN 設備充當用戶態程序(如 flanneld)和內核網絡協議棧之間的橋梁,允許用戶態程序讀寫 IP 數據包。
  • 虛擬接口:TUN 設備是虛擬的,沒有物理硬件支持,通過軟件模擬網絡接口的功能。
  • 用途:常用于網絡隧道、虛擬化網絡、VPN 和容器網絡(如 Kubernetes 的 Flannel)。

TUN 設備的工作原理

TUN 設備可以看作一個“管道”,一端連接內核的網絡協議棧,另一端連接用戶態程序(如 flanneld)。其工作流程如下:

  1. 接收數據包

    • 當內核根據路由表決定將數據包發送到 TUN 設備(如 flannel.1)時,數據包從內核態傳遞到用戶態。
    • 用戶態程序(如 flanneld)通過文件描述符讀取 TUN 設備上的數據包(通常是 IP 數據包)。
  2. 處理數據包

    • 用戶態程序可以對數據包進行處理,例如封裝(添加 UDP 頭部)、加密或轉發。
    • 在 Flannel UDP 模式中,flanneld 將原始 IP 數據包(例如目標 IP 為 10.244.2.5)封裝為 UDP 數據包。
  3. 發送數據包

    • 用戶態程序處理后的數據包(例如 UDP 封裝后的數據包)通過 TUN 設備寫回內核,或直接通過其他接口(如 enp0s3)發送。
    • 在接收方向,外部數據包到達 TUN 設備后,同樣由用戶態程序解封裝,然后寫回內核,交給協議棧處理。

TUN 設備在 Flannel UDP 模式中的作用

在 Kubernetes 環境中,Flannel 使用 UDP 模式時,flannel.1 是一個 TUN 設備,用于跨節點 Pod 通信。結合你的路由表和問題背景(ping 10.244.2.5),我們分析 TUN 設備(flannel.1)的具體作用:

路由表相關條目

10.244.2.0      10.244.2.0      255.255.255.0   UG    0      0        0 flannel.1
  • 數據包(目標 IP 10.244.2.5)匹配此路由,通過 flannel.1 發出,網關為 10.244.2.0

TUN 設備的工作流程

  1. 數據包到達 flannel.1

    • 當源 Pod(例如 10.244.0.x)發送 ICMP 數據包(ping 10.244.2.5),數據包通過 cni0 進入主機網絡命名空間。
    • 主機路由表將數據包路由到 flannel.1,因為目標 IP 10.244.2.5 匹配 10.244.2.0/24
  2. flanneld 讀取數據包

    • flannel.1 是一個 TUN 設備,數據包從內核態傳遞到用戶態的 flanneld 進程。
    • 數據包是原始 IP 數據包(源 IP 10.244.0.x,目標 IP 10.244.2.5,大小為 84 字節:20 字節 IP 頭部 + 64 字節 ICMP)。
  3. UDP 封裝

    • flanneld 查詢 etcd 或 Kubernetes API,確定 10.244.2.0/24 對應的目標節點物理 IP(例如 192.168.1.x)。
    • flanneld 將原始數據包封裝為 UDP 數據包:
      • 外部 IP 頭部:20 字節(源 IP 為當前節點物理 IP,目標 IP 為目標節點物理 IP)。
      • UDP 頭部:8 字節(默認端口 8472)。
      • 原始數據包:84 字節。
      • 總大小:20 + 8 + 84 = 112 字節
    • 封裝后的 UDP 數據包通過主機的物理接口(如 enp0s3)發送。
  4. 接收方向

    • 目標節點接收到 UDP 數據包(通過其物理接口),flanneld 通過目標節點的 TUN 設備(類似 flannel.1)讀取數據。
    • flanneld 解封裝,提取原始 IP 數據包,寫回內核,通過 cni0 轉發到目標 Pod(10.244.2.5)。

TUN 設備的角色

  • 橋接用戶態和內核態flannel.1 允許 flanneld 進程處理跨節點通信,封裝和解封裝數據包。
  • 透明性:Pod 認為自己直接與目標 IP 通信,TUN 設備和 flanneld 隱藏了 UDP 封裝的復雜性。
  • 靈活性:TUN 設備支持用戶態程序(如 flanneld)自定義數據包處理,適合 Flannel UDP 模式的輕量實現。

TUN 設備與 UDP 模式的關聯

在 Flannel UDP 模式中,TUN 設備(flannel.1)是關鍵組件:

  • 數據包封裝:TUN 設備允許 flanneld 在用戶態封裝 IP 數據包為 UDP 數據包,適合不支持內核態 VXLAN 的環境。
  • 性能特點:UDP 模式通過用戶態處理,性能低于 VXLAN(內核態),但更簡單,適合小型集群或特殊環境。
  • 路由表依賴:路由表中的 10.244.2.0/24 條目將數據包導向 flannel.1,確保跨節點通信由 flanneld 處理。

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

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

相關文章

2025深圳國際無人機展深度解析:看點、廠商與創新亮點

2025深圳國際無人機展深度解析:看點、廠商與創新亮點 1.背景2.核心看點:技術突破與場景創新2.1 eVTOL(飛行汽車)的規模化展示2.2 智能無人機與無人值守平臺2.3 新材料與核心零部件革新2.4 動態演示與賽事活動 3.頭部無人機廠商4.核…

【Jitsi Meet】(騰訊會議的平替)Docker安裝Jitsi Meet指南-使用內網IP訪問

Docker安裝Jitsi Meet指南-使用內網IP訪問 下載官方代碼配置環境變量復制示例環境文件并修改配置:編輯 .env 文件: 修改 docker-compose.yml 文件生成自簽名證書啟動服務最終驗證 騰訊會議的平替。我們是每天開早晚會的,都是使用騰訊會議。騰…

使用Spring Boot和Spring Security結合JWT實現安全的RESTful API

使用Spring Boot和Spring Security結合JWT實現安全的RESTful API 引言 在現代Web應用中,安全性是至關重要的。Spring Boot和Spring Security提供了強大的工具來保護我們的應用程序,而JWT(JSON Web Token)則是一種輕量級的認證和…

對神經正切核的理解和推導(1)

聲明: 本文是對Neural Tangent Kernel (NTK)基礎推導 - Gearlesskai - 博客園文章內容的理解與推導,里面很多東西對我這種新手來說不太好理解,所以我力求通過這種方式理解文章的大部分內容。希望我的理解可以幫助你更…

基于 STC89C52 的養殖場智能溫控系統設計與實現

摘要 本文提出一種基于 STC89C52 單片機的養殖場環境溫度智能控制系統,通過集成高精度溫度傳感器、智能執行機構及人機交互模塊,實現對養殖環境的實時監測與自動調控。系統具備溫度閾值設定、超限報警及多模式控制功能,可有效提升養殖環境穩定性,降低能耗與人工成本。 一…

微信小程序調試

一、尋找答案 1. 創建小程序 https://zhuanlan.zhihu.com/p/1906013675883561860 2. 若有后端接口,需要調試 https://blog.csdn.net/animatecat/article/details/126949749 3. 比較細教程, 搭建修改配置 https://zhuanlan.zhihu.com/p/1893281527112136235 4. 查找…

使用DeepSeek實現數據處理

一、核心能力全景圖 Ctrl+/ 喚醒智能助手,支持以下數據處理場景: ?? 數據清洗與預處理?? 統計分析與可視化?? 機器學習建模?? 大數據性能優化?? 自動化報告生成? 實時流數據處理二、高頻場景實戰(附魔法口令) 場景1:數據清洗自動化(Python示例) 口令: 處…

符合Python風格的對象(使用 __slots__ 類屬性節省空間)

使用__slots__ 類屬性節省空間 默認情況下,Python 在各個實例中名為__dict__ 的字典里存儲實例屬 性。如 3.9.3 節所述,為了使用底層的散列表提升訪問速度,字典會消 耗大量內存。如果要處理數百萬個屬性不多的實例,通過__slots__…

民宿管理系統5

管理員管理&#xff1a; 新增管理員信息&#xff1a; 前端效果&#xff1a; 前端代碼&#xff1a; <body> <div class"layui-fluid"><div class"layui-row"><div class"layui-form"><div class"layui-form-i…

?騰訊地圖軌跡云:重構位置管理的數字神經中樞

——從軌跡追蹤到智能決策&#xff0c;開啟產業互聯網新篇章 在數字經濟與實體經濟深度融合的今天&#xff0c;位置服務已成為企業數字化轉型的核心基礎設施。無論是物流運輸中的車輛調度、共享經濟中的設備管理&#xff0c;還是智慧城市中的交通優化&#xff0c;精準的軌跡數…

rce命令執行原理及靶場實戰(詳細)

2. 原理 在根源上應用系統從設計上要給用戶提供一個指定的遠程命令操作的接口。漏洞主要出現在常見的路由器、防火墻、入侵檢測等設備的web管理界面上。在管理界面提供了一個ping服務。提交后&#xff0c;系統對該IP進行ping&#xff0c;并且返回結果。如果后臺服務器并沒有對…

GeoTools 將 Shp 導入PostGIS 空間數據庫

前言 ? GeoTools 在空間數據轉換處理方面具有強大的能力&#xff0c;能夠高效、簡潔的操縱 Shp 數據。特別是與空間數據庫PostGIS 相結合&#xff0c;更能展示出其空間數據處理的優勢&#xff0c;借助 GeoTools&#xff0c;我們可以實現 Shp 數據高效入庫。 本文上接系列文章 …

基于SpringBoot+Vue的家政服務系統源碼適配H5小程序APP

市場前景 隨著社會經濟的發展和人口老齡化的加劇&#xff0c;家政服務需求不斷增長。我國65歲及以上人口增長較快&#xff0c;2022年我國65歲及以上老年人數量達2.1億人&#xff0c;占比較2016年增長4.1個百分點&#xff0c;達14.9%。我國65歲及以上人口數量龐大&#xff0c;老…

《企業級日志該怎么打?Java日志規范、分層設計與埋點實踐》

大家好呀&#xff01;&#x1f44b; 今天我們要聊一個Java開發中超級重要但又經常被忽視的話題——日志系統&#xff01;&#x1f4dd; 不管你是剛入門的小白&#xff0c;還是工作多年的老司機&#xff0c;日志都是我們每天都要打交道的"好朋友"。那么&#xff0c;如…

1Panel vs 寶塔面板:現代化運維工具的全方位對比

1Panel vs 寶塔面板對比分析 1Panel 和 寶塔面板&#xff08;BT-Panel&#xff09;都是服務器管理工具&#xff0c;旨在簡化 Linux 服務器的運維工作&#xff0c;但它們在設計理念、功能側重點和技術實現上有明顯差異。以下從多個維度對兩者進行對比分析&#xff1a; 1. 定位與…

怎么開發一個網絡協議模塊(C語言框架)之(四) 信號量初始化

// 原始代碼 /* gVrrpInstance.sem = OsixCreateBSem(OSIX_SEM_Q_PRIORITY, OSIX_SEM_FULL); */ gVrrpInstance.sem = OsixCreateMSem(OSIX_SEM_Q_FIFO | OSIX_SEM_DELETE_SAFE); if (gVrrpInstance.sem == NULL) {printf("[VRRP]:vrrp init error, failed to create vrrp…

電腦C盤清理技巧:釋放空間,提升性能

文章目錄 一、使用系統自帶的磁盤清理工具&#xff08;一&#xff09;打開磁盤清理工具&#xff08;二&#xff09;清理臨時文件&#xff08;三&#xff09;清理系統文件 二、使用第三方清理工具&#xff08;一&#xff09;CCleaner&#xff08;極力推薦&#xff09;&#xff0…

ARM筆記-ARM處理器及系統結構

第二章 ARM處理器及系統結構 2.1 ARM處理器簡介 采用RISC架構的ARM微處理器的特點&#xff1a; 體積小、功耗低、低成本、高性能&#xff1b;支持 Thumb&#xff08;16位&#xff09;/ARM&#xff08;32位&#xff09;雙指令集&#xff0c;能很好地兼容 8位/16位 器件&#x…

關于如何在Springboot項目中通過excel批量導入數據

接口文檔 2.5 批量導入學生賬號 2.5.1 基本信息 請求路徑:/admin/students/batch-import 請求方式:POST 接口描述:通過上傳Excel文件批量導入學生賬號信息。 2.5.2 請求參數 參數格式:multipart/form-data 參數說明: 參數名稱參數類型是否必須備注filefile是包含學…

【TypeScript】知識點梳理(四)

#沒事去翻翻官網文檔&#xff0c;其實有很多用法是我們還不知道的&#xff0c;官方資料總是最權威的&#xff0c;也推薦大家無聊看看各個官網hhh&#xff0c;不一定是記憶&#xff0c;但在某種場景下我們或許能想到還有多一種解決方式# noImplicitAny 當我們沒有表明類型時&…