feat(transport): 完成安全架构拆分并收口 stream/bulk 传输优化
- 新增 managed/external/nested 三种传输保护模式 - 新增 peer attach 显式认证、抗重放、channel binding 和可选前向保密协商 - 明确单连接注入与可重拨连接源的语义边界 - 禁止 ConnectByConn 场景下 dedicated bulk 走 sidecar,auto 模式自动回退 shared - 修正 dedicated attach 在 bootstrap/steady profile 切换下的处理逻辑 - 优化 shared bulk super-batch 与批量 framed write 路径 - 降低 stream/bulk fast path 的复制和分发损耗 - 补齐 benchmark、回归测试、运行时快照和 README 文档
This commit is contained in:
+82
-18
@@ -38,7 +38,25 @@ func BenchmarkBulkTCPThroughput(b *testing.B) {
|
||||
|
||||
for _, tc := range cases {
|
||||
b.Run(tc.name, func(b *testing.B) {
|
||||
benchmarkBulkTCPThroughput(b, tc.payloadSize, false)
|
||||
benchmarkBulkTCPThroughput(b, tc.payloadSize, false, benchmarkTransportSecurityModernPSK)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkBulkTCPThroughputTrustedRaw(b *testing.B) {
|
||||
cases := []struct {
|
||||
name string
|
||||
payloadSize int
|
||||
}{
|
||||
{name: "chunk_256KiB", payloadSize: 256 * 1024},
|
||||
{name: "chunk_512KiB", payloadSize: 512 * 1024},
|
||||
{name: "chunk_768KiB", payloadSize: 768 * 1024},
|
||||
{name: "chunk_1MiB", payloadSize: 1024 * 1024},
|
||||
{name: "chunk_2MiB", payloadSize: 2 * 1024 * 1024},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
b.Run(tc.name, func(b *testing.B) {
|
||||
benchmarkBulkTCPThroughput(b, tc.payloadSize, false, benchmarkTransportSecurityTrustedRaw)
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -72,7 +90,25 @@ func BenchmarkBulkTCPThroughputDedicated(b *testing.B) {
|
||||
|
||||
for _, tc := range cases {
|
||||
b.Run(tc.name, func(b *testing.B) {
|
||||
benchmarkBulkTCPThroughput(b, tc.payloadSize, true)
|
||||
benchmarkBulkTCPThroughput(b, tc.payloadSize, true, benchmarkTransportSecurityModernPSK)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkBulkTCPThroughputDedicatedTrustedRaw(b *testing.B) {
|
||||
cases := []struct {
|
||||
name string
|
||||
payloadSize int
|
||||
}{
|
||||
{name: "chunk_256KiB", payloadSize: 256 * 1024},
|
||||
{name: "chunk_512KiB", payloadSize: 512 * 1024},
|
||||
{name: "chunk_768KiB", payloadSize: 768 * 1024},
|
||||
{name: "chunk_1MiB", payloadSize: 1024 * 1024},
|
||||
{name: "chunk_2MiB", payloadSize: 2 * 1024 * 1024},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
b.Run(tc.name, func(b *testing.B) {
|
||||
benchmarkBulkTCPThroughput(b, tc.payloadSize, true, benchmarkTransportSecurityTrustedRaw)
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -107,7 +143,25 @@ func BenchmarkBulkTCPThroughputConcurrent(b *testing.B) {
|
||||
|
||||
for _, tc := range cases {
|
||||
b.Run(tc.name, func(b *testing.B) {
|
||||
benchmarkBulkTCPThroughputConcurrent(b, tc.payloadSize, tc.concurrency, false)
|
||||
benchmarkBulkTCPThroughputConcurrent(b, tc.payloadSize, tc.concurrency, false, benchmarkTransportSecurityModernPSK)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkBulkTCPThroughputConcurrentTrustedRaw(b *testing.B) {
|
||||
cases := []struct {
|
||||
name string
|
||||
payloadSize int
|
||||
concurrency int
|
||||
}{
|
||||
{name: "bulks_2_512KiB", payloadSize: 512 * 1024, concurrency: 2},
|
||||
{name: "bulks_4_512KiB", payloadSize: 512 * 1024, concurrency: 4},
|
||||
{name: "bulks_2_1MiB", payloadSize: 1024 * 1024, concurrency: 2},
|
||||
{name: "bulks_4_1MiB", payloadSize: 1024 * 1024, concurrency: 4},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
b.Run(tc.name, func(b *testing.B) {
|
||||
benchmarkBulkTCPThroughputConcurrent(b, tc.payloadSize, tc.concurrency, false, benchmarkTransportSecurityTrustedRaw)
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -142,18 +196,34 @@ func BenchmarkBulkTCPThroughputConcurrentDedicated(b *testing.B) {
|
||||
|
||||
for _, tc := range cases {
|
||||
b.Run(tc.name, func(b *testing.B) {
|
||||
benchmarkBulkTCPThroughputConcurrent(b, tc.payloadSize, tc.concurrency, true)
|
||||
benchmarkBulkTCPThroughputConcurrent(b, tc.payloadSize, tc.concurrency, true, benchmarkTransportSecurityModernPSK)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func benchmarkBulkTCPThroughput(b *testing.B, payloadSize int, dedicated bool) {
|
||||
func BenchmarkBulkTCPThroughputConcurrentDedicatedTrustedRaw(b *testing.B) {
|
||||
cases := []struct {
|
||||
name string
|
||||
payloadSize int
|
||||
concurrency int
|
||||
}{
|
||||
{name: "bulks_2_512KiB", payloadSize: 512 * 1024, concurrency: 2},
|
||||
{name: "bulks_4_512KiB", payloadSize: 512 * 1024, concurrency: 4},
|
||||
{name: "bulks_2_1MiB", payloadSize: 1024 * 1024, concurrency: 2},
|
||||
{name: "bulks_4_1MiB", payloadSize: 1024 * 1024, concurrency: 4},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
b.Run(tc.name, func(b *testing.B) {
|
||||
benchmarkBulkTCPThroughputConcurrent(b, tc.payloadSize, tc.concurrency, true, benchmarkTransportSecurityTrustedRaw)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func benchmarkBulkTCPThroughput(b *testing.B, payloadSize int, dedicated bool, securityMode benchmarkTransportSecurityMode) {
|
||||
b.Helper()
|
||||
|
||||
server := NewServer().(*ServerCommon)
|
||||
if err := UseModernPSKServer(server, integrationSharedSecret, integrationModernPSKOptions()); err != nil {
|
||||
b.Fatalf("UseModernPSKServer failed: %v", err)
|
||||
}
|
||||
benchmarkApplyServerTransportSecurity(b, server, securityMode)
|
||||
|
||||
acceptCh := make(chan BulkAcceptInfo, 1)
|
||||
server.SetBulkHandler(func(info BulkAcceptInfo) error {
|
||||
@@ -169,9 +239,7 @@ func benchmarkBulkTCPThroughput(b *testing.B, payloadSize int, dedicated bool) {
|
||||
})
|
||||
|
||||
client := NewClient().(*ClientCommon)
|
||||
if err := UseModernPSKClient(client, integrationSharedSecret, integrationModernPSKOptions()); err != nil {
|
||||
b.Fatalf("UseModernPSKClient failed: %v", err)
|
||||
}
|
||||
benchmarkApplyClientTransportSecurity(b, client, securityMode)
|
||||
if err := client.Connect("tcp", benchmarkTCPDialAddr(b, server.listener.Addr().String())); err != nil {
|
||||
b.Fatalf("client Connect failed: %v", err)
|
||||
}
|
||||
@@ -241,16 +309,14 @@ func benchmarkBulkTCPThroughput(b *testing.B, payloadSize int, dedicated bool) {
|
||||
_ = bulk.Close()
|
||||
}
|
||||
|
||||
func benchmarkBulkTCPThroughputConcurrent(b *testing.B, payloadSize int, concurrency int, dedicated bool) {
|
||||
func benchmarkBulkTCPThroughputConcurrent(b *testing.B, payloadSize int, concurrency int, dedicated bool, securityMode benchmarkTransportSecurityMode) {
|
||||
b.Helper()
|
||||
if concurrency <= 0 {
|
||||
b.Fatal("concurrency must be > 0")
|
||||
}
|
||||
|
||||
server := NewServer().(*ServerCommon)
|
||||
if err := UseModernPSKServer(server, integrationSharedSecret, integrationModernPSKOptions()); err != nil {
|
||||
b.Fatalf("UseModernPSKServer failed: %v", err)
|
||||
}
|
||||
benchmarkApplyServerTransportSecurity(b, server, securityMode)
|
||||
|
||||
acceptCh := make(chan BulkAcceptInfo, concurrency*2)
|
||||
server.SetBulkHandler(func(info BulkAcceptInfo) error {
|
||||
@@ -266,9 +332,7 @@ func benchmarkBulkTCPThroughputConcurrent(b *testing.B, payloadSize int, concurr
|
||||
})
|
||||
|
||||
client := NewClient().(*ClientCommon)
|
||||
if err := UseModernPSKClient(client, integrationSharedSecret, integrationModernPSKOptions()); err != nil {
|
||||
b.Fatalf("UseModernPSKClient failed: %v", err)
|
||||
}
|
||||
benchmarkApplyClientTransportSecurity(b, client, securityMode)
|
||||
if err := client.Connect("tcp", benchmarkTCPDialAddr(b, server.listener.Addr().String())); err != nil {
|
||||
b.Fatalf("client Connect failed: %v", err)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user