A High Precision Communication Platform for Linux via XDP/QDisc
Leveraging Linux for the design of applications with high-precision service delivery requirements
HipNET'22: HPC on Linux
2
What it IS about
What this talk is NOT about
Dependency on Industrial IoT Communications
HipNET'22: HPC on Linux
3
OT/IT Focus
Enabled by software + compute intensive technologies
Manufacturing and Factory operations
DATA DRIVEN
PROCESS CONTROL DRIVEN
Fast outcomes
Remote operation and automation lead to frequent process changes
Precise Outcomes
Human/Software to Software
(applications)
Machine to Machine
Operations
AI, ML, DLT
Programmable controllers to Field devices
HPC
HPC
Synchronized motion control tasks.
~ 1ms
Soft-real time tasks { 100 to 50} ms
Non real time tasks. ~ 100 ms
PLC to actuator tasks with responses
{ 50 ~ 10} ms
Used to be Weeks/months 🡪 now the want is hours/days
Precision required in order of milliseconds
non-real time tasks order of seconds
Navigating IIoT Networks
HipNET'22: HPC on Linux
4
Path 1:
Path 2:
Path 3:
Process control channels
APPS..
..(process control apps)
TCP/UDP
IP
Ethernet
iRT
TSN
OPC-UA
We are here
Towards Converged IIoT Networks
HipNET'22: HPC on Linux
5
Integrated APPS
Automation
IIoT Transport
HPC in IP
Layer 2
IIoT Centric Network
Reduce Abstraction Layers
Unified Interface to HPC
Get Here
HPC Design and Implementation
Contract Structure for HPC-Suite
HPC is not one thing. But a Set of directives.
Contract as a fundamental unit for ‘host to network’ and with ‘in network’ service-agreements.
HPC involves one or more contracts for different high-precision constraints and agreements. E.g.
HipNET'22: HPC on Linux
7
IP header
HPC
Contract
Payload
IIOT
Transport
Implement HPC-Suite as ‘contracts’
Latency Delivery Assurance
Late Signal Notify
Latency specific path specification
Latency Based Forwarding (LBF)
HipNET'22: HPC on Linux
8
Contract: LBF |
Min, Max (delay) |
Hop-count |
Experienced-delay |
User defined
runtime
Hop-count/minimum
Guided average
(Min – experienced-delay)/
remaining-hops
Incrementally determined time at each hop
Drop if it is late
(Max – experienced-delay) < 0
LBF Algorithm Example 1
4 nodes (0, 1, 2, 3); number of hops = 3 (0-1,1-2,2-3)
minimum delay = 300ms
no queueing delay
packet delayed by LBF = (Min – Ex)/hops
Helps queue estimate for how long packet dwells in a node.
Packet pacing – LBF Queue knows how packet is paced on an average.
HipNET'22: HPC on Linux
9
1
2
3
0
(300 - 0)/3 = 100ms
(300 - 100)/2 = 100ms
(300 - 200)/1 = 100ms
Queueing delay of est. 30ms, but 40ms incurred on node 1’s LBF queue
1
2
3
0
(300 - 30)/3 = 90ms
(300 – (90+40)/2 = 85ms
(300 – 90 -85)/1 = 125ms
Lightweight IIoT Transport
‣ Both long and short protocol control headers are supported
‣ Closed-control loop (async message)
‣ Publish/Subscribe messages (topic based)
‣ Coordinate with Time-centric packet delivery (LBF).
‣ Do not wait for RTT Acks/Reply tell lateness.
HipNET'22: HPC on Linux
10
Challenges and Choice Implementing HPC
Limitations
Platform choice - Linux
HipNET'22: HPC on Linux
11
“Start small, think big. Don't worry about too many things at once. Take a handful of simple things to begin with, and then progress to more complex ones. Think about not just tomorrow, but the future. Put a ding in the universe
” Steve Jobs
HPC packet processing pipeline on a router-node
HipNET'22: HPC on Linux
12
Queue Disciplines /LBF Scheduler
Ingress Packet
Lookup Tables
Packet
Classification
Forwarding Engine
Contract spec Engine
IPv4
IPv6
LBF
Path Latency
Notify
Transit/Runtime state
Egress processing
Packet out
state
Types of contract
params
params
state
Contract action and Metadata processing as XDP program
Main Components
HipNET'22: HPC on Linux
13
Host side API: Scapy and Socket Interface
Testing and Evaluation
HipNET'22: HPC on Linux
14
Application Interface
Designing with BPF for XDP+TC
HipNET'22: HPC on Linux
15
RxPath
IP forward: XDP
Forward ingress TC-BPF
qdisc: egress TC-BPF
TxPath (driver)
Packet
XDP Prog
TC Prog
TC QDISC
Ifindex, meta etc.
Programs
Kernel Hooks
Topology Setup using NeST
HipNET'22: HPC on Linux
16
Guts of our Project - Network Stack Tester
HipNET'22: HPC on Linux
17
RoutingHelper(protocol="rip").populate_routing_tables()
What is supported today
HipNET'22: HPC on Linux
18
Wireshark dissector for HPC Contract in
HipNET'22: HPC on Linux
19
Test and Verification
HipNET'22: HPC on Linux
20
Extract several statistics (work in progress)
HipNET'22: HPC on Linux
21
Collect different types of statistics
To ask questions like
What is supported today (Contd.)
Create tests for
Work in progress
HipNET'22: HPC on Linux
22
We are here
References
HipNET'22: HPC on Linux
23
help this project grow, please join us
Thank You
Please contact us for any questions, feedback, and comments
Mohit P. Tahiliani tahiliani@nitk.edu.in
Bhaskar Kataria bhaskar.181co213@nitk.edu.in
Deepta Devkota deeptadevkota.191cs117@nitk.edu.in
Shashank D shashankd.181co248@nitk.edu.in
Kiran M kiranm@futurewei.com
Acknowledgements: @ameyanrd, @rohit-mp, @lesliemonis
HipNET'22: HPC on Linux
24
Mohit Tahiliani
(NITK, India)
Bhaskar Kataria
(NITK India)