A system for provisioning and managing DPUs and the DOCA services that run on them. Enable DPUs and DOCA Services deployment and management at scale.
%%{
init: {
'theme': 'base',
'themeVariables': {
'primaryColor': 'lightgray',
'primaryTextColor': 'black',
'primaryBorderColor': '#7C0000',
'lineColor': 'black',
'background': '#76B900',
'tertiaryColor': '#FFFFED'
},
"flowchart": {"wrap": true,"nodePadding": 1}
}
}%%
graph TD
style B fill:#76B900,stroke:#FFF,stroke-width:2px
style C fill:#76B900,stroke:#FFF,stroke-width:2px
style E fill:#76B900,stroke:#FFF,stroke-width:2px
style F fill:#76B900,stroke:#FFF,stroke-width:2px
style G fill:#76B900,stroke:#FFF,stroke-width:2px
subgraph Host Cluster
B[DPF Operator]
end
subgraph DPUCluster
C[DPU<br>control plane]
end
subgraph DPUNode
H[DPUService]
end
B -->E[Provisioning system]
B --> F[DPUService system]
B --> G[DPUServiceChain system]
E -->| Node lifecycle |DPUNode
E -->|Control plane lifecycle|C
F -->|Service lifecycle|H
G -->|ServiceChain lifecycle|H
Manage the lifecycle of the DPU hardware and its Kubernetes orchestration system.
%%{
init: {
'theme': 'base',
'themeVariables': {
'primaryColor': 'lightgray',
'primaryTextColor': 'black',
'primaryBorderColor': '#7C0000',
'lineColor': 'black',
'background': '#76B900',
'tertiaryColor': '#FFFFED'
},
"flowchart": {"wrap": true,"nodePadding": 1}
}
}%%
graph LR
style D fill:#76B900,stroke:#FFF,stroke-width:2px
subgraph 1[Host control plane]
A[DPU<br>control plane]
D[DPU<br>controller]
end
subgraph 2[Host]
3-.-4[rshim]
end
subgraph 3[Host Node]
Kubelet
F[DOCA<br>Management<br>Service]
end
subgraph 4[DPU]
d[Kubelet]
end
F -->|Flash BFB| 4
D -->|Deploy| F
D -->|Send provisioning commands| F
d -->|Join|A
- User creates a
DPUSet
andBFB
object representing a set of DPUs they want to run services on. - DPUSet controller creates a
DPU
object based on the DPUSet NodeSelector. - DPU controller deploys DMS and communicates the BFB and other configuration to it.
- DMS installs BFB to the DPU over rshim.
- The DPU node joins the DPU Control plane .
Orchestrate DOCA Services to run on DPUs.
%%{
init: {
'theme': 'base',
'themeVariables': {
'primaryColor': 'lightgray',
'primaryTextColor': 'black',
'primaryBorderColor': '#7C0000',
'lineColor': 'black',
'background': '#76B900',
'tertiaryColor': '#FFFFED'
}
}
}%%
graph LR
style D fill:#76B900,stroke:#FFF,stroke-width:2px
subgraph 1[Host control plane]
A[DPU control plane]
D[DPUServiceController]
B[ArgoCD system]
end
subgraph 2[Host]
3-.-4[rshim]
end
subgraph 3[Host Node]
Kubelet
end
subgraph 4[DPU]
d[Kubelet]
end
D -->|Create Application|B
B -->|Apply Kubernetes objects|A
A-->|Schedule Pod| d
- User creates a
DPUService
referencing a helm chart. - DPUService controller creates an ArgoCD Application representing the DPUService.
- ArgoCD system syncs the Application to the DPU Cluster.
- A Pod for the
DPUService
runs on the DPU Node.
Orchestrate Service Chains for advanced network flows through DPUs.
%%{
init: {
'theme': 'base',
'themeVariables': {
'primaryColor': 'lightgray',
'primaryTextColor': 'black',
'primaryBorderColor': '#7C0000',
'lineColor': 'black',
'background': '#76B900',
'tertiaryColor': '#FFFFED'
}
}
}%%
graph LR
style D fill:#76B900,stroke:#FFF,stroke-width:2px
style B fill:#76B900,stroke:#FFF,stroke-width:2px
style e fill:#76B900,stroke:#FFF,stroke-width:2px
subgraph 1[Host control plane]
A[DPU control plane]
D[DPUServiceController]
B[DPUServiceChain controllers]
end
subgraph 2[Host]
3~~~4
end
subgraph 3[Host Node]
Kubelet
end
subgraph 4[DPU]
d[Kubelet]
e[SFC CNI]
end
D -->|Create DPUServiceChain objects|B
B -->|Create Kubernetes objects|A
A-->|Create Node ServiceChain objects| d
e-->|Update OVS ports and flows|e
- User creates
DPUServiceInterface
,DPUServiceChain
,DPUServiceIPAM
representing ovs ports, ovs flows and CNI IPAM. - Service Function Chain controllers sync these objects to the DPUCluster.
- ServiceInterface controller creates OVS ports for the Service Function Chain
- ServiceChain controller creates OVS flows for the Service Function Chain
- NVIPAM allocates an IP Pool for the Service Function Chain
- User creates a DPUService for the ServiceFunctionChain
Offload primary and secondary network to the DPU
%%{
init: {
'theme': 'base',
'themeVariables': {
'primaryColor': 'lightgray',
'primaryTextColor': 'black',
'primaryBorderColor': '#7C0000',
'lineColor': 'black',
'background': '#76B900',
'tertiaryColor': '#FFFFED'
}
}
}%%
graph LR
style D fill:#76B900,stroke:#FFF,stroke-width:2px
style l fill:#76B900,stroke:#FFF,stroke-width:2px
style z fill:#76B900,stroke:#FFF,stroke-width:2px
subgraph 1[Host control plane]
A[DPU control plane]
D[DPUServiceController]
B[ArgoCD system]
end
subgraph 2[Host]
3~~~4
end
subgraph 3[Host Node]
Kubelet
p[Workload Pod]
l[OVN Kubernetes]
end
subgraph 4[DPU]
d[Kubelet]
z[OVN Kubernetes]
l-->|Networking offload|z
p---|Virtual Function|4
end
D -->|Application|B
B -->|Objects|A
A-->|OVN Kubernetes| 4
- User deploys OVN Kubernetes as the primary CNI
- User creates OVN Kubernetes
DPUService
- DPUService controller and ArgoCD sync the OVNKubernetes DPUService to the DPUNode
- OVN is the primary network which links workload pods with the ServiceFunctionChains operating on the DPU node
- All pods get a VF from the Bluefield which is used for the primary network
- OVN processing offloaded to DPU
- Other network functions - like an L3 firewall using HBN - can be added to the service chain for a pod.