util

package
v1.12.12 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 23, 2024 License: Apache-2.0 Imports: 42 Imported by: 10

Documentation

Index

Constants

View Source
const (
	CniTypeName = "kube-ovn"

	ControllerName = "kube-ovn-controller"

	AllocatedAnnotation  = "ovn.kubernetes.io/allocated"
	RoutedAnnotation     = "ovn.kubernetes.io/routed"
	RoutesAnnotation     = "ovn.kubernetes.io/routes"
	MacAddressAnnotation = "ovn.kubernetes.io/mac_address"
	IPAddressAnnotation  = "ovn.kubernetes.io/ip_address"
	CidrAnnotation       = "ovn.kubernetes.io/cidr"
	GatewayAnnotation    = "ovn.kubernetes.io/gateway"
	IPPoolAnnotation     = "ovn.kubernetes.io/ip_pool"
	BgpAnnotation        = "ovn.kubernetes.io/bgp"
	SnatAnnotation       = "ovn.kubernetes.io/snat"
	EipAnnotation        = "ovn.kubernetes.io/eip"
	FipFinalizer         = "ovn.kubernetes.io/fip"
	VipAnnotation        = "ovn.kubernetes.io/vip"
	ChassisAnnotation    = "ovn.kubernetes.io/chassis"
	VMAnnotation         = "ovn.kubernetes.io/virtualmachine"

	ExternalIPAnnotation         = "ovn.kubernetes.io/external_ip"
	ExternalMacAnnotation        = "ovn.kubernetes.io/external_mac"
	ExternalCidrAnnotation       = "ovn.kubernetes.io/external_cidr"
	ExternalSwitchAnnotation     = "ovn.kubernetes.io/external_switch"
	ExternalGatewayAnnotation    = "ovn.kubernetes.io/external_gateway"
	ExternalGwPortNameAnnotation = "ovn.kubernetes.io/external_gw_port_name"

	VpcNatGatewayAnnotation     = "ovn.kubernetes.io/vpc_nat_gw"
	VpcNatGatewayInitAnnotation = "ovn.kubernetes.io/vpc_nat_gw_init"
	VpcEipsAnnotation           = "ovn.kubernetes.io/vpc_eips"
	VpcFloatingIPMd5Annotation  = "ovn.kubernetes.io/vpc_floating_ips"
	VpcDnatMd5Annotation        = "ovn.kubernetes.io/vpc_dnat_md5"
	VpcSnatMd5Annotation        = "ovn.kubernetes.io/vpc_snat_md5"
	VpcCIDRsAnnotation          = "ovn.kubernetes.io/vpc_cidrs"
	VpcLbAnnotation             = "ovn.kubernetes.io/vpc_lb"
	VpcExternalLabel            = "ovn.kubernetes.io/vpc_external"
	VpcEipAnnotation            = "ovn.kubernetes.io/vpc_eip"
	VpcDnatEPortLabel           = "ovn.kubernetes.io/vpc_dnat_eport"
	VpcNatAnnotation            = "ovn.kubernetes.io/vpc_nat"
	OvnEipTypeLabel             = "ovn.kubernetes.io/ovn_eip_type"
	EipV4IpLabel                = "ovn.kubernetes.io/eip_v4_ip"

	SwitchLBRuleVipsAnnotation = "ovn.kubernetes.io/switch_lb_vip"
	SwitchLBRuleVip            = "switch_lb_vip"
	SwitchLBRuleSubnet         = "switch_lb_subnet"

	LogicalRouterAnnotation = "ovn.kubernetes.io/logical_router"
	VpcAnnotation           = "ovn.kubernetes.io/vpc"

	Layer2ForwardAnnotationTemplate = "%s.kubernetes.io/layer2_forward"
	PortSecurityAnnotationTemplate  = "%s.kubernetes.io/port_security"
	PortVipAnnotationTemplate       = "%s.kubernetes.io/port_vips"
	PortSecurityAnnotation          = "ovn.kubernetes.io/port_security"
	NorthGatewayAnnotation          = "ovn.kubernetes.io/north_gateway"

	AllocatedAnnotationSuffix       = ".kubernetes.io/allocated"
	AllocatedAnnotationTemplate     = "%s.kubernetes.io/allocated"
	RoutedAnnotationTemplate        = "%s.kubernetes.io/routed"
	RoutesAnnotationTemplate        = "%s.kubernetes.io/routes"
	MacAddressAnnotationTemplate    = "%s.kubernetes.io/mac_address"
	IPAddressAnnotationTemplate     = "%s.kubernetes.io/ip_address"
	CidrAnnotationTemplate          = "%s.kubernetes.io/cidr"
	GatewayAnnotationTemplate       = "%s.kubernetes.io/gateway"
	IPPoolAnnotationTemplate        = "%s.kubernetes.io/ip_pool"
	LogicalSwitchAnnotationTemplate = "%s.kubernetes.io/logical_switch"
	LogicalRouterAnnotationTemplate = "%s.kubernetes.io/logical_router"
	VlanIDAnnotationTemplate        = "%s.kubernetes.io/vlan_id"
	IngressRateAnnotationTemplate   = "%s.kubernetes.io/ingress_rate"
	EgressRateAnnotationTemplate    = "%s.kubernetes.io/egress_rate"
	SecurityGroupAnnotationTemplate = "%s.kubernetes.io/security_groups"
	LiveMigrationAnnotationTemplate = "%s.kubernetes.io/allow_live_migration"
	DefaultRouteAnnotationTemplate  = "%s.kubernetes.io/default_route"

	ProviderNetworkTemplate           = "%s.kubernetes.io/provider_network"
	ProviderNetworkErrMessageTemplate = "%s.provider-network.kubernetes.io/err_mesg"
	ProviderNetworkReadyTemplate      = "%s.provider-network.kubernetes.io/ready"
	ProviderNetworkExcludeTemplate    = "%s.provider-network.kubernetes.io/exclude"
	ProviderNetworkInterfaceTemplate  = "%s.provider-network.kubernetes.io/interface"
	ProviderNetworkMtuTemplate        = "%s.provider-network.kubernetes.io/mtu"
	MirrorControlAnnotationTemplate   = "%s.kubernetes.io/mirror"
	PodNicAnnotationTemplate          = "%s.kubernetes.io/pod_nic_type"
	VMAnnotationTemplate              = "%s.kubernetes.io/virtualmachine"

	ExcludeIpsAnnotation = "ovn.kubernetes.io/exclude_ips"

	IngressRateAnnotation = "ovn.kubernetes.io/ingress_rate"
	EgressRateAnnotation  = "ovn.kubernetes.io/egress_rate"

	PortNameAnnotation      = "ovn.kubernetes.io/port_name"
	LogicalSwitchAnnotation = "ovn.kubernetes.io/logical_switch"

	TunnelInterfaceAnnotation = "ovn.kubernetes.io/tunnel_interface"

	OvsDpTypeLabel = "ovn.kubernetes.io/ovs_dp_type"

	VpcNameLabel               = "ovn.kubernetes.io/vpc"
	SubnetNameLabel            = "ovn.kubernetes.io/subnet"
	ICGatewayLabel             = "ovn.kubernetes.io/ic-gw"
	ExGatewayLabel             = "ovn.kubernetes.io/external-gw"
	NodeExtGwLabel             = "ovn.kubernetes.io/node-ext-gw"
	VpcNatGatewayLabel         = "ovn.kubernetes.io/vpc-nat-gw"
	IPReservedLabel            = "ovn.kubernetes.io/ip_reserved"
	VpcNatGatewayNameLabel     = "ovn.kubernetes.io/vpc-nat-gw-name"
	VpcLbLabel                 = "ovn.kubernetes.io/vpc_lb"
	VpcDNSNameLabel            = "ovn.kubernetes.io/vpc-dns"
	QoSLabel                   = "ovn.kubernetes.io/qos"
	NodeNameLabel              = "ovn.kubernetes.io/node-name"
	NetworkPolicyLogAnnotation = "ovn.kubernetes.io/enable_log"

	VpcLastName     = "ovn.kubernetes.io/last_vpc_name"
	VpcLastPolicies = "ovn.kubernetes.io/last_policies"

	ProtocolTCP  = "tcp"
	ProtocolUDP  = "udp"
	ProtocolSCTP = "sctp"

	NetworkTypeVlan   = "vlan"
	NetworkTypeGeneve = "geneve"
	NetworkTypeVxlan  = "vxlan"
	NetworkTypeStt    = "stt"

	LoNic         = "lo"
	NodeGwNic     = "ovnext0"
	NodeGwNs      = "ovnext"
	NodeGwNsPath  = "/var/run/netns/ovnext"
	BindMountPath = "/run/netns"

	NodeNic           = "ovn0"
	NodeAllowPriority = "3000"

	SecurityGroupHighestPriority = "2300"
	SecurityGroupBasePriority    = "2005"
	SecurityGroupAllowPriority   = "2004"
	SecurityGroupDropPriority    = "2003"

	IngressAllowPriority = "2001"
	IngressDefaultDrop   = "2000"

	EgressAllowPriority = "2001"
	EgressDefaultDrop   = "2000"

	SubnetAllowPriority = "1001"
	DefaultDropPriority = "1000"

	DefaultMTU = 1500

	GeneveHeaderLength = 100
	VxlanHeaderLength  = 50
	SttHeaderLength    = 72
	TCPIPHeaderLength  = 40

	OvnProvider                 = "ovn"
	AttachmentNetworkAnnotation = "k8s.v1.cni.cncf.io/networks"
	DefaultNetworkAnnotation    = "v1.multus-cni.io/default-network"

	SRIOVResourceName = "mellanox.com/cx5_sriov_switchdev"

	InterconnectionConfig  = "ovn-ic-config"
	ExternalGatewayConfig  = "ovn-external-gw-config"
	InterconnectionSwitch  = "ts"
	ExternalGatewaySwitch  = "ovn-external"
	VpcNatGatewayConfig    = "ovn-vpc-nat-gw-config"
	VpcLbNetworkAttachment = "ovn-vpc-lb"
	VpcDNSConfig           = "vpc-dns-config"
	VpcDNSDepTemplate      = "vpc-dns-dep"
	VpcNatConfig           = "ovn-vpc-nat-config"

	DefaultSecurityGroupName = "default-securitygroup"

	DefaultVpc    = "ovn-cluster"
	DefaultSubnet = "ovn-default"

	NormalRouteType    = "normal"
	EcmpRouteType      = "ecmp"
	StaticRouteBfdEcmp = "ecmp_symmetric_reply"

	Vip = "vip"
	Lrp = "lrp"
	Lsp = "lsp"

	NatUsingEip  = "nat"
	FipUsingEip  = "fip"
	SnatUsingEip = "snat"
	DnatUsingEip = "dnat"

	OvnFip      = "ovn"
	IptablesFip = "iptables"

	U2OSubnetPolicyPriority     = 29400
	GatewayRouterPolicyPriority = 29000
	OvnICPolicyPriority         = 29500
	NodeRouterPolicyPriority    = 30000
	NodeLocalDNSPolicyPriority  = 30100
	SubnetRouterPolicyPriority  = 31000

	OffloadType  = "offload-port"
	InternalType = "internal-port"
	DpdkType     = "dpdk-port"

	HostnameEnv = "KUBE_NODE_NAME"

	ChassisRetryMaxTimes           = 5
	ChassisCniDaemonRetryInterval  = 1
	ChassisControllerRetryInterval = 3

	VM         = "VirtualMachine"
	VMInstance = "VirtualMachineInstance"

	MirrorControlAnnotation = "ovn.kubernetes.io/mirror"
	MirrorDefaultName       = "m0"

	DenyAllSecurityGroup = "kubeovn_deny_all"

	NetemQosLatencyAnnotation = "ovn.kubernetes.io/latency"
	NetemQosLimitAnnotation   = "ovn.kubernetes.io/limit"
	NetemQosLossAnnotation    = "ovn.kubernetes.io/loss"
	NetemQosJitterAnnotation  = "ovn.kubernetes.io/jitter"

	NetemQosLatencyAnnotationTemplate = "%s.kubernetes.io/latency"
	NetemQosLimitAnnotationTemplate   = "%s.kubernetes.io/limit"
	NetemQosLossAnnotationTemplate    = "%s.kubernetes.io/loss"
	NetemQosJitterAnnotationTemplate  = "%s.kubernetes.io/jitter"

	PodIP              = "POD_IP"
	ContentType        = "application/vnd.kubernetes.protobuf"
	AcceptContentTypes = "application/vnd.kubernetes.protobuf,application/json"

	AttachmentProvider = "ovn.kubernetes.io/attachmentprovider"
	LbSvcPodImg        = "ovn.kubernetes.io/lb_svc_img"

	OvnICKey       = "origin"
	OvnICConnected = "connected"
	OvnICStatic    = "static"
	OvnICNone      = ""

	MatchV4Src = "ip4.src"
	MatchV4Dst = "ip4.dst"
	MatchV6Src = "ip6.src"
	MatchV6Dst = "ip6.dst"

	U2OInterconnName = "u2o-interconnection.%s.%s"
	U2OExcludeIPAg   = "%s.u2o_exclude_ip.%s"

	DefaultServiceSessionStickinessTimeout = 10800

	OvnSubnetGatewayIptables = "ovn-subnet-gateway"

	QoSDirectionIngress = "ingress"
	QoSDirectionEgress  = "egress"

	MainRouteTable = ""

	NatPolicyRuleActionNat     = "nat"
	NatPolicyRuleActionForward = "forward"
	NatPolicyRuleIDLength      = 12

	NAT                        = "nat"
	Mangle                     = "mangle"
	Prerouting                 = "PREROUTING"
	Postrouting                = "POSTROUTING"
	Output                     = "OUTPUT"
	OvnPrerouting              = "OVN-PREROUTING"
	OvnPostrouting             = "OVN-POSTROUTING"
	OvnOutput                  = "OVN-OUTPUT"
	OvnMasquerade              = "OVN-MASQUERADE"
	OvnNatOutGoingPolicy       = "OVN-NAT-POLICY"
	OvnNatOutGoingPolicySubnet = "OVN-NAT-PSUBNET-"

	TProxyListenPort = 8102
	TProxyRouteTable = 10001

	TProxyOutputMark     = 0x90003
	TProxyOutputMask     = 0x90003
	TProxyPreroutingMark = 0x90004
	TProxyPreroutingMask = 0x90004

	HealthCheckNamedVipTemplate = "%s:%s" // ip name, health check vip
)
View Source
const (
	DefaultHostVhostuserBaseDir = "/run/openvswitch/vhost_sockets"

	ChassisLoc = "/etc/openvswitch/system-id.conf"

	VfioSysDir = "/sys/bus/pci/drivers/vfio-pci"
	NetSysDir  = "/sys/class/net"

	HtbQos   = "linux-htb"
	NetemQos = "linux-netem"

	KoDir  = "/tmp/"
	KoENV  = "MODULES"
	RpmENV = "RPMS"
)
View Source
const (
	IPv4Multicast        = "224.0.0.0/4"
	IPv4Loopback         = "127.0.0.1/8"
	IPv4Broadcast        = "255.255.255.255/32"
	IPv4Zero             = "0.0.0.0/32"
	IPv4LinkLocalUnicast = "169.254.0.0/16"

	IPv6Unspecified      = "::/128"
	IPv6Loopback         = "::1/128"
	IPv6Multicast        = "ff00::/8"
	IPv6LinkLocalUnicast = "FE80::/10"
)

Variables

This section is empty.

Functions

func AddressCount added in v1.7.0

func AddressCount(network *net.IPNet) float64

func AnnounceArpAddress added in v1.9.27

func AnnounceArpAddress(nic, ip string, mac net.HardwareAddr, announceNum int, announceInterval time.Duration) error

func AppendGwByCidr added in v1.7.0

func AppendGwByCidr(gateway, cidrStr string) (string, error)

func ArpDetectIPConflict added in v1.9.19

func ArpDetectIPConflict(nic, ip string, mac net.HardwareAddr) (net.HardwareAddr, error)

https://www.ietf.org/rfc/rfc5227.txt returns MAC of the host if the ip address is in use

func ArpResolve added in v1.9.19

func ArpResolve(nic, _, dstIP string, timeout time.Duration, maxRetry int) (net.HardwareAddr, int, error)

func BigInt2Ip added in v1.7.0

func BigInt2Ip(ipInt *big.Int) string

func CIDRContainIP added in v1.7.0

func CIDRContainIP(cidrStr, ipStr string) bool

func CIDRGlobalUnicast added in v1.10.7

func CIDRGlobalUnicast(cidr string) error

func CIDROverlap added in v1.10.7

func CIDROverlap(a, b string) bool

func CheckCidrs added in v1.7.0

func CheckCidrs(cidr string) error

func CheckProtocol added in v1.7.0

func CheckProtocol(address string) string

func CheckSystemCIDR added in v1.10.7

func CheckSystemCIDR(cidrs []string) error

func CompareVersion added in v1.11.0

func CompareVersion(version1, version2 string) int

CompareVersion compare two version

func ContainsIPs added in v1.7.0

func ContainsIPs(excludeIP, ip string) bool

func ContainsString added in v1.7.0

func ContainsString(slice []string, s string) bool

ContainsString Helper functions to check and remove string from a slice of strings.

func CountIPNums added in v1.12.1

func CountIPNums(excludeIPs []string) float64

func DialAPIServer added in v1.12.1

func DialAPIServer(host string) error

func DiffStringSlice added in v0.5.0

func DiffStringSlice(slice1, slice2 []string) []string

func DoubleQuotedFields added in v1.10.7

func DoubleQuotedFields(s string) []string

func ExecuteCommandInContainer added in v1.7.0

func ExecuteCommandInContainer(client kubernetes.Interface, cfg *rest.Config, namespace, podName, containerName string, cmd ...string) (
	string, string, error,
)

func ExecuteWithOptions added in v1.7.0

func ExecuteWithOptions(client kubernetes.Interface, cfg *rest.Config, options ExecOptions) (string, string, error)

func ExpandExcludeIPs added in v1.7.0

func ExpandExcludeIPs(excludeIPs []string, cidr string) []string

ExpandExcludeIPs used to get exclude ips in range of subnet cidr, excludes cidr addr and broadcast addr

func ExternalBridgeName added in v1.7.1

func ExternalBridgeName(provider string) string

ExternalBridgeName returns external bridge name of the provider network

func FirstIP added in v1.7.1

func FirstIP(subnet string) (string, error)

func GatewayContains added in v1.7.0

func GatewayContains(gatewayNodeStr, gateway string) bool

func GenNatGwPodName added in v1.12.0

func GenNatGwPodName(name string) string

func GenNatGwStsName added in v1.12.0

func GenNatGwStsName(name string) string

func GenerateMac

func GenerateMac() string

GenerateMac generates mac address.

func GenerateMergePatchPayload added in v1.9.17

func GenerateMergePatchPayload(original, modified runtime.Object) ([]byte, error)

func GenerateRandomV4IP added in v1.7.0

func GenerateRandomV4IP(cidr string) string

func GenerateRandomV6IP added in v1.12.0

func GenerateRandomV6IP(cidr string) string

func GenerateStrategicMergePatchPayload added in v1.9.17

func GenerateStrategicMergePatchPayload(original, modified runtime.Object) ([]byte, error)

func GetDefaultListenAddr added in v1.12.0

func GetDefaultListenAddr() string

func GetExternalNetwork added in v1.12.0

func GetExternalNetwork(externalNet string) string

GetExternalNetwork returns the external network name if the external network is not specified, return the default external network name

func GetGwByCidr added in v1.7.0

func GetGwByCidr(cidrStr string) (string, error)

func GetIPAddrWithMask added in v1.12.1

func GetIPAddrWithMask(ip, cidr string) string

func GetIPWithoutMask added in v1.12.1

func GetIPWithoutMask(ipStr string) string

func GetNatGwExternalNetwork added in v1.12.0

func GetNatGwExternalNetwork(externalNets []string) string

func GetNodeInternalIP added in v1.7.0

func GetNodeInternalIP(node v1.Node) (ipv4, ipv6 string)

func GetStringIP added in v1.7.0

func GetStringIP(v4IP, v6IP string) string

func GetTruncatedUID added in v1.12.0

func GetTruncatedUID(uid string) string

func IP2BigInt added in v1.12.1

func IP2BigInt(ipStr string) *big.Int

func IPToString added in v1.7.0

func IPToString(ip string) string

func InitKlogMetrics added in v1.8.3

func InitKlogMetrics()

func IsDefaultNet added in v1.7.0

func IsDefaultNet(defaultNetAnnotation string, attach *types.NetworkSelectionElement) bool

func IsOvnNetwork added in v1.7.0

func IsOvnNetwork(netCfg *types.DelegateNetConf) bool

func IsStringIn added in v1.7.0

func IsStringIn(str string, slice []string) bool

func IsStringsOverlap added in v1.7.0

func IsStringsOverlap(a, b []string) bool

IsStringsOverlap check if two string slices are overlapped

func IsValidIP added in v1.7.0

func IsValidIP(ip string) bool

func JoinHostPort added in v1.8.2

func JoinHostPort(host string, port int32) string

func LabelSelectorNotEmpty added in v1.12.0

func LabelSelectorNotEmpty(key string) (labels.Selector, error)

func LabelSelectorNotEquals added in v1.12.0

func LabelSelectorNotEquals(key, value string) (labels.Selector, error)

func LastIP added in v1.7.0

func LastIP(subnet string) (string, error)

func LogFatalAndExit added in v1.8.15

func LogFatalAndExit(err error, format string, a ...interface{})

func ParsePodNetworkAnnotation added in v1.7.0

func ParsePodNetworkAnnotation(podNetworks, defaultNamespace string) ([]*types.NetworkSelectionElement, error)

func ProtocolToFamily added in v1.7.0

func ProtocolToFamily(protocol string) (int, error)

ProtocolToFamily converts protocol string to netlink family

func RemoveString added in v1.7.0

func RemoveString(slice []string, s string) (result []string)

func ServiceClusterIPs added in v1.9.27

func ServiceClusterIPs(svc v1.Service) []string

func SetLinkUp added in v1.10.0

func SetLinkUp(name string) error

SetLinkUp sets a link up

func Sha256Hash added in v1.12.0

func Sha256Hash(input []byte) string

func SplitIpsByProtocol added in v1.7.0

func SplitIpsByProtocol(excludeIps []string) ([]string, []string)

func SplitStringIP added in v1.7.0

func SplitStringIP(ipStr string) (string, string)

func SubnetBroadcast added in v1.7.1

func SubnetBroadcast(subnet string) string

func SubnetNumber added in v1.7.0

func SubnetNumber(subnet string) string

func TCPConnectivityCheck added in v1.9.27

func TCPConnectivityCheck(address string) error

func TCPConnectivityListen added in v1.9.27

func TCPConnectivityListen(address string) error

func UDPConnectivityCheck added in v1.9.27

func UDPConnectivityCheck(address string) error

func UDPConnectivityListen added in v1.9.27

func UDPConnectivityListen(address string) error

func UniqString added in v1.7.0

func UniqString(a []string) []string

UniqString creates an array of string with unique values.

func ValidateCidrConflict added in v1.9.0

func ValidateCidrConflict(subnet kubeovnv1.Subnet, subnetList []kubeovnv1.Subnet) error

func ValidatePodCidr added in v1.7.0

func ValidatePodCidr(cidr, ip string) error

func ValidatePodNetwork added in v0.4.0

func ValidatePodNetwork(annotations map[string]string) error

func ValidateSubnet added in v1.7.0

func ValidateSubnet(subnet kubeovnv1.Subnet) error

func ValidateVpc added in v1.11.2

func ValidateVpc(vpc *kubeovnv1.Vpc) error

Types

type ExecOptions added in v1.7.0

type ExecOptions struct {
	Command            []string
	Namespace          string
	PodName            string
	ContainerName      string
	Stdin              io.Reader
	CaptureStdout      bool
	CaptureStderr      bool
	PreserveWhitespace bool
}

type GwIPtableCounters added in v1.12.0

type GwIPtableCounters struct {
	Packets     int
	PacketBytes int
}

type IPTableRule

type IPTableRule struct {
	Table string
	Chain string
	Rule  []string
}

IPTableRule wraps iptables rule

type LogicalRouter added in v1.8.0

type LogicalRouter struct {
	Name            string
	Ports           []Port
	LogicalSwitches []LogicalSwitch
}

type LogicalSwitch added in v1.8.0

type LogicalSwitch struct {
	Name  string
	Ports []Port
}

type NamedPortInfo added in v1.11.2

type NamedPortInfo struct {
	PortID int32
	Pods   *strset.Set
}

type Port added in v1.8.0

type Port struct {
	Name   string
	Subnet string
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL