aboutsummaryrefslogtreecommitdiffstats
path: root/metis/ccnx/forwarder/metis/README.txt
diff options
context:
space:
mode:
Diffstat (limited to 'metis/ccnx/forwarder/metis/README.txt')
-rw-r--r--metis/ccnx/forwarder/metis/README.txt90
1 files changed, 90 insertions, 0 deletions
diff --git a/metis/ccnx/forwarder/metis/README.txt b/metis/ccnx/forwarder/metis/README.txt
new file mode 100644
index 00000000..37c6306a
--- /dev/null
+++ b/metis/ccnx/forwarder/metis/README.txt
@@ -0,0 +1,90 @@
+/*
+ * Copyright (c) 2017 Cisco and/or its affiliates.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+=================
+Metis (mythology)
+Metis was the the Titaness of wisdom and deep thought. The Greek word
+"metis" meant a quality that combined wisdom and cunning.
+=================
+
+Metis is the CCNx 1.0 forwarder. It uses a modular design so adding new
+encapsulations, forwarding behavior, or event dispatching is
+well-defined and has minimum (or no) side effects.
+
+=================
+Building
+
+"make" will create "libmetis.a" and "metis". The library is used by other
+parts of Libccnx, such as Transport testing and the mobile builds. The
+executable "metis" is for command-line invocation of a forwarding daemon.
+
+Metis uses a few things from parc/algol and ccnx/common.
+
+Metis uses the LongBow XUnit test framework. "make check" will run the tests.
+
+Metis is built with Libevent 2.0 for the dispatcher. Libevent is visible in the
+code in the following modules. To use a different event dispatcher, these modules
+would need to be updated: metisDispatcher.c, metisStreamBuffer.c, metisMessage.c,
+metis_StreamConnection.c
+
+=================
+Code Layout
+
+Each directory has its code and headers along with a test/ subdirectory with
+LongBow unit tests.
+
+config/
+config/test
+- Forwarder configuration, from a file or CLI or web
+ The default telnet port is 2001.
+ The default web port is 2002.
+
+core/
+core/test
+- The forwarder (metisForwarder) that bundles the whole thing and the event
+ dispatcher (metisDispatcher). Also includes various utility classes, such as
+ MetisMessage that wraps all messages inside the forwarder.
+
+io/
+io/test/
+- I/O related primatives. These include "listeners" that monitor for specific types
+ of incoming packets. io/ includes tunnels, ip overlays, and direct L2 encapsulation.
+
+messenger/
+messenger/test/
+- event messages within the router, such as notificaitons when an interface
+ comes up or goes down.
+
+platforms/
+- platform specific functions, such as dealing with interfaces and
+ direct Ethernet encapsulation. The files in here implement function
+ prototypes (usually in core/ or io/), and are tested with unit tests of those
+ prototypes. So, there is no platforms/test/ directory.
+
+processor/
+processor/test/
+- The message processor. Forwards Interests and objects.
+
+strategies/
+strategies/test/
+- Forwarding strategies. Each FIB entry indicates the strategy that should
+ be used to forward an interest among its entries.
+
+libmetis.a
+- The output library
+
+test/
+- These are system-level tests
+