route

package
v1.7.1 Latest Latest
Warning

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

Go to latest
Published: Jul 14, 2022 License: Apache-2.0 Imports: 23 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (

	// IPTablesSyncInterval is exported so that sync interval can be configured for running integration test with
	// smaller values. It is meant to be used internally by Run.
	IPTablesSyncInterval = 60 * time.Second
)

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client takes care of routing container packets in host network, coordinating ip route, ip rule, iptables and ipset.

func NewClient

func NewClient(networkConfig *config.NetworkConfig, noSNAT, proxyAll, connectUplinkToBridge, multicastEnabled bool) (*Client, error)

NewClient returns a route client.

func (*Client) AddClusterIPRoute added in v1.4.0

func (c *Client) AddClusterIPRoute(svcIP net.IP) error

AddClusterIPRoute is used to add or update a routing entry which is used to route ClusterIP traffic to Antrea gateway.

func (*Client) AddLoadBalancer added in v1.4.0

func (c *Client) AddLoadBalancer(externalIPs []string) error

AddLoadBalancer is used to add routing entries when a LoadBalancer Service is added.

func (*Client) AddLocalAntreaFlexibleIPAMPodRule added in v1.4.0

func (c *Client) AddLocalAntreaFlexibleIPAMPodRule(podAddresses []net.IP) error

AddLocalAntreaFlexibleIPAMPodRule is used to add IP to target ip set when an AntreaFlexibleIPAM Pod is added. An entry is added for every Pod IP.

func (*Client) AddNodePort added in v1.4.0

func (c *Client) AddNodePort(nodePortAddresses []net.IP, port uint16, protocol binding.Protocol) error

AddNodePort is used to add IP,port:protocol entries to target ip set when a NodePort Service is added. An entry is added for every NodePort IP.

func (*Client) AddRoutes

func (c *Client) AddRoutes(podCIDR *net.IPNet, nodeName string, nodeIP, nodeGwIP net.IP) error

AddRoutes adds routes to a new podCIDR. It overrides the routes if they already exist.

func (*Client) AddSNATRule

func (c *Client) AddSNATRule(snatIP net.IP, mark uint32) error

func (*Client) DeleteClusterIPRoute added in v1.4.0

func (c *Client) DeleteClusterIPRoute(svcIP net.IP) error

func (*Client) DeleteLoadBalancer added in v1.4.0

func (c *Client) DeleteLoadBalancer(externalIPs []string) error

DeleteLoadBalancer is used to delete routing entries when a LoadBalancer Service is deleted.

func (*Client) DeleteLocalAntreaFlexibleIPAMPodRule added in v1.4.0

func (c *Client) DeleteLocalAntreaFlexibleIPAMPodRule(podAddresses []net.IP) error

DeletLocaleAntreaFlexibleIPAMPodRule is used to delete related IP set entries when an AntreaFlexibleIPAM Pod is deleted.

func (*Client) DeleteNodePort added in v1.4.0

func (c *Client) DeleteNodePort(nodePortAddresses []net.IP, port uint16, protocol binding.Protocol) error

DeleteNodePort is used to delete related IP set entries when a NodePort Service is deleted.

func (*Client) DeleteRoutes

func (c *Client) DeleteRoutes(podCIDR *net.IPNet) error

DeleteRoutes deletes routes to a PodCIDR. It does nothing if the routes doesn't exist.

func (*Client) DeleteSNATRule

func (c *Client) DeleteSNATRule(mark uint32) error

func (*Client) Initialize

func (c *Client) Initialize(nodeConfig *config.NodeConfig, done func()) error

Initialize initializes all infrastructures required to route container packets in host network. It is idempotent and can be safely called on every startup.

func (*Client) MigrateRoutesToGw

func (c *Client) MigrateRoutesToGw(linkName string) error

MigrateRoutesToGw moves routes (including assigned IP addresses if any) from link linkName to host gateway.

func (*Client) Reconcile

func (c *Client) Reconcile(podCIDRs []string, svcIPs map[string]bool) error

Reconcile removes orphaned podCIDRs from ipset and removes routes to orphaned podCIDRs based on the desired podCIDRs. svcIPs are used for Windows only.

func (*Client) Run

func (c *Client) Run(stopCh <-chan struct{})

Run waits for iptables initialization, then periodically syncs iptables rules. It will not return until stopCh is closed.

func (*Client) UnMigrateRoutesFromGw

func (c *Client) UnMigrateRoutesFromGw(route *net.IPNet, linkName string) error

UnMigrateRoutesFromGw moves route from gw to link linkName if provided; otherwise route is deleted

type Interface

type Interface interface {
	// Initialize should initialize all infrastructures required to route container packets in host network.
	// It should be idempotent and can be safely called on every startup.
	Initialize(nodeConfig *config.NodeConfig, done func()) error

	// Reconcile should remove orphaned routes and related configuration based on the desired podCIDRs and Service IPs.
	// If IPv6 is enabled in the cluster, Reconcile should also remove the orphaned IPv6 neighbors.
	Reconcile(podCIDRs []string, svcIPs map[string]bool) error

	// AddRoutes should add routes to the provided podCIDR.
	// It should override the routes if they already exist, without error.
	AddRoutes(podCIDR *net.IPNet, peerNodeName string, peerNodeIP, peerGwIP net.IP) error

	// DeleteRoutes should delete routes to the provided podCIDR.
	// It should do nothing if the routes don't exist, without error.
	DeleteRoutes(podCIDR *net.IPNet) error

	// MigrateRoutesToGw should move routes from device linkname to local gateway.
	MigrateRoutesToGw(linkName string) error

	// UnMigrateRoutesFromGw should move routes back from local gateway to original device linkName
	// if linkName is nil, it should remove the routes.
	UnMigrateRoutesFromGw(route *net.IPNet, linkName string) error

	// AddSNATRule should add rule to SNAT outgoing traffic with the mark, using the provided SNAT IP.
	AddSNATRule(snatIP net.IP, mark uint32) error

	// DeleteSNATRule should delete rule to SNAT outgoing traffic with the mark.
	DeleteSNATRule(mark uint32) error

	// AddNodePort adds configurations when a NodePort Service is created.
	AddNodePort(nodePortAddresses []net.IP, port uint16, protocol binding.Protocol) error

	// DeleteNodePort deletes related configurations when a NodePort Service is deleted.
	DeleteNodePort(nodePortAddresses []net.IP, port uint16, protocol binding.Protocol) error

	// AddClusterIPRoute adds route on K8s node for Service ClusterIP.
	AddClusterIPRoute(svcIP net.IP) error

	// DeleteClusterIPRoute deletes route for a Service IP when AntreaProxy is configured to handle
	// ClusterIP Service traffic from host network.
	DeleteClusterIPRoute(svcIP net.IP) error

	// AddLoadBalancer adds configurations when a LoadBalancer Service is created.
	AddLoadBalancer(externalIPs []string) error

	// DeleteLoadBalancer deletes related configurations when a LoadBalancer Service is deleted.
	DeleteLoadBalancer(externalIPs []string) error

	// Run starts the sync loop.
	Run(stopCh <-chan struct{})

	// AddLocalAntreaFlexibleIPAMPodRule is used to add IP to target ip set when an AntreaFlexibleIPAM Pod is added. An entry is added
	// for every Pod IP.
	AddLocalAntreaFlexibleIPAMPodRule(podAddresses []net.IP) error

	// DeleteLocalAntreaFlexibleIPAMPodRule is used to delete related IP set entries when an AntreaFlexibleIPAM Pod is deleted.
	DeleteLocalAntreaFlexibleIPAMPodRule(podAddresses []net.IP) error
}

Interface is the interface for routing container packets in host network.

Directories

Path Synopsis
Package testing is a generated GoMock package.
Package testing is a generated GoMock package.

Jump to

Keyboard shortcuts

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