Skip to content

Functional Block: CPS

Cody Doucette edited this page Jan 16, 2019 · 22 revisions

The Control Plane Services (CPS) block has the responsibility of handling all control plane operations for Gatekeeper and Grantor servers. This includes passing any control plane protocol messages to routing daemons running on the host, and accepting routing tables updates from the routing daemons.

Table of Contents

Description

Although Gatekeeper servers' main role is only in the data plane, they still need to peer in vantage points and with internal routers of the AS in order to become a node in the ingoing and outgoing network paths.

Instead of adding support for individual control plane protocols like BGP, OSPF, and IS-IS in Gatekeeper, we enable network operators to run control plane daemons on the host. This is a win-win scenario, as Gatekeeper avoids the trouble of supporting these protocols and network operators do not need to learn another tool to manage their routes.

The control plane component accomplishes its goal by steering packets from control plane protocols received on the front and back interfaces and sending them to Kernel NIC Interfaces (KNIs). Routing daemons can receive the control plane packets on KNIs, update and compute new routes, and send them back to Gatekeeper through the KNI as well.

The CPS block is allocated one lcore in Gatekeeper.

Static Configuration

All static configuration variables can be configured in lua/cps.lua.

Variables to Change for Basic Operation

These variables are likely to change from deployment-to-deployment based on the operator's preferences.

Path of rte_kni Kernel Module

The KNI mechanism in DPDK requires the support of a kernel module. The kni_kmod_path variable defines where in the filesystem the rte_kni.ko kernel module file is found. It should be an absolute (not relative) path.

Log Level

The log level for the CPS block. Can be set to any one of the following values: RTE_LOG_EMERG, RTE_LOG_ALERT, RTE_LOG_CRIT, RTE_LOG_ERR, RTE_LOG_WARNING, RTE_LOG_NOTICE, RTE_LOG_INFO, RTE_LOG_DEBUG.

Since we typically use RTE_LOG_ERROR as the most severe log condition, we recommend not to set this value below RTE_LOG_ERROR.

Variables to Change for Performance Reasons

It is not crucial to change these variables, and they only need to be changed to fine tune the performance of Gatekeeper. Otherwise, the default values are likely fine.

Mailbox Maximum Entries (Exponential)

Mailbox Cache Size

Mailbox Burst Size

Log Rate Limit Interval

Log Rate Limit Burst

Interface Maximum Packet Burst (Front and Back)

Variables Unlikely to Change

These variables likely only need to be changed under extreme circumstances or for deployment-specific reasons.

TCP Port for BGP

Number of Attempts to Get KNI Link

Maximum Route Updates

IP Address Resolution Scan Interval

Clone this wiki locally