in-network-computing.md (1687B)
1 +++ 2 title = 'In-network computing' 3 +++ 4 5 ## In-network computing 6 ### Implementing in-network caching service 7 Key-value storage that meets aggressive latency and throughput objectives efficiently. 8 9 Target workloads: small objects, read intensive, highly skewed and dynamic key popularity 10 11 Use PISA for key-value store: 12 - programmable parser: parse custom key-value fields in packet header 13 - programmable match-action pipeline 14 - read and update key-value data 15 - provide query statistics for cache updates 16 17 How to identify app-level packet fields: 18 - NetCache packet has some data - operation, sequence, key, value 19 - only top-of-rack switch needs to parse those fields 20 21 How to store and serve variable-length data on switches: 22 - use register array, fetch using index 23 - for variable, either use action data to hold indices, or multiple register arrays with same index 24 - two-level lookup: bitmap indicates arrays that store key's value, index shows slots in arrays to get value 25 26 Efficiently keep cache updated: 27 - cache hottest O(NlogN) items with limited insertion rate 28 - cached key: per-key counter array 29 - uncached key: count-min sketch (report new hot keys), bloom filter (remove duplicate hot key reports) 30 31 ### Implementing in-network coordination service 32 In-network coordination is communication-heavy, not computation-heavy 33 34 Use set of coordination switches to run consensus protocol 35 36 NetChain design goals: high throughput, low latency, consistency, fault tolerance 37 38 Chain replication: consistency & fault tolerance 39 - storage nodes organized in chain structure 40 - handle operations: read from tail, write from head to tail 41 42 Because of replication, tolerates f-1 failures for f nodes.