Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct {
InterfaceConfig `yaml:",inline"`
RoutingConfig `yaml:",inline"`
IPNeighborScanConfig `yaml:",inline"`
StealFirstNIC bool `json:"stealFirstNIC,omitempty"`
StealInterface string `json:"stealInterface,omitempty"`
STNSocketFile string `json:"stnSocketFile,omitempty"`
STNVersion uint8 `json:"stnVersion,omitempty"`
NatExternalTraffic bool `json:"natExternalTraffic,omitempty"`
EnablePacketTrace bool `json:"enablePacketTrace,omitempty"`
CRDNodeConfigurationDisabled bool `json:"crdNodeConfigurationDisabled,omitempty"`
IPAMConfig IPAMConfig `json:"ipamConfig"`
NodeConfig []NodeConfig `json:"nodeConfig"`
}
Config represents configuration for the Contiv agent. The path to the configuration file can be specified in two ways:
- using the `-contiv-config=<path to config>` argument, or
- using the `CONTIV_CONFIG=<path to config>` environment variable
type IPAMConfig ¶
type IPAMConfig struct {
UseExternalIPAM bool `json:"useExternalIPAM,omitempty"`
ContivCIDR string `json:"contivCIDR,omitempty"`
ServiceCIDR string `json:"serviceCIDR,omitempty"`
NodeInterconnectDHCP bool `json:"nodeInterconnectDHCP,omitempty"`
PodSubnetCIDR string `json:"podSubnetCIDR,omitempty"`
PodSubnetOneNodePrefixLen uint8 `json:"podSubnetOneNodePrefixLen,omitempty"`
VPPHostSubnetCIDR string `json:"vppHostSubnetCIDR,omitempty"`
VPPHostSubnetOneNodePrefixLen uint8 `json:"vppHostSubnetOneNodePrefixLen,omitempty"`
NodeInterconnectCIDR string `json:"nodeInterconnectCIDR,omitempty"`
VxlanCIDR string `json:"vxlanCIDR,omitempty"`
DefaultGateway string `json:"defaultGateway,omitempty"`
SRv6 SRv6Config `json:"srv6"`
}
IPAMConfig groups IPAM configuration options as basic data types and with JSON tags, ready to be un-marshalled from the configuration. The string fields are then parsed to *net.IPNet and returned as such in IPAMConfig structure.
type IPNeighborScanConfig ¶
type IPNeighborScanConfig struct {
// when enabled, IP neighbors should be periodically scanned and probed
// to maintain the ARP table
ScanIPNeighbors bool `json:"scanIPNeighbors,omitempty"`
IPNeighborScanInterval uint8 `json:"ipNeighborScanInterval,omitempty"`
IPNeighborStaleThreshold uint8 `json:"ipNeighborStaleThreshold,omitempty"`
}
IPNeighborScanConfig contains configuration related to IP neighbour scanning.
type InterfaceConfig ¶
type InterfaceConfig struct {
MTUSize uint32 `json:"mtuSize,omitempty"`
UseTAPInterfaces bool `json:"useTAPInterfaces,omitempty"`
TAPInterfaceVersion uint8 `json:"tapInterfaceVersion,omitempty"`
TAPv2RxRingSize uint16 `json:"tapv2RxRingSize,omitempty"`
TAPv2TxRingSize uint16 `json:"tapv2TxRingSize,omitempty"`
Vmxnet3RxRingSize uint16 `json:"vmxnet3RxRingSize,omitempty"`
Vmxnet3TxRingSize uint16 `json:"vmxnet3TxRingSize,omitempty"`
InterfaceRxMode string `json:"interfaceRxMode,omitempty"` // "" == "default" / "polling" / "interrupt" / "adaptive"
TCPChecksumOffloadDisabled bool `json:"tcpChecksumOffloadDisabled,omitempty"`
EnableGSO bool `json:"enableGSO,omitempty"`
}
InterfaceConfig contains configuration related to interfaces.
type NodeConfig ¶
type NodeConfig struct {
// name of the node, should match with the hostname
NodeName string `json:"nodeName"`
// node config specification can be defined either via the configuration file
// or using CRD
nodeconfigcrd.NodeConfigSpec
}
NodeConfig represents configuration specific to a given node.
type RoutingConfig ¶
type RoutingConfig struct {
// VRF IDs
MainVRFID uint32 `json:"mainVRFID,omitempty"`
PodVRFID uint32 `json:"podVRFID,omitempty"`
// Transportation used for node-to-node communication:
// 1. VXLAN overlay ("vxlan") encapsulates/decapsulates traffic between nodes using VXLAN.
// 2. SRv6 overlay ("srv6") encapsulates/decapsulates traffic between nodes using SRv6
// (segment routing based on IPv6).
// SRv6's steering and policy will be on ingress node and SRv6's localsid on egress node. This transportation
// expects ipv6 to be enabled (SRv6 packets=IPv6 packets using SR header extension).
// 3. Using none of the previous mentioned overlays ("nooverlay") and route traffic using routing
// tables/etc., e.g. if the nodes are on the same L2 network.
NodeToNodeTransport string `json:"nodeToNodeTransport,omitempty"`
// Enabled when routing for K8s service should be performed by using SRv6 (segment routing based on IPv6).
// The routing within the routing segments is done as normal IPv6 routing, therefore IPv6 must be enabled.
// This setting handles how packet is transported from service client to service backend, but not how is
// transported response packet(if any) from backend to service client. This is handled by non-service routing
// that uses on node-to-node part of route the "NodeToNodeTransport" setting. To communicate between nodes
// only using SRv6, set it to "srv6" (+ UseSRv6ForServices=true).
UseSRv6ForServices bool `json:"useSRv6ForServices,omitempty"`
// Enabled when Service Function Chaining for K8s service should be performed by using SRv6 (segment routing
// based on IPv6).
UseSRv6ForServiceFunctionChaining bool `json:"useSRv6ForServiceFunctionChaining,omitempty"`
// Enables usage of DX6 end function instead of DT6 end function for node-to-node communication using SRV6.
// This is limited to pod-to-pod communication use case in full IPv6 environment (pods and node fabric is IPv6)
UseDX6ForSrv6NodetoNodeTransport bool `json:"useDX6ForSrv6NodetoNodeTransport,omitempty"`
// when enabled, cluster IP CIDR should be routed towards VPP from Linux
RouteServiceCIDRToVPP bool `json:"routeServiceCIDRToVPP,omitempty"`
}
RoutingConfig groups configuration options related to routing.
type SRv6Config ¶
type SRv6Config struct {
ServicePolicyBSIDSubnetCIDR string `json:"servicePolicyBSIDSubnetCIDR,omitempty"`
ServicePodLocalSIDSubnetCIDR string `json:"servicePodLocalSIDSubnetCIDR,omitempty"`
ServiceHostLocalSIDSubnetCIDR string `json:"serviceHostLocalSIDSubnetCIDR,omitempty"`
ServiceNodeLocalSIDSubnetCIDR string `json:"serviceNodeLocalSIDSubnetCIDR,omitempty"`
NodeToNodePodLocalSIDSubnetCIDR string `json:"nodeToNodePodLocalSIDSubnetCIDR,omitempty"`
NodeToNodeHostLocalSIDSubnetCIDR string `json:"nodeToNodeHostLocalSIDSubnetCIDR,omitempty"`
NodeToNodePodPolicySIDSubnetCIDR string `json:"nodeToNodePodPolicySIDSubnetCIDR,omitempty"`
NodeToNodeHostPolicySIDSubnetCIDR string `json:"nodeToNodeHostPolicySIDSubnetCIDR,omitempty"`
SFCPolicyBSIDSubnetCIDR string `json:"sfcPolicyBSIDSubnetCIDR,omitempty"`
SFCServiceFunctionSIDSubnetCIDR string `json:"sfcServiceFunctionSIDSubnetCIDR,omitempty"`
SFCEndLocalSIDSubnetCIDR string `json:"sfcEndLocalSIDSubnetCIDR,omitempty"`
SFCIDLengthUsedInSidForServiceFunction uint8 `json:"sfcIDLengthUsedInSidForServiceFunction,omitempty"`
}
SRv6Config is part of IPAM configuration that configures SID prefixes of SRv6 components