THE ORE FAQ

 

This is an incomplete FAQ and will be added or updated any time later.

 

List of Questions

1. What’s the ORE?. 1

2. Where can I get the latest ORE package?. 1

3. What platforms does the ORE support?. 1

4. How can I start the ORE on the Accelar?. 1

5. How can I start the ORE on a host machine?. 2

6. After ORE starts, can I interact with it?. 2

7. What are the ORE services?. 3

8. Can I deploy a service dynamically? A shell command?. 4

9. What is the packet forwarding service? JFWD?. 4

10. What is the packet capturing service? JCapture?. 5

11. What are JMIB and JSNMP?. 5

12. I do not have an Accelar box, can I use the ORE? And develop a new service?. 5

 

Return to Top.

 

 

1. What’s the ORE?

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.

Return to Top.

 

2. Where can I get the latest ORE package?

On the Openetlab website, enter the download page “http://www.openetlab.com/downloads” and select the latest ORE package to download. You have to register prior to downloading.

Return to Top.

 

3. What platforms does the ORE support?

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.

Return to Top.

 

4. How can I start the ORE on the Accelar?

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.

Return to Top.

 

5. How can I start the ORE on a host machine?

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

... ...

 

Return to Top.

              

6. After ORE starts, can I interact with it?

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).

 

Return to Top.

 

7. What are the ORE services?

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.

Return to Top.

 

8. Can I deploy a service dynamically? A shell command?

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.com/downloads/README.ore-ants), with or without the Accelar.

Return to Top.

 

9. What is the packet forwarding service? JFWD?

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.

 

10. What is the packet capturing service? JCapture?

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.

 

11. What are JMIB and JSNMP?

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.

 

12. I do not have an Accelar box, can I use the ORE? And develop a new 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