Research Project 1
- api: contains the GRPC definition for communications between components
- cmd: binary build entrypoint
- dash: cli to scrape status from nodes
- demo: Additional docker build directories for various components
- deploy: Canonical docker build directories and docker-compose test setups
- fileserve: python server/client to serve a pid from filesystem or retrieve from arxiv
- ndn-traffic-generator: used to have a patched version with higher logging resolution
- nfdstat: shared library for interacting with NFD through cli
- notes: assorted notes
- primary: Load Balancer
- secondary: Slave Cache Server
- trafficwrap: test helper used to count stats for ndn-traffic-generator
- watcher: Discovery Server
Defines 2 sets of server-clients: watcher-primary and primary-secondary
service Reflector
defines the server implemented by watcher.
primary registers with a watcher with Primaries
,
sending its own identity and in return getting updates of all known primaries,
keepalive is through keeping the stream open.
watcher opens a 2 way stream with another watcher through Gossip
,
limitation: must be configured one way, no duplicate neighbor detection implemented
service Info
defines the server implemented by primary.
Channels
returns the scheme/host/port of the NFD instance it controls,
limitation: will only return 1.
Routes
returns updates of locally routable prefixes.
SecondaryStatus
waits for secondary to connect, then sends requests for NFD status.
PrimaryStatus
returns the local status with as well as all connected secondaries.
Register
waits for secondary to connect, then sends back control messages (remote primaries the secondary should use as upstreams)
Connect to watcher to recv locations of other primaries, distribute primaries to secondaries (sticky distribution). Handle connections from secondary, evenly distributing upstream primaries.
- distributor: finds difference between new and current routes, distributes them to secondaries
- info: channels, routes, status handlers
- localsec: control the load balancer, special case for 0 secondaries
- primary: entrypoint
- register: connects to watcher, receives uodates and triggers route distribution to secondaries
- scraper: scrapes current NFD status
Connect to primary, receive control directives (list of upstream primaries to connect to), connect to upstream primaries to get the channel / route updates, add / remove connections and routes from NFD as necesary.
- control: connect to primary and apply control directives
- secondary: entrypoint
- status: return status
Register primaries, connect to other watchers, sends out known primaries to all connected primaries and watchers.
- notify: sends updates to all connected clients
- prom: unused code originally for prometheus
- reflector: handle client connections, gossip with other watchers
- watcher: entrypoint