127.0.0.1:9801 提供 HTTP API。root(涉及策略路由、iptables、tun 设备)。dataKey(设备密钥)。MP_SDK_V1.0R002_<commit>_<arch>.BIN
chmod +x MP_SDK_V1.0R002_xxxx_x86_64.BIN./MP_SDK_V1.0R002_xxxx_x86_64.BIN
路径 | 说明 |
/usr/local/bin/mp-sdk/mp-sdk | SDK 主程序(HTTP 服务) |
/usr/local/bin/mp-speeder/mp-speeder | 加速进程 |
/usr/local/etc/mp-speeder/mp_client_ifname.conf | 网卡配置文件 |
/usr/local/etc/mp-speeder/data/mp_client.json | 加速参数配置文件 |
# 检查 SDK 进程是否运行ps -ef | grep mp-sdk | grep -v grep
eth0)。echo '{"ifName":"eth0"}' > /usr/local/etc/mp-speeder/mp_client_ifname.conf

功能 | 方法 | 路径 |
开启策略路由 | POST | /api/v2/route/policyRouteManagement |
配置加速参数 | POST | /api/v2/client/mp-speeder |
添加业务引流 | POST | /api/v2/route/businessRoute |
添加多模规则(可选) | POST | /api/v2/client/multi-mode |
启动加速 | POST | /api/v2/client/mp-speeder/start |
查询加速状态 | GET | /api/v2/client/mp-speeder |
停止加速 | POST | /api/v2/client/mp-speeder/stop |
重启加速 | POST | /api/v2/client/mp-speeder/restart |
scheduleMode 字段设置(bonding / redundant / rtc)。对应步骤 2。bonding 聚合,对可靠性要求高的关键业务走 redundant 双发。
enable: true 开启(false 关闭)。dataKey、参与加速的网卡、调度模式等参数,参数会持久化到 /usr/local/etc/mp-speeder/data/mp_client.json。其中 scheduleMode 即默认模式。字段 | 类型 | 必填 | 说明 |
dataKey | string | 是 | 控制台获取的设备密钥 |
interfaces | [string] | 是 | 参与加速的网卡列表,如 ["eth0","eth1"] |
scheduleMode | string | 否 | 默认模式: bonding / redundant / rtc,默认 bonding;作为兜底转发模式 |
字段 | 示例 | 说明 |
srcIP | 192.168.1.0/24 | 源地址段,可省 |
dstIP | 10.0.0.0/24 | 目的地址段 |
protocol | TCP / UDP | 协议 |
srcPorts | 0-65535 | 源端口范围,可省 |
dstPorts | 443 或 8000-9000 | 目的端口 |
speedMode(0=默认 / 1=直连 / 2=bonding / 3=rtc / 4=redundant),其他五元组字段同上。ready == true,表示加速通道已建立。POST /api/v2/client/mp-speeder/startPOST /api/v2/client/mp-speeder/stopPOST /api/v2/client/mp-speeder/restartdataKey、调整网卡、修改业务引流规则等)后,需要调用重启加速接口使新配置生效。POST /api/v2/client/mp-speeder/stop),然后正常执行配置步骤,最后调用启动加速;POST /api/v2/client/mp-speeder/restart)使新配置生效。quick_start.sh,按需修改 DATA_KEY 等变量后执行:#!/bin/bash# Linux SDK 一键接入示例set -uSDK="http://127.0.0.1:9801/api/v2"# ==== 按实际情况修改以下变量 ====DATA_KEY="PUT_YOUR_DATA_KEY_HERE"ACC_IFS='["eth0","eth1"]' # 参与加速的网卡列表SRC_CIDR="0.0.0.0/0"DST_CIDR="10.0.0.0/24"DST_PORTS="443"PROTO="TCP"# =============================# 检查用户是否忘记修改 DATA_KEY[ "$DATA_KEY" = "PUT_YOUR_DATA_KEY_HERE" ] && { echo "请先修改 DATA_KEY 变量为实际的 dataKey"; exit 1; }echo "[1/6] 开启策略路由"curl -s -X POST "$SDK/route/policyRouteManagment" -H "enable: true"echoecho "[2/6] 配置加速参数"curl -s -X POST "$SDK/client/mp-speeder" \\-H "Content-Type: application/json" \\-d "{\\"dataKey\\": \\"$DATA_KEY\\",\\"interfaces\\": $ACC_IFS,\\"scheduleMode\\": \\"bonding\\"}"echoecho "[3/6] 添加业务引流"curl -s -X POST "$SDK/route/businessRoute" \\-H "all: false" \\-H "Content-Type: application/json" \\-d "[{\\"srcIP\\": \\"$SRC_CIDR\\",\\"dstIP\\": \\"$DST_CIDR\\",\\"protocol\\": \\"$PROTO\\",\\"dstPorts\\": \\"$DST_PORTS\\"}]"echo# 步骤 4(可选,需要按特定模式调度时再使用)# curl -s -X POST "$SDK/client/multi-mode" \\# -H "Content-Type: application/json" \\# -d '{"dstIP":"10.0.0.0/24","protocol":"TCP","dstPorts":"443","speedMode":2,"priority":100}'echo "[5/6] 重启加速(使新配置生效)"curl -s -X POST "$SDK/client/mp-speeder/restart"echoecho "[6/6] 查询加速状态(最多等待 30 秒)"for i in $(seq 1 30); doready=$(curl -s "$SDK/client/mp-speeder" | grep -o '"ready":[^,}]*' | awk -F: '{print $2}' | tr -d ' ')if [ "$ready" = "true" ]; thenecho "加速已就绪"exit 0fisleep 1doneecho "加速未在 30 秒内就绪"exit 1
curl -s -X POST "http://127.0.0.1:9801/api/v2/client/mp-speeder/stop"
main.go,使用 go run main.go 执行(仅依赖标准库):package mainimport ("bytes""encoding/json""fmt""io""log""net/http""os""time")const sdkBase = "http://127.0.0.1:9801/api/v2"// 通用 HTTP 调用func call(method, path string, headers map[string]string, body interface{}) ([]byte, error) {var reqBody io.Readerif body != nil {bs, _ := json.Marshal(body)reqBody = bytes.NewReader(bs)}req, err := http.NewRequest(method, sdkBase+path, reqBody)if err != nil {return nil, err}if body != nil {req.Header.Set("Content-Type", "application/json")}for k, v := range headers {req.Header.Set(k, v)}resp, err := http.DefaultClient.Do(req)if err != nil {return nil, err}defer resp.Body.Close()respBody, _ := io.ReadAll(resp.Body)if resp.StatusCode >= 400 {return respBody, fmt.Errorf("status=%d body=%s", resp.StatusCode, string(respBody))}return respBody, nil}func main() {// 简化日志格式:仅保留时间,不带文件名前缀log.SetFlags(log.LstdFlags)// ==== 按实际情况修改 ====dataKey := "PUT_YOUR_DATA_KEY_HERE"accIfs := []string{"eth1"}// =====================// 检查用户是否忘记修改 dataKeyif dataKey == "PUT_YOUR_DATA_KEY_HERE" {log.Fatal("请先修改 dataKey 变量为实际的 dataKey")}// 1. 开启策略路由log.Println("[1/6] 开启策略路由 ...")_, err := call("POST", "/route/policyRouteManagment",map[string]string{"enable": "true"}, nil)if err != nil {log.Fatalf("开启策略路由失败: %v", err)}// 2. 配置加速参数log.Println("[2/6] 配置加速参数 ...")accCfg := map[string]interface{}{"dataKey": dataKey,"interfaces": accIfs,"scheduleMode": "bonding",}_, err = call("POST", "/client/mp-speeder", nil, accCfg)if err != nil {log.Fatalf("配置加速参数失败: %v", err)}// 3. 添加业务引流log.Println("[3/6] 添加业务引流 ...")routes := []map[string]string{{"srcIP": "0.0.0.0/0","dstIP": "10.0.0.0/24","protocol": "TCP","dstPorts": "443",},}_, err = call("POST", "/route/businessRoute",map[string]string{"all": "false"}, routes)if err != nil {log.Fatalf("添加业务引流失败: %v", err)}// 4. (可选)添加多模规则// modeRule := map[string]interface{}{// "dstIP": "10.0.0.0/24",// "protocol": "TCP",// "dstPorts": "443",// "speedMode": 2,// "priority": 100,// }// call("POST", "/client/multi-mode", nil, modeRule)// 5. 重启加速(使新配置生效)log.Println("[5/6] 重启加速 ...")_, err = call("POST", "/client/mp-speeder/restart", nil, nil)if err != nil {log.Fatalf("重启加速失败: %v", err)}// 6. 轮询加速状态log.Println("[6/6] 等待加速就绪(最多 30 秒)...")type status struct {Ready bool `json:"ready"`}const maxWait = 30for i := 1; i <= maxWait; i++ {body, err := call("GET", "/client/mp-speeder", nil, nil)if err == nil {var s statusif json.Unmarshal(body, &s) == nil && s.Ready {log.Printf("加速已就绪(耗时 %ds)", i)return}}time.Sleep(time.Second)}log.Println("加速未在 30 秒内就绪")os.Exit(1)}
call("POST", "/client/mp-speeder/stop", nil, nil)
curl --interface mp_tun0 https://www.qq.com
iptables -t mangle -nvL
ready 一直为 false 怎么办?iptables -t mangle -nvL 观察对应规则的命中计数是否增长。/usr/local/etc/mp-speeder/,SDK 启动后会自动加载。文档反馈