当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

monte

授权协议 MIT License
开发语言 C/C++
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 不详
投 递 者 仲浩歌
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

monte

MIT Licensego.dev referenceDiscord Chat

The bare minimum for high performance, fully-encrypted RPC over TCP in Go.

Features

  1. Send requests, receive responses, or send messages without waiting for a response.
  2. Send from 50MiB/s to 1500MiB/s, with zero allocations per sent message or RPC call.
  3. Gracefully establish multiple client connections to a single endpoint up to a configurable limit.
  4. Set the total number of connections that may concurrently be accepted and handled by a single endpoint.
  5. Configure read/write timeouts, dial timeouts, handshake timeouts, or customize the handshaking protocol.
  6. All messages, once the handshake protocol is complete, are encrypted and non-distinguishable from each other.
  7. Supports graceful shutdowns for both client and server, with extensive tests for highly-concurrent scenarios.

Protocol

Handshake

  1. Send X25519 curve point (32 bytes) to peer.
  2. Receive X25519 curve point (32 bytes) from our peer.
  3. Multiply X25519 curve scalar with X25519 curve point received from our peer.
  4. Derive a shared key by using BLAKE-2b as a key derivation function over our scalar point multiplication result.
  5. Encrypt further communication with AES 256-bit GCM using our shared key, with a nonce counter increasing for everyincoming/outgoing message.

Message Format

  1. Encrypted messages are prefixed with an unsigned 32-bit integer denoting the message's length.
  2. The decoded message content is prefixed with an unsigned 32-bit integer designating a sequence number.
  3. The sequence number is used as an identifier to identify requests/responses from one another.
  4. The sequence number 0 is reserved for requests that do not expect a response.

Benchmarks

$ cat /proc/cpuinfo | grep 'model name' | uniq
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz

$ go test -bench=. -benchtime=10s
goos: linux
goarch: amd64
pkg: github.com/lithdew/monte
BenchmarkSend-8                          1814391              6690 ns/op         209.27 MB/s         115 B/op          0 allocs/op
BenchmarkSendNoWait-8                   10638730              1153 ns/op        1214.19 MB/s         141 B/op          0 allocs/op
BenchmarkRequest-8                        438381             28556 ns/op          49.03 MB/s         140 B/op          0 allocs/op
BenchmarkParallelSend-8                  4917001              2876 ns/op         486.70 MB/s         115 B/op          0 allocs/op
BenchmarkParallelSendNoWait-8           10317255              1291 ns/op        1084.78 MB/s         150 B/op          0 allocs/op
BenchmarkParallelRequest-8               1341444              8520 ns/op         164.32 MB/s         140 B/op          0 allocs/op
 相关资料
  • 我需要一些帮助,用一个给定的随机数生成器用openmp并行化与蒙特卡洛方法的pi计算,这不是线程安全的。 第一:这条线对我没有帮助。 我自己的尝试是下面的#pragma omp语句。我认为I、x和y变量应该是每个线程的init,并且应该是private的。z是圆圈中所有命中数的总和,因此它应该在for循环后隐含的barriere之后求和。 认为主要的问题是随机数发生器的静态无功。我在调用函数的地方

  • 我在macos上有IdentityServer4。Idv在本地主机上具有自签名证书。它一直有效,直到macos更新到蒙特利。无法使用Safari、Chrome和Firefox。Safari在空白页面上搜索,Chrome显示error ERR\u SSL\u PROTOCOL\u error。 该证书从6月份起一直有效,到蒙特利为止没有任何问题。 我试图做的是: 创建了密钥大小为4096的新证书。

  • 我编写了下面的函数来完成以下任务: 从模型通过函数模拟10个时间序列数据集 将系列拆分为可能的,,,,,,和的子系列>。 对于每个大小,用替换重新取样块,对于新系列,通过函数从每个块大小的子系列中获得最佳的模型。 获取每个块大小的每个子序列. ... 如果函数调用如下: 我得到以下结果: 我尝试使用函数使函数运行三(3)次不同的时间。 我收到了以下: MonteCarlo中的错误(func=boo

  • Montezuma 是基于 Common Lisp 语言实现的全文搜索引擎。Montezuma 移植自 Ruby 语言的 Ferret 。而 Ferret 是 Lucene 的 Ruby 移植版本。

相关阅读

相关文章

相关问答

相关文档