documentation theme update, version bumping to 5.0, changes to cleanup pass for ns3 code

This commit is contained in:
Blake J. Harnden 2017-08-17 15:25:12 -07:00
parent 340b37444b
commit 8155cdc617
14 changed files with 54 additions and 52 deletions

View file

@ -7,7 +7,7 @@
- leverage "logzero" module to make easy usage of the standard logging module - leverage "logzero" module to make easy usage of the standard logging module
- improvements to documentation across the code base - improvements to documentation across the code base
- initial work to separate the dependence on TCP API messaging from the core library (easier core scripting) - initial work to separate the dependence on TCP API messaging from the core library (easier core scripting)
- beta support for running core in openvswitch mode, leveraging ovs bridges, instead of linux bridges - beta support for running core in Open vSwitch mode, leveraging Open vSwitch bridges, instead of Linux bridges
* SERVICES: * SERVICES:
- added Ryu SDN controller service - added Ryu SDN controller service
- added Open vSwitch service - added Open vSwitch service

View file

@ -12,7 +12,7 @@
# #
# this defines the CORE version number, must be static for AC_INIT # this defines the CORE version number, must be static for AC_INIT
# #
AC_INIT(core, m4_esyscmd_s([./revision.sh 4.8]), core-dev@pf.itd.nrl.navy.mil) AC_INIT(core, m4_esyscmd_s([./revision.sh 5.0]), core-dev@pf.itd.nrl.navy.mil)
VERSION=$PACKAGE_VERSION VERSION=$PACKAGE_VERSION
CORE_VERSION=$PACKAGE_VERSION CORE_VERSION=$PACKAGE_VERSION
CORE_VERSION_DATE=m4_esyscmd_s([./revision.sh -d]) CORE_VERSION_DATE=m4_esyscmd_s([./revision.sh -d])

View file

@ -97,7 +97,7 @@ uninstall-local:
# Python package uninstall # Python package uninstall
uninstall-hook: uninstall-hook:
yes | pip uninstall core_python yes | pip uninstall core-python
rm -f ${pythondir}/core_python_netns-1.0-py${PYTHON_VERSION}.egg-info rm -f ${pythondir}/core_python_netns-1.0-py${PYTHON_VERSION}.egg-info
rm -rf ${pythondir}/core rm -rf ${pythondir}/core
rmdir -p $(coreexservicesdir) || true rmdir -p $(coreexservicesdir) || true

View file

@ -41,7 +41,7 @@ def add_to_server(session):
""" """
global server global server
try: try:
server.addsession(session) server.add_session(session)
return True return True
except NameError: except NameError:
return False return False

View file

@ -30,7 +30,7 @@ def add_to_server(session):
""" """
global server global server
try: try:
server.addsession(session) server.add_session(session)
return True return True
except NameError: except NameError:
return False return False

View file

@ -2,7 +2,7 @@ from setuptools import setup
setup( setup(
name="corens3-python", name="corens3-python",
version="5.0.0", version="5.0",
packages=[ packages=[
"corens3", "corens3",
], ],

View file

@ -7,5 +7,3 @@ pycco==0.5.1
pytest==3.0.7 pytest==3.0.7
pytest-cov==2.5.1 pytest-cov==2.5.1
pytest-runner==2.11.1 pytest-runner==2.11.1
sphinx==1.4.8
sphinx_rtd_theme==0.1.9

View file

@ -8,7 +8,7 @@ Defines how CORE will be built for installation.
from setuptools import setup from setuptools import setup
setup(name="core-python", setup(name="core-python",
version="5.0.0", version="5.0",
packages=[ packages=[
"core", "core",
"core.addons", "core.addons",

View file

@ -12,6 +12,7 @@
# serve to show the default. # serve to show the default.
import sys, os import sys, os
import sphinx_rtd_theme
# If extensions (or modules to document with autodoc) are in another directory, # If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the # add these directories to sys.path here. If the directory is relative to the
@ -91,7 +92,7 @@ pygments_style = 'sphinx'
# The theme to use for HTML and HTML Help pages. See the documentation for # The theme to use for HTML and HTML Help pages. See the documentation for
# a list of builtin themes. # a list of builtin themes.
html_theme = 'default' html_theme = 'sphinx_rtd_theme'
# Theme options are theme-specific and customize the look and feel of a theme # Theme options are theme-specific and customize the look and feel of a theme
# further. For a list of options available for each theme, see the # further. For a list of options available for each theme, see the
@ -99,7 +100,7 @@ html_theme = 'default'
#html_theme_options = {} #html_theme_options = {}
# Add any paths that contain custom themes here, relative to this directory. # Add any paths that contain custom themes here, relative to this directory.
#html_theme_path = [] html_theme_path = [sphinx_rtd_theme.get_html_theme_path()]
# The name for this set of Sphinx documents. If None, it defaults to # The name for this set of Sphinx documents. If None, it defaults to
# "<project> v<release> documentation". # "<project> v<release> documentation".

View file

@ -30,17 +30,11 @@ demonstrations, application and platform testing, evaluating networking
scenarios, security studies, and increasing the size of physical test networks. scenarios, security studies, and increasing the size of physical test networks.
What's New? What's New?
================= ===========
For readers who are already familiar with CORE and have read this manual before, below is a list of what changed in version 4.8: For readers who are already familiar with CORE and have read this manual before, below is a list of what changed in version 5.0:
* :ref:`Configuration_Files` - a new XML format has been defined by the U.S. Naval Research Lab (NRL) for the Network Management Framework. .
* :ref:`EMANE` - `Release 0.9.2 of EMANE <https://github.com/adjacentlink/emane/wiki/Release-Notes#092>`_ included a new capability that, in order to be leveraged, needs changes on how it is deployed by CORE. The EMANE section of this document has been updated with new method of connecting together the deployed instances.
* :ref:`Control_Network` - with EMANE 0.9.2, the CORE control network has become an important component of CORE. Auxiliary control networks have been added to the primary control network to host EMANE traffic. As a result, the discussion on the control network has been elevated to a top level topic.
* `Tips, Hints, Important Information` - miscellaneous information added to several chapters in the document.
* :ref:`Services` - Added Ryu SD and Open vSwitch services
* :ref:`Python_Scripting` - Updated script examples to reflect code changes
.. index:: .. index::
single: CORE; components of single: CORE; components of
@ -109,7 +103,7 @@ and FreeBSD systems. The primary platform used for development is Linux.
single: LXC single: LXC
single: network namespaces single: network namespaces
* :ref:`Linux` CORE uses Linux network namespace virtualization to build virtual nodes, and ties them together with virtual networks using Linux Ethernet bridging. * :ref:`Linux` CORE uses Linux network namespace virtualization to build virtual nodes, and ties them together with virtual networks using Linux Ethernet bridging.
* :ref:`FreeBSD` CORE uses jails with a network stack virtualization kernel option to build virtual nodes, and ties them together with virtual networks using BSD's Netgraph system. * :ref:`FreeBSD` CORE uses jails with a network stack virtualization kernel option to build virtual nodes, and ties them together with virtual networks using BSD's Netgraph system.
@ -154,7 +148,7 @@ running programs. Starting with FreeBSD 8.0, a new `vimage` kernel option
extends BSD jails so that each jail can have its own virtual network stack -- extends BSD jails so that each jail can have its own virtual network stack --
its own networking variables such as addresses, interfaces, routes, counters, its own networking variables such as addresses, interfaces, routes, counters,
protocol state, socket information, etc. The existing networking algorithms and protocol state, socket information, etc. The existing networking algorithms and
code paths are intact but operate on this virtualized state. code paths are intact but operate on this virtualized state.
Each jail plus network stack forms a lightweight virtual machine. These are Each jail plus network stack forms a lightweight virtual machine. These are
named jails or *virtual images* (or *vimages*) and are created using a the named jails or *virtual images* (or *vimages*) and are created using a the
@ -172,13 +166,13 @@ added this functionality to the
mainline 8.0-RELEASE and newer kernels. mainline 8.0-RELEASE and newer kernels.
.. index:: .. index::
single: FreeBSD; Netgraph single: FreeBSD; Netgraph
The FreeBSD Operating System kernel features a graph-based The FreeBSD Operating System kernel features a graph-based
networking subsystem named Netgraph. The netgraph(4) manual page quoted below networking subsystem named Netgraph. The netgraph(4) manual page quoted below
best defines this system: best defines this system:
The netgraph system provides a uniform and modular system for the The netgraph system provides a uniform and modular system for the
implementation of kernel objects which perform various networking functions. implementation of kernel objects which perform various networking functions.
The objects, known as nodes, can be arranged into arbitrarily complicated The objects, known as nodes, can be arranged into arbitrarily complicated
graphs. Nodes have hooks which are used to connect two nodes together, graphs. Nodes have hooks which are used to connect two nodes together,
@ -202,8 +196,8 @@ best defines this system:
Prior Work Prior Work
========== ==========
The Tcl/Tk CORE GUI was originally derived from the open source The Tcl/Tk CORE GUI was originally derived from the open source
`IMUNES <http://www.tel.fer.hr/imunes/>`_ `IMUNES <http://www.tel.fer.hr/imunes/>`_
project from the University of Zagreb project from the University of Zagreb
as a custom project within Boeing Research and Technology's Network as a custom project within Boeing Research and Technology's Network
Technology research group in 2004. Since then they have developed the CORE Technology research group in 2004. Since then they have developed the CORE
@ -212,7 +206,7 @@ Python framework, and made numerous user- and kernel-space developments, such
as support for wireless networks, IPsec, the ability to distribute emulations, as support for wireless networks, IPsec, the ability to distribute emulations,
simulation integration, and more. The IMUNES project also consists of userspace simulation integration, and more. The IMUNES project also consists of userspace
and kernel components. Originally, one had to download and apply a patch for and kernel components. Originally, one had to download and apply a patch for
the FreeBSD 4.11 kernel, but the more recent the FreeBSD 4.11 kernel, but the more recent
`VirtNet <http://www.nlnet.nl/project/virtnet/>`_ `VirtNet <http://www.nlnet.nl/project/virtnet/>`_
effort has brought network stack effort has brought network stack
virtualization to the more modern FreeBSD 8.x kernel. virtualization to the more modern FreeBSD 8.x kernel.

2
doc/requirements.txt Normal file
View file

@ -0,0 +1,2 @@
sphinx==1.6.3
sphinx_rtd_theme==0.2.4

View file

@ -21,10 +21,10 @@ or online via interactive Python.
The best starting point is the sample scripts that are The best starting point is the sample scripts that are
included with CORE. If you have a CORE source tree, the example script files included with CORE. If you have a CORE source tree, the example script files
can be found under :file:`core/daemon/examples/netns/`. When CORE is installed can be found under :file:`core/daemon/examples/netns/`. When CORE is installed
from packages, the example script files will be in from packages, the example script files will be in
:file:`/usr/share/core/examples/netns/` (or the :file:`/usr/local/...` prefix :file:`/usr/share/core/examples/netns/` (or the :file:`/usr/local/...` prefix
when installed from source.) For the most part, the example scripts when installed from source.) For the most part, the example scripts
are self-documenting; see the comments contained within the Python code. are self-documenting; see the comments contained within the Python code.
The scripts should be run with root privileges because they create new The scripts should be run with root privileges because they create new
network namespaces. In general, a CORE Python script does not connect to the network namespaces. In general, a CORE Python script does not connect to the
@ -37,20 +37,19 @@ allow for GUI connections.
Here are the basic elements of a CORE Python script: Here are the basic elements of a CORE Python script:
:: ::
#!/usr/bin/python from core.session import Session
from core.netns import nodes
from core import pycore session = Session(persistent=True)
node1 = session.add_object(cls=nodes.CoreNode, name="n1")
session = pycore.Session(persistent=True) node2 = session.add_object(cls=nodes.CoreNode, name="n2")
node1 = session.addobj(cls=pycore.nodes.CoreNode, name="n1") hub1 = session.add_object(cls=nodes.HubNode, name="hub1")
node2 = session.addobj(cls=pycore.nodes.CoreNode, name="n2")
hub1 = session.addobj(cls=pycore.nodes.HubNode, name="hub1")
node1.newnetif(hub1, ["10.0.0.1/24"]) node1.newnetif(hub1, ["10.0.0.1/24"])
node2.newnetif(hub1, ["10.0.0.2/24"]) node2.newnetif(hub1, ["10.0.0.2/24"])
node1.icmd(["ping", "-c", "5", "10.0.0.2"]) node1.icmd(["ping", "-c", "5", "10.0.0.2"])
session.shutdown() session.shutdown()
The above script creates a CORE session having two nodes connected with a hub. The above script creates a CORE session having two nodes connected with a hub.
The first node pings the second node with 5 ping packets; the result is The first node pings the second node with 5 ping packets; the result is
@ -63,19 +62,19 @@ a test ping to the other.
The CORE Python modules are documented with comments in the code. From an The CORE Python modules are documented with comments in the code. From an
interactive Python shell, you can retrieve online help about the various interactive Python shell, you can retrieve online help about the various
classes and methods; for example *help(pycore.nodes.CoreNode)* or classes and methods; for example *help(nodes.CoreNode)* or
*help(pycore.Session)*. *help(Session)*.
An interactive development environment (IDE) is available for browsing An interactive development environment (IDE) is available for browsing
the CORE source, the the CORE source, the
`Eric Python IDE <http://eric-ide.python-projects.org/index.html>`_. `Eric Python IDE <http://eric-ide.python-projects.org/index.html>`_.
CORE has a project file that can be opened by Eric, in the source under CORE has a project file that can be opened by Eric, in the source under
:file:`core/daemon/CORE.e4p`. :file:`core/daemon/CORE.e4p`.
This IDE This IDE
has a class browser for viewing a tree of classes and methods. It features has a class browser for viewing a tree of classes and methods. It features
syntax highlighting, auto-completion, indenting, and more. One feature that syntax highlighting, auto-completion, indenting, and more. One feature that
is helpful with learning the CORE Python modules is the ability to generate is helpful with learning the CORE Python modules is the ability to generate
class diagrams; right-click on a class, choose *Diagrams*, and class diagrams; right-click on a class, choose *Diagrams*, and
*Class Diagram*. *Class Diagram*.
.. index:: daemon versus script .. index:: daemon versus script
@ -90,12 +89,12 @@ class diagrams; right-click on a class, choose *Diagrams*, and
does not need to be running for your script to work. does not need to be running for your script to work.
The session created by a Python script may be viewed in the GUI if certain The session created by a Python script may be viewed in the GUI if certain
steps are followed. The GUI has a :ref:`File_Menu`, *Execute Python script...* steps are followed. The GUI has a :ref:`File_Menu`, *Execute Python script...*
option for running a script and automatically connecting to it. Once connected, option for running a script and automatically connecting to it. Once connected,
normal GUI interaction is possible, such as moving and double-clicking nodes, normal GUI interaction is possible, such as moving and double-clicking nodes,
activating Widgets, etc. activating Widgets, etc.
The script should have a line such as the following for running it from The script should have a line such as the following for running it from
the GUI. the GUI.
:: ::
@ -113,14 +112,14 @@ A global ``server`` variable is exposed to the script pointing to the
''' '''
global server global server
try: try:
server.addsession(session) server.add_session(session)
return True return True
except NameError: except NameError:
return False return False
:: ::
session = pycore.Session(persistent=True) session = Session(persistent=True)
add_to_server(session) add_to_server(session)
@ -129,7 +128,7 @@ otherwise they will be grouped at the coordinates ``<0, 0>``. First sketching
the topology in the GUI and then using the *Export Python script* option may the topology in the GUI and then using the *Export Python script* option may
help here. help here.
:: ::
switch.setposition(x=80,y=50) switch.setposition(x=80,y=50)

View file

@ -1,3 +1,9 @@
core (5.0-0ubuntu1) precise; urgency=low
* Added Ryu SD and Open vSwitch services, code cleanup and refactoring
-- CORE Developers <core-dev@pf.itd.nrl.navy.mil> XXX, XX XXX 2017 00:00:00 -0700
core (4.8-0ubuntu1) precise; urgency=low core (4.8-0ubuntu1) precise; urgency=low
* Support for NRL Network Modeling Framework (NMF) XML representation, bugfixes * Support for NRL Network Modeling Framework (NMF) XML representation, bugfixes
@ -18,7 +24,7 @@ core (4.6-0ubuntu1) precise; urgency=low
core (4.5-0ubuntu1) precise; urgency=low core (4.5-0ubuntu1) precise; urgency=low
* XML support, SDT3D support, EMANE 0.8.1, ns-3 locations, code cleanup, * XML support, SDT3D support, EMANE 0.8.1, ns-3 locations, code cleanup,
bugfixes, and more. bugfixes, and more.
-- Jeff Ahrenholz <core-dev@pf.itd.nrl.navy.mil> Thu, 11 Apr 2013 14:19:05 -0700 -- Jeff Ahrenholz <core-dev@pf.itd.nrl.navy.mil> Thu, 11 Apr 2013 14:19:05 -0700

View file

@ -16,7 +16,7 @@ Release: 1%{?dist}
Source: core-%{version}.tar.gz Source: core-%{version}.tar.gz
URL: http://www.nrl.navy.mil/itd/ncs/products/core URL: http://www.nrl.navy.mil/itd/ncs/products/core
Version: %{version} Version: %{version}
%description %description
The Common Open Research Emulator provides Python modules and a GUI for The Common Open Research Emulator provides Python modules and a GUI for
building virtual networks using Linux network namespace containers and bridging. building virtual networks using Linux network namespace containers and bridging.
@ -48,7 +48,7 @@ Provides: core-daemon
# python-sphinx # python-sphinx
%description daemon %description daemon
The Common Open Research Emulator provides Python modules for building virtual The Common Open Research Emulator provides Python modules for building virtual
networks using Linux network namespace containers and bridging. networks using Linux network namespace containers and bridging.
%package gui %package gui
Summary: Common Open Research Emulator GUI front-end Summary: Common Open Research Emulator GUI front-end
@ -59,7 +59,7 @@ BuildRequires: make automake autoconf
Provides: core-gui Provides: core-gui
%description gui %description gui
The Common Open Research Emulator canvas-based Tcl/Tk GUI for easily drawing The Common Open Research Emulator canvas-based Tcl/Tk GUI for easily drawing
virtual network topologies. virtual network topologies.
%prep %prep
@ -410,6 +410,8 @@ fi
%{_sbindir}/vnoded %{_sbindir}/vnoded
%changelog %changelog
* XXX XXX X 2017 CORE Developers <core-dev@pf.itd.nrl.navy.mil> - 5.0
- Added Ryu SD and Open vSwitch services, code cleanup and refactoring
* Fri Jun 5 2015 CORE Developers <core-dev@pf.itd.nrl.navy.mil> - 4.8 * Fri Jun 5 2015 CORE Developers <core-dev@pf.itd.nrl.navy.mil> - 4.8
- Support for NRL Network Modeling Framework (NMF) XML representation, bugfixes - Support for NRL Network Modeling Framework (NMF) XML representation, bugfixes
* Wed Aug 6 2014 Jeff Ahrenholz <core-dev@pf.itd.nrl.navy.mil> - 4.7 * Wed Aug 6 2014 Jeff Ahrenholz <core-dev@pf.itd.nrl.navy.mil> - 4.7