THE ORE FAQ
This is an incomplete FAQ and will be added or updated
any time later.
2. Where can I get the latest
ORE package?
3. What platforms does the ORE
support?
4. How can I start the ORE on
the Accelar?
5. How can I start the ORE on a
host machine?
6. After ORE starts, can I
interact with it?
8. Can I deploy a service
dynamically? A shell command?
9. What is the packet forwarding
service? JFWD?
10. What is the packet capturing
service? JCapture?
12. I do not have an Accelar
box, can I use the ORE? And develop a new service?
The ORE or Oplet Runtime Environment (ORE) is a platform for secure downloading, installation, and safe execution of Java code (particular for network services) within a JVM (Java Virtual Machine) so as to inject customized software into network devices.
The main benefit is that it provides an open, platform-neutral, pure Java runtime environment that enables customers to program and deploy their own network services dynamically into the network.
On the Openetlab website, enter the download page “http://www.openetlab.org/downloads” and select the latest ORE package to download. You have to register prior to downloading.
The ORE itself is a pure Java software so that it can run on most OS platforms supporting Java 1.1 or later, for example, Linux, Solaris, VxWorks (on the Accelar) and Windows. However, not all network services under ORE are available for all these platforms if they require access platform-dependent resources (e.g., packet processing). Today, most platform-dependent ORE services are mainly developed under Linux and some open network systems including the Nortel Networks gigabit routing switch product Passport (a.k.a., Accelar).
Please note that the current JVM version on the Accelar is JDK 1.1.6 due to the embedded Java technology standardization. You can use Java 2 wherever it is available though.
Starting the ORE on the Accelar is a bit different from starting it on a host (see Q5) since you need to set up a TFTP server (for downloading the JVM/ORE boot image) and an HTTP server (for downloading the ORE and service packages). Then, you determine the startup services by editing the startup script “jars/start.properties” when starting the ORE or start those services using the ORE shell service (see Q6) after starting the ORE. See the Accelar boot FAQ for detail.
You do not need a TFTP server here since you can install a JVM locally. And, the HTTP server is only required if you want to install the ORE and service package (i.e., the jar files) remotely.
Suppose that the ORE is installed locally, to start the ORE, you can run two executable scripts in the ORE bin/ directory. One is the setup script (e.g., “setup.sh”) in which you can alter two environmental variables “OREROOT (the root directory of ORE installed)” and “ORESTART (the URL of the ORE startup service jar file)”. The other is the ore script (e.g., “ore.sh” ) that starts the ORE server after running setup.
The following three steps are used to start the ORE locally. First, specify the startup services that are loaded automatically when ORE starts.
Linux $ cd
<oreroot>/jars
Linux $ vi
start.properties
<add
or delete service jar files or URLs, …>
Second, make sure that the setup script “setup.sh” or “setup.bat” is correct before running it.
Linux $ cd
<oreroot>/bin
Linux $ vi
./setup.sh # edit two variables: OREROOT and ORESTART
Linux $ ./setup.sh # run
Finally, start the ORE by running “ore.sh”.
Linux $ cd
<oreroot>/bin
Linux $ ./ore.sh
CONSOLE: ORE
built Sat July 1 13:41:09 PST 2000
CONSOLE:
Constructing class loader for file:/home/ore-0.3.3/jars/start.jar
CONSOLE:
Constructing class loader for file:/home/ore-0.3.3/jars/logger.jar
... ...
Yes. The ORE provides several ways of user interaction, including API invoking and the telnet-style command. For example, you can use telnet to log in to the ORE server (use port 1999).
LINUX ore-0.3.3 1007> telnet
localhost 1999
Trying
127.0.0.1...
Connected to
localhost.localdomain.
Escape
character is '^]'.
Welcome to
the OpenNet shell
To list those commands you can use, type “ls bin”. Later, you can add your own commands there.
OpletShell>
ls bin
cd* Change directory. Usage:
"cd path"
install* Install an oplet: usage
"install URL "
load* Load (install and start) an
oplet: usage "load URL "
ls* List objects in
directory. Usage: "ls [path]"
mem* Show memory informatino:
usage "mem"
mkdir* Make directory. Usage:
"mkdir path"
oplets* Show the installed oplets
pwd* Print working directory.
Usage: "pwd"
services* Show the registered services
showlog* Show the log: usage
"showlog"
start* Starts an oplet: usage
"start URL "
stop* Stops an oplet: usage
"stop URL "
uninstall* Uninstall an oplet: usage "
uninstall URL "
unload* Unload (stop and
uninstall) an oplet: usage " unload URL"
Use “oplets” to list those oplets that have been loaded.
OpletShell>
oplets
file:/home/ore-0.3.3/jars/start.jar
file:/home/ore-0.3.3/jars/logger.jar
file:/home/ore-0.3.3/jars/shell.jar
file:/home/ore-0.3.3/jars/startupShell.jar
file:/home/ore-0.3.3/jars/logwriter.jar
file:/home/ore-0.3.3/jars/ahttp.jar
file:/home/ore-0.3.3/jars/oreservlets.jar
<The above
oplets are specified in /home/ore-0.3.3/jars/start.properties>
Use “services” to list those services that are registered for use.
OpletShell>
services
com.nortelnetworks.ore.service.startupShell.StartupShellService
com.nortelnetworks.ore.service.logwriter.LogWriterService
com.nortelnetworks.ore.service.oreservlets.OreServlets
com.nortelnetworks.ore.service.shell.ShellService
ahttp.AcmeHttpService
com.nortelnetworks.ore.service.logger.LoggerService
<The above
startup services are provided by the oplets specified in
/home/ore-0.3.3/jars/start.properties>
Similar to using the above three commands, you can use other commands to manage the services. On the other hand, you can add a shell command that represents your service (see Q8).
The ORE services, including Active Networks services (e.g., Execution Environments), are programmed using Java code and then encapsulated as oplets using the ORE interfaces (see the white paper “Accelar Programmable Networking and Active Networks”). They are Java code injected to network node systems (e.g., the Accelar) by having ORE load and execute those oplets.
These services can be classified into three categories: ORE-specific, system and customized. The ORE-specific services are the “Standard Services” that provide those ORE APIs for customer service creation, encapsulation and management, e.g., start, opletService, shell. The system services provide access to underlying system resources such as forwarding and diverting packets, for example, JFWD (a Java Forwarding API), JMIB (a Java API to the SNMP MIBs) and JPCAP (a Java API to the Berkeley Libpcap).
Finally, the customized services are the user-end APIs that include both the ORE “Function Services” and the “Customer Services”. The “Function Services” with the ORE package provide common functional APIs for developing user-end services, for example, HTTP, JCapture (a Java API to capture packets), IpPacket (a Java IP packet utility) and JMIB (a Java wrapper of MIBs). The “Customer Services” are developed by the end users for specific purposes, e.g., ORE ANTS (the MIT ANTS for ORE).
The client applications are
developed using the APIs provided by the above three services and utilize them
to do particular networking tasks either remotely or locally.
First of all, you should program a service if it is new. You can do it just a regular Java application. Then, you need to wrap the Java code using the ORE oplet interface. It’s not complicate in coding! See the ORE examples in the directory <OREROOT>/examples/.
Read Q6 “After ORE starts, can I interact with it?” to learn about the ORE shell. To load servicesto the ORE, type in the command load and a URL pointing to the location of the service code. The following lines are for installing and loading the two services, of which echo (echo.jar) is a UDP echo service and echocli (echocli.jar) is a client application built using the echo service and adds a command “echo” to the ORE shell.
OpletShell>
load file:/home/ore-0.3.3/examples/echo/echo.jar
OpletShell>
load file:/home/ore-0.3.3/examples/echocli/echocli.jar
Type “ls bin” to see the new command “echo” is added.
OpletShell>
ls bin
cd* Change directory. Usage: "cd path"
echo* echo HOST COOKIE
install* Install an oplet: usage
"install URL "
load* Load (install and start) an
oplet: usage "load URL "
ls* List objects in
directory. Usage: "ls
[path]"
mem* Show memory informatino:
usage "mem"
mkdir* Make directory. Usage: "mkdir path"
oplets* Show the installed oplets
pwd* Print working directory.
Usage: "pwd"
services* Show the registered services
showlog* Show the log: usage
"showlog"
start* Starts an oplet: usage
"start URL "
stop* Stops an oplet: usage
"stop URL "
uninstall* Uninstall an oplet: usage "
uninstall URL "
unload* Unload (stop and
uninstall) an oplet: usage " unload URL"
Now, test the services using “echo” to send an echo request to a remote host “ottawa.nortelnetworks.com”.
OpletShell>
echo ottawa.nortelnetworks.com hello
received:
hello
After using the services, you can stop and deinstall them by unloading them from the ORE.
OpletShell>
unload file:/home/ore-0.3.3/examples/echocli/echocli.jar
OpletShell>
unload file:/home/ore-0.3.3/examples/echo/echo.jar
Furthermore, you can experience a real network service by running the “ORE ANTS” service (http://www.openetlab.org/downloads/README.ore-ants), with or without the Accelar.
If you want to set filters for diverting packet to the CPU and altering the forwarding rules and to change the routing tables, you need a packet forwarding service that provides fundamental functions to do these packet processing job. The ORE provides a Java Forwarding API JFWD that enables customer services to control the forwarding behavior by accessing the underlying hardware instrumentation on various platforms.
JFWD is not completely implemented. You can also build your own forwarding service based on native programming interfaces.
JCapture is a service that enables a customer application or service to capture packets by setting filters. JCapture uses the JFWD to set the filters and gets the captured packets from the underlying hardware/system using platform-dependent services such as JPCAP (for Berkeley Libpcap on UNIX and Linux hosts) and the Accelar packet copying or mirroring function.
Alternatively, the Accelar supports port mirroring through which those packets matching the filters (using JFWD) can be mirrored to user-specified ports. These ports can be connected to and convey network traffic to particular hosts such as Linux boxes.
JMIB is a Java service API provided by ORE, and used to communicate with local or remote SNMP daemons to access the hardware instrumentation. Since most network devices are equipped with MIBs, you can user JMIB to alter MIB values in order to change the device functionality. On the Accelar, JFWD is built upon the JMIB.
The ORE 0.3.3 provides Java interfaces of both standard (e.g., jmib_mib2.jar) and Accelar-specific MIBs (e.g., jmib_accelar_web.jar) in the jar files that are stored in the ORE jar directory “jars/”. The standard MIB2 (i.e., RFC 1213) can be used on any platform whose MIBs are managed by an SNMP-v2 daemon. Moreover the Accelar has the Enterprise MIBs that are Accelar-specific.
JSNMP is used by JMIB to communicate with remote SNMP daemon programs on the Accelar and other platforms to access the MIB values. It’s a low-level service.
Sure. You do not need an Accelar box to start the ORE or program a new network service. You may use a Linux or Windows box instead. The ORE is platform-independent, and can also run on both Accelar and other systems. A platform-independent service under ORE can too.
In the early stage of development, you may program an ORE service without ORE. Rather, you use a JDK. When the code is ready, you can use the ORE oplet interfaces to wrap the service code so that it becomes an ORE service.
Now, you need an Accelar box to
test your service if it requires using Accelar-specific native functions.
Comments or questions? Send to Phil Wang, please. Thanks.
End of this FAQ.
Last modified: 8/2/00 4:25:32 PM