Хороший пример почему pcie сосёт:
https://github.com/snabbco/snabb/issues/1013
https://github.com/snabbco/snabb/issues/1013
GitHub
100G Packet Rates: Per-CPU vs Per-Port #1013
I am pondering how to think about packet rates in the 100G era. How should we be designing and optimizing our software? Consider these potential performance targets: A: 1x100G @ 64 Mpps. B: 1x100G...
https://github.com/andikleen/pmu-tools Если вы не фанат vtune, а профайлинг uncore не дает покоя
GitHub
GitHub - andikleen/pmu-tools: Intel PMU profiling tools
Intel PMU profiling tools. Contribute to andikleen/pmu-tools development by creating an account on GitHub.
Когда не смог в scale-out https://hsto.org/web/025/922/564/0259225645c043399cbd04ea0929d67b.png
clicknp.pdf
2.3 MB
Пока топовые клауд компании заносят интеграторам, в MS создали DSL и тулчейн для быстрой разработки VNF и прочего SDN на FPGA.
ABSTRACT
This paper presents P4FPGA, a new tool for developing and
evaluating data plane applications. P4FPGA is an open-source
compiler and runtime. The compiler extends the P4.org reference
compiler with a custom backend that generates FPGA
code. P4FPGA supports different architecture configurations,
depending on the needs of the particular application.
We have benchmarked several representative P4 programs,
and our experiments show that code generated by P4FPGA
runs at line-rate at all packet sizes with latencies comparable
to commercial ASICs. By combining high-level programming
abstractions offered by P4 with a flexible and powerful hardware
target, P4FPGA allows developers to rapidly prototype
and deploy new data plane applications.
Если у вас дома жарко, и вы считаете, что dpdk это удел байточеляди; посмотрите на YANFF https://github.com/intel-go/yanff
GitHub
intel-go/yanff
yanff - NFF-Go -Network Function Framework for GO (former YANFF)
you have opinions on SDN, NFV, and whatever other acronyms telcos are using to describe a shell noscript these days
you have tried to design a continuous dynamical system for routing, and got it wrong at least twice
The example noscript filter_hyperscan.lua demonstrates the basics of Hyperscan and our wrapper API. It receives packets from a port, filters them, and forwards them to a port dropping all packets that match filters given in a file. Moreover, it can generate test traffic by replaying a pcap file on a different port
local pktLib = require "packet"
local ffi = require "ffi"
local eth = require "proto.ethernet"
local ip = require "proto.ip4"
-- Checks if a UDP packet's payload begins with "EXAMPLE".
-- You can do arbitrary complex stuff here, e.g., attach a DPI library like nDPI.
return function(pkt)
local udpPkt = pktLib.getUdp4Packet(pkt)
if udpPkt.eth:getType() == eth.TYPE_IP
and udpPkt.ip4:getProtocol() == ip.PROTO_UDP then
local data = ffi.string(udpPkt.payload.uint8, #"EXAMPLE")
return data == "EXAMPLE"
end
return false
end