Nov 05 2025
putao -
ebpf--入門03(網絡應用各種場景)
bpf_cmd:
BPF_MAP_CREATE: 創建一個新的BPF映射。
BPF_MAP_LOOKUP_ELEM: 在BPF映射中查找一個元素。
BPF_MAP_UPDATE_ELEM: 更新BPF映射中的一個元素。
BPF_MAP_DELETE_ELEM: 從BPF映射中刪除一個元素。
BPF_MAP_GET_NEXT_KEY: 獲取BPF映射中下一個鍵的迭代器。
BPF_PROG_LOAD
ebpf
,
網絡傳輸協議
Nov 05 2025
putao -
ebpf--入門05(流量控制)
先講tc,再講ebpf
tc 的底層原理
隊列管理器(qdisc)
隊列管理器是 tc 的核心組件,用於管理數據包的隊列。不同的 qdisc 實現了不同的流量控制策略,如 FIFO、TBF(Token Bucket Filter)、HTB(Hierarchical Token Bucket)等。
FIFO(First In, First Out):最簡單的隊列管理器,按照數
ebpf
,
網絡傳輸協議
Nov 05 2025
putao -
ebpf--入門06(lsm 應用場景)
ebpf不僅可以用於網絡數據包過濾和性能監控,還可以應用於安全領域,特別是在與 LSM(Linux Security Modules)結合使用時。通過 eBPF 和 LSM 的結合,可以實現更靈活和高效的安全策略,包括訪問控制、安全審計和入侵檢測等。
安全審計:
使用 eBPF 程序記錄特定系統調用的審計日誌。
SEC("lsm/file_open")
int BPF_PROG(audit
ebpf
,
網絡傳輸協議
Nov 05 2025
putao -
軟件定義網絡--03 (P4 語言, 以及rust進行交互)
P4 語言的核心思想是將數據包處理邏輯抽象為以下幾個主要部分:
數據包解析(Parsing):定義如何從數據包中提取字段。
表匹配(Table Matching):定義如何根據數據包字段進行匹配和查找。
數據包處理(Processing):定義如何對匹配結果進行處理和修改。
數據包轉發(Forwarding):定義如何將處理後的數據包轉發到適當的端口。
語法案例:
// 頭部定義
sdn
,
網絡傳輸協議
Nov 05 2025
putao -
軟件定義網絡--04( 交換機)
設置 OVS 交換機和虛擬接口
# 啓動 OVS 服務
sudo service openvswitch-switch start
# 創建一個 OVS 交換機
sudo ovs-vsctl add-br br0
# 創建兩個 veth 對
sudo ip link add veth1 type veth peer name ovs-veth1
sudo ip link add veth2 t
sdn
,
網絡傳輸協議
Nov 05 2025
putao -
軟件定義網絡--05(ryu +onos 案例目錄)
ryu 源碼的一些案例
bmpstation.py
cbench.py
説明: 用於性能測試的應用,通常與 Cbench 工具一起使用來測試 OpenFlow 控制器的性能。
conf_switch_key.py
説明: 配置交換機密鑰的示例應用,可能用於交換機與控制器之間的安全通信。
example_switch_13.py
説明: OpenFlow 1.
sdn
,
網絡傳輸協議
Nov 05 2025
putao -
軟件定義網絡--06(OpenFlow協議)
常見的 OpenFlow 消息類型及其格式
OFPT_HELLO:
用於交換機和控制器之間的初始握手。
格式:包含 OpenFlow 版本信息。
OFPT_FEATURES_REQUEST:
控制器發送給交換機,要求交換機報告其能力。
格式:不包含額外的數據。
OFPT_FEATURES_REPLY:
交換機響應 OFPT_FEATURES
sdn
,
網絡傳輸協議
Nov 05 2025
putao -
軟件定義網絡--07(putao-sdn)
改的onos源碼, 強類型語言, 可以跳轉。onos架構太重了。後面準備用go語言進行重構
https://gitee.com/putao0525/putao-sdn
Atomix 是一個強大的分佈式協調和一致性框架,獨立於 ONOS 也可以使用。它提供了多種分佈式數據結構和工具,可以幫助開發者實現分佈式應用。以下是一個簡單的指南,展示如何單獨使用 Atomix 來構建分佈式應用。
import
sdn
,
openflow
,
網絡傳輸協議
Nov 05 2025
putao -
軟件定義網絡-- 10 BGP(邊界網關協議)
BGP 消息類型及其格式:
BGP(邊界網關協議)消息有四種主要類型:OPEN、UPDATE、NOTIFICATION 和 KEEPALIVE。每種消息類型都有其特定的功能和格式
OPEN 消息
功能:用於建立 BGP 鄰居關係。
格式:
Marker(16 字節):標記字段,用於同步和安全性。
Length(2 字節):消息長度,包括頭部和數據部分。
Type(1
sdn
,
bgp
,
網絡傳輸協議
Nov 05 2025
putao -
k8s--vxlan的使用
在 Linux 系統中可以使用命令行工具來創建和測試 VXLAN 網絡
確定物理網卡
首先要明確 VXLAN 隧道所基於的物理網卡,一般可以使用 ip addr 命令查看當前系統的網絡接口信息。例如,假設物理網卡名為 eth0。
創建 VXLAN 接口
ip link add vxlan100 type vxlan id 100 dev eth0 dstport 4789
網絡傳輸協議
Nov 03 2025
putao -
react native 項目創建
創建項目
npx @react-native-community/cli init 項目名稱
依賴組件
brew update
brew upgrade openssl readline libyaml gmp
新版本的macos
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-bu
react-native
Aug 18 2025
putao -
架構設計--openresty生命週期
openresty的生命週期,各個階段都做了那些事情:
初始化階段 init_by_lua Worker 進程啓動時執行一次。加載全局配置、初始化共享字典
SSL 握手階段 ssl_certificate_by_lua SSL/TLS 握手時執行。動態加載 SSL 證書
請求重寫階段 rewrite_by_lua 修改請求 URI、重定向。URL 重寫、強制 HTTPS
訪問控制階段 a
openresty
Aug 18 2025
putao -
架構設計--openresty配置文件的邏輯結構
openresty 配置文件結構:
#全局其他的配置(比如: 配置日誌的數據位置等)
....
#配置http的反向代理
http{
server{
listten 8080; #後端的進程,比如Java的服務器
}
server{
listten 8081;
}
}
#配置tcp的反向代理
stream{
ser
openresty
Aug 18 2025
putao -
架構設計--openresty入門
Lua入門
推薦使用vscode進行開發,需要用到的插件:
調試需要用到的launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "lua-local",
"request": "launch",
openresty
Aug 18 2025
putao -
架構設計--openresty入門
推薦使用vscode. 相關的插件:
debug配置文件配置:
{
"version": "0.2.0",
"configurations": [
{
"type": "lua-local",
"request": "launch",
"name": "OpenResty
openresty
Jul 12 2024
putao -
rust --bitflags 庫使用
use bitflags::bitflags;
bitflags! {
pub struct FilePermissions: u32 {
const READ = 0b00000001;
const WRITE = 0b00000010;
const EXECUTE = 0b00000100;
}
}
fn main() {
二進制
,
rust
Jul 12 2024
putao -
risc-v--多任務切換原理
rust 代碼實現。current_task_cx_ptr 當前任務是一段空的內存區域。 用來存放當前任務的寄存器環境。
fn run_next_task(self) {
if let Some(next) = self.find_next_task() {
let mut inner = self.inner.exclusive_access();
asm
,
rust
,
risc-v
Jul 11 2024
putao -
risc-v --全部的關鍵字
.ascii:插入一串不以零結尾的字符。
.asciz:插入一串以零結尾的字符。
.balign:在當前位置插入字節以使地址對齊到指定的字節邊界。
.byte:插入一個或多個字節值。
.data:轉到數據段,通常用於定義數據信息。
.define:通常用於定義宏或常量符號,但在不同彙編器中使用可能有所不同。
.double:插入一個或多個雙精度浮點數。
.
asm
,
risc-v