Hypershieldπ
Hypershield is a distributed security architecture that provides hardware-accelerated security policy enforcement using DPU (Data Processing Unit) technology. It enables Kubernetes-native security policy management with enforcement at the network edge.
Hypershield serves network security architects and engineers who design and deploy high-performance, distributed security infrastructure, as well as security operations teams who need unified policy management and real-time traffic observability.
Hypershield conceptsπ
This section introduces the main concepts, architecture, components, and deployment patterns used by the Hypershield platform.
General conceptsπ
This page introduces the general concepts of Hypershield: its three architectural planes, the security policy flow, and its two operating modes.
Architectureπ
Hypershield separates policy administration, policy distribution, and policy enforcement into three planes. Each plane has a defined responsibility and interacts with the other planes through well-defined interfaces.
The architecture consists of three planes:
Management plane
This plane administers security policies and provides inventory management, observability, and management APIs. It consists of Timescape, the local management interface.
Timescape can optionally be fronted by Cisco Security Cloud Control, which reaches Timescape through the Secure Connector (not shown in the diagram, for simplicity). The choice of management interface determines the operating mode; see Operating modes.
Control plane
This plane distributes approved security policies to managed enforcement points and reports deployment status. The on-prem controller performs this role.
Data plane
This plane enforces security policy on traffic at supported enforcement points. See Enforcement points for the enforcement points supported today.
The following diagrams show the logical relationships between components; physical deployment may differ. The management plane runs on the leader cluster and the control plane runs on one or more follower clusters; see Leader and follower clusters.
Security policy flowπ
Each architectural plane corresponds to one stage of the security policy flow:
Policy administration (management plane)
Administrators define, review, and approve security policies and policy objects that describe the protected resources. Policies represent administrative intent and do not affect network traffic until they are deployed.
Policy deployment (control plane)
After policy is approved, the control plane distributes it to the appropriate enforcement points and reports deployment status back to the management plane, allowing administrators to monitor policy rollout.
Policy enforcement (data plane)
Each enforcement point applies its locally installed policy to network traffic. Policy decisions are made locally and continue to be enforced even if connectivity to the management or control plane is temporarily unavailable, until the policy is updated or removed.
Operating modesπ
Hypershield supports two operating modes: connected and disconnected. The operating mode determines where security policies are administered. It does not change how those policies are deployed or enforced: in both modes, the control plane is local and enforcement is local.
Connected mode
This mode uses Cisco Security Cloud Control (SCC) as the management interface, providing centralized policy administration across managed environments. Approved policy is distributed to the local leader (connected by the Secure Connector), and deployment status is reported back to Cisco Security Cloud Control.
Disconnected mode
This mode uses Timescape as the local management interface, providing local policy administration. Intended for environments that require local administration or that operate without connectivity to SCC, such as air-gapped or isolated deployments.
Note
The two modes are independent. That is, you can still access Timescape directly while in connected mode.
Leader and follower clustersπ
The management plane and the control plane are implemented as separate Kubernetes clusters. A Hypershield deployment includes one leader cluster and one or more follower clusters. Timescape coordinates security policy across the clusters.
Leader
This cluster hosts the management plane. Administrators interact with the leader to define, review, and approve security policy. It is the source of truth for policy state and distributes approved policy to the followers.
Follower
This cluster hosts the control plane for a set of enforcement points, typically the Smart Switches within a single failure domain such as a datacenter. It receives approved policy from the leader and is responsible for pushing that policy to its enforcement points and for reporting deployment status back.
Scalabilityπ
The leader/follower design allows the control plane to scale beyond what a single follower can manage. A single follower serves a bounded number of enforcement points; larger deployments distribute enforcement points across multiple followers, all coordinated by the same leader.
Availabilityπ
Separating the leader from the followers reflects the different availability requirements of the two planes:
A follower shares the failure domain of the enforcement points it serves. If those enforcement points are unavailable, the follower has nothing to serve, so it does not need to be available either.
The leader is not required for policy enforcement to continue. Enforcement points enforce their locally installed policy independently of the leader, so leader unavailability affects only new configuration changes.
Segmentation designπ
Hypershield supports two complementary segmentation designs for L3/L4 policy: zone-based segmentation and workload-centric segmentation. Both are ways of expressing security intent, not statements about where the platform is deployed. You can apply either design across the supported Hypershield enforcement points, and you can combine them in the same environment.
Both designs organize security policy around policy domains. A policy domain is a portion of the environment that is treated as a single unit for security purposes - a set of systems that share a common trust profile or a common operational role. The two designs differ in how coarsely or finely they draw those domains.
Zone-based segmentation treats each policy domain as a broad security zone - an application tier, an environment such as production or development, a tenant or service domain, or a management or user network boundary. You define communication rules between zones rather than between individual workloads.
When to use it
Zone-based segmentation is usually the better fit when you want:
broad controls between trust zones
policy that aligns with existing network segmentation
a scalable way to express macro-segmentation
clear enforcement at environment, tier, or tenant boundaries
It is especially natural when the surrounding network already uses constructs such as VRFs, VLANs, routed environment boundaries, or tenant service domains, because policy can align with boundaries that operators already recognize.
Design considerations
Zone-based segmentation is strong at clarity and scale, and it defines the main security boundaries in an environment. It may not be precise enough for every application-level dependency; where more precision is needed inside a zone or between subsets of systems, you can add more detailed policy without abandoning the zone-based structure.
Workload-centric segmentation treats each policy domain as a specific workload group defined by identity, placement, or role. You describe which applications, services, or workload sets should communicate with each other, rather than expressing rules only between broad zones.
When to use it
Workload-centric segmentation is usually the better fit when you want:
granular access control between applications or services
policy that reflects workload relationships rather than only network boundaries
more precise control over east-west traffic
tighter separation between systems that share the same broader environment
This design is often the right choice when a broader policy domain would be too coarse for the security controls you need.
Design considerations
Workload-centric segmentation gives you more precision, but it can also become more detailed to manage. The design works best when workload groupings are well understood, application dependencies are reasonably clear, and the added precision provides real security value.
Choosing a designπ
In practice, users usually choose between the two designs based on questions such as:
Which unit is the security concern - a broader network boundary, or specific workload relationships?
Does the existing network design already provide natural trust boundaries to align policy with?
Do you need to distinguish access rules between workloads that share the same broader environment?
Design tradeoffsπ
The two designs carry different tradeoffs. Zone-based segmentation is strong at clarity and scale, but it is intentionally broader and less precise than workload-centric segmentation. Workload-centric segmentation gives you more precision, but becomes more detailed as the number of protected applications and service relationships grows.
Combining the two designsπ
The two designs are not mutually exclusive. A common approach is to use zone-based segmentation to define the main security boundaries in an environment, and then add workload-centric policy where you need more precision inside a zone or between subsets of systems.
This lets you keep a clear macro-level structure while still expressing the finer-grained rules that specific applications or services need.
Security policiesπ
In Hypershield, a security policy expresses the intended communication between protected resources: which traffic to allow, deny, or segment. A policy becomes effective only after it is deployed to one or more enforcement points.
This page describes how a security policy is composed, how it progresses from definition to enforcement, how the active set of policies and rules is evaluated, and briefly states how security policies are implemented internally.
Structureπ
A security policy is built from a small set of parts. Each policy contains one or more rules; rules reference network objects, either directly or grouped as network object groups. Separating these parts from policy rules lets multiple policies reuse the same definitions, reducing duplication and simplifying administration.
Rulesπ
A security policy contains one or more rules. Each rule identifies the traffic to which it applies and the action to take when traffic matches. Rather than defining resources inline, rules reference reusable network objects.
Network objectsπ
A network object is a reusable definition of a protected resource. It can represent an individual endpoint, a subnet or CIDR range, or another addressable network resource (VRF, VLAN). Rules reference network objects directly, or via network object groups.
Network object groupsπ
A network object group bundles related network objects into a single reusable unit. A rule can reference a group instead of listing individual objects, which simplifies rule definition and reduces duplication.
Network object groups are maintained independently of the policies that reference them. Updating a group is automatically reflected in every rule that uses it.
Lifecycleπ
A security policy moves through the following stages, from definition to enforcement and later change:
Define
An administrator creates the policy that describes the intended communication behavior.
Review
Optionally, an administrator stages the change as a draft (Timescape) and reviews it before deployment. See Validate policies with drafts for the draft workflow.
Validate
Hypershield checks the policy for structural validity as a deployment-time gate. A failure rejects the deployment.
Deploy
Hypershield distributes the validated policy to the relevant enforcement points, where it becomes part of the active policy state.
Enforce
Enforcement points evaluate traffic against the active policy state. Enforcement continues locally even if the management or control plane is temporarily unreachable.
Change
An administrator updates, replaces, or removes the policy. Each change returns to validation and deployment before it becomes active.
Behavior on changeπ
When a policy is changed (updated or removed), Hypershield distributes the new state to the affected enforcement points. Existing connections may continue according to their current connection state, depending on how the enforcement point handles live sessions.
For instance, on a Smart Switch, if the policy change does not potentially block a current sessionβs traffic then the session will continue unaffected. However, if the change does represent a potential block, then the existing session will be interrupted after a pre-configured timer (60 seconds).
Evaluation and rule orderπ
Order matters when multiple rules could apply to the same traffic. Broad rules, narrow rules, and overlapping rules can affect each other, so the final outcome depends on the active policy set rather than any single rule in isolation.
For example, a broad rule can make a narrower rule ineffective if the broad rule matches the same traffic first. This is sometimes called a shadowed rule. That kind of overlap can hide policy intent and make live behavior differ from what an administrator expects.
As policy sets grow, it is important to consider how rules interact, how changes affect the overall result, and whether a policy behaves as intended before it is enforced.
Kubernetes implementationπ
Internally, Hypershield represents security policies and network object
groups as Kubernetes custom resources, such as SmartSwitchNetworkPolicy
and NetworkObjectGroup. Administrators interact with these resources
through Timescape and SCC, either directly or through Cisco
Security Cloud Control (SCC), which fronts Timescape. Timescape also
exposes a public REST API for automation; see
Timescape API usage.
Caution
Do not create, modify, or delete security policies or network object groups directly through the Kubernetes API. Timescape coordinates policy changes across the Leader:Follower topology, and bypassing it can leave the deployment in an inconsistent state. Use only Timescape (or its REST API) for these changes.
Enforcement pointsπ
Hypershield enforces security policies at defined points in the network. This page describes the supported enforcement points.
Today, the Smart Switch is the only enforcement point. Additional enforcement points will be documented here as they become available.
Smart Switchπ
A Smart Switch operates as a managed enforcement point in a Hypershield deployment. It enforces security policies inline as traffic traverses the switch.
Note
Smart Switches are deployed as redundant pairs that function as a single enforcement point; see Smart Switch for details on how the Smart Switch works internally and how the pair provides high availability.
Placementπ
Hypershield supports two ways to place Smart Switch enforcement in the network: at the rack edge (top-of-rack) or at a shared inspection point in the fabric (services). These models describe where the Smart Switch pair sits and how traffic reaches it. They do not define security policy (see Security policies) or the segmentation design (see Segmentation design).
In a top-of-rack placement, each rack can have its own enforcement point - the Smart Switch sits at the rack edge as the access leaf that workloads attach to directly. In a services placement, traffic is steered to a shared enforcement layer elsewhere in the fabric - the Smart Switch pair sits at a common convergence point that traffic must cross.
Because the Smart Switch sits inline with local traffic, inspection happens without leaving the rack. This makes top-of-rack a localized placement model, with the enforcement point distributed across the fabric.
When to use it
Top-of-rack placement is usually the better fit when you want:
east-west segmentation close to the workload
enforcement at or near the rack edge
lower dependence on a centralized inspection tier
security placement that closely follows workload placement
Scaling
Enforcement capacity grows with the fabric: adding a protected rack adds a local enforcement point. This can be more predictable for environments where east-west traffic grows with workload count.
Design considerations
The Smart Switch must sit on the relevant traffic path. The surrounding network design must ensure that the traffic you want to inspect actually traverses the enforcement point. The model works best when workload locality and traffic patterns are well understood.
Because traffic converges at the shared pair, inspection happens at a chosen point in the fabric rather than at every rack. This makes services a shared insertion model, with enforcement centralized relative to the workloads it protects.
When to use it
Services placement is usually the better fit when you want:
shared enforcement for multiple traffic domains
inspection at a natural convergence point in the network
policy applied at inter-zone, inter-tier, or trust-boundary crossings
a design in which enforcement is delivered as a network service
Scaling
Enforcement capacity is concentrated in the shared pair rather than distributed. This simplifies placement but means capacity does not scale automatically with every new rack.
Design considerations
Traffic does not reach the Smart Switch automatically; the surrounding network must steer relevant traffic through the shared pair. The model works best when trust boundaries and traffic convergence already align with a shared enforcement layer.
Choosing a placementπ
In practice, users usually choose a placement based on questions such as:
Do you want enforcement close to each workload location or at a shared inspection point?
Does your existing network design already provide a natural place for shared enforcement?
Do you expect enforcement capacity to scale with each rack or with a smaller number of dedicated enforcement points?
The right placement depends on the environment. A good choice aligns policy intent with the network topology and with the way the organization wants to operate the platform.
Smart Switchπ
A Smart Switch combines network switching capabilities with embedded Data Processing Units (DPUs). In addition to forwarding network traffic, it can inspect and enforce policies on selected traffic directly in the data path.
In Hypershield, the Smart Switch serves as a managed enforcement point. It inspects traffic traversing the switch and enforces centrally managed network policies.
Note
For the list of supported Smart Switch models and their hardware specifications, see Smart Switches in the reference doc set.
The following diagram shows how a Smart Switch receives security policies in a leader-follower deployment.
In a leader-follower deployment, each Smart Switch communicates with a single follower. The leader manages security policies, while followers distribute those policies to the Smart Switches they manage. Smart Switches do not communicate directly with the leader.
Each Smart Switch maintains a trusted connection with its follower to receive policy updates and report health, telemetry, and policy status.
For more information about registering, monitoring, updating, and migrating Smart Switches, see Manage Smart Switches.
Key componentsπ
Three hardware and software components work together within the Smart Switch to receive centrally managed policies and enforce them on network traffic.
Component |
Role |
|---|---|
Coordinates policy deployment between the assigned follower and the DPUs. |
|
Applies deployed security policies to network traffic. |
|
Forwards network traffic through the switch. |
Data flowsπ
The Smart Switch maintains separate flows for policy deployment and traffic processing. The deployment flow installs security policies on the switch; the enforcement flow applies those policies to network traffic.
Deploymentπ
The AGW receives deployed policy from the assigned follower and coordinates policy programming on the DPUs. Once programmed, the DPUs hold the policy locally and continue enforcing it independently of follower connectivity.
Enforcementπ
Traffic enters through the switch ports and is forwarded by the NPU. Traffic belonging to configured service VRFs is evaluated by the DPU against the locally installed policy before continuing through the forwarding path. Policy is evaluated within the context of the configured network topology, including constructs such as VRFs and VLANs.
Some traffic may traverse the DPU more than once depending on the forwarding scenario.
DPU traffic steeringπ
DPU traffic steering is the NX-OS mechanism that redirects traffic from the NPU (the switchβs normal forwarding path) to the DPU for inspection.
Policy is evaluated only for traffic that NX-OS steers to a DPU. Traffic that remains on the NPU forwarding path bypasses Hypershield policy evaluation. Steering configuration therefore determines the scope of enforcement, while policy definition determines how traffic within that scope is handled.
Dynamic and pinnedπ
There are two DPU steering modes available:
dynamic module affinitypinned module affinity
Mode dynamic module affinity has NX-OS assign each VRF to a specific DPU automatically based on the VRF name - the same VRF always lands on the same DPU, ensuring consistent stateful tracking without manual assignment.
Mode pinned module affinity is a legacy VRF steering mode where each VRF is manually assigned to a specific DPU module number.
Caution
Pinned mode is legacy and should only be used in consultation with your Cisco support representative.
Both supported switch placement options (Top-of-rack and Services) use the dynamic module affinity steering mode by default.
Policies: VRF-based vs. VLAN-basedπ
Hypershield can match and enforce policy against traffic based on either VRF
context and/or VLAN membership by defining the SmartSwitchNetworkPolicy
object appropriately. VRF and VLAN designs have different scopes and
implications:
Aspect |
VRF-based policy |
VLAN-based policy |
|---|---|---|
scope |
applies to all traffic within or between the named VRF(s) |
applies to bridged Layer 2 traffic within the specified VLAN(s) |
use case |
inter-VLAN and inter-VRF segmentation; controlling routed traffic |
intra-VLAN lateral movement control within a single broadcast domain |
policy rule field |
vrf: in source/destination |
vlan: in source/destination |
typical deployment |
production/management VRF separation; tenant isolation |
micro-segmentation within a server VLAN |
Most production deployments will use VRF-based policy as the primary mechanism, with VLAN-based rules added where intra-VLAN lateral movement needs to be controlled. The two can also be combined (see Concurrent VRF and VLAN traffic below).
Steering: VRF-based vs. VLAN-basedπ
The NX-OS service firewall setting controls which traffic is steered to the
DPU. This is separate from policy definition.
vrf <name> module-affinity dynamic - steers all routed traffic in the named VRF to the DPU. This is used for any VRF whose inter-VLAN or inter-VRF traffic you want inspected.
vlan id <range> bridged-traffic module-affinity dynamic - steers Layer 2 bridged traffic within those VLANs to the DPU. Required if you want to enforce intra-VLAN policy (traffic that never crosses a VRF boundary and therefore would not be steered by a VRF entry).
Traffic in VRFs or VLANs not listed in service firewall bypasses the DPU entirely (it is forwarded normally by the NPU) - no policy is evaluated for it, regardless of what is configured in Timescape. This allows you to scope enforcement precisely.
Important
Steering a VRF captures inter-VLAN routed traffic within that VRF but does not capture bridged traffic that stays within a single VLAN inside that VRF. To enforce policy on intra-VLAN traffic, you must also add the relevant vlan id entries.
Concurrent VRF and VLAN trafficπ
A single source host can generate both routed (VRF) and bridged traffic (VLAN) simultaneously. When both are configured in service firewall, the DPU handles them in the correct context automatically:
Traffic that is routed (crosses a subnet boundary via the SVI, whether inter-VLAN or inter-VRF) is steered through the VRF context and evaluated against VRF-scoped policy rules.
Traffic that is bridged (stays within the same VLAN, never hits a router interface) is steered through the VLAN context and evaluated against VLAN-scoped policy rules.
This means you can enforce both inter-VLAN segmentation and intra-VLAN micro-segmentation on the same switch, for the same hosts, without conflict. The DPU distinguishes the two traffic types based on whether the NPU classified the packet as routed or bridged before steering it.
VRF management trafficπ
The assigned follower manages the switch by pushing policy to it. The VRF that carries this control-plane traffic can be the same as a data/workload VRF (for example, the default VRF) or a dedicated one.
When management traffic shares a VRF with data traffic and that VRF is steered to the DPU, the DPUβs default-deny rule applies to the followerβs own connection to the switch. This may result in a self-locking condition: the follower can no longer reach the switch to push the very policy that would unblock it.
Caution
Recovering from the self-locking condition requires console access to the switch.
Keeping management and data traffic in separate VRFs avoids the above class of problem by design, since the management VRF can be omitted from steering entirely.
If a shared VRF is used, appropriate allow rules are necessary to preserve reachability for the follower-to-switch channel and for related management flows such as syslog and IPFIX export, DNS, and any traffic to Timescape or the OIDC identity provider (such as Keycloak).
High availabilityπ
The Smart Switch continues enforcing previously deployed security policies during temporary management connectivity failures and supported network redundancy events.
New or updated policy can be deployed after follower connectivity is restored.
When deployed using supported network redundancy mechanisms, such as Virtual PortChannel (vPC), policy enforcement continues across the remaining forwarding path during a switch failure, provided the underlying network redundancy remains operational.
Note
For the procedure to enable high availability on a Smart Switch pair, see Enable high availability on a Smart Switch.
Timescape and SCCπ
Timescape is the management-plane component of Hypershield. It runs on the leader cluster with a coordinating instance on each follower, and is administered through a web-based dashboard. Optionally, Cisco Security Cloud Control (SCC) can front Timescape as the management interface (see Operating modes).
You can use the dashboard to perform the following operations:
manage the leader and follower Kubernetes clusters
work with network objects and network object groups
create, change, and remove security policies
manage logging and telemetry features
review traffic visibility and security events
automate supported network object and policy operations through the public REST API
Deployment topologyπ
Timescape spans the leader and follower clusters. The leader hosts the primary Timescape instance where administrators define and approve policy; each follower runs a coordinating Timescape instance that receives approved policy from the leader and materializes it as security policy objects in the followerβs Kubernetes cluster, which are then applied at the enforcement points.
Connectivity between clusters uses the Secure Connector, a client-server pair in which the client always initiates the connection. Two independent pairs are involved:
Follower to leader. Each follower runs a Secure Connector client that connects to a Secure Connector server on the leader. This link carries coordination traffic between the followerβs Timescape and the leaderβs Timescape.
Leader to SCC (connected mode only). The leader runs a Secure Connector client that connects to a Secure Connector server in the Cisco cloud, enabling Cisco Security Cloud Control to front the leaderβs Timescape.
Accessπ
Timescape is not exposed by default. When users or API clients need access, you, the administrator, expose Timescape by configuring ingress, TLS, and a deployment-specific URL for the web UI and API.
For authentication, Timescape supports OpenID Connect (OIDC), so authentication can be delegated to an existing identity provider. Combined with role-based access control, this determines what different users can view or change. OIDC also authenticates public REST API clients when API RBAC is enabled (see Public REST API).
User interface pathsπ
You reach the user interface through one of two paths, one for each operating mode (see Operating modes):
SCC (connected mode) - Timescape is embedded within the Cisco Security Cloud Control platform.
directly (disconnected mode) - Timescape is accessed without going through SCC, with Isovalent Timescape branding.
SCC leader registrationπ
The two paths expose the same Hypershield features but differ in one important way during initial setup. On the direct path, all features are available immediately.
On the SCC path, an existing on-prem leader cluster must be registered with SCC before any other feature becomes available. Until a leader is registered, the UI redirects all navigation to the Leaders page. For the registration procedure, see Register a leader cluster with SCC.
Web UI layoutπ
The layout of the Timescape sidebar also differs between the two paths. With SCC, Hypershield appears under the Platform menu alongside the other SCC platform services. When accessing directly, Timescape presents its own sidebar grouped by function.
Public REST APIπ
The versioned public REST API supports customer automation for network object and security policy lifecycle operations. See Timescape API usage to configure access, then follow Manage network objects or Manage security policies for common workflows.
The public API records desired configuration. A successful policy mutation does not by itself confirm that every enforcement point has applied the change. Use policy deployment status to inspect the current state reported by enforcement agents, not as proof that they applied the desired revision. For the definitive endpoint and response contract, see the Timescape public API reference.
Note
To enable OIDC authentication and RBAC on the public REST API, see Public API RBAC.
Platform access controlπ
Platform access control governs how users, API clients, and platform components authenticate to Hypershield and what they are allowed to do once authenticated. It covers identity, authentication methods such as OIDC, role-based access control (RBAC) for authorization, and the service identities that platform components use to communicate with each other.
This topic is about management access only. For workload identity used in security policy rules, see Security policies instead.
Management pathsπ
The identity and access model applies across different management paths:
user access to local management surfaces such as Timescape
user access to centralized management surfaces such as Cisco Security Cloud Control (SCC)
API-driven access for automation and integrations
service-to-service access used by platform components
Each path defines which management boundary a user or system is crossing and which part of the platform is authoritative for that action.
Local management surfaces and OIDCπ
For a local management path, Timescape supports OpenID Connect (OIDC) so that authentication can be delegated to an external identity provider such as Keycloak.
This approach lets Hypershield integrate with an existing enterprise identity model and still use the same authentication framework across deployments.
API accessπ
The same identity model applies to APIs used for automation. API access still depends on authenticated sessions or tokens and the permissions associated with the calling identity. API-driven workflows need:
a valid token or authenticated session
the correct access context for the service being used
a role that permits the requested operation
Hypershield exposes APIs on several management surfaces:
the Kubernetes API server on the on-prem controller, which customers can access directly with
kubectlfor cluster-level operationsthe Public REST API for object and policy lifecycle operations
the Cisco Security Cloud Control (SCC) API for centralized management
Kubernetes API vs. Timescape APIπ
Although the Kubernetes API and the Timescape API are both available, they are
not interchangeable. Timescape coordinates changes across the deployment, so
bypassing it with kubectl can lead to an inconsistent state.
As a general guide:
use the Timescape API for security policy and network object lifecycle operations (see Kubernetes implementation for the specific prohibition on direct Kubernetes API changes)
use the Kubernetes API for read-only inspection when troubleshooting
Component and service identitiesπ
Platform components also need trusted identities when they communicate with other services. For example, local services, connectors, and enforcement-side components may need authenticated access to APIs, object stores, or management endpoints.
Logging and observabilityπ
Hypershield exposes operational visibility through several distinct streams: syslog, IPFIX, and the event history recorded by Timescape. Each stream has a specific purpose and a specific origin in the platform.
This page describes what each stream is for, where in the platform it originates, and how the streams relate to one another.
Visibility streamsπ
Hypershield provides three primary visibility streams. They are complementary rather than interchangeable: a given operational question is usually best answered by one of them.
Syslog
Per-flow permit and deny records, exported from enforcement points to external collectors. Syslog is the primary input for SIEM and log-analysis platforms.
IPFIX
Connection-oriented flow records, exported from enforcement points to external collectors. IPFIX is used for traffic reporting and trend analysis rather than individual permit or deny decisions.
Timescape event history
A record of management activity - who created, modified, deployed, or removed a security policy, network object, or other managed resource. Timescape event history is reviewed in the Timescape UI (see Timescape and SCC) rather than exported.
Originsπ
The streams originate in different parts of the platform, which affects how they are configured and what they can report on:
Syslog and IPFIX originate on the data plane. Enforcement points generate the records as they process traffic and export them directly to the configured collectors.
Timescape event history originates on the management plane. It reflects administrative intent and deployment state, not live traffic.
Because syslog and IPFIX are exported to external infrastructure, collector reachability affects whether records can be delivered. Timescape event history is part of the management surface itself and is available wherever Timescape is available.
Installationsπ
Install Hypershield on VMwareπ
This multi-part procedure shows how to install Hypershield on a VMware vCenter environment using a bootstrap process that creates Leader and Follower Kubernetes management clusters.
Satisfy the prerequisitesπ
Before you install on VMware, confirm that your environment meets the infrastructure, capacity, and credential requirements described on this page. The installation uses a Leader/Follower cluster architecture and the bootstrap process provisions both clusters from a shared installer virtual machine (the management VM). Taking the time to verify each requirement now prevents interruptions during the multi-step installation procedure.
Gather the prerequisitesπ
SSH key pairπ
You need an SSH key pair to authenticate with the management VM and the cluster nodes. Generate one if you do not already have a suitable key:
ssh-keygen -t ed25519 -C "your_email@example.com"
vCenter requirementsπ
Warning
Hypershield requires vCenter Server 8.0 Update 3 or later. vCenter Server 7.x reached End of General Support as part of VMware vSphere 7.0 on October 2, 2025 and is not supported by Hypershield. Upgrade vCenter before you begin the installation. See the Broadcom End of General Support announcement.
Confirm that your vCenter environment meets the following requirements before proceeding:
vCenter Server 8.0 Update 3 or later
ESXi hosts with sufficient resources (see capacity planning below)
VMFS or vSAN datastore with adequate free space
Distributed Virtual Switch (DVS) configured
Minimum VMware and IP address capacityπ
The tables in this section assume mgmtCluster.vmProfile: hypershield, three
control-plane nodes, two worker nodes, one leader cluster, and one follower
cluster. The values are minimum allocations for planning purposes. Production
capacity must also account for workload growth, persistent data, failure
recovery, and the vSphere resource policy. One installer VM can deploy both
clusters and is shown separately.
VM and resource requirementsπ
Scope |
VMs |
Allocated vCPU |
Allocated memory |
Recommended datastore capacity |
|---|---|---|---|---|
Leader management cluster: 3 control-plane + 2 worker |
5 |
56 |
112 GiB |
600 GiB |
Follower management cluster: 3 control-plane + 2 worker |
5 |
56 |
112 GiB |
600 GiB |
Shared installer VM |
1 |
4 |
8 GiB |
60 GiB thin-provisioned boot disk |
Minimum combined deployment |
11 |
116 |
232 GiB |
1.2 TiB plus installer boot disk |
Note
Each control-plane node uses 8 vCPU and 16 GiB RAM. Each Hypershield worker uses 16 vCPU and 32 GiB RAM. If separate installer VMs are retained for the leader and follower, add one VM, 4 vCPU, 8 GiB RAM, one 60 GiB thin-provisioned boot disk, and one primary-network IP address.
IP address requirementsπ
Role and network |
VM IPs |
API VIP |
Harbor VIP |
Timescape Gateway VIP |
Secure Connector VIP |
Timescape ingester VIP |
Minimum IPs |
Recommended spare node IPs |
|---|---|---|---|---|---|---|---|---|
Shared installer, primary network |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
Leader, primary network |
5 |
1 |
1 |
1 |
1 |
0 |
9 |
1 |
Follower, primary network |
5 |
1 |
1 |
0 |
0 |
0 |
7 |
1 |
Follower, SmartSwitch network |
5 |
1 |
0 |
0 |
0 |
1 |
7 |
1 |
Minimum combined deployment |
16 |
3 |
2 |
1 |
1 |
1 |
24 |
3 |
Tip
The minimum combined total does not include the optional follower CLC, which requires one additional VIP on the SmartSwitch network.
A single-network follower requires five node IPs, one primary API VIP, one Harbor VIP, and one Timescape ingester VIP on its primary network, for a minimum of eight follower addresses. It does not require a secondary API VIP.
Reserve the recommended spare address on every node network to allow node replacement or scaling without expanding the IPAM pool.
Credentials requiredπ
You need vCenter administrator credentials to allow the bootstrap process to provision and manage VMs in your vSphere environment.
Verify the prerequisitesπ
Before moving on to the installation steps, double-check the following:
The SSH key pair exists and the public key is accessible.
vCenter Server version is 8.0 Update 3 or later.
ESXi hosts have at least 116 vCPU, 232 GiB RAM, and 1.2 TiB of datastore capacity available for the combined deployment.
A Distributed Virtual Switch is configured.
At least 24 IP addresses are reserved across the required networks (plus three recommended spare addresses).
vCenter administrator credentials are available.
Next stepsπ
The prerequisites are satisfied. Next, Deploy the bootstrap OVA.
Deploy the bootstrap OVAπ
This page shows how to download and deploy the Hypershield bootstrap OVA to your VMware vCenter environment. The resulting management VM serves as the installer host from which all subsequent installation steps are run.
All values shown are examples. Adjust them to match your environment.
Note
All steps on this page are performed from your local workstation unless otherwise noted.
Download the bootstrap OVAπ
Download the bootstrap OVA from the Cisco Software Download site:
Go to the Hypershield Bootstrap OVA download page and log in with your Cisco.com credentials.
Download the latest iep-bootstrap-*.ova file.
Deploy the OVAπ
Choose the deployment method that best suits your environment.
The scripted method uses the import-ova.sh helper script together
with metadata.yaml and, optionally, userdata.yaml.
Prepare the metadata file
Download
metadata.yamlandmetadata.yaml.sha256.Verify the integrity of the file:
sha256sum -c metadata.yaml.sha256
Expected output:
metadata.yaml: OK
Open metadata.yaml and update all values marked with
# MODIFY THIS LINEto match your IP configuration.
Prepare the userdata file (proxy environments only)
If you require a proxy configuration, complete the following steps:
Download
userdata.yamlanduserdata.yaml.sha256.Verify the integrity of the file:
sha256sum -c userdata.yaml.sha256
Expected output:
userdata.yaml: OK
Open userdata.yaml and update the proxy settings.
Prepare the import script
Download
import-ova.shandimport-ova.sh.sha256.Verify the integrity of the file:
sha256sum -c import-ova.sh.sha256
Expected output:
import-ova.sh: OK
Make the script executable:
chmod +x import-ova.sh
Configure the GOVC environment
Export the following environment variables to authenticate with vCenter:
export GOVC_URL='vcenter.example.com'
export GOVC_USERNAME='administrator@vsphere.local'
export GOVC_PASSWORD='your-password'
export GOVC_DATACENTER='Datacenter1'
export GOVC_DATASTORE='datastore1'
export GOVC_NETWORK='VM Network'
export GOVC_RESOURCE_POOL='*/Resources'
export GOVC_INSECURE=true # Use with self-signed certificates
export GOVC_FOLDER="vm/hypershield"
Run the import
Basic usage:
./import-ova.sh iep-bootstrap-10.0.0.0.ova
Advanced usage with explicit network and SSH key:
./import-ova.sh \
--network "vlan1357-access" \
--ssh-key $HOME/.ssh/id_ed25519.pub \
--name hsinstaller-ca2 \
iep-bootstrap-10.0.0.0.ova
To see all available options:
./import-ova.sh -h
Sample output:
usage: ./import-ova.sh [options] <ova_path>
Options:
--check-duplicate-ip Enable duplicate IP conflict check
-d, --debug Enable debug messages
-m, --metadata PATH Path to OVA metadata.yaml
-n, --name NAME Name for deployed bootstrap VM
--network NAME VM Network to attach to
-s, --ssh-key PATH Path to SSH public key for access
-u, --userdata PATH Path to OVA userdata.yaml
-h, --help Show this help message
Arguments:
ova_path Path to OVA image to import
Log in to vSphere Client at
https://<vcenter-ip>/ui.Right-click your datacenter or host and select Deploy OVF Template.
Browse to the downloaded OVA file or provide the URL of the HTTP server hosting the OVA file.
Configure the deployment:
Name:
iep-bootstrapFolder: select the destination folder
Compute Resource: select the cluster or host
Storage: select the datastore
Network: select the VM network (no DHCP)
In the Customize template section, under Cloud-Init:
Provide the hostname of the VM according to your network configuration.
Optionally add your public SSH key in the SSH public keys field. To display your public key:
cat ~/.ssh/id_ed25519.pub
Under Networking, provide all network configuration details:
IP address
Subnet mask
Gateway
DNS servers (comma-separated)
NTP servers (comma-separated)
Proxy configuration (if applicable)
Click Finish to deploy.
Power on the VM and wait 2β3 minutes for cloud-init to complete.
Log in to vSphere Client at
https://<vcenter-ip>/ui.Right-click your datacenter or host and select Deploy OVF Template.
Browse to the downloaded OVA file or provide the URL of the HTTP server hosting the OVA file.
Configure the deployment:
Name:
iep-bootstrapFolder: select the destination folder
Compute Resource: select the cluster or host
Storage: select the datastore
Network: select the VM network (no DHCP)
In the Customize template section:
Specify the hostname of the VM according to your naming convention.
Add your public SSH key in the SSH public keys field.
To configure the VM IP address directly, convert the contents of metadata.yaml to base64 and paste the value into Base64-encoded network-config:
cat metadata.yaml | base64 -w0
To configure the VM proxy directly, convert the contents of userdata.yaml to base64 and paste the value into Base64-encoded user-data:
cat userdata.yaml | base64 -w0
Click Finish to deploy.
Power on the VM and wait 2β3 minutes for cloud-init to complete.
Access the management VMπ
Tip
The default user is iep with password iep.
If you are using SSH agent, add your SSH key:
ssh-add ~/.ssh/id_ed25519
SSH to the management VM:
ssh -A iep@<management-vm-ip>
You are prompted to change the password on first login:
WARNING: Your password has expired. You must change your password now and login again! Changing password for iep. Current password: New password: Retype new password: passwd: password updated successfully Connection to 198.19.184.89 closed.
After the password is updated you are logged out. Reconnect with the new password.
Verify the management VM is accessibleπ
After reconnecting, confirm that you can log in successfully and that the working environment is available:
ls /home/iep/
You should see the bootstrap.yaml template file and the /opt/installer/ directory containing the node OVA and image archives.
Next stepsπ
The management VM is deployed and accessible. Next, Configure and install Leader and Follower clusters.
Configure and install Leader and Follower clustersπ
This page shows how to prepare the configuration files for the Leader and
Follower management clusters and then bootstrap both clusters using
isoctl.
Note
All steps on this page are performed on the management VM unless otherwise noted.
Prepare the working directoryπ
Create the working directories for configuration files and follower credentials:
mkdir -p /home/iep/hypershield
mkdir -p /home/iep/follower-credentials
cd /home/iep/hypershield
Configure the Leader bootstrapπ
Copy the bootstrap template and open it for editing:
cp /home/iep/bootstrap.yaml /home/iep/hypershield/bootstrap_leader.yaml
The following is an example of all available options that can be place in bootstrap_leader.yaml. Update all values to match your environment:
# HTTP/HTTPS proxy for outbound connections (optional)
# Required if direct internet access is not available
# proxySettings:
# http:
# host: "http://proxy.example.com"
# port: "80"
# https:
# host: "http://proxy.example.com"
# port: "443"
# noProxy:
# - "localhost"
# - ".example.com"
# Additional CA certificates (optional)
# caCerts:
# files:
# - hostPath: "/home/iep/custom-ca.crt"
# name: "custom-CA"
kindNodeImage: "kindest/node:latest"
mgmtCluster:
name: "hypershield-leader"
vmProfile: hypershield
gatewayAPI: true
apiServer:
address: "198.19.184.10"
certSANs: []
controlPlaneReplicas: 3
workerReplicas: 2
# podCIDR: "10.20.0.0/16"
# serviceCIDR: "10.30.0.0/16"
nodeAuthorizedKeys: []
nodeAuthorizedKeysFromAgent: true
imageArchives:
- "/opt/installer/images.tar.gz"
registry:
address: "198.19.184.11"
localImageArchives:
- "/opt/installer/images.tar.gz"
vsphere:
endpoint: "vcenter.example.com"
thumbprint: "AA:BB:CC:DD:EE:FF:..."
datacenter: "Datacenter1"
datastore: "datastore1"
folder: "Hypershield-Leader"
network: "VM Network"
resourcePool: "*/Resources"
template: "clusterX-node-template"
ova: "/opt/installer/node.ova"
username: "administrator@vsphere.local"
password: "YourSecurePassword"
networks:
- name: "VM Network"
ipam:
name: "leader-primary"
addresses:
- 198.19.184.10-198.19.184.20
prefix: 24
gateway: 198.19.184.1
nameservers:
- 8.8.8.8
- 1.1.1.1
Configure the Follower bootstrapπ
Copy the bootstrap template and open it for editing:
cp /home/iep/bootstrap.yaml /home/iep/hypershield/bootstrap_follower.yaml
Note
The main differences between the Leader and Follower bootstrap configurations are the cluster name, IP addresses, and network configuration. The Follower may also include a SmartSwitch network for dual-leg designs.
The following is an example of all available options that can be place in bootstrap_follower.yaml. Update all values to match your environment:
# HTTP/HTTPS proxy for outbound connections (optional)
# proxySettings:
# http:
# host: "http://proxy.example.com"
# port: "80"
# https:
# host: "http://proxy.example.com"
# port: "443"
# noProxy:
# - "localhost"
# - ".example.com"
# Additional CA certificates (optional)
# caCerts:
# files:
# - hostPath: "/home/iep/custom-ca.crt"
# name: "custom-CA"
kindNodeImage: "kindest/node:latest"
mgmtCluster:
name: "hypershield-follower"
vmProfile: hypershield
gatewayAPI: true
apiServer:
address: "198.19.184.30"
certSANs: []
controlPlaneReplicas: 3
workerReplicas: 2
# podCIDR: "10.20.0.0/16"
# serviceCIDR: "10.30.0.0/16"
nodeAuthorizedKeys: []
nodeAuthorizedKeysFromAgent: true
imageArchives:
- "/opt/installer/images.tar.gz"
registry:
address: "198.19.185.31"
localImageArchives:
- "/opt/installer/images.tar.gz"
vsphere:
endpoint: "vcenter.example.com"
thumbprint: "AA:BB:CC:DD:EE:FF:..."
datacenter: "Datacenter1"
datastore: "datastore1"
folder: "Hypershield-Follower"
network: "VM Network"
resourcePool: "*/Resources"
template: "clusterX-node-template"
ova: "/opt/installer/node.ova"
username: "administrator@vsphere.local"
password: "YourSecurePassword"
networks:
- name: "VM Network"
ipam:
name: "follower-primary"
addresses:
- 198.19.184.30-198.19.184.40
prefix: 24
gateway: 198.19.184.1
nameservers:
- 8.8.8.8
- 1.1.1.1
# SmartSwitch network (optional, for dual-leg design)
- name: "SmartSwitch Network"
ipam:
name: "follower-smartswitch"
addresses:
- 198.19.185.30-198.19.185.40
prefix: 24
Validate and install the Leader clusterπ
Validate the Leader bootstrap configuration before installing:
isoctl bootstrap validate -f /home/iep/hypershield/bootstrap_leader.yaml
Expected output:
Bootstrap config validation passed (all)
Install the Leader management cluster:
isoctl bootstrap install -f /home/iep/hypershield/bootstrap_leader.yaml --log-level=debug
This process creates the Leader management cluster with all necessary
components. When it completes, configure kubectl to use the Leader
kubeconfig:
export KUBECONFIG=/home/iep/hypershield-leader.yaml
kubectl get nodes
Expected output (node names will differ in your environment):
NAME STATUS ROLES AGE VERSION
hypershield-leader-infra-xxxx Ready control-plane 10m v1.32.4
hypershield-leader-infra-md-xxxx-xxxx Ready <none> 8m v1.32.4
...
Validate and install the Follower clusterπ
Validate the Follower bootstrap configuration:
isoctl bootstrap validate -f /home/iep/hypershield/bootstrap_follower.yaml
Install the Follower management cluster:
isoctl bootstrap install -f /home/iep/hypershield/bootstrap_follower.yaml --log-level=debug
Configure kubectl to use the Follower kubeconfig:
export KUBECONFIG=/home/iep/hypershield-follower.yaml
kubectl get nodes
Next stepsπ
The Leader and Follower management clusters are installed. Next, Install Hypershield on Leader and Follower.
Install Hypershield on Leader and Followerπ
This page shows how to install Hypershield on the Leader management cluster, extract the credentials required by the Follower, and then install Hypershield on the Follower cluster.
Note
All steps on this page are performed on the management VM unless otherwise noted.
Install Hypershield on the Leaderπ
Caution
Ensure the KUBECONFIG environment variable points to the Leader cluster
before running any commands in this section.
Switch to the Leader cluster context:
export KUBECONFIG="/home/iep/hypershield-leader.yaml"
Create the Hypershield Leader configuration file at:
/home/iep/hypershield/hypershield-install-leader.yaml
The following is an example of all available options that can be place in hypershield-install-leader.yaml. Update all values to match your environment:
# Hypershield Leader configuration
timescape:
profile: leader
ip: "198.19.184.12" # Timescape Gateway load-balancer IP
# OIDC proxy configuration (optional)
# Uncomment if OIDC provider requires HTTP proxy
# overrides:
# - 'gateway.extraEnv[0].name=HTTP_PROXY'
# - 'gateway.extraEnv[0].value=http://proxy.example.com:8080'
# - 'gateway.extraEnv[1].name=HTTPS_PROXY'
# - 'gateway.extraEnv[1].value=http://proxy.example.com:8080'
# - 'gateway.extraEnv[2].name=NO_PROXY'
# - 'gateway.extraEnv[2].value=localhost\,127.0.0.1\,.svc\,.cluster.local'
secureConnector:
ip: "198.19.184.13"
hostname: "secure-connector-leader.198.19.184.13.nip.io"
server:
hostname: "timescape-grpc.198.19.184.12.nip.io"
rbac:
oidcIssuerURL: "https://dex.198.19.184.50.nip.io:5556/dex"
oidcClientID: "timescape"
adminEmails:
- "admin@example.com"
oidcCAFile: "/home/iep/dex-server/dex.crt"
# Public API (optional)
publicAPI:
enabled: true
hostname: "timescape-api.198.19.184.12.nip.io"
ui:
enabled: true
hostname: "timescape.198.19.184.12.nip.io"
auth:
oidc:
clientSecretFile: "/home/iep/dex-server/oidc-client-secret.txt"
issuerCAConfigMapName: "oidc-ca"
# SCC (optional)
# scc:
# enabled: true
# tenantID: "00000000-0000-0000-0000-000000000000"
Install Hypershield on the Leader cluster:
isoctl hypershield install -f /home/iep/hypershield/hypershield-install-leader.yaml
Extract Leader credentials for the Followerπ
Before installing Hypershield on the Follower, extract the necessary credentials from the Leader cluster.
Ensure you are using the Leader kubeconfig:
export KUBECONFIG="/home/iep/hypershield-leader.yaml"
Extract the Timescape CA certificate:
kubectl get secret hubble-timescape-server-cert -n hubble-timescape \
-o jsonpath='{.data.ca\.crt}' | base64 --decode \
> /home/iep/follower-credentials/leader-ca.crt
Extract the Secure Connector CA certificate:
kubectl get secret sc-server-root-ca-tls -n hubble-timescape \
-o jsonpath='{.data.ca\.crt}' | base64 --decode \
> /home/iep/follower-credentials/sc-server-ca.crt
Set secure permissions on the credential files:
chmod 0600 /home/iep/follower-credentials/*
Register the Follower in the Leader Timescape UIπ
Access the Timescape UI at the hostname you configured (for example,
https://timescape.198.19.184.12.nip.io).Navigate to the follower registration section.
Create a new follower with the name matching your Follower cluster name (for example,
hypershield-follower).Copy the generated join credential.
Save the follower join credential to a file:
/home/iep/follower-credentials/credential
Paste the credential from the Timescape UI and save the file.
Install Hypershield on the Followerπ
Caution
Ensure the KUBECONFIG environment variable points to the Follower
cluster before running any commands in this section.
Switch to the Follower cluster context:
export KUBECONFIG="/home/iep/hypershield-follower.yaml"
Create the Hypershield Follower configuration file at:
/home/iep/hypershield/hypershield-install-follower.yaml
The following is an example of all available options that can be place in hypershield-install-follower.yaml. Update all values to match your environment:
# Hypershield Follower configuration
timescape:
profile: follower
follower:
clusterName: "hypershield-follower" # Must match the name registered in leader UI
leaderAddress: "timescape-grpc.198.19.184.12.nip.io"
k8sHost: "https://198.19.184.30:6443" # Follower's Kubernetes API endpoint
credentialFile: "/home/iep/follower-credentials/credential"
leaderCAFile: "/home/iep/follower-credentials/leader-ca.crt"
ingester:
ip: "198.19.185.34" # IP on SmartSwitch network
secureConnector:
serverAddress: "secure-connector-leader.198.19.184.13.nip.io"
caFile: "/home/iep/follower-credentials/sc-server-ca.crt"
# CLC (optional)
clc:
enabled: true
ip: "198.19.185.35" # IP on SmartSwitch network
Install Hypershield on the Follower cluster:
isoctl hypershield install -f /home/iep/hypershield/hypershield-install-follower.yaml
Next stepsπ
Hypershield is installed on both clusters. Next, Verify the installation.
Verify the installationπ
This page shows how to verify that both the Leader and Follower clusters are healthy and that the Follower is connected to the Leader.
Note
All steps on this page are performed on the management VM unless otherwise noted.
Verify the Leader clusterπ
Switch to the Leader cluster context and check the cluster state:
export KUBECONFIG="/home/iep/hypershield-leader.yaml"
# Check nodes
kubectl get nodes
# Check Timescape components
kubectl get pods -n hubble-timescape
# Check Gateway API
kubectl get gateways -A
All nodes should show a Ready status and all pods in the
hubble-timescape namespace should show a Running status.
Verify the Follower clusterπ
Switch to the Follower cluster context and check the cluster state:
export KUBECONFIG="/home/iep/hypershield-follower.yaml"
# Check nodes
kubectl get nodes
# Check Timescape components
kubectl get pods -n hubble-timescape
All nodes should show a Ready status and all pods in the
hubble-timescape namespace should show a Running status.
Verify the Follower connection in the Timescape UIπ
Access the Leader Timescape UI at the hostname you configured (for example,
https://timescape.198.19.184.12.nip.io).Navigate to the follower management section.
Confirm that the Follower shows a status of Connected.
If the Follower does not appear as connected, review the Install Hypershield on Leader and Follower page to ensure the credential file and CA files were correctly extracted and referenced in the Follower configuration.
Next stepsπ
Hypershield is now installed in your VMware vCenter environment and you are now ready to add an enforcement point. For a Smart Switch enforcement point, see Register a Smart Switch.
Operate the environmentπ
This section shows you how to operate the Hypershield platform after the initial environment is installed. It covers day-to-day tasks such as enrolling clusters, assigning permissions, managing network objects and policies, and observing traffic.
The network object and policy pages provide Timescape user interface workflows with supported public REST API alternatives in collapsible panels. For background on what Timescape is and how it fits into the platform, see Timescape and SCC.
Register a leader cluster with SCCπ
When Hypershield runs on Cisco Security Cloud Control (SCC), the Timescape UI requires at least one leader cluster to be enrolled before any other feature becomes available. Until a leader is registered, the UI redirects all navigation to the Leaders page.
This page describes how to enroll your first leader through the Timescape UI.
Prerequisitesπ
Timescape is deployed and accessible (see Timescape and SCC).
The
leader-pathconfiguration is set in your Timescape deployment.You have credentials for an identity provider configured with Timescape OIDC, or direct access to the UI.
Access the Leaders pageπ
When no leader is enrolled, the UI automatically redirects you to the Leaders page on first access. If a leader already exists, navigate to in the sidebar.
Register a new leaderπ
Click Add leader.
Fill in the leader details:
Leader name β A human-readable name to identify this leader cluster.
Description (optional) β Additional context about the leaderβs purpose or environment.
Click Save.
The UI generates a one-time password (OTP) for the leader cluster to use during its initial connection. Copy this value before leaving the page.
The leader cluster uses this OTP to authenticate its first connection to Timescape. Once connected, the leader appears with an active status in the Leaders list.
View leader detailsπ
Click a leader name in the list to view its detail page. The detail page shows:
Leader metadata (name, description, creation time)
Connection status
Assign user permissionsπ
This page shows how to assign permissions to users. Permissions determine what authorization level a user has on the Hypershield platform. To grant certain permissions to a user, place the user in an appropriate user group.
Note
Internal to Hypershield, permissions are associated with a role.
Place a user in a groupπ
To place a user in a group follow these steps:
Log into the Keycloak admin console: https://keycloak.<your-domain>/admin/master/console/
Select the hypershield realm
Navigate to Users β <username> β Groups
Add the user to the group
Permission changes take effect within approximately 30 seconds - existing sessions honor the change on their next API call. Neither a Pod restart nor a user re-login is required.
Note
The set of available groups is predefined:
adminpolicy_managerworkload_agent_installernbe_installersecurity
For details on how identity and access management works, see conceptual page PLACEHOLDER.
Manage followersπ
Followers (also called clusters in the API) are management clusters registered with Timescape. They receive segmentation policies from the leader, distribute those policies to the enforcement points they manage, and report policy synchronization and operational status back to the leader. In the Timescape UI, you manage them from .
View the followers listπ
Navigate to to see all registered clusters.
The followers list shows each cluster with its name, status, and labels.π
The list supports:
Status filter β Filter by Active, Disabled, or Pending status.
Search β Filter clusters by name.
Actions menu β Enable, disable, or delete clusters from the row action menu.
Cluster statuses:
Active β The cluster is connected and receiving policy updates.
Pending β The cluster is registered but has not yet connected.
Disabled β The cluster is paused and not receiving policy updates.
Register a new followerπ
Click Register follower.
Fill in the cluster details:
Name β A unique name for the cluster.
Labels (optional) β Key-value pairs for organizing clusters (for example, by site, region, or role).
Enter the follower name and optional labels.π
Click Save.
The UI generates connection credentials for the cluster. Provide these to the cluster administrator to complete the registration.
Copy the connection credentials and provide them to the cluster administrator.π
The cluster administrator uses these credentials to register the follower with the leader. After the follower is successfully registered, it becomes active and can manage enforcement points.
View follower detailsπ
Click a cluster name in the list to open its detail page. The detail page shows:
Cluster metadata (name, labels, creation time)
Current connection status
Policy synchronization state
The detail page shows the clusterβs connection state and metadata.π
Edit a followerπ
From the detail page, click Edit to modify the clusterβs name or labels.
Update the cluster name or labels.π
Enable or disable a followerπ
Use the actions menu on the list page to change a clusterβs state:
Disable β Pauses policy distribution to the cluster. The cluster retains its last-known policy state but stops receiving updates.
Enable β Resumes policy distribution. The cluster receives all pending policy updates.
View follower event logsπ
From the cluster detail page, switch to the Logs tab to review the event history (registration, state changes, connection events).
The logs tab shows the clusterβs lifecycle events.π
Delete a followerπ
Use the actions menu to delete a cluster. Only clusters in Disabled or Pending status can be deleted.
Caution
Deleting a cluster removes it from Timescape permanently. The cluster stops receiving policy updates and must be re-registered to rejoin.
Manage leadersπ
Leaders are cluster controllers that coordinate platform operations across your Hypershield deployment. At least one leader must be enrolled for the Timescape UI to function. Leaders handle authentication, security policy distribution, and cluster orchestration.
For background information on leaders and their role in the architecture, see Leader and follower clusters.
Note
For initial leader enrollment during SCC configuration, see Register a leader cluster with SCC.
Using the user interfaceπ
In the Timescape UI, you manage leaders from the page.
View the leaders listπ
Navigate to to see all registered leader clusters in your deployment.
The leaders list shows each leader with its name, status, and connection details.π
When no leaders are enrolled yet, youβll see an empty state:
The Leaders page displays an empty state when no leader cluster is registered. Click Add leader to begin enrollment.π
Register a new leaderπ
Click Add leader.
Fill in the leader details in the form that appears:
Leader name β A unique, human-readable name to identify this leader cluster (must be valid as a Kubernetes resource name).
Description (optional) β Additional context about the leaderβs purpose, environment, or location.
Enter the leader name and optional description.π
Click Create or Save.
After creation, you may receive a one-time password (OTP) or connection token for the leader cluster to use during its initial authentication. Copy this value before leaving the page, as it is shown only once.
The leader cluster uses this credential to authenticate its first connection to Timescape. Once connected, the leader appears with an active status in the Leaders list.
View leader detailsπ
Click a leader name in the list to open its detail page. The detail page shows:
Leader metadata (name, description, creation and modification times)
Connection status and health
Configuration details
Associated clusters or resources managed by this leader
The leader detail page displays metadata, connection state, and configuration information.π
Edit a leaderπ
From the leader detail page or the leaders list:
Click Edit or use the actions menu (three-dot icon) on a leader row.
Modify the leader properties as needed.
Click Save to apply your changes.
Delete a leaderπ
From the leaders list, use the actions menu (three-dot icon) on a leader row to delete it.
Caution
Deleting a leader disconnects its cluster from Timescape and may impact platform operations. If you delete the last remaining leader, all UI features become unavailable until a new leader is enrolled.
Troubleshootingπ
Leader not connectingπ
If a leader appears as disconnected or unhealthy:
Verify network connectivity between the leader cluster and Timescape.
Check that the leader cluster has the correct Timescape endpoint configuration.
Review leader pod logs for authentication or connection errors.
Ensure firewalls and network connectivity is in place to allow the required communication ports.
Multiple leaders showing conflictsπ
If multiple leaders show conflicting states:
Verify that each leader has a unique name.
Check for clock synchronization issues between leader clusters.
Review the leader cluster logs for reconciliation errors.
For more troubleshooting guidance, see Hypershield general troubleshooting.
Manage Smart Switchesπ
This section describes the operational tasks used to manage Smart Switches in a Hypershield deployment.
Register a Smart Switchπ
Register a Smart Switch to enable centralized policy management and status reporting. After registration, security policies can be distributed to the Smart Switch.
Note
This procedure assumes a Leader and Follower cluster deployment that is fully operational and error-free.
Prerequisitesπ
The Smart Switch is running a supported Hypershield NX-OS image.
You have administrative access to the Smart Switch.
Network connectivity exists between the Smart Switch and the Follower cluster.
Obtain the Smart Switch registration tokenπ
First connect to the management VM and enter into the context of the Follower cluster:
export KUBECONFIG="/home/iep/hypershield-follower.yaml"
Then generate the registration token:
/home/iep/hypershield/get-token.sh hypershield smartswitch-token --ca-source secret 198.19.184.30
Where 198.19.184.30 is the Follower clusterβs Kubernetes API endpoint.
Register the Smart Switchπ
Log in to the Smart Switch and access the switch console. Then register it with the Follower cluster by using the token generated in the previous step:
switch# service system hypershield register <registration-token>
Verify the Smart Switch registrationπ
Verify the registration on the switch by invoking the following commands on its console:
switch# service system hypershield test controller connection
switch# show service-acceleration status detail
Confirm that:
Controller Connection Status reports a successful connection
the switch appears in the list of managed switches
Verify the registration on the Follower cluster by running these commands on the management VM:
export KUBECONFIG="/home/iep/hypershield-follower.yaml"
kubectl get smartswitch -n hypershield
Update Smart Switch softwareπ
Update Smart Switch software to install new features, enhancements, and fixes. Depending on your maintenance requirements, you can:
Upgrade the complete NX-OS image.
Upgrade the Agent Gateway (AGW) software independently.
Upgrade the Data Processing Unit (DPU) firmware independently.
Note
The NX-OS image includes both the AGW software and the DPU firmware. In most cases, upgrade the complete NX-OS image. Upgrade the AGW software or DPU firmware independently only when you need to install specific fixes or enhancements.
Upgrade the NX-OS imageπ
Prerequisitesπ
You have administrative access to the Smart Switch.
You have obtained the appropriate Hypershield NX-OS image for your Smart Switch model.
Install the NX-OS imageπ
Log in to the Smart Switch.
Copy the NX-OS image to the Smart Switch:
switch# copy scp://user@host//path/to/nxos64-s1-dpu.<version>.bin bootflash: vrf management use-kstack
Save the running configuration:
switch# copy running-config startup-config
Install the image:
switch# install all nxos bootflash:nxos64-s1-dpu.<version>.bin
Verify the NX-OS upgradeπ
Run the following command:
switch# show service-acceleration status detail
Verify that the Smart Switch returns to an operational state.
Upgrade AGW softwareπ
The AGW software is included in the NX-OS image. You can upgrade it independently to install recent fixes or enhancements without installing a new NX-OS image.
Install the AGW softwareπ
Log in to the Smart Switch.
Copy the AGW software package to the Smart Switch.
Install and activate the package:
switch# install add bootflash:agent-<version>.rpm activate
Verify the AGW upgradeπ
Verify that the package is installed:
switch# show install active detail
Verify that the Smart Switch is operational:
switch# show service-acceleration status detail
Upgrade DPU firmwareπ
The DPU firmware is included in the NX-OS image. You can upgrade it independently to install recent fixes or enhancements without installing a new NX-OS image.
Install the DPU firmwareπ
Log in to the Smart Switch.
Install and activate the firmware package:
switch# install add bootflash:dpu_fw-<version>.rpm activate
Caution
The Smart Switch may reboot during the firmware upgrade.
Verify the DPU firmware upgradeπ
Run the following command:
switch# show service-acceleration status detail
Verify that the Smart Switch returns to an operational state after the reboot.
Enable high availability on a Smart Switchπ
This page shows you how to enable high availability (HA) on a Smart Switch via the NX-OS CLI. High availability flow state synchronisation is defined between two Smart Switches, referred to as an βHA pairβ in this document.
Note
Review section Caveats and limitations before continuing.
Define a Loopback Address on each Smart Switchπ
From the Smart Switch console, in the default VRF define a Loopback address that is going to be used for HA communication between the smart switches. Make sure that the routing configuration is in place for this Loopback to have reachability to the Loopback of the other Smart Switch over a Port-Channel between the two switches.
switch(config)# interface Loopback101
switch(config-if)# ip address 192.0.2.2/32
Create the HA configurationπ
In service system hypershield, enter high-availability and specify the source interface for the HA traffic as well as the peer IP address, which is the IP address of the Loopback interface on the other smart switch that is part of the same HA pair. Do not confuse the source-interface configuration under service system hypershield with the source-interface configuration under high-availability, these are two different interfaces, the first one is used for the Smart Switch to connect to Hypershield, the second one is used for high availability between two smart switches.
switch(config)# service system hypershield
switch(config-svc-sys)# high-availability
switch(config-svc-sys-ha)# source-interface loopback101
switch(config-svc-sys-ha)# peer 192.0.3.2
switch(config-svc-sys-ha)# no shutdown
Verify HA enablementπ
You can verify the enablement of HA on the switch with the NX-OS command βshow service-acceleration high-availability statusβ or via the dpctl command: βdpctl hs ha statusβ
switch# show service-acceleration high-availability status
Service System: hypershield
HA Source Interface: loopback101 (192.0.2.2)
HA Admin State: no-shutdown
Agent Status for Service Firewall: ready
Agent HA Status: ready
Peers:
PeerIP Peer Service State HA State with Peer Reason
192.0.3.2 ready ha-ok all criteria met
switch# attach dpu <number>
dpu<number># dpctl hs ha status
Possible status information includes:
peer state
last keepalive
bulk sync status
statistics
To view session flows:
switch# attach dpu <number>
dpu<number># dpctl show session --id <session_id>
dpu<number># dpctl show flow
Resourcesπ
Caveats and limitationsπ
Single peer support - Only one HA peer is supported.
No inline sync during bulk sync - Flows created during bulk sync are not synced; requires second bulk sync after completion.
Split brain risk - Network partition creates active-active scenario with no fencing or quorum mechanism.
No graceful shutdown - Planned maintenance treated as failure; a full re-sync is required on restart.
Keepalive thread contention - Keepalive RX shares thread with data path; heavy traffic can delay keepalive processing and cause false timeouts
Limited configuration - Manual peer configuration is required; no auto-discovery; no dynamic peer addition (must restart)
No statistics sync - Counters reset on failover; no historical data preserved
TCP state limitations - Only basic TCP state sync is supported; no advanced TCP options synced; RST possible on complex TCP states
No flow pruning - All flows synced regardless of age; stale flows may be synced.
Event delivery not guaranteed - Unix socket can drop events if FWA is busy; no retry for event delivery.
Scalabilityπ
Keepalive overheadπ
Metric |
Value |
|---|---|
message size |
20 bytes |
frequency |
every 5 seconds per peer |
bandwidth |
~32 bps per peer (negligible) |
CPU |
minimal (single threaded, event-driven) |
Bulk sync performanceπ
Metric |
Value |
|---|---|
flow entry size |
68 bytes |
batch size |
up to 10 flows = 680 bytes + headers |
ACK overhead |
8 bytes per batch + headers |
estimated sync time |
~1-5 seconds for 10K flows |
Scalabilityπ
Metric |
Value |
|---|---|
maximum flows |
limited by session table capacity |
tested |
up to 100K flows in bulk sync |
peer limit |
1 peer (single HA pair) |
thread model |
single HA thread + per-DPU RX workers |
Performance considerationsπ
batch transmission reduces per-message overhead
ACK-based flow control prevents receiver overwhelm
cutoff timestamp prevents stale flow sync
compressed flow representation (68 bytes per flow)
Disableπ
Disable HA on a Smart Switch by entering βshutdownβ under βhigh-availabilityβ:
switch(config)# service system hypershield
switch(config-svc-sys)# high-availability
switch(config-svc-sys-ha)#shutdown
Move a Smart Switch to another followerπ
Move a Smart Switch to another follower when replacing a follower, migrating a site, or changing the management topology. Re-registering the Smart Switch establishes a trusted connection with the new follower and enables it to receive policy updates from that follower.
Prerequisitesπ
The destination follower is deployed and operational.
Obtain a registration token for the smart switch from the destination follower.
You have administrative access to the Smart Switch.
Network connectivity exists between the Smart Switch and the destination follower.
Move the Smart Switchπ
Log in to the Smart Switch.
Register the Smart Switch with the destination follower:
switch# service system hypershield register <registration-token>
Replace <registration-token> with the registration token generated for the destination follower. Re-registering the Smart Switch replaces the existing registration with the new follower.
Verify the follower connectionπ
On the Smart Switch, verify that the connection to the destination follower was established:
switch# show service-acceleration status detail
Verify that Controller Connection Status reports a successful connection.
In the Timescape UI, verify that the Smart Switch is connected to the destination follower.
Confirm that the Smart Switch receives the latest segmentation policies from the destination follower.
Remove a Smart Switchπ
To remove a Smart Switch, unregister the switch and then remove its Hypershield configuration.
Unregister the switchπ
On the management VM, list all switches and then unregister the Smart Switch from the Hypershield control plane by specifying its serial number:
kubectl get smartswitches -n hypershield
kubectl delete smartswitch -n hypershield <serial-number>
The delete command also clears security policies from the DPUs.
Remove the Hypershield configurationπ
On the Smart Switch console, enter configuration mode and remove the Hypershield configuration:
switch# configure terminal
switch(config)# no feature service-acceleration
This command also stops the agent container and powers down the DPUs.
Verify the removalπ
On the management VM, verify that the Smart Switch is no longer listed:
kubectl get smartswitches -n hypershield
Manage network objectsπ
Network objects represent groups of IP addresses (CIDRs) that you reference in security policies. For background on the data model, see Security policies
In the Timescape UI, you manage network objects from the page.
Note
This page includes API alternatives to web UI actions. See Timescape API usage for getting started with the Timescape public REST API or go directly to the API reference.
Public API mutations write directly to desired state. They cannot add changes to a Timescape draft.
View the objects listπ
Use the API
List objects in the hypershield namespace and filter the results by a
case-insensitive search string and Kubernetes label selector:
curl "${TIMESCAPE_CURL_ARGS[@]}" \
--get \
--header "Accept: application/json" \
--data-urlencode "namespace=hypershield" \
--data-urlencode "search=app" \
--data-urlencode "labelSelector=environment=production" \
--data-urlencode "pageSize=50" \
"${TIMESCAPE_API}/network-object-groups"
The response contains results for the current page, totalCount for
all matching objects, and nextPageToken when another page is available.
To request the next page, repeat the same filters and pass the returned
token as pageToken. Stop when the response does not contain
nextPageToken.
For all request and response details, see GET /network-object-groups.
Navigate to to see all network object groups in your deployment.
The objects list shows each network object group with its name, labels, CIDR count, and last modification time.π
The list supports:
Search β Filter objects by name, labels or IP addresses.
Pagination β Navigate through large object sets.
Actions menu β Edit or delete objects from the row action menu.
Create a network objectπ
Use the API
Save the following request body as app-servers.json:
{
"namespace": "hypershield",
"name": "app-servers",
"labels": {
"environment": "production"
},
"spec": {
"description": "Application server subnets",
"cidrs": [
"10.10.20.0/24",
"10.10.21.0/24"
]
}
}
Create the object:
curl "${TIMESCAPE_CURL_ARGS[@]}" --include \
--request POST \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data-binary "@app-servers.json" \
"${TIMESCAPE_API}/network-object-groups"
An HTTP 201 response includes the created object, its Location, and
a quoted ETag header that identifies the resource version. An HTTP
409 response can indicate that an object with the same namespace and
name already exists.
For all request and response details, see POST /network-object-groups.
Click Create object.
Select a deployment target in the modal that appears. The deployment target determines which draft or live environment receives the new object (see the draft section).
Choose whether to save the object directly or add it to an existing draft.π
Fill in the object details:
Name β A unique name for the network object group (must be valid as a Kubernetes resource name).
Labels (optional) β Key-value pairs for organizing and filtering objects.
CIDRs β One or more IP address ranges that this object represents.
Enter the object name, optional labels, and one or more CIDR ranges.π
Click Deploy.
The object is created according to your selected deployment target (live or draft).
View object detailsπ
Use the API
Request the latest object and include its response headers:
curl "${TIMESCAPE_CURL_ARGS[@]}" --include \
--header "Accept: application/json" \
"${TIMESCAPE_API}/network-object-groups/hypershield/app-servers"
The response includes the current resource version in both the version
field and the quoted ETag header. You need the ETag to replace the
object.
For all request and response details, see GET /network-object-groups/{namespace}/{name}.
Click an object name in the list to open its detail page. The detail page shows:
Object metadata (name, namespace, labels, creation and modification times)
CIDR list
Attached policies that reference this object
The detail page displays the objectβs CIDRs and lists all policies that reference it.π
Edit a network objectπ
Use the API
First, request the latest object and include its response headers:
curl "${TIMESCAPE_CURL_ARGS[@]}" --include \
--header "Accept: application/json" \
"${TIMESCAPE_API}/network-object-groups/hypershield/app-servers"
Save the complete replacement configuration as app-servers-update.json:
{
"labels": {
"environment": "production"
},
"spec": {
"description": "Application server subnets",
"cidrs": [
"10.10.20.0/24",
"10.10.21.0/24",
"10.10.22.0/24"
]
}
}
Copy the quoted ETag value from the latest GET response, including its
quotation marks:
OBJECT_ETAG='"42"'
Replace the object with the updated configuration:
curl "${TIMESCAPE_CURL_ARGS[@]}" --include \
--request PUT \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "If-Match: ${OBJECT_ETAG}" \
--data-binary "@app-servers-update.json" \
"${TIMESCAPE_API}/network-object-groups/hypershield/app-servers"
PUT replaces the complete mutable configuration. Fields omitted from
the request, including optional labels and cluster selectors, are removed.
A request without If-Match returns HTTP 428. An HTTP 412
response means that another client changed the object after you read it.
Fetch the latest object and ETag, reconcile your changes, and submit the
replacement again. Do not retry a stale replacement without reconciling it.
For all request and response details, see GET /network-object-groups/{namespace}/{name} and PUT /network-object-groups/{namespace}/{name}.
From the detail page, click Edit, or use the actions menu in the list page.
Select a deployment target in the modal that appears. The deployment target determines which draft or live environment receives the updated object (see the draft section).
Modify the objectβs labels or CIDRs as needed.
Edit the CIDRs or labels of an existing network object.π
Click Deploy.
View object event logsπ
From the object detail page, switch to the Logs tab to review the event history for this object (creation, modifications, deletions).
The logs tab shows the change history for the object.π
Delete a network objectπ
Use the API
Delete an object that is no longer in use:
curl "${TIMESCAPE_CURL_ARGS[@]}" \
--request DELETE \
"${TIMESCAPE_API}/network-object-groups/hypershield/app-servers"
204 response confirms that Timescape deleted the object. If a
security policy still references the object by name, Timescape returns HTTP
409 and does not delete it. Delete or update every policy that contains
the named reference before you retry the request. For details about
conditional requests and errors, see Requests and responses and Errors and status codes.
For all request and response details, see DELETE /network-object-groups/{namespace}/{name}.
Use the actions menu on the list page or the detail page to delete an object.
Caution
Delete all security policies that reference this object first. Deleting an object that is still referenced by a policy is not allowed and will result in an error.
Manage security policiesπ
Hypershield security policies (SmartSwitchNetworkPolicy) define which
traffic is allowed between network objects. You can manage them through the
Timescape user interface or the Timescape public REST API.
For background on the policy data model and lifecycle, see Security policies and Lifecycle.
In the Timescape UI, you manage security policies from the page.
Note
This page includes API alternatives to web UI actions. See Timescape API usage for getting started with the Timescape public REST API or go directly to the API reference.
Public API mutations write directly to desired state. They cannot add changes to a Timescape draft.
View the policies listπ
Use the API
List policies in the hypershield namespace and include their current
deployment status:
curl "${TIMESCAPE_CURL_ARGS[@]}" \
--get \
--header "Accept: application/json" \
--data-urlencode "namespace=hypershield" \
--data-urlencode "labelSelector=environment=production" \
--data-urlencode "includeStatus=true" \
--data-urlencode "pageSize=50" \
"${TIMESCAPE_API}/policies"
When public API RBAC is enabled, the token needs an additional permission
to include deployment status. Timescape returns HTTP 403 if the token
can list policies but cannot read their status.
The response contains results, totalCount, and nextPageToken
when another page is available. Pass the opaque token as pageToken on
the next request, preserve the other filters, and continue until
nextPageToken is absent. For all collection filters and pagination
behavior, see Requests and responses.
For all request and response details, see GET /policies.
Navigate to to see all Hypershield policies.
The policies list shows each policy with its name, enforcement state, and summary information.π
The page includes summary cards at the top showing:
Policies in sync with enforcement points
Policies out of sync (pending deployment or with errors)
Create a security policyπ
Use the API
This example references load-balancers and app-servers network
objects. Create both objects in the hypershield namespace before
creating the policy. Save this request body as
allow-load-balancers-to-app-servers.json:
{
"namespace": "hypershield",
"name": "allow-load-balancers-to-app-servers",
"labels": {
"environment": "production"
},
"spec": {
"rules": [
{
"description": "Allow load balancers to reach application servers",
"action": "allow",
"source": {
"networkRefs": [
{
"name": "load-balancers"
}
]
},
"destination": {
"networkRefs": [
{
"name": "app-servers"
}
],
"protoPorts": [
{
"protocol": "TCP",
"port": 8080
},
{
"protocol": "TCP",
"port": 8443
}
]
}
}
]
}
}
Create the policy:
curl "${TIMESCAPE_CURL_ARGS[@]}" --include \
--request POST \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--data-binary "@allow-load-balancers-to-app-servers.json" \
"${TIMESCAPE_API}/policies"
An HTTP 201 response includes the created policy, its Location, and
a quoted ETag header. The response confirms that Timescape recorded the
desired policy. It does not confirm that every enforcement point has
applied the policy.
For all request and response details, see POST /policies.
Click Create policy.
Select a deployment target (save directly or add to a draft, see the draft section).
Choose whether to save the policy directly or add it to a draft for staged review.π
Fill in the policy details:
Name β A unique name for the policy.
Rules β Define one or more rules, each with:
Action β Allow or deny.
Source β Select a network object or specify an inline CIDR.
Destination β Select a network object or specify an inline CIDR.
Protocol and ports β TCP or UDP with specific port numbers.
Define rules by selecting source and destination objects and specifying allowed protocols and ports.π
The object selector lets you pick from existing network objects or enter inline CIDRs.π
Click Deploy.
View policy detailsπ
Use the API
Request the policy with its current deployment status:
curl "${TIMESCAPE_CURL_ARGS[@]}" \
--get \
--header "Accept: application/json" \
--data-urlencode "includeStatus=true" \
"${TIMESCAPE_API}/policies/hypershield/allow-load-balancers-to-app-servers"
When public API RBAC is enabled, reading deployment status requires an
additional permission. Inspect deploymentStatus.overallStatus:
inSyncmeans that reporting enforcement agents are consistent with the highest policy version that any agent has reported.pendingmeans that at least one agent reports a version while another reports an older version or no version.outOfSyncmeans that at least one reporting agent reports a deployment failure.unknownmeans that Timescape cannot determine the overall state.
The policy spec and version describe desired state, while
deploymentStatus describes current observed deployment state. Poll
periodically for a limited time when investigating pending or
outOfSync results.
Important
inSync is an agent-consistency signal. It does not compare the
agentsβ highest reported version with the desired version in the
REST response. A successful mutation followed by inSync therefore
does not, by itself, prove that the new desired revision is enforced.
For all request and response details, see GET /policies/{namespace}/{name}.
Click a policy name in the list to open its detail page. The detail page shows:
Policy metadata (name, namespace, creation and modification times)
Enforcement state across all enforcement points
The complete rule set
The detail page shows the policy rules and their enforcement state.π
Edit a security policyπ
Use the API
First, request the latest policy and include its response headers:
curl "${TIMESCAPE_CURL_ARGS[@]}" --include \
--header "Accept: application/json" \
"${TIMESCAPE_API}/policies/hypershield/allow-load-balancers-to-app-servers"
Save the complete replacement configuration as
allow-load-balancers-to-app-servers-update.json. This example
limits the rule to TCP port 8443:
{
"labels": {
"environment": "production"
},
"spec": {
"rules": [
{
"description": "Allow load balancers to reach application servers",
"action": "allow",
"source": {
"networkRefs": [
{
"name": "load-balancers"
}
]
},
"destination": {
"networkRefs": [
{
"name": "app-servers"
}
],
"protoPorts": [
{
"protocol": "TCP",
"port": 8443
}
]
}
}
]
}
}
Copy the quoted ETag value from the GET response, including its
quotation marks:
POLICY_ETAG='"17"'
Replace the policy:
curl "${TIMESCAPE_CURL_ARGS[@]}" --include \
--request PUT \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
--header "If-Match: ${POLICY_ETAG}" \
--data-binary "@allow-load-balancers-to-app-servers-update.json" \
"${TIMESCAPE_API}/policies/hypershield/allow-load-balancers-to-app-servers"
PUT replaces the complete mutable configuration. Omitted optional
fields are removed. A request without If-Match returns HTTP 428. An
HTTP 412 response means another client changed the policy after you read
it. Fetch the latest policy and ETag, reconcile your changes, and submit the
replacement again. After an update, use the request under View policy
details to review observed deployment status.
For all request and response details, see GET /policies/{namespace}/{name} and PUT /policies/{namespace}/{name}.
From the detail page, click Edit, or use the actions menu in the list page.
Modify rules, sources, destinations, or ports as needed.
Edit the rules of an existing policy.π
Click Deploy.
View policy event logsπ
From the policy detail page, switch to the Logs tab to review the event history (creation, modifications, deployments, deletions).
The logs tab shows the change and deployment history for the policy.π
Delete a security policyπ
Use the API
Delete the example policy:
curl "${TIMESCAPE_CURL_ARGS[@]}" \
--request DELETE \
"${TIMESCAPE_API}/policies/hypershield/allow-load-balancers-to-app-servers"
An HTTP 204 response confirms that Timescape removed the policy from
desired state. The response does not show when enforcement agents observe
the deletion. For safe retry and error handling guidance, see
Requests and responses and
Errors and status codes.
For all request and response details, see DELETE /policies/{namespace}/{name}.
Use the actions menu on the list page or the detail page to delete a policy.
Caution
Deleting a policy can change which traffic is allowed. Review the effect of the deletion before deleting the policy through either interface.
Validate policies with draftsπ
Before deploying policy changes to live enforcement, use Timescape drafts to stage, review, and validate them as a group.
For background on the staged policy lifecycle, see Lifecycle
Drafts let you stage policy and object changes before deploying them to live enforcement. A draft groups one or more changes (creates, edits, deletes) into a single deployment unit that you can review, validate, and deploy as a batch.
Navigate to to access the drafts feature.
View active draftsπ
The Drafts page opens on the Active tab, which lists all drafts that have not yet been deployed or discarded.
The Active tab shows all in-progress drafts with their name, change count, and status.π
View deployment historyπ
Switch to the Deployment history tab to see previously deployed drafts and their outcomes.
The Deployment history tab lists past deployments with their timestamp and result.π
Create a draftπ
Click Create draft.
In the modal, enter a name and optional description for the draft.
Provide a name and optional description for the new draft.π
Click Create. You are redirected to the draft detail page.
Add changes to a draftπ
From the draft detail page, you can add policy and object changes:
Click Add policy change or Add object change.
In the modal that appears, select an existing resource to modify or delete, or create a new one.
Select a policy to modify or create a new policy within this draft.π
Select an object to modify or create a new object within this draft.π
Make your changes in the form and save.
The draft detail page shows all pending changes in a table.
Review draft changesπ
The draft detail page displays all changes grouped by type:
The changes table shows each pending modification with its operation type (create, edit, delete) and resource name.π
You can filter changes by:
Kind β Show only policies, only objects, or all changes.
Operation β Filter by create, edit, or delete operations.
Conflicts β Show changes that conflict with the current live state (another user modified the same resource since the draft was created).
Search β Filter by resource name.
Use filters to focus on conflicting changes within a large draft.π
Resolve conflictsπ
When a resource in a draft has been modified in the live environment since the draft was created, the change shows a conflict indicator. Conflicts can be:
Auto-resolvable β The draft change and live change do not overlap; the system can merge them automatically.
Manual resolution β The changes overlap and require you to choose which version to keep.
Review conflicting changes and resolve them before deploying the draft.
Deploy a draftπ
When all changes are reviewed and conflicts are resolved:
Click Deploy in the draft header.
Confirm the deployment in the modal.
Review the deployment summary and confirm to apply all changes to live enforcement.π
The draft moves to the deployment history with a success or failure status.
Note
Deploying a draft applies all its changes atomically. If any change fails validation, the entire deployment is rejected.
View draft event logsπ
From the draft detail page, switch to the Logs tab to see the event history for this draft (creation, changes added, deployment attempts).
The logs tab shows the complete activity history for the draft.π
Delete a draftπ
Use the delete action in the draft header or from the drafts list. Deleting a draft discards all its pending changes without applying them.
Manage logging groupsπ
Logging groups define which telemetry destinations receive data from which follower clusters. They connect clusters to syslog servers and IPFIX collectors configured as telemetry destinations. In the Timescape UI, you manage them from .
For background on logging and observability, see Logging and observability.
View the logging groups listπ
Navigate to to see all configured logging groups.
The logging groups list shows each group with its name, type, assigned telemetry destinations, and cluster count.π
The list supports:
Type filter β Filter by Syslog or IPFIX type.
Search β Filter groups by name.
Actions menu β Edit or delete groups from the row action menu.
Create a logging groupπ
Click Create logging group. You will see the logging group creation form.
Enter the group name and select the telemetry type.π
Fill in a unique name for the logging group.
- Assign the telemetry destination this group sends data to. These are
the servers that will receive data from clusters in this group. These are the servers that will receive data from clusters in this group and can be of type Syslog or IPFIX.
- Select which follower clusters belong to this logging group. Those
clusters will export telemetry to the assigned destinations.
Click Save.
View logging group detailsπ
Click a group name in the list to open its detail page. The detail page shows:
Group metadata (name, type, creation time)
Assigned telemetry destinations
Member clusters
The detail page shows the groupβs destinations and assigned clusters.π
Edit a logging groupπ
From the detail page, click Edit to modify the groupβs destinations or cluster assignments.
Modify destination assignments or cluster membership.π
Delete a logging groupπ
Use the actions menu on the list page or the detail page to delete a group. Deleting a logging group stops telemetry export for the affected clusters and destinations.
Manage telemetry destinationsπ
Telemetry destinations define where enforcement points send syslog messages and IPFIX flow records. Each destination represents a single collector endpoint (a syslog server or an IPFIX collector). In the Timescape UI, you manage them from .
For background on telemetry export, see Logging and observability.
View the telemetry destinations listπ
Navigate to to see all configured destinations.
The destinations list shows each endpoint with its name, type, protocol, hostname, and port.π
The list supports:
Type filter β Filter by Syslog or IPFIX type.
Search β Filter destinations by name.
Actions menu β Edit or delete destinations from the row action menu.
Create a telemetry destinationπ
Click Create telemetry destination.
Fill in the destination details:
Name β A unique name for the destination.
Description (optional) β Additional context about the destination.
Type β Select Syslog or IPFIX.
Protocol β The transport protocol (TCP or UDP).
Hostname / IP β The collectorβs address.
Port β The collectorβs listening port.
Enter the destination name, type, protocol, hostname, and port.π
Click Save.
View destination detailsπ
Click a destination name in the list to open its detail page. The detail page shows:
Destination metadata (name, type, protocol, hostname, port)
Logging groups that reference this destination
The detail page shows the destinationβs configuration and which logging groups reference it.π
Edit a telemetry destinationπ
From the detail page, click Edit to modify the destinationβs connection parameters.
Update the destinationβs protocol, hostname, port, or description.π
Delete a telemetry destinationπ
Use the actions menu on the list page or the detail page to delete a destination.
Caution
Remove the destination from all logging groups before deleting it. Deleting a destination that is still referenced by a logging group will leave that group with an unresolvable reference.
Use the Topology mapπ
The topology map provides a visual representation of network traffic between network objects. It shows how traffic flows across your environment and which connections are governed by policies. In the Timescape UI, access it from .
Overviewπ
The topology map displays:
Network object groups as cards (vertices) on the map
Connections between objects as directional arrows (edges)
Zones or VLANs as container regions that group related objects
Policy coverage indicated by arrow coloring (governed vs. ungoverned traffic)
The topology map shows network objects as cards connected by arrows. Colors indicate whether traffic between objects is governed by a policy.π
Filter the viewπ
The filter bar at the top of the page lets you refine what the map shows:
CEL expression β Write a Common Expression Language filter to show only specific traffic (for example, by source or destination CIDR, VLAN, or protocol).
Time range β Select the time window for traffic data.
Refresh rate β Set how frequently the map updates with new data.
Understand policy coverageπ
Arrows on the map are colored to indicate policy coverage:
Governed (default color) β Traffic between these objects is covered by at least one Hypershield policy.
Ungoverned (warning color) β Traffic exists between these objects but no policy governs it. This may indicate a gap in your security posture.
Arrows colored in the warning state represent ungoverned traffic that may require a policy.π
View connection detailsπ
Click an arrow to open the arrow widget, which shows:
Source and destination objects
Traffic volume and protocol breakdown
Policy coverage details (which policies apply)
The arrow widget displays connection details and policy coverage for traffic between two objects.π
Create resources from the mapπ
The topology map supports inline resource creation for common workflows:
Create a network object from an ungrouped CIDRπ
When the map shows traffic from an IP range that is not yet assigned to a network object:
Click the ungrouped CIDR card on the map.
In the side panel, click Create object.
Select a deployment target (live or draft).
The object creation form opens pre-filled with the CIDR.
Create a network object directly from an ungrouped CIDR card on the map.π
Create a policy from a connectionπ
When you identify ungoverned traffic that needs a policy:
Click the arrow between two objects.
In the arrow widget, click Create policy.
Choose a deployment target (live or draft).
The policy creation form opens with source and destination pre-filled from the edge endpoints.
Create a policy directly from a connection arrow, pre-filled with the source and destination objects.π
View connection logsπ
Below the map, a resizable panel shows the connection logs table. This table lists individual connections that match the current map filter and time range.
The connection logs table provides detailed per-connection data for the visible traffic.π
Zone and VLAN groupingπ
When your environment uses VLANs or zones, the map groups objects into labeled containers. Use the zone selector in the header to show or hide specific zones. You can also click on one zone in the map to restrict data to that zone.
Objects are grouped into zone containers based on VLAN assignments.π
Back up and restore Hypershieldπ
This section covers backing up and restoring the Hypershield management and control planes. This topic is separate from similar operations that may be applied to enforcements points like a Smart Switch.
Important
Backup and restore operations are executed as the root user (through sudo). Use the commands with care.
Back up Hypershield management and control planesπ
Hypershield management and control planes are backed up by targeting the appropriate Kubernetes cluster. For the Leader and Follower deployment model:
management plane: Leader cluster
control plane: Follower cluster
The backup script used in the procedures is called hs-backup.sh (it resides
on the management VM by default). Use the --dry-run option for testing. See
the dropdown for usage details.
hs-backup.sh
Usage: sudo ./hs-backup.sh βappliance-type TYPE [OPTIONS]
Options:
- --appliance-type TYPE
Type of appliance being backed up: leader or follower (required)
- --output-dir DIR
Directory to write the archive (default: ./hypershield)
- --namespace NS
Timescape namespace (default: hubble-timescape)
- --hs-namespace NS
HyperShield namespace (default: hypershield)
- --include-logs
Collect recent pod logs and include in archive
- --dry-run
Runs health checks, prints a report, and exits. No backup is taken and no passphrase is required.
- --help
Shows this message
Archive naming:
hypershield-backup-YYYYMMDD-HHMMSS-leader.tar.gz
hypershield-backup-YYYYMMDD-HHMMSS-follower.tar.gz
Environment variable HS_PASSPHRASE:
Passphrase for encrypting secrets. When set, skips the interactive prompt (required for unattended/cron use).
Here is what is captured in each backup archive:
Content |
Leader cluster |
Follower cluster |
|---|---|---|
Backup metadata (manifest.json) |
Yes |
Yes |
Checksums (checksums.sha256) |
Yes |
Yes |
Kubernetes Secrets (encrypted) |
Both namespaces |
hypershield namespace only |
PostgreSQL database dump |
Yes |
No |
CRD policy objects |
Reference snapshot |
Primary intent |
ConfigMaps and RBAC |
Both namespaces |
hypershield namespace only |
Helm versions |
Yes |
Yes |
Pod logs (with βinclude-logs) |
Timescape pods |
HyperShield pods |
Caution
When creating a backup you are prompted for a passphrase (twice). Store the passphrase separately from its archive as the passphrase decrypts the Kubernetes Secrets bundle. Also store the archive in a safe place as it contains unencrypted sensitive information.
Back up the Leader clusterπ
Run the following to back up the Leader cluster:
sudo KUBECONFIG="<leader kubeconfig>" \
hypershield/scripts/hs-backup.sh --appliance-type leader
Example successful output:
[21:10:44] INFO Checking available disk space...
...
Enter backup passphrase:
...
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Backup complete (leader): ./hypershield/hypershield-backup-20260603-211044-leader.tar.gz
SHA256: 8e9290d9493669e8860798cfae16ac1f220cfe94831e35c1e76d5e69d9a7ba81
...
Back up the Follower clusterπ
Run the following to back up the Follower cluster:
sudo KUBECONFIG="<follower kubeconfig>" \
hypershield/scripts/hs-backup.sh --appliance-type follower
Example successful output:
[21:10:44] INFO Checking available disk space...
...
Enter backup passphrase:
...
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Backup complete (follower): ./hypershield/hypershield-backup-20260603-211044-follower.tar.gz
SHA256: 8e9290d9493669e8860798cfae16ac1f220cfe94831e35c1e76d5e69d9a7ba81
...
Restore Hypershield to original IP addressingπ
This page shows you how to restore the Hypershield management and control planes where the new underlying infrastructure makes use of the same IP addresses and DNS names as the original infrastructure.
Warning
Restore is a destructive operation and must be performed with due caution.
These instructions apply to a topology where the management plane is backed by a single leader Kubernetes cluster and the control plane is backed by one or more follower Kubernetes clusters. See Leader and follower clusters for deployment concepts.
There are three scenarios covered in this document:
leader-only restore
follower-only restore
leader and follower restore
Note
You will need an understanding of Leader and Follower cluster YAML configuration. See Install Hypershield on Leader and Follower for details.
The restore script used in the procedures is called hs-restore.sh (it
resides on the management VM by default). Use the --dry-run option for
testing. See the dropdown for usage details.
hs-restore.sh
Usage: sudo ./hs-restore.sh βfile ARCHIVE βmode MODE [OPTIONS]
Options:
- --file PATH
Path to backup archive (required)
- --mode rollback
Controller is authoritative. Overwrites postgres (leader, mixed) or CRD objects (follower, mixed) with backup state. Restores secrets, configmaps, and RBAC.
- --appliance-type TYPE
Override the appliance type from the archive manifest. Use βleaderβ, βfollowerβ, or βmixedβ. Required for archives that pre-date appliance-type support (no appliance_type in manifest).
- --namespace NS
Timescape namespace (default: hubble-timescape)
- --hs-namespace NS
HyperShield namespace (default: hypershield)
- --force
Skip version mismatch warning and continue
- --dry-run
Print what would be done without making changes
- --help
Show this message
Environment variable HS_PASSPHRASE:
Passphrase for encrypting secrets. When set, skips the interactive prompt (required for unattended/cron use).
1. Leader-only restoreπ
This section shows you how to restore a lost leader cluster from a previously made backup onto a freshly-deployed replacement cluster that uses the original clusterβs IP addressing and DNS records.
Prerequisitesπ
The following prerequisites are needed to complete the steps:
a leader cluster backup file is available
the follower cluster is running and pointing at the (now-lost) leader cluster
a new base Kubernetes cluster is deployed with the original leader clusterβs IP address and DNS hostname
1.1 Deploy Hypershield onto the new leader clusterπ
On the management VM, run the following command to deploy a new leader cluster:
isoctl hypershield install -f /home/iep/hypershield/hypershield-install-new-leader.yaml
See troubleshooting tips.
1.2 Apply the backup fileπ
Apply the leader cluster backup file:
sudo KUBECONFIG=<leader kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type leader --force
See troubleshooting tips.
1.3 Verify the environmentπ
Confirm all leader Kubernetes pods reach a Running/Ready status:
kubectl get pods -n hubble-timescape
Sample output:
NAME READY STATUS RESTARTS AGE
chi-hubble-timescape-hubble-data-0-0-0 1/1 Running 0 46m
hubble-timescape-analyzer-8488ffcc67-mbjc4 1/1 Running 0 7m13s
hubble-timescape-gateway-5ff76557ff-2h28n 1/1 Running 0 15m
hubble-timescape-ingester-798459d5c9-tcnrx 1/1 Running 0 7m12s
hubble-timescape-migratepg-b9e9a4391b-5n4sr 0/1 Error 0 62m
hubble-timescape-migratepg-b9e9a4391b-dmkdv 0/1 Completed 0 60m
hubble-timescape-pg-1 1/1 Running 0 60m
hubble-timescape-pg-2 1/1 Running 0 57m
hubble-timescape-public-api-575b47bcff-gjhcn 1/1 Running 0 12s
hubble-timescape-server-cdb4c4b74-kq4qb 1/1 Running 0 7m13s
hubble-timescape-trimmer-29753340-c2xlv 0/1 Completed 0 40m
hubble-timescape-ui-6ff788668d-zdcs5 1/1 Running 0 15m
sc-server-574669d455-knpsn 1/1 Running 7 (46m ago) 52m
sc-server-migratepg-833b59182b-7czh5 0/1 Completed 0 52m
1.4 Reconnect the followerπ
On the restored leader, export fresh TLS material:
kubectl --kubeconfig=<new leader kubeconfig> get secret \
-n hubble-timescape sc-server-root-ca-tls \
-o jsonpath='{.data.ca\.crt}' | base64 -d > sc-server-ca.crt
kubectl --kubeconfig=<new leader kubeconfig> get secret \
-n hubble-timescape hubble-timescape-server-cert \
-o jsonpath='{.data.ca\.crt}' | base64 -d > leader-ca.crt
In Timescape, generate a new join credential (Operations β Followers).
On the follower, force the follower-join job to re-run by deleting and recreating it from the Helm release hooks (this pair of commands may need to be re-run):
isoctl hypershield install -f hypershield-install-follower.yaml
kubectl delete job -n hubble-timescape hubble-timescape-follower-join
Sample successful output:
level=INFO msg="Follower-join completed successfully" leader-address=hs10-leader.pseudo.co:443 cluster-id=1f5723c3-80a0-426c-ac3c-e463dc01da05
Still on the follower, delete the sc-client-bootstrap secret and restart sc-client:
kubectl delete secret -n hubble-timescape sc-client-bootstrap
kubectl rollout restart deployment -n hubble-timescape sc-client
Sample successful output:
level=INFO msg="tunnel active, serving SOCKS5 connections" subsys=connector leader=198.18.42.158:443
1.5 Validate the results in Timescapeπ
In the Timescape web UI, verify that all restored data is present and correct:
Objects
Policies
Event Logs
Followers
Telemetry Destinations
Logging Groups
The follower cluster should show as Active and any Smart Switches should show as Connected.
Below is a screenshot of the Objects page:
2. Follower-only restoreπ
This section shows you how to restore a lost follower cluster from a previously made backup onto a freshly-deployed replacement cluster that uses the original clusterβs IP addressing and DNS records.
Prerequisitesπ
The following prerequisites are needed to complete the steps:
a follower cluster backup file is available
the leader cluster is running and pointing at the (now-lost) follower cluster
a new Kubernetes cluster is deployed with the original follower clusterβs IP address and DNS hostname
physical access to Smart Switches previously registered to the (now-lost) follower cluster
2.1 Deploy Hypershield onto the new follower clusterπ
On the original leader, export fresh TLS material:
kubectl --kubeconfig=<leader kubeconfig> get secret -n hubble-timescape sc-server-root-ca-tls \
-o jsonpath='{.data.ca\.crt}' | base64 -d > sc-server-ca.crt
kubectl --kubeconfig=<leader kubeconfig> get secret -n hubble-timescape hubble-timescape-server-cert \
-o jsonpath='{.data.ca\.crt}' | base64 -d > leader-ca.crt
In Timescape, generate a new one-time join credential (OTP) from the leader UI (Operations β Followers).
On the original leader, configure the newly deployed follower cluster and apply the follower cluster backup file:
isoctl hypershield install -f hypershield-install-follower.yaml
sudo KUBECONFIG=<follower kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type follower --force
See troubleshooting tips.
On the follower, reconnect sc-client to the leader:
isoctl hypershield install -f hypershield-install-follower.yaml
On the follower, force the follower-join job to re-run by deleting and recreating it from the Helm release hooks (this command may need to be re-run):
kubectl delete job -n hubble-timescape hubble-timescape-follower-join
Sample successful output:
Condition transition: SecureConnectorReady=True reason=SecureConnectorReady
Hypershield installed successfully
2.2 Re-register all Smart Switchesπ
On the follower, generate a Kubernetes API token:
./get-token.sh hypershield smartswitch-token --ca-source secret
On each Smart Switch console, register the switch with the token generated in the previous command:
switch# service system hypershield register <token>
Review Smart Switch commands for the next commands.
On each Smart Switch agent container shell, refresh the mTLS certificate:
switch# run bash sudo docker exec -it HypershieldAgent bash
HypershieldAgent:/usr/src/app# rm /iox_data/mtls_certs/mtls_certificates.json
On each Smart Switch NX-OS Bash shell, restart the agent container:
switch# run bash sudo su
bash-5.2# docker restart HypershieldAgent
bash-5.2# exit
Wait 15 minutes for internal processes to settle.
2.3 Validate the results in Timescapeπ
In the Timescape web UI, verify that the restored follower cluster is present and behaving normally. Under Enforcement Points, the switches should show Connected under the new follower cluster and Disconnected under the old follower cluster.
3. Leader and follower restoreπ
This section shows you how to restore both a lost leader cluster and a lost follower cluster from previously made backups onto freshly-deployed replacement clusters that uses the original clustersβ IP addressing and DNS records.
Prerequisitesπ
The following prerequisites are needed to complete the steps:
a leader cluster backup file is available
a follower cluster backup file is available
a new Kubernetes cluster is deployed with the original leader clusterβs IP address and DNS hostname
a new Kubernetes cluster is deployed with the original follower clusterβs IP address and DNS hostname
physical access to Smart Switches previously registered to the (now-lost) follower cluster
Leader restoreπ
Follow these previously documented steps:
Do not perform any steps related to the follower cluster.
Ensure the leader cluster is healthy before continuing.
Follower restoreπ
Follow these previously documented steps:
In the above steps, any mention of βoriginal leader clusterβ should be understood as being the newly restored leader cluster.
Restore Hypershield to new IP addressingπ
This page shows you how to restore the Hypershield management and control planes where the final underlying infrastructure has new IP addresses and DNS names compared to the original infrastructure.
Warning
Restore is a destructive operation and must be performed with due caution.
These instructions apply to a topology where the management plane is backed by a single leader Kubernetes cluster and the control plane is backed by one or more follower Kubernetes clusters. See Leader and follower clusters for deployment concepts.
There are three scenarios covered in this document:
leader-only restore
follower-only restore
leader and follower restore
The numbering is a continuation of the analogous scenarios (1, 2, and 3) covered in the companion document: Restore Hypershield to original IP addressing.
Note
You will need an understanding of Leader and Follower cluster YAML configuration. See Install Hypershield on Leader and Follower for details.
The restore script used in the procedures is called hs-restore.sh (it
resides on the management VM by default). Use the --dry-run option for
testing. See the dropdown for usage details.
hs-restore.sh
Usage: sudo ./hs-restore.sh βfile ARCHIVE βmode MODE [OPTIONS]
Options:
- --file PATH
Path to backup archive (required)
- --mode rollback
Controller is authoritative. Overwrites postgres (leader, mixed) or CRD objects (follower, mixed) with backup state. Restores secrets, configmaps, and RBAC.
- --appliance-type TYPE
Override the appliance type from the archive manifest. Use βleaderβ, βfollowerβ, or βmixedβ. Required for archives that pre-date appliance-type support (no appliance_type in manifest).
- --namespace NS
Timescape namespace (default: hubble-timescape)
- --hs-namespace NS
HyperShield namespace (default: hypershield)
- --force
Skip version mismatch warning and continue
- --dry-run
Print what would be done without making changes
- --help
Show this message
Environment variable HS_PASSPHRASE:
Passphrase for encrypting secrets. When set, skips the interactive prompt (required for unattended/cron use).
Leader-only restoreπ
This section shows you how to restore a lost leader cluster from a previously made backup onto a freshly-deployed replacement cluster that uses new IP addressing and DNS records as compared to the original cluster.
Prerequisitesπ
The following prerequisites are needed to complete the steps:
a leader cluster backup file is available
the follower cluster is running and pointing at the (now-lost) leader cluster
a new base Kubernetes cluster is deployed with a new IP address and DNS hostname
DNS A records exist for the new leader/UI/API hostnames
a TLS certificate is valid for the new UI hostname (wildcard or SAN match)
an OIDC provider app is updated such that Sign-In Redirect URLs are added for the new hostnames on the same client ID(s) used by the original leader
4.1 Deploy Hypershield onto the new leader clusterπ
On the management VM, run the following command to deploy a new leader cluster:
isoctl hypershield install -f hypershield-install-leader.yaml
Sample successful output:
Condition transition: TimescapeReady=True reason=TimescapeReady
Condition transition: SecureConnectorReady=True reason=SecureConnectorReady
Hypershield installed successfully
4.2 Apply the backup fileπ
Apply the leader cluster backup file:
sudo KUBECONFIG=<new leader kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type leader --force
Sample successful output:
[01:20:25] INFO Checksums OK.
[01:20:26] INFO Cluster reachable: mgmtcluster.isovalent.com
[01:20:38] INFO AUDIT restore complete with k8s apply failures: count=1
See troubleshooting tips.
4.3 Validate the results in Timescapeπ
In the Timescape web UI, verify that all restored data is present and correct:
Objects
Policies
Event Logs
Followers
Telemetry Destinations
Logging Groups
At this time, there are no registered Smart Switches.
Below is a screenshot of the Objects page:
4.4 Reconnect the followerπ
For the restored leader, export fresh TLS material:
kubectl --kubeconfig=<new leader kubeconfig> get secret \
-n hubble-timescape sc-server-root-ca-tls \
-o jsonpath='{.data.ca\.crt}' | base64 -d > sc-server-ca.crt
kubectl --kubeconfig=<new leader kubeconfig> get secret \
-n hubble-timescape hubble-timescape-server-cert \
-o jsonpath='{.data.ca\.crt}' | base64 -d > leader-ca.crt
Transfer the TLS material to the follower cluster host:
scp sc-server-ca.crt leader-ca.crt iep@<follower host>:follower-creds/<name>/
In Timescape, generate a new join credential (Operations β Followers).
Edit the follower clusterβs configuration file
hypershield-install-follower.yaml by updating leaderAddress
to the new leader clusterβs hostname, and secureConnector.serverAddress to
the new leader clusterβs SecureConnector IP address.
On the follower, force the follower-join job to re-run by deleting and recreating it from the Helm release hooks (this pair of commands may need to be re-run):
isoctl hypershield install -f hypershield-install-follower.yaml
kubectl delete job -n hubble-timescape hubble-timescape-follower-join
Sample successful output:
Condition transition: SecureConnectorReady=True reason=SecureConnectorReady
Hypershield installed successfully
Still on the follower, delete the sc-client-bootstrap secret and restart sc-client:
kubectl delete secret -n hubble-timescape sc-client-bootstrap
kubectl rollout restart deployment -n hubble-timescape sc-client
Sample successful output:
level=INFO msg="tunnel active, serving SOCKS5 connections" subsys=connector leader=198.18.42.129:443
4.5 Validate the results in Timescapeπ
In the Timescape web UI, verify that all restored data is present and correct:
Objects
Policies
Event Logs
Followers
Telemetry Destinations
Logging Groups
The follower cluster should show as Active and any Smart Switches should show as Connected.
Below is a screenshot of the Objects page:
5. Follower-only restoreπ
This section shows you how to restore a lost follower cluster from a previously made backup onto a freshly-deployed replacement cluster that uses new IP addressing and DNS records as compared to the original cluster.
Prerequisitesπ
The following prerequisites are needed to complete the steps:
a follower cluster backup file is available
the leader cluster is running and pointing at the (now-lost) follower cluster
a new base Kubernetes cluster is deployed with a new IP address and DNS hostname
new local IP addresses are reserved for the followerβs ingester and CLC endpoints
physical access to Smart Switches previously registered to the (now-lost) follower cluster
5.1 Deploy Hypershield onto the new follower clusterπ
For the original leader, export fresh TLS material:
kubectl --kubeconfig=<leader kubeconfig> get secret -n hubble-timescape sc-server-root-ca-tls \
-o jsonpath='{.data.ca\.crt}' | base64 -d > sc-server-ca.crt
kubectl --kubeconfig=<leader kubeconfig> get secret -n hubble-timescape hubble-timescape-server-cert \
-o jsonpath='{.data.ca\.crt}' | base64 -d > leader-ca.crt
In Timescape, generate a new one-time join credential (OTP) from the leader UI (Operations β Followers).
Edit the follower clusterβs configuration file
hypershield-install-follower.yaml by updating clusterName,
ingester.ip and clc.ip to the new follower clusterβs ingester and CLC
endpoint IP addresses.
On the original leader, configure the newly deployed follower cluster:
isoctl hypershield install -f hypershield-install-follower.yaml
Confirm that the new follower cluster has joined the leader:
kubectl get pods -n hubble-timescape
kubectl get pods -n hubble-timescape -l app.kubernetes.io/name=sc-client
Apply the follower cluster backup file:
sudo KUBECONFIG=<follower kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type follower --force
See troubleshooting tips.
Replace the smartswitch-timescape-config ConfigMapβs ingester IP address (namespace hypershield) with the new follower clusterβs ingester IP address:
kubectl get cm -n hypershield smartswitch-timescape-config -o jsonpath='{.data.timescape_config}'
5.2 Validate the follower cluster in Timescapeπ
In the Timescape web UI, verify that the leaderβs Followers page displays the restored follower cluster registers under its own name with no collision with any other still-connected follower cluster.
5.3 Re-register all Smart Switchesπ
On the new follower, generate a Kubernetes API token:
./get-token.sh hypershield smartswitch-token --ca-source secret
On each Smart Switch console, register the switch with the token generated in the previous command:
switch# service system hypershield register <token>
Review Smart Switch commands for the next commands.
On each Smart Switch agent container shell, refresh the mTLS certificate:
switch# run bash sudo docker exec -it HypershieldAgent bash
HypershieldAgent:/usr/src/app# rm /iox_data/mtls_certs/mtls_certificates.json
On each Smart Switch NX-OS Bash shell, restart the agent container:
switch# run bash sudo su
bash-5.2# docker restart HypershieldAgent
bash-5.2# exit
Wait 15 minutes for internal processes to settle.
5.4 Validate the results in Timescapeπ
In the Timescape web UI, verify that the restored follower cluster is present and behaving normally. Under Enforcement Points, the switches should show Connected under the new follower cluster and Disconnected under the old follower cluster.
6. Leader and follower restoreπ
This section shows you how to restore both a lost leader cluster and a lost follower cluster from previously made backups onto freshly-deployed replacement clusters that uses new IP addressing and DNS records as compared to the original clusters.
Prerequisitesπ
The following prerequisites are needed to complete the steps:
a leader cluster backup file is available
a follower cluster backup file is available
a new Kubernetes cluster is deployed with the new leader clusterβs IP address and DNS hostname
a new Kubernetes cluster is deployed with the new follower clusterβs IP address and DNS hostname
physical access to Smart Switches previously registered to the (now-lost) follower cluster
Leader restoreπ
Follow these previously documented steps:
Do not perform any steps related to the follower cluster.
Ensure the leader cluster is healthy before continuing.
Follower restoreπ
Follow these previously documented steps:
5.1 Deploy Hypershield onto the new follower cluster
Add new data in the follower clusterβs configuration file. Examples: *
leaderAddress: "new-leader.pseudo.co:443"*secureConnector.serverAddress: "198.18.42.129:443"
Change the ingester IP from the old follower clusterβs IP address to the new follower clusterβs ingester IP:
kubectl get cm -n hypershield smartswitch-timescape-config -o jsonpath='{.data.timescape_config}' > /tmp/ts-config.json
sed -i 's/198\.18\.42\.168/198.18.42.108/' /tmp/ts-config.json # old follower IP -> new follower IP
kubectl patch cm -n hypershield smartswitch-timescape-config --type=merge \
-p "{\"data\":{\"timescape_config\": $(python3 -c 'import json; print(json.dumps(open("/tmp/ts-config.json").read()))')}}"
In the above steps, any mention of βoriginal leader clusterβ should be understood as being the newly restored leader cluster.
Backup and restore troubleshootingπ
This page covers troubleshooting tips and methods when backing up and restoring the Hypershield management and control planes. Each section (and sub-section) map to an identical section/sub-section in a corresponding procedural page.
Restore Hypershield to original IP addressingπ
The corresponding procedural page for this section is here.
1.1 Deploy Hypershield onto the new leader clusterπ
After this command, a kubectl patch was noted to be needed on rare occasions.
isoctl hypershield install -f hypershield-install.yaml βtimeout=30m
Apply this patch:
kubectl patch tlsroute -n hubble-timescape hubble-timescape-server \
--type=json -p='[{"op":"add","path":"/spec/parentRefs/0/sectionName","value":"grpc"}]'
1.2 Apply the backup fileπ
After this command, see the listed example errors and mitigation steps. Also ensure that logs are checked for errors.
sudo KUBECONFIG=<leader kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type leader --force
Example errors:
[01:20:31] INFO Restoring critical secrets...
Error from server (Invalid): Secret "hubble-timescape-credential-encryption-keys" is invalid: data: Forbidden: field is immutable when `immutable` is set
Error from server (Invalid): Secret "hubble-timescape-signing-keys" is invalid: data: Forbidden: field is immutable when `immutable` is set
Error from server (Invalid): Secret "sc-client-kek" is invalid: data: Forbidden: field is immutable when `immutable` is set
Error from server (Invalid): Secret "sc-server-kek" is invalid: data: Forbidden: field is immutable when `immutable` is set
[01:20:33] WARN Some critical secrets in hubble-timescape may not have applied cleanly.
...
K8s apply failures: 1
Mitigation steps - Delete the affected secrets and re-run the original command:
kubectl --kubeconfig=<kubeconfig> delete secret -n hubble-timescape \
hubble-timescape-credential-encryption-keys \
hubble-timescape-signing-keys \
sc-client-kek \
sc-server-kek
sudo KUBECONFIG=<kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type leader --force
1.2a Check the logs for errorsπ
In the logs, check for errors relating to:
ClickHouse password-hash
public-api client-tls
public-api RBAC-path breakage
Do this for every leader restore, not just after isoctl re-runs.
Example errors:
level=WARN msg="unable to connect to DB" error="unable to connect to database: code: 516, message: timescape_migrate: Authentication failed: password is incorrect, or there is no user with such name" attempts=2 sleep-duration=4s
level=WARN msg="unable to connect to DB" ... attempts=8 sleep-duration=10s
context deadline exceeded
Mitigation steps - Sync ClickHouse password hashes:
hubble-timescape-*-creds Secrets, patch chi-hubble-timescape-common-usersd,
Then restart server/analyzer/ingester/intent-syncer.
Example errors:
level=WARN msg="Initial TLS configuration load failed, certificate files might not yet be available, waiting on fswatcher update to become ready" config=tls-client reloadKeypairError="failed to load keypair: open /var/lib/hubble-timescape-public-api/client-tls/tls.crt: no such file or directory" reloadCAError=<nil>
error creating Timescape upstream clients: getting gRPC client options: cannot get TLS configuration: context canceled
Mitigation steps - Restore public-api client-tls volume mount:
kubectl patch deployment -n hubble-timescape hubble-timescape-public-api --type=json -p='[
{"op":"add","path":"/spec/template/spec/volumes/-",
"value":{"name":"public-api-client-tls","projected":{"defaultMode":256,
"sources":[{"secret":{"name":"hubble-timescape-public-api-cert"}}]}}},
{"op":"add","path":"/spec/template/spec/containers/0/volumeMounts/-",
"value":{"name":"public-api-client-tls",
"mountPath":"/var/lib/hubble-timescape-public-api/client-tls","readOnly":true}}
]'
Example errors:
cannot create public API RBAC auth: failed to create public API policy authorizer: policy loader has no current policy in place: multiLoader: error getting current policy from loader "config": open /etc/hubble-timescape/rbac-policy.yaml: no such file or directory
Mitigation steps - Patch public-api RBAC policy-file path, then restart:
kubectl patch cm -n hubble-timescape hubble-timescape-public-api-config --type=merge \
-p '{"data":{"config.yaml":"...policy-file: /etc/timescape-public-api-rbac/policy/hubble-timescape-public-api-rbac-policy.yaml..."}}'
kubectl rollout restart deployment -n hubble-timescape hubble-timescape-public-api
Example problem and solution:
If the sc-server records a missing-table error, run the sc-server DB migration job:
kubectl get deployment -n hubble-timescape sc-server -o json | python3 -c "
import sys, json
d = json.load(sys.stdin)
spec = d['spec']['template']['spec']; c = spec['containers'][0]
job = {'apiVersion': 'batch/v1', 'kind': 'Job',
'metadata': {'name': 'sc-server-migratepg-manual', 'namespace': 'hubble-timescape'},
'spec': {'template': {'spec': {'restartPolicy': 'Never',
'containers': [{'name': 'migratepg', 'image': c['image'],
'command': ['/usr/local/bin/sc-server'], 'args': ['migratepg'],
'env': c.get('env', []), 'volumeMounts': c.get('volumeMounts', [])}],
'volumes': spec.get('volumes', []), 'serviceAccountName': spec.get('serviceAccountName', '')}}}
print(json.dumps(job, indent=2))" | kubectl apply -f -
kubectl wait job/sc-server-migratepg-manual -n hubble-timescape --for=condition=complete --timeout=60s
kubectl rollout restart deployment -n hubble-timescape sc-server
2.1 Deploy Hypershield onto the new follower clusterπ
After this command, see the listed example errors and mitigation steps.
sudo KUBECONFIG=<follower kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type follower --force
Example errors:
The Secret "sc-client-kek" is invalid: data: Forbidden: field is immutable when `immutable` is set
Mitigation steps - Delete the affected secrets and re-run the original command:
kubectl --kubeconfig=<follower kubeconfig> delete secret -n hubble-timescape sc-client-kek
sudo KUBECONFIG=<follower kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type follower --force
Restore Hypershield to new IP addressingπ
The corresponding procedural page for this section is here.
4.2 Apply the backup fileπ
After this command, see the listed example errors and mitigation steps. Also ensure that logs are checked for errors.
sudo KUBECONFIG=<leader kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type leader --force
Example errors:
Error from server (Invalid): Secret "hubble-timescape-credential-encryption-keys" is invalid: data: Forbidden: field is immutable when `immutable` is set
Error from server (Invalid): Secret "hubble-timescape-signing-keys" is invalid: data: Forbidden: field is immutable when `immutable` is set
Error from server (Invalid): Secret "sc-client-kek" is invalid: data: Forbidden: field is immutable when `immutable` is set
Error from server (Invalid): Secret "sc-server-kek" is invalid: data: Forbidden: field is immutable when `immutable` is set
Mitigation steps - Delete the affected secrets and re-run the original command:
kubectl --kubeconfig=<kubeconfig> delete secret -n hubble-timescape \
hubble-timescape-credential-encryption-keys \
hubble-timescape-signing-keys \
sc-client-kek \
sc-server-kek
4.2a Check the logs for errorsπ
In the logs, check for errors relating to:
ClickHouse password-hash
public-api client-tls
public-api RBAC-path breakage
Example errors:
timescape_migrate: Authentication failed: password is incorrect, or there is no user with such name
open /var/lib/hubble-timescape-public-api/client-tls/tls.crt: no such file or directory
policy loader has no current policy in place ... open /etc/hubble-timescape/rbac-policy.yaml: no such file or directory
Mitigation steps - Patch hubble-timescape-ui-configβs oauth2.oidc.redirect-url from the old hostname to the new hostname and restart hubble-timescape-ui:
CURRENT=$(kubectl get cm -n hubble-timescape hubble-timescape-ui-config -o jsonpath='{.data.config\.yaml}')
FIXED=$(echo "$CURRENT" | sed 's|redirect-url: https://hs10-leader-ui.pseudo.co/oauth2/callback|redirect-url: https://test-leader-ui.pseudo.co/oauth2/callback|')
kubectl patch cm -n hubble-timescape hubble-timescape-ui-config --type=merge \
-p "{\"data\":{\"config.yaml\": $(echo \"$FIXED\" | python3 -c 'import sys,json; print(json.dumps(sys.stdin.read()))')}}"
kubectl rollout restart deployment -n hubble-timescape hubble-timescape-ui
5.1 Deploy Hypershield onto the new follower clusterπ
After this command, see the listed example errors and mitigation steps.
sudo KUBECONFIG=<follower kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type follower --force
Example errors:
The Secret "sc-client-kek" is invalid: data: Forbidden: field is immutable when `immutable` is set
Mitigation steps - Delete the affected secrets and re-run the original command:
kubectl --kubeconfig=<follower kubeconfig> delete secret -n hubble-timescape sc-client-kek
sudo KUBECONFIG=<follower kubeconfig> ./hs-restore.sh --file <backup.tar.gz> \
--mode rollback --appliance-type follower --force
Troubleshootingπ
This section collects resources that can help in troubleshooting various aspects of the Hypershield platform.
Hypershield general troubleshootingπ
This section gathers together general troubleshooting commands and techniques pertinent to the Hypershield platform.
Note
See CLI command usage for guidance on how and where to invoke certain types of CLI commands.
General health checkπ
Invoke these commands on the management VM:
kubectl get nodes # all Nodes 'Ready'
kubectl get pods -n hypershield # all Hypershield Pods 'Running', no restarts accumulating
kubectl get pods -n hubble-timescape # all Timescape Pods 'Running'
kubectl get smartswitches -n hypershield # all switches 'Connected'
etcdctl endpoint health --cluster # all etcd members healthy
Timescape UI is not reachableπ
Confirm that the Timescape Pod is running:
kubectl get pods -n hubble-timescape
Confirm that the Load Balancer IP address is assigned:
kubectl get svc -n hubble-timescape
Test connectivity to the Load Balancer IP address:
curl -sk https://<timescape-lb-ip>/healthz
If the Timescape login page loops back to Keycloak without granting access, verify the Keycloak realm configuration:
realm name must be exactly: hypershield
client ID must be exactly: timescape
redirect URI must match your Timescape FQDN
API returns 401 or 403π
401 - the token is missing or was issued with the wrong audience
re-acquire token with:
client_id=timescapedecode your JWT at jwt.io and confirm: aud contains βtimescapeβ
403 - the assigned Keycloak group provides insufficient privileges
check Keycloak group membership for the account
group
policy_manageroradminis required for CRUD operationsa read-only role gets 403 on any mutation
Security policies troubleshootingπ
This section gathers together troubleshooting commands and techniques pertinent to security policies.
Note
See CLI command usage for guidance on how and where to invoke certain types of CLI commands.
Compare policy intent to DPU stateπ
There is an important distinction between:
policy intent - what you have declared in
SmartSwitchNetworkPolicyobjectsDPU state - what is actually programmed into the enforcement engine
Ideally, these are identical. However, when troubleshooting unexpected permit or deny behavior, it is worth verifying:
To view policy intent, run these commands on the management VM:
kubectl get smartswitchnetworkpolicies -n hypershield
kubectl describe smartswitchnetworkpolicy <policy-name> -n hypershield
To view DPU state, run this command on the switch console:
HypershieldAgent:/usr/src/app# ./agwctl policies show
If the two views diverge, a policy has not been pushed to the DPU. Check the switchβs connection status and controller logs:
HypershieldAgent:/usr/src/app# ./agwctl show_status
kubectl logs -n hypershield deployment/hypershield-controller --tail=100 | grep <switch-name>
Policy not appliedπ
Possible symptoms: SmartSwitchNetworkPolicy shows an error status
Run the below commands.
On the management VM:
kubectl describe smartswitchnetworkpolicy -n hypershield <policy-name>
On the switch console:
HypershieldAgent:/usr/src/app# ./agwctl show_log
Common causes:
Error |
Cause |
Solution |
|---|---|---|
VRF not found |
VRF name not in mapping |
add VRF to ConfigMap |
Validation failed |
invalid CIDR or port |
check YAML syntax |
Capacity exceeded |
too many rules |
optimize or split policy |
Traffic is blocked that should be allowedπ
Confirm the policy exists on the controller. On the management VM:
kubectl get smartswitchnetworkpolicies -n hypershield
Confirm the rule reached the DPU. Within the AGW shell:
HypershieldAgent:/usr/src/app# ./agwctl policies show
If the rule is absent, check switch connectivity:
HypershieldAgent:/usr/src/app# ./agwctl show_status
The output must show
Connected=true.Confirm the traffic matches the policy rules exactly:
the source IP address must fall within the policyβs source CIDR
the destination IP address must fall within the policyβs destination CIDR
the protocol and port must match exactly (no wildcards)
VRF of the traffic must match the VRF steered to the DPU
Confirm the correct VRFs are steered to the DPU:
switch# show service-acceleration status details
VRF count should include the VRF the traffic traverses
Analyze dropped network packetsπ
Traffic may be blocked or allowed unexpectedly. That is, traffic does not appear to match policy. In these cases, one strategy is to analyze dropped network packets.
Check that the policy is on the DPU:
dpu1# dpctl hs policies show
Enable drop logging:
dpu1# dpctl hs logging drop start
Generate some test traffic:
Check the capture:
dpu1# dpctl hs logging drop show
Ensure
Total Unique Packetshas incremented.Stop the capture and inspect it:
dpu1# dpctl hs logging drop stop dpu1# dpctl hs logging drop write less /var/log/pensando/pkt.log
VRF resolution errorsπ
Possible symptoms: policy shows the VRF not found error
Run the below commands on the switch console.
Check which VRFs are available on the AGW:
HypershieldAgent:/usr/src/app# ./agwctl vrf list
See other VRFs that are not βin serviceβ of the AGW:
HypershieldAgent:/usr/src/app# ./agwctl vrf show
Check VRFs on a switch console:
switch# show vrf
Smart Switch troubleshootingπ
This section gathers together troubleshooting commands and techniques pertinent to Smart Switches.
Note
See CLI command usage for guidance on how and where to invoke certain types of CLI commands.
Switch shows status Pending or Disconnectedπ
If registration of the switch was very recent, wait at least 60 seconds - the initial TLS handshake can take some time.
Check network reachability from the controller to the switchβs source-interface address:
kubectl exec -n hypershield <controller-pod> -- \ curl -sk https://<switch-source-interface-ip>/
Confirm the source-interface address is configured on the switch:
switch# show interface loopback <N>
If the switch was previously
Connectedand is nowDisconnected, check for interface events on the switch:switch# show logging last 100 | include eth1/48
General health checkπ
Invoke the below commands on the management VM.
Check the status of all switches:
kubectl get smartswitches -n hypershield
Check the security policy status:
kubectl get smartswitchnetworkpolicy -n hypershield
Invoke these commands from the AGW shell:
HypershieldAgent:/usr/src/app# ./agwctl show_status # Connected=true, Phase: fw-ready|redir-done
HypershieldAgent:/usr/src/app# ./agwctl show_ha # Cluster State: active/active, all criteria OK
HypershieldAgent:/usr/src/app# ./agwctl policies show # Rules present (at minimum, the default-deny rule)
AGW health checkπ
Inspect the agent container (AGW) by invoking commands on the switch console.
Verify AGW container statusπ
Check that the AGW container is running and healthy. There are several commands.
switch# show service-acceleration status detail | inc "Agent Health"
switch# run bash sudo docker ps | grep agw
Expected output shows the HypershieldAgent container with (healthy) status:
d902a5237ee7 isovalent/agw:v1.19.0-pre.8-151 "/usr/src/app/init.sh" 2 weeks ago Up 2 weeks (healthy) HypershieldAgent
Check DPU registration statusπ
Verify that the DPUs are registered with the AGW:
switch# run bash sudo docker exec -it HypershieldAgent ./agwctl show_dpu
Sample output:
lastPing healthy dpu uid hardware agent datapath dpuReboot policySync
1s true 1 169.254.151.1 giglio v1.19.0-pre.8-150-ge2ba52cc 1.150.2 13 true
1s true 2 169.254.159.1 giglio v1.19.0-pre.8-150-ge2ba52cc 1.150.2 13 true
Key health indicators:
Field |
Healthy value |
Description |
Unhealthy sign |
|---|---|---|---|
healthy |
true |
DPU is operational |
false β DPU has failed health checks |
lastPing |
1-2s |
Recent heartbeat received |
>10s β communication issues between DPU and AGW |
policySync |
true |
Policies are synchronized |
false β policy distribution failure |
DPU health checksπ
Various checks to perform on a DPU:
dpu1# dpctl hs policies show # loaded policies
dpu1# dpctl show flow # detailed flow table dump
dpu1# pdsctl show port statistics # per-port counters and errors
dpu1# dpctl show pipeline statistics drop # pipeline drop statistics (check for errors)
Switch not discoveredπ
Possible symptom: a SmartSwitch CR remains in a pending state
Run these commands on the management VM.
kubectl describe smartswitch -n hypershield <switch-name>
kubectl logs -n hypershield deployments/hubble-cpc | grep <switch-name>
AGW not connected to control planeπ
Possible symptoms:
a Smart Switch CR is not created or remains in a pending state
a Smart Switch does not receive updated policies or configurations
policy changes on the control plane is not reflected on DPUs
An ordered series of diagnostic steps are recommended.
Perform all commands on a switch console.
Step 1: Test controller connectivityπ
On a switch console:
switch# service system hypershield test controller connection
Sample successful output:
==============================
Running config checks
==============================
Using source-interface loopback0 for controller connection
Controller connection status: [success]
Controller reason: [connected ok with Hypershield controller]
Controller endpoint: 10.62.156.185:6443
=================================================
Starting network connectivity checks on the switch
=================================================
Not using proxy for controller connection
Using curl to check connection to 10.62.156.185 port 6443
Curl successfully connected to 10.62.156.185:6443.
Things to check if the above fails:
verify network routing to control plane
check firewall rules for port 6443
verify source interface configuration
Step 2: Verify AGW configurationπ
Check that the AGW has the correct Kubernetes API endpoint and credentials:
switch# run bash sudo docker exec -it HypershieldAgent ./agwctl show_tokens
Example output:
k8s_controller_url=https://10.62.156.185:6443
k8s_service_account=smartswitch
k8s_namespace=hypershield
k8s_token=<token>
Verify:
k8s_controller_urlmatches your control plane endpointk8s_service_accountis smartswitchk8s_namespaceis hypershieldk8s_tokenis present (not empty)
Things to check if the configuration is incorrect:
re-register the Smart Switch with the correct endpoint
check that the registration token has not expired
Step 3: Verify active connectionπ
Confirm that the AGW has an established TCP connection to the Kubernetes API:
switch# run bash sudo docker exec -it HypershieldAgent netstat -an | grep ESTABLISHED | grep 6443
Expected output:
tcp 0 0 127.254.254.2:46018 10.62.156.185:6443 ESTABLISHED
Things to check if no connection is shown:
check the AGW container logs:
run bash sudo docker logs HypershieldAgentverify
ServiceAccounttoken is valid on control planecheck network connectivity with ping or curl from the switch
Step 4: Check AGW logsπ
View the AGW logs for authentication or connection errors:
switch# run bash sudo docker logs HypershieldAgent --tail 100
DPU issuesπ
Diagnostic commands to perform on a switch console:
switch# show dpu internal info
switch# show dpu internal msgs
switch# show dpu internal event-history errors
switch# show dpu internal event-history msgs
Capacity issuesπ
Policy capacity exceededπ
Possible symptoms: new policies fail with capacity errors
Error codes:
Error code |
Description |
|---|---|
ERR_CODE_POLICY_MAX_RULES_EXCEEDED (4096) |
Single policy exceeds 1K/4K limit |
ERR_CODE_POLICY_SRC_IP_MAX_TREE_NODES_EXCEEDED (129024) |
Too many source IP prefixes |
ERR_CODE_POLICY_DST_IP_MAX_CLASSES_EXCEEDED (129029) |
Too many destination IP groups |
ERR_CODE_POLICY_DST_PORT_PROTO_MAX_TREE_NODES_EXCEEDED (129034) |
Too many port combinations |
Run the below command on the switch console to check the AGW logs:
switch# run bash sudo docker exec -it HypershieldAgent ./agwctl show_logs | grep -i "exceeded"
A possible solution is to optimize the policies:
Technique |
Avoid |
Prefer |
|---|---|---|
Use larger CIDR prefixes |
256 x /32 routes |
1 x /24 network |
Use port ranges |
1001 individual ports |
8000-9000 range |
Monitoring capacityπ
Invoke the below commands from within a DPU shell.
Perform a quick capacity check:
dpu1# dpctl show pipeline statistics drop
View a summary of loaded security policies:
dpu1# dpctl hs policies show --summary
Performance issuesπ
Invoke the below commands from within a DPU shell or the switch console directly.
High latencyπ
Possible symptoms: increased packet latency through a switch
Check DPU load:
switch# top
Check port statistics:
dpu1# pdsctl show port statistics
Possible solutions are to:
review policy complexity (reduce cartesian products)
check for hardware issues
verify DPU firmware version
Packet dropsπ
Possible symptoms: traffic being dropped unexpectedly
Check drop statistics:
dpu1# dpctl show pipeline statistics drop
Enable drop logging:
dpu1# dpctl hs logging drop start
Check drops:
dpu1# dpctl hs logging drop status
dpu1# dpctl hs logging drop summary
Stop logging drops:
dpu1# dpctl hs logging drop stop
Write drop logging to file and analyze with jq:
dpu1# dpctl hs logging drop write --format json --file /tmp/drops.json
switch# cat /tmp/drops.json | jq '.entries[] | {src: .source_ip, dst: .dest_ip, policy: .policy_id}'
Upgrade issuesπ
AGW error: package already existsπ
When installing a new AGW and activating it in the same operation, you may encounter an error that states the package already exists:
switch# install add bootflash:agent-1.19.0.pre.8.273-10.6.3q.x86_64.rpm activate upgrade
Example error output:
Adding the patch (/agent-1.19.0.pre.8.273-10.6.3q.x86_64.rpm)
[####################] 100%
Install operation 16 failed because this package already exists. at Thu Jun 4 23:04:34 2026
Try to re-activate it:
switch# install activate agent-1.19.0.pre.8.273-10.6.3q.x86_64.rpm
Sample successful output:
Groups-RPM Database 58 MB/s | 60 kB 00:00
Local RPM Database 1.5 MB/s | 1.5 kB 00:00
Local RPM Database 1.4 MB/s | 1.4 kB 00:00
Thirdparty RPM Database 1.5 MB/s | 1.5 kB 00:00
Groups-RPM Database 2.2 MB/s | 2.3 kB 00:00
[####################] 100%
Install operation 17 completed successfully at Thu Jun 4 23:07:43 2026
Enable Gateway API post bootstrapπ
During the installation of Hypershield on vSphere, a Gateway API enablement check was performed internally. Use the guidance on this page to enable Gateway API in case that check was not successful.
Patch the mgmtcluster to enable Gateway API:
kubectl patch mgmtcluster -n mgmt "${CLUSTER_NAME}" -p '{"spec":{"components":{"gatewayAPI":{"enabled":true}}}}' --type=merge
The expected output is:
mgmtcluster.platform.isovalent.com/control-plane patched
Wait for the change to propagate. This takes approximately five minutes.
Then restart Cilium:
kubectl delete pod -l app.kubernetes.io/part-of=cilium -n kube-system
Verify Cilium configurationπ
L2 Announcementπ
kubectl -n kube-system exec ds/cilium -c cilium-agent -- cilium-dbg config --all | grep EnableL2Announcements
The expected output is:
EnableL2Announcements : true
If not true, restart Cilium again:
kubectl delete pod -l app.kubernetes.io/part-of=cilium -n kube-system
Gateway classπ
kubectl get gatewayclasses.gateway.networking.k8s.io cilium
The expected output is:
NAME CONTROLLER ACCEPTED AGE
cilium io.cilium/gateway-controller True 4m
Collect troubleshooting information for Hypershieldπ
When you encounter unexpected behaviour with Hypershield, collecting troubleshooting information and providing it to Cisco Support is an important first step in having your concerns addressed in the most efficient way possible.
This pages shows how to collect three distinct bundles of information:
one from the environmentβs control plane
two from an individual Smart Switch
Tip
You will need to specify the path of the output file for each bundle of information. Use a meaningful filename that includes a timestamp.
Collect control plane dataπ
Access the management VM and run the following:
isoctl sysdump \
--kubeconfig /home/iep/hypershield/control-plane.yaml \
--hypershield \
--output-filename isoctl-sysdump-hypershield-control-plane-2026-10-31
The above captures the following:
Pod logs
CRD state
CNPG diagnostics
Hypershield-specific telemetry
The command places all this information into a single file named isoctl-sysdump-hypershield-control-plane-2026-10-31 .
Collect switch dataπ
Access an affected switch and run the given commands on its console. There are two data bundles to collect from a switch.
First bundle:
switch# show tech-support service-acceleration > bootflash:show-tech-svc-accel.txt
The above captures:
AGW logs
DPU logs
core dumps
end-to-end diagnostic state
The command places all this information into a single file named bootflash:show-tech-svc-accel-2026-10-31.txt .
Second bundle:
switch# show tech-support dpu module all > bootflash:show-tech-dpu-all.txt
The above captures:
DPU firmware versions
hardware health
memory utilization
per-module operational state
The command places all this information into a single file named bootflash:show-tech-dpu-all-2026-10-31.txt .
Provide the output filesπ
You should now have three files:
isoctl-sysdump-hypershield-control-plane-2026-10-31
bootflash:show-tech-svc-accel-2026-10-31.txt
bootflash:show-tech-dpu-all-2026-10-31.txt
Provide these files to the Cisco TAC team.
Hypershield resourcesπ
These pages provide the background you need to plan, operate, and reason about Hypershield deployments in production. The material here complements the conceptual, procedural, and reference documentation.
Use these pages to:
Understand the caveats and limitations of the current release, so you can plan deployments around known constraints and their workarounds.
Anticipate failure scenarios and understand how Hypershield behaves when individual components or dependencies fail.
Consult scalability testing results to size deployments against validated limits.
Caveats and limitationsπ
This page describes the current caveats and limitations of the Hypershield platform, along with best practices to help guide the Operator.
Description |
Component |
Impact |
Workaround |
|---|---|---|---|
Policy and network object payload size |
Hypershield Controller |
A SmartSwitchNetworkPolicy or NetworkObjectGroup serialized above 1.5 MB can fail when the follower Kubernetes API materializes it. |
Keep each object below 1.5 MB. Split large policies or object groups into smaller reusable objects. |
OIDC refresh-token flow |
Hypershield Controller |
Users must authenticate again when the ID token expires, even when the identity provider supplies offline access. |
Plan for periodic re-authentication and choose an appropriate ID-token lifetime in the identity provider. |
Event-history CSV export |
Hypershield Controller |
A CSV export contains only the events displayed on the current page, not the complete filtered result set. |
Export each page and combine the files, or review the complete history in Timescape. |
Leader enrollment event visibility |
Hypershield Controller |
Leader enrollment events are not shown in event history, so enrollment does not create a visible audit entry in the UI. |
Record leader enrollment through the organization change-control process. |
Telemetry configuration replacement |
Hypershield Controller / Hypershield Agent Gateway |
A pre-existing statically named syslog or IPFIX ConfigMap can prevent a new UI-managed configuration from reaching previously configured Smart Switches. |
Remove the obsolete ConfigMap from the affected follower cluster, then reapply the telemetry configuration and verify delivery. |
VM live migration |
Hypershield Network Enforcer |
Live migration of a protected workload VM resets established TCP sessions that traverse DPU stateful inspection. |
Drain connections or schedule migration during a low-traffic maintenance window. |
Policy updates during control-plane disconnection |
Hypershield Agent Gateway |
A disconnected Smart Switch continues enforcing its last installed policy in a fail-closed posture, but it cannot receive new policy. |
Restore follower-to-switch connectivity before deploying policy changes. |
Policy restore after Smart Switch power cycle |
Hypershield Network Enforcer / Agent Gateway |
A power cycle clears in-memory DPU policy. Traffic is fail-closed until the switch reconnects and the control plane restores the current policy. |
Use a correctly configured HA partner to maintain enforcement while the rebooted switch recovers. |
Broadcast, unknown-unicast, and multicast traffic |
Hypershield Network Enforcer |
BUM traffic bypasses the DPU and is not evaluated by Hypershield policy. |
Use NX-OS controls such as storm control or IGMP snooping; do not rely on Hypershield policy for BUM filtering. |
Bidirectional policy on L2-only switches |
Hypershield Network Enforcer |
On a switch without routed interfaces, policy can be unidirectional if both source and destination VLANs are not steered to the DPU. |
Configure both VLAN IDs in the service firewall block and validate traffic in both directions. |
Inter-VRF mode counters |
Hypershield Network Enforcer |
Inter-VRF mode is enabled by default. The first packet makes two NPU-to-DPU passes, which can double-count dropped packets on the service Ethernet interface. |
Account for the double count in monitoring. Disable inter-VRF mode only for an intra-VRF-only design and only through an approved procedure. |
Very large policy deployment |
Hypershield Network Enforcer / Agent Gateway |
Applying more than 500,000 rules can temporarily reduce throughput while the receiving Smart Switch programs the policy. |
Schedule very large deployments during lower traffic and monitor switch health and policy status until synchronization completes. |
Policy references a missing VRF |
Hypershield Controller |
The policy remains Pending and rules that depend on the missing VRF are not enforced on that Smart Switch. |
Configure the referenced VRF. If its absence is intentional, treat Pending as expected for that target. |
Policy references a missing VLAN |
Hypershield Controller |
The policy remains Pending and rules that depend on the missing VLAN are not enforced on that Smart Switch. |
Configure the referenced VLAN. If its absence is intentional, treat Pending as expected for that target. |
Mixed IPv4/IPv6 endpoint rule |
Hypershield Controller |
A policy that pairs principal and resource from different IP families remains Pending and is not enforced. |
Use IPv4-to-IPv4 or IPv6-to-IPv6 source and destination pairs. |
Policies reference mismatched VLAN IDs in Network Object Groups |
Hypershield Controller |
Policies using VLAN-based objects are only enforced when principal and resource VLANs match. Use VRF-based objects for inter-VLAN traffic. |
For inter-VLAN enforcement, create policies using network object groups that leverage VRF, not VLAN, IDs. |
Failure scenariosπ
This page lists failure scenarios for the Hypershield platform. Failure scenarios are known situations that negatively impact a deployment. In particular, how using a feature in a specific manner can cause problems. Each entry includes preventative strategies and/or mitigation steps.
# |
Description |
Impact |
Workaround |
|---|---|---|---|
1 |
Policy changes cannot be pushed to a switch that is disconnected from the controller. The switch enforces its existing policy set in a fail-closed posture during the outage, but no new policies can be deployed until connectivity is restored. |
Policy operations are suspended for the disconnected switch only. |
Restore controller-to-switch connectivity before attempting policy updates. Do not plan policy rollouts during maintenance windows when the switch will be disconnected. |
Scalability testingπ
This page lists the results of scalability testing performed for the Hypershield platform.
Network Enforcer (per switch)π
Metric |
Published target |
Notes |
|---|---|---|
Maximum throughput |
95% of available PCIe bandwidth |
two DPUs per switch; target applies per DPU |
Maximum new connections per second |
1 million |
CA2 published limit |
Maximum policy rules at switch |
1 million |
CA2 published limit |
Maximum concurrent connections |
to be confirmed |
contact Cisco for current engineering guidance |
Latency added by DPU inspection |
to be confirmed |
contact Cisco for current engineering guidance |
Controller scaleπ
Metric |
Limit |
|---|---|
Controllers per tenant |
1 |
Maximum policies per policy group |
300 policies / 260,000 policy rules |
Total policy rules (SCC MP + Controller) |
8.7 million (based on 100 policies per group, 130,000 rules each) |
Number of ToR switches per fabric |
to be confirmed by engineering |
Number of VRFs supported |
to be confirmed by engineering |
Number of Network Object Groups supported |
to be confirmed by engineering |
Hypershield referenceπ
This section provides reference information for the Hypershield platform.
CLI command usageπ
This page helps orientate you in terms of how and where some CLI commands are invoked when working with Hypershield.
Command promptsπ
The command prompt (or a lack of one) provided in commands indicates in what context the command should be run:
Prompt |
Context |
|---|---|
bash-5.2# |
the NX-OS Bash shell on a switch |
switch# |
the switch console |
dpu<number># |
the DPU shell on a switch |
HypershieldAgent:/usr/src/app# |
the AGW shell on a switch |
The lack of a specialized prompt represents the management VM.
Controller commandsπ
Controller commands, typically the kubectl command but also general Linux
commands, are invoked on the management VM (or any host that has access to the
Kubernetes control plane).
Smart Switch commandsπ
To query for data on a switch, you can interact with the NX-OS bash shell, the local AGW, or a specific DPU:
Command |
Purpose |
|---|---|
various Bash commands |
interacts with the NX-OS operating system (Linux) |
agwctl |
interacts with the AGW |
dpctl |
interacts with a DPU |
pdsctl |
interacts with a DPU |
The Bash shell is called from the switch console:
switch# run bash sudo su
bash-5.2# <command>
bash-5.2# uname -a
bash-5.2# exit
switch#
The two DPU commands are invoked from a DPU shell, which is called from the switch console. For DPU 1:
switch# attach dpu 1
dpu1# dpctl <subcommand>
The single AGW command is invoked from within the agent container shell, which is also called from the switch console:
switch# run bash sudo docker exec -it HypershieldAgent bash
HypershieldAgent:/usr/src/app# ./agwctl <subcommand>
HypershieldAgent:/usr/src/app# exit
switch#
Timescape API usageπ
Timescape provides a versioned public REST API for supported network object
and security policy operations. Public API paths use /api/hs/v1 on your
deploymentβs Timescape URL.
Note
Documentation pages give preference to the web UI, but where an API alternative exists, it accompanies the web UI instructions in a collapsible Use the API section.
Timescape public API referenceπ
For the complete contract, see the Timescape public API reference. The reference also describes authentication and authorization, requests and responses, and errors and status codes.
Prerequisitesπ
Before you use the examples, ask your Timescape administrator for the HTTPS URL and any deployment-specific credentials. You might also need:
a certificate authority (CA) certificate if your system does not trust the deploymentβs CA
a client certificate and private key if the deployment requires mutual TLS (mTLS)
a JSON Web Token (JWT) bearer token if public API role-based access control (RBAC) is enabled
The administrator must expose the API and configure TLS before clients can connect. Configure the deployment URL without a path. The examples use Bash arrays:
export TIMESCAPE_URL="https://timescape.example.com"
export TIMESCAPE_API="${TIMESCAPE_URL%/}/api/hs/v1"
TIMESCAPE_CURL_ARGS=(--fail-with-body --silent --show-error)
For a private CA, add its certificate to your system trust store or pass it to
curl:
TIMESCAPE_CURL_ARGS+=(--cacert "/path/to/timescape-ca.pem")
If the deployment requires mTLS, add the client certificate and private key:
TIMESCAPE_CURL_ARGS+=(
--cert "/path/to/timescape-client.pem"
--key "/path/to/timescape-client-key.pem"
)
Store the client certificate and private key in protected files. Do not use
--insecure to bypass certificate validation.
Public API RBACπ
A client certificate does not replace a bearer token when public API RBAC is enabled.
When public API RBAC is enabled, API clients send an identity-provider-issued JSON Web Token (JWT) that the deployment accepts as a bearer token. For details, see Authentication and authorization in the API reference.
Read the token without adding it to your shell history, then add the authorization header:
read -r -s -p "Timescape API token: " TIMESCAPE_TOKEN
echo
TIMESCAPE_CURL_ARGS+=(
--header "Authorization: Bearer ${TIMESCAPE_TOKEN}"
)
When public API RBAC is disabled, Timescape does not require its bearer token. A gateway or ingress can still require other credentials. Confirm the access requirements with your administrator, then verify access by requesting the Timescape build information:
curl "${TIMESCAPE_CURL_ARGS[@]}" \
--header "Accept: application/json" \
"${TIMESCAPE_API}/meta/build-info"
Clean the shell environmentπ
When youβre finished working with the API, remove the token and request arguments from your shell:
unset TIMESCAPE_TOKEN TIMESCAPE_CURL_ARGS
Glossaryπ
Terms used throughout this guide, listed alphabetically. Where a term has a precise meaning specific to the Hypershield platform - distinct from its general networking meaning - that distinction is noted.
- active/activeπ
A high-availability model in which two Smart Switches operate simultaneously, each processing live traffic. Neither switch is idle or in standby. Contrast with active/standby, which Hypershield does not use. See also: HA peer link.
- AGWπ
Agent Gateway. The software component that runs on a Nexus Smart Switch and serves as the bridge between the Hypershield control plane and the AMD DPU. The AGW receives compiled policy from the control plane over gRPC, translates it into DPU forwarding rules, and programs the DPU datapath. The AGW also collects DPU status, health metrics, and log export state and reports them back to the control plane. The agwctl CLI tool communicates directly with the AGW.
- agwctlπ
The command-line tool used on a Nexus Smart Switch (via the NX-OS shell) to interact with the Agent Gateway and inspect DPU state, including the current connection status, active policies, HA pair state, and syslog export configuration.
- CIDRπ
Classless Inter-Domain Routing. An IP address range expressed in prefix notation (for example: 10.10.20.0/24). CIDRs are the primary way to identify source and destination endpoints in
SmartSwitchNetworkPolicyrules andNetworkObjectGroupdefinitions. Also referred to as ipBlock in the policy schema.- ClickHouseπ
The time-series database that backs Timescape. ClickHouse stores event log data, policy history, and observability records. It is deployed as part of the Timescape installation and does not require separate administration under normal operations.
- ConfigMapπ
A Kubernetes object used to deliver configuration data to workloads. In Hypershield, two
ConfigMapobjects are used to configure DPU logging behavior: smartswitch-log-config (syslog export settings) and smartswitch-flow-export-config (IPFIX export settings). The Agent Gateway reads both objects and programs the DPU accordingly.- Connectedπ
The expected steady-state status of a registered Smart Switch as seen from the control plane. A switch in Connected state has an active gRPC channel to the control plane, has received its policy set, and is enforcing. Pending indicates the registration handshake has not completed. Disconnected indicates the gRPC channel has been severed.
- control plane linkπ
The IP path between the Hypershield control plane and a Smart Switchβs management interface (the source-interface loopback). The control plane uses this path to push policy to the switch. If this link goes down, the switch enters policy hold-down mode. Not to be confused with the HA peer link, which connects the two switches in an HA pair.
- CRDπ
Custom Resource Definition. A Kubernetes extension mechanism that defines new object types. Hypershield uses three CRDs:
SmartSwitch,SmartSwitchNetworkPolicy, andNetworkObjectGroup. These are installed on a control plane cluster and are the primary objects an admin interacts with via kubectl.- default-denyπ
The implicit policy installed on the DPU datapath at switch registration. Hypershield is deny-by-default - you build an allow-list on top of this baseline. The default-deny rule cannot be removed; it is the foundation of the fail-closed security posture.
- dpctlπ
A low-level DPU diagnostic tool accessible on the Smart Switch. Used to inspect DPU internal state directly. Prefer agwctl for routine operational tasks; dpctl is for detailed DPU-level investigation.
- DPUπ
Data Processing Unit. The DPU performs stateful L3/L4 connection tracking and per-flow policy evaluation at line rate inside the switch, eliminating the need to forward traffic to an external firewall. The DPU is the actual enforcement point - the control plane and AGW exist to program and manage it.
- DPU traffic steeringπ
The NX-OS mechanism that redirects traffic from the NPU (the switchβs normal forwarding path) to the DPU for inspection. Steering is configured per VRF and per VLAN using the service firewall block. Traffic in VRFs or VLANs that are not listed in service firewall is not steered and bypasses the DPU entirely. Steering is implemented via a module-affinity mode; see dynamic module affinity and pinned module affinity.
- dynamic module affinityπ
This mode has NX-OS assign each VRF to a specific DPU automatically based on the VRF name - the same VRF always lands on the same DPU, ensuring consistent stateful tracking without manual assignment. This mode is the default steering mode and is implemented with the symmetric hashing algorithm. Contrast with pinned module affinity.
- ECMPπ
Equal-Cost Multi-Path. A routing behavior where traffic is distributed across multiple equal-cost paths in the fabric. In an active/active Smart Switch HA pair, ECMP ensures that if one switch loses an uplink, traffic reroutes through the fabric to reach the partner switch, without the need for an explicit failover event.
- enforcement pointπ
Any location, such as a Smart Switch, where security policies are enforced.
- etcdπ
The distributed key-value store that is the persistent data layer of the Hypershield platform. etcd stores all Kubernetes object state including
SmartSwitchNetworkPolicyandNetworkObjectGroupresources. The control plane cluster runs a three-node etcd quorum. At least two of the three etcd members must be healthy for the control plane to accept new API requests.- etcdctlπ
The command-line tool for inspecting etcd cluster state. Used primarily to verify quorum health. Quorum requires at least two of three members to report healthy.
- fail-closedπ
The behavior of the DPU when it lacks explicit policy guidance for a traffic flow - it drops the traffic rather than permitting it. This applies in three scenarios: (1) at switch registration, before any allow policies are created; (2) during the reboot window before policy is restored from the control plane; (3) when the DPU has no match for a flow against any rule (default-deny). Hypershield never fails open.
- feature service-accelerationπ
The NX-OS feature flag that must be enabled on a Smart Switch before the Hypershield service can be configured. This enables the NX-OS service acceleration subsystem that manages DPU steering and integration.
- gRPCπ
The remote procedure call protocol used for communication between the Hypershield control plane and the Smart Switches. These channels use mutual TLS (mTLS) for authentication.
- HA peer linkπ
The dedicated network connection between the two Smart Switches in an active/active HA pair. Carries HA heartbeat traffic and DPU state synchronization. Not to be confused with a vPC peer-link, which is the NX-OS vPC control path.
- hold-downπ
The behavior of the DPU when the control plane link to the Hypershield control plane is severed. The DPU continues enforcing the complete policy set it held at the time the link went down. It does not flush rules, relax policy, or fail open. New policy changes cannot be pushed to the switch until connectivity is restored. This is the intended behavior - a management outage must never degrade the security posture.
- hubble-rbacπ
A JWT claim carrying the callerβs role(s). The configured OIDC provider is expected to include this claim in every issued token. Timescape reads the claim value to determine which API operations the caller may perform; a missing/invalid/expired token produces an HTTP 401, whereas a token lacking appropriate authorization results in a 403.
- in-serviceπ
The NX-OS keyword that activates the Hypershield service firewall configuration and begins traffic steering to the DPU. Must be present in the service firewall block for any VRF or VLAN steering to take effect. Without it, the DPU is configured but not receiving traffic.
- ipBlockπ
The policy schema field name for an inline CIDR source or destination in a
SmartSwitchNetworkPolicyrule. An alternative to networkRef. Use ipBlock for one-off rules; use networkRef with aNetworkObjectGroupfor subnets that appear in multiple policies.- isoctlπ
The Hypershield lifecycle management CLI tool. Used for control plane cluster bootstrap, component installation, and future upgrades.
- JWTπ
JSON Web Token. A compact, signed token format standardised in RFC 7519. When public API RBAC is enabled, Timescape accepts JWTs issued by a configured OIDC provider for public API authentication; clients present them using the Bearer authentication scheme. Token issuance, claims, and lifetime are deployment-specific.
- Keycloakπ
An open-source identity and access management server. Keycloak is one supported OIDC provider for Hypershield; any standards-compliant OIDC provider can be used.
- management VMπ
The virtual machine deployed from the Hypershield bootstrap OVA into vSphere. It serves as the installer host from which all bootstrap and installation steps are run using
isoctl. Deploying the management VM is the first step of a vSphere installation.- mTLSπ
mutual TLS. The authentication mechanism used for the gRPC channel between the Hypershield control plane and each Smart Switch. Both the control plane and the switch present certificates during the handshake, establishing bidirectional trust. The initial registration token bootstraps the certificate exchange when the switch is registered.
- NetworkObjectGroupπ
A Kubernetes Custom Resource that defines a named, reusable collection of network objects. This CRD is referenced by name in
SmartSwitchNetworkPolicyrules. When a NetworkObjectGroup is updated, all policies that reference it automatically incorporate the change on the next policy push. The kubectl resource name isnetworkobjectgroup.- network objectπ
A network object represents an individual network parameter such as an endpoint, a CIDR range, VRF, or VLAN. Rules reference network objects directly, or collectively with a
NetworkObjectGroup.- networkRefπ
The policy schema field that references a
NetworkObjectGroupby name as a source or destination in a policy rule. Using networkRef makes policies more readable and easier to maintain than embedding CIDRs directly.- NPUπ
Neural Processing Unit. A specialized processor designed to accelerate AI and machine learning tasks. An NPU is designed to minimize power consumption for single small operations that run hundreds of times per minute.
- NX-OSπ
The operating system that runs on Cisco Nexus switches. NX-OS hosts the Agent Gateway (AGW) process, manages the DPU hardware, and provides the service system hypershield configuration block through which the switch is connected to the control plane.
- OIDCπ
OpenID Connect. The identity federation protocol used by Hypershield for user authentication. Hypershield supports any standards-compliant OIDC provider; the operator must choose and configure one.
- OVAπ
Open Virtualization Appliance. The VMware virtual machine image format used to deliver the Hypershield Installer Appliance. Deployed into vSphere using the scripted
import-ova.shhelper or through the vSphere UI in either easy or advanced mode.- PCIe bandwidthπ
The internal bus bandwidth available to each DPU within the Smart Switch. Hypershieldβs throughput target is expressed as a percentage of available PCIe bandwidth (95%). This value is hardware-dependent and varies by switch model and DPU configuration.
- pinned module affinityπ
A legacy VRF steering mode where each VRF is manually assigned to a specific DPU module number. Contrast with dynamic module affinity.
- policy domainπ
A portion of the environment that is treated as a single unit for security purposes. Segmentation designs are different ways of structuring policy across policy domains; zone-based segmentation defines broad policy domains, while workload-centric segmentation defines narrow ones.
- policy hold-downπ
See hold-down.
- policy intentπ
The desired state of security policy as declared in
SmartSwitchNetworkPolicyobjects on the control plane. Distinct from DPU state, which is the actual set of rules programmed into the DPU datapath. In normal operation these are identical. During a control plane disconnect, DPU state is frozen at the last-pushed intent.- protoPortsπ
The policy schema field that specifies the protocol and port constraints for a policy rule. Each entry in the protoPorts array has a protocol (TCP, UDP, or ICMP) and an optional port number. A rule without protoPorts matches all traffic between the specified source and destination regardless of protocol or port.
- registration tokenπ
A one-time credential generated on the control plane and submitted from the Smart Switch NX-OS CLI during registration. The token bootstraps the mTLS trust between the control plane and the switch. Tokens are single-use - generate a new token if registration is interrupted before the switch reaches Connected status.
- SCCπ
Security Cloud Control. Ciscoβs cloud-based management platform. Hypershield can be managed either via SCC or via Timescape.
- service firewallπ
The NX-OS configuration that specifies which VRFs and VLANs should have their traffic steered to the DPU for inspection. Only traffic in VRFs or VLANs listed here is inspected; all other traffic bypasses the DPU. Steering is activated when
in-serviceis present at the end of the configuration block.- shadowed ruleπ
A policy rule that can never be evaluated because an earlier, more-general rule in the same policy matches all traffic that the shadowed rule would match. The shadowed rule is effectively dead. Fix it by reordering rules so more-specific rules appear before broader rules.
- Smart Switchπ
A Cisco Nexus N9300 Series switch that contains embedded AMD DPUs. In the context of Hypershield, βSmart Switchβ specifically means a DPU-capable switch that can be used as a Hypershield enforcement point.
- SmartSwitchπ
The Kubernetes Custom Resource (CRD) that represents a registered Smart Switch on the control plane. Each registered switch has a corresponding
SmartSwitchobject. Its status field reflects the switchβs connection state (Connected, Pending, or Disconnected).- SmartSwitchNetworkPolicyπ
SSNP. The Kubernetes Custom Resource (CRD) that represents a Hypershield security policy. Each SSNP contains one or more rules, each with an action (allow or deny), a source, a destination, and optional protocol/port constraints. When an SSNP is created or modified, the control plane compiles it into DPU forwarding rules and pushes those rules to all registered Smart Switches. The kubectl resource name is
smartswitchnetworkpolicy(plural:smartswitchnetworkpolicies).- source-interfaceπ
The NX-OS loopback interface whose IP address the Smart Switch uses as its source address when communicating with the Hypershield control plane. The control plane must be able to reach this IP address. Configured in the service system hypershield block. A separate source-interface under high-availability specifies the IP used for HA heartbeat traffic between the switch pair.
- SSNPπ
Abbreviation for
SmartSwitchNetworkPolicy. Used informally in this guide and in team communications.- stateful inspectionπ
The DPUβs connection tracking capability. Rather than evaluating each packet in isolation, the DPU maintains a state table of active TCP/UDP connections and evaluates policy at the connection level. New connections are evaluated against the policy set; established connections that matched an allow rule continue to be forwarded without per-packet re-evaluation. Stateful inspection is the primary DPU enforcement capability.
- symmetric hashingπ
The algorithm used in dynamic module affinity DPU traffic steering mode. It distributes individual flows across DPUs based on the connectionβs 5-tuple (source/destination IP, port, protocol). Configured in the NX-OS service firewall block.
- Timescapeπ
The on-prem web UI and public REST API for Hypershield. Timescape provides policy and network object management, event log browsing, and observability. By default, Timescape is not exposed outside the control plane. An administrator configures a supported exposure method with TLS; the resulting URL is deployment-specific. User authentication is typically integrated with OpenID Connect (OIDC).
- Top-of-rackπ
A deployment topology in which the Smart Switch serves as the access-layer leaf switch, with workloads connected directly to it. All traffic entering or leaving those workloads passes through the DPU for inspection. Contrast with Zone topology.
- verdictπ
The policy evaluation outcome for a traffic flow: allow or deny.
- vPCπ
Virtual Port Channel. A Cisco NX-OS feature that allows two physical switches to appear as a single logical switch to downstream devices, enabling dual-homed server connections. In a Top-of-rack topology Hypershield deployment, the two Smart Switches in the HA pair are typically configured as a vPC pair, with the vPC peer-link carrying vPC control traffic. The Hypershield HA peer link is separate from the vPC peer-link.
- VRFπ
Virtual Routing and Forwarding. A network virtualization construct that creates multiple independent routing tables within a single switch. In Hypershield, VRFs are the primary unit of traffic steering - you specify which VRFs should have their traffic inspected by the DPU. Policy rules can target specific VRFs to control inter-VRF traffic flows (e.g., production VRF to management VRF).
- VXLANπ
Virtual Extensible LAN. A network encapsulation protocol that tunnels Ethernet frames inside UDP packets to extend Layer 2 networks over a Layer 3 underlay. In Zone topology deployments, traffic arrives at the Smart Switch via VXLAN from the border leaf. The VXLAN encapsulation is terminated at the border leaf before the traffic is handed to the Smart Switch.
- Zone topologyπ
A deployment topology in which the Smart Switch sits inline behind a border leaf switch. Traffic arrives at the Smart Switch via VXLAN or VLAN handoff from the border leaf, passes through the DPU, and returns to the border leaf. Contrast with Top-of-rack topology.
Platform information and supportπ
Open a support caseπ
Your first point of contact for Hypershield support is the Cisco TAC team (Technical Assistance Center).
Contact technical supportπ
To submit a support case, you can either use the online support portal or speak with a support representative by phone.
The online portal is the Support Case Manager.
The telephone numbers are listed here:
Region |
Phone number |
|---|---|
US |
1-800-553-2447 |
Europe |
+32 2 704 5555 |
Asia-Pacific |
+61 2 8446 7411 |
For other locations, consult Cisco Worldwide Support Contacts.
Gather informationπ
When opening a support case of a technical nature, provide as much detail as possible about the issue, including any relevant logs, configurations, and steps to reproduce the problem.
See Collect troubleshooting information for Hypershield, and either attach it to the case, or provide it using a secure file transfer service recommended by your support agent.