adjacentlink / emane

Distributed wireless network emulation framework
Other
127 stars 37 forks source link

Question, does CORE/EMANE serve a different role than ETCE? #197

Closed WorksWellWithOthers closed 3 years ago

WorksWellWithOthers commented 3 years ago

Is CORE/EMANE use case a lot different than ETCE?

My understanding at the moment is that a CORE/EMANE Esque program/result can be done using ETCE. If not, how are they different? When would you use each one?

eschreiber-alink commented 3 years ago

ETCE and CORE have an overlapping goals of automating network emulation on Linux but the workflows are very different.

CORE offers a nice top down approach to get a network up and running quickly. The CORE GUI comes with pre-packaged network components (hosts, routers, switches, hubs, etc.). Place components on the canvas, wire them together and hit the deploy button and you're running. IP addresses are assigned automatically as you wire nodes together. Applications are implicitly configured and run depending on the node type (routing application on a router,etc.). Click on a node on the canvas to access its terminal to examine applications, node state, ping other nodes, etc. If you place a wireless network element on your canvas, you get an EMANE network under the hood. Underlying configurations are accessible to customize, but you can ignore the details if you prefer. Once built, networks can be saved for automatic reload later.

ETCE is the opposite, a bottom up approach, originally built to automate formal EMANE testing. If you have used a unit test framework, ETCE may feel familiar. ETCE consists a set of command line applications for launching a testbed of LXC containers (etce-lxc) and running applications on the containers (etce-test). ETCE comes with a set of wrappers that control how applications are configured and invoked (etce-wrapper). Users can add wrappers to add new applications. Users define emulations by writing test directories in a standard format. The ETCE tutorial 03.emane is an ETCE Test Directory representation of demonstration 3 of the EMANE tutorial. Similar to unit test frameworks, ETCE can batch run a collection of test directories over multiple iterations. We do this internally for tests that cover EMANE and the various models we support.

My arm chair comparison - as the project and documentation currently exists, ETCE will definitely require more up front work than CORE to get an emulation up and running. However, it is ultimately more flexible than CORE in that you can (must) define network components on your own. To make a router, you will have to decide what routing application to run, configure it and (for example) tweak an Linux kernel parameters you need to make it work. You'll decide how to allocate host CPUS to each container. If you are using EMANE, you'll need to choose the radio model to run and configure it. Nothing is hidden.

As nuts and bolts as this approach is, it does not need to be repeated every time. Once you have a basic component configuration defined, you can save it off as a template that can be reused later. demonstration 4 alludes to this. One of the directions I'd like to see ETCE go is to make public various reusable templates and a set of expanded tutorials that use these, to make the learning curve easier. But this, admittedly, does not currently exist.

WorksWellWithOthers commented 3 years ago

Thank you!