Proto commits in Nordix/Meridio

These 37 commits are when the Protocol Buffers files have changed:

Commit:b67500c
Author:Lugossy Zoltan
Committer:Lugossy Zoltán

API; New LB stream availability proto

The documentation is generated from this commit.

Commit:a85a73f
Author:Lionel Jouin
Committer:Lionel Jouin

New max-targets property in stream Configmap and NSP API * Max-Targets added to the stream objects in the NSP API and configmap

Commit:4b3cdb0
Author:Lugossy Zoltan
Committer:Lugossy Zoltán

Add BGP Authentication to API and model

Commit:e2d4f8b
Author:Lionel Jouin
Committer:Lionel Jouin

Remove previous Flow NAT implementation * Flow local-port removed from NSP API and configmap model * Load-balancer implementation removed

Commit:26c3f5c
Author:Lionel Jouin
Committer:Lionel Jouin

NAT implementation in Conduit * All traffic that belongs to the conduit and that matches the destination port nat properties will be NATted * Implementation uses the same nftables rules as the flow implementation

Commit:de1e7ba
Author:Lionel Jouin
Committer:Lionel Jouin

Add Byte Matches support in Flows * Add Byte-Matches in configmap + NSP API * Support of --match with nfqlb

Commit:61a7723
Author:Lars Ekman
Committer:Lars Ekman

Add static port-NAT

Commit:d698b49
Author:Lionel Jouin

NSP API Update function removed This function was doing the same things as the Register one, and was no longer used.

Commit:44f1b0b
Author:Lionel Jouin
Committer:Lionel Jouin

Refactoring * New Stream manager - Add (Create the stream) / Remove Stream - Can Open/Close all streams - Retry to Open - Check stream availability in the trench - Manage the stream status * Configuration watcher re-worked - Watch vips + streams - New Interface (Watch/Stop) * Registry re-worked - Only Set status (add if non-existing) and remove * Add comments and new unit tests

Commit:49494fa
Author:Lionel Jouin
Committer:Lionel Jouin

New Stream message in TAPA * nspAPI.Stream set to ambassadorAPI.Stream in: - /api/ambassador - /pkg/ambassador

Commit:bd0619a
Author:Lionel Jouin
Committer:Lionel Jouin

New TAP API implementation * 3 functions to control the streams - Open (Stream) - Close (Stream) - Watch (Stream) * Open and Close are less blocking then before, the connection to the NSP Service, request of the NSM connection, and registration of the target are now hidden for the user and done in background (goroutines) * Some new tests have been added but the coverage is not yet 100% * Watch Allows the user to check the status of each stream (open, pending, unavailable, undefined) * Makefile updated with mock and coverage

Commit:b5eb577
Author:Lionel Jouin
Committer:Lionel Jouin

Target (cmd, api, build, pkg) renamed to TAP/TAPA - cmd/tapa - pkg/ambassador/tap - api/ambassador - target example tapa container

Commit:be61b1a
Author:Lionel
Committer:Lionel

Improved IPAM The IPAM knows about the trench, conduits, nodes, and prefixes allocated on each links. IPAM API modified to allocate/release prefixes based on the conduit, IP family and node used. Each proxy can now remember the subnets they are using and IPs since all data is stored in the IPAM Store (SQLite).

Commit:a2a32d2
Author:Lugossy Zoltan
Committer:zolug

FE; parse and apply BFD attributes -Min tx/rx intervals and multiplier are fetched from the config generated by the Operator (as part of the gateway settings) -Requires at least BIRD 2.0.8 -BGP: BFD options are set per peer i.e. per gateway -Static+BFD: due to limitations in BIRD they are applied per external interface (meaning only 1 BFD configuration can take effect per Frontend) -BFD session state of peer IP is ignored for Static protocol if BFD is not configured -alpine:edge base image

Commit:46001e3
Author:Lionel

Priority changed to int32 and added to the configuration API

Commit:53ec578
Author:Lionel
Committer:Lionel

New ambassador API Add versioning on ambassador API Request renamed to Open Remove state based event

Commit:e920742
Author:Lionel Jouin
Committer:Lionel

Target Registry service in NSP The old NSP service is now replace with this new target registry service providing 4 functions: Register, Unregister, Update and Watch. The usage of the NSP Service has been adapted few components (target, LB, frontend). todo: - replace the route checker for the pending targets in the stream (pkg/loadbalancer/stream/loadbalancer.go) - refactoring and testing

Commit:52b06de
Author:Lionel Jouin
Committer:Lionel Jouin

Stream support Stream name in the NSP target - Each target register to a specific stream - The LB add the target to the specific stream (lb instance) Stream name in the ambassador API - The application is now specifying the trench + Conduit + Stream on a request/close call New interfaces in the loadbalancer pkg NFQLB Updated to 0.4.0 Usage of --shm argument in nfqlb to run multiple lb instances

Commit:a759d06
Author:Lionel Jouin

NSP API Versioning A new v1 sub-directory in the api/nsp one to handle the future versions on the NSP API. nsp pkg modified as v1

Commit:f819107
Author:Lionel Jouin
Committer:Lionel Jouin

Configuration manager on NSP service - The configmap watcher has been re-implemented (pkg/monitor). - The configmap Unmarshal functions and models has been updated with all resources and moved from the operator repository to this one (pkg/reader). - A memory registry has been implemented (pkg/registry). - The configuration manager API has been implemented (pkg/manager). When the configmap watcher/monitor will receive any event about the changes from the kubernetes API, each yaml files contained in the configmap will be unmarshalled and then converted and linked together (e.g.: conduits referring to the trench...) with the nsp API types. All resources will be registered in the configuration registry. On any changes in the registry, an event is sent via the channel with the type of resource modified. The registry also offers the possibility to get any resource by filtering them with their parents and/or name, so the manager server can return only the desired resources to the clients.

Commit:9180d89
Author:Lionel Jouin
Committer:Lionel Jouin

Identifier collision fix with registration process Adding a new status to the target gives the possibility to have an extra step in the target registration process. A target can, first, register itself as 'disabled' to the NSP Service, then fetch the targets, and verify if there is a collision with its identifier or not. If there is, the target will generate a new identifier and update its registration to the NSP service. If there is no collision, the target will update its status to 'enabled' to the NSP service. The load-balancer will configure only the targets which are enabled, the other ones will be ignored or removed if they were existing in the LB. New defined interface for the Trench, Conduit and Stream (Separation in different packages) Add golang/mock dependency mock nspAPI, conduit and trench to test the stream Add '-race' and '-cover' to the make test command

Commit:5ca4096
Author:Lugossy Zoltan
Committer:Lugossy Zoltan

nsp; enum Target Type

Commit:3e9e53e
Author:Lugossy Zoltan
Committer:Lugossy Zoltan

nsp; support different entry types Besides legacy Targets other type of "Target" entries can be added as well. (Different types won't interfere.)

Commit:4bf50b0
Author:Lionel Jouin
Committer:Lionel Jouin

Ambassador API documentation

Commit:d5e6d2b
Author:Lionel Jouin
Committer:Lionel Jouin

watch conduits and streams using target ambassadator API New functions on the target ambassador to watch and receive event of conduits (on Connect/Disconnect) and streams (on Request/Close)

Commit:b580acd
Author:Lionel Jouin

Copyright header

Commit:b502ab3
Author:Lionel Jouin
Committer:Lionel Jouin

Remove trench namespace selection on target ambassador

Commit:95745e7
Author:Lionel Jouin
Committer:Lionel Jouin

multi-trenches in one namespace support

Commit:3d21af9
Author:Lionel Jouin

Target ambassador: conduit and stream separation

Commit:e4d8dee
Author:Lionel Jouin

List target connections

Commit:908f8dc
Author:Lionel Jouin

Target ambassador API

Commit:2d43384
Author:Lionel Jouin

Dualstack support

Commit:ba51e6d
Author:Lionel Jouin

NSP API proto specification file

Commit:e377a27
Author:Lionel Jouin

go module rename Meridio

Commit:cce743a
Author:Lionel Jouin

Ipam naming

Commit:b46c0e4
Author:Lionel Jouin

IPAM service implementation

Commit:f8076aa
Author:Lionel Jouin

IPAM service API specification (proto)