esnet / enos Goto Github PK
View Code? Open in Web Editor NEWESnet Network Operating System (NOT ACTIVELY MAINTAINED)
License: Other
ESnet Network Operating System (NOT ACTIVELY MAINTAINED)
License: Other
cd / seems to remain in the same directory
When we initialize the default admin user in do_authUser(), we only create a new profile for them. This was sufficient when all that was needed was an entry in the password file, but recent code changes have added quite a few other actions to do_createUser(), including creating a default container for a user, ACLs, etc.
We need to make creation of the default admin user use do_createUser() so that these other actions get done as well.
There can be a race condition where netshell-controller comes up before netshell-odl-mdsal and netshell-odl-corsa. If this happens, the Controller class might try to retrieve (and cache) the OdlMdsalImpl and OdlCorsaImpl singleton objects before they are created, which is bad.
There is a workaround, which is to call Controller.getInstance().reinit() to re-fetch the objects, but that's a manual hack.
It's also possible in some cases that we might not have OdlCorsalImpl if that module is never loaded.
We should try to handle this better. We should probably have all code use the getters in Controller for finding the other objects, and no downstream consumer of this (currently just client.py I think) should cache these directly. The getters might be able to cache non-null values for performance, but it'll always be correct to ask the classes for the instances.
Source files containing code that's affected by this: Controller.java, client.py.
This is required in order to support testbed researchers who do need access to the Corsa CLI.
Note that CLI changed recently, and may change again. May want to delay this.
This includes ARP/broadcast and MAC learning support, ODL integration for both OVS and Corsa switches.
Description:
This task is not purely required for either SENSE or testbed opening.
admin@NetShell> reload
admin@NetShell> demo
VPN environment is ready.
admin@NetShell> vpn create vpn1
VPN vpn1 is created successfully.
admin@NetShell> vpn vpn1 addpop denv
Pop denv is added into VPN vpn1 successfully.
admin@NetShell> vpn vpn1 addpop aofa
Pop aofa is added into VPN vpn1 successfully.
admin@NetShell> vpn vpn1 addsite lbl.gov
The site lbl.gov is added into VPN vpn1 successfully
admin@NetShell> vpn vpn1 addsite bnl.gov
The site bnl.gov is added into VPN vpn1 successfully
admin@NetShell> vpn vpn1 delsite bnl.gov
Traceback (most recent call last):
File "/home/enos/distro/netshell-root/lib/layer2/vpn/vpn.py", line 398, in <module>
main()
File "/home/enos/distro/netshell-root/lib/layer2/vpn/vpn.py", line 354, in main
delsite(vpn, site)
File "/home/enos/distro/netshell-root/lib/layer2/vpn/vpn.py", line 276, in delsite
popsRenderer.delSite(site)
File "/home/enos/distro/netshell-root/lib/layer2/vpn/l2vpn.py", line 840, in delSite
swSwitchScope.delEndpoint(swSwitch.props['vmPort'], siteVlan)
File "/home/enos/distro/netshell-root/lib/layer2/common/openflow.py", line 696, in delEndpoint
if not port.name in self.props['endpoints']:
AttributeError: 'NoneType' object has no attribute 'name'
Traceback (most recent call last):
File "/home/enos/distro/netshell-root/lib/layer2/vpn/vpn.py", line 398, in <module>
main()
File "/home/enos/distro/netshell-root/lib/layer2/vpn/vpn.py", line 354, in main
delsite(vpn, site)
File "/home/enos/distro/netshell-root/lib/layer2/vpn/vpn.py", line 276, in delsite
popsRenderer.delSite(site)
File "/home/enos/distro/netshell-root/lib/layer2/vpn/l2vpn.py", line 840, in delSite
swSwitchScope.delEndpoint(swSwitch.props['vmPort'], siteVlan)
File "/home/enos/distro/netshell-root/lib/layer2/common/openflow.py", line 696, in delEndpoint
if not port.name in self.props['endpoints']:
AttributeError: 'NoneType' object has no attribute 'name'
10 minutes idle session timeout is too small. We should either make this longer or configurable or both.
Create design documentation for feature.
In some places related to the FileACL class, symlinks in pathnames are sometimes resolved and sometimes not. This is easy to observe on MacOS because /tmp is a symbolic link to /private/tmp. It causes some problems when trying to compare pathnames (in particular to see if a given pathname is within the ENOS root directory hierarchy or not).
Assigning to @davidhua for preliminary investigation.
When running the command python in interactive mode, the tab key does not work, making impossible to create a python subsection (tab is part of the python syntax)
Requires investigation java using a python API.
Postpone till later: Not needed for testbed.
Steps to reproduce:
Expected result: User will login successfully.
Actual result: enos will display a NullPointerException and the user shell will not allow any further inputs.
Possible cause:
With this addition in KernelSecurityManager (commit 82627ed)...:
public void checkExec(String cmd) {
if (KernelThread.getCurrentKernelThread().isPrivileged()) {
return;
}
throw new ExitSecurityException("Cannot execute UNIX processes");
An unprivileged user will be thrown the exception and the startup sequence cannot continue. A privileged user (such as admin) will still be able to login successfully.
Traceback as follows:
net.es.enos.kernel.security.ExitSecurityException: Cannot execute UNIX processes
at net.es.enos.kernel.security.KernelSecurityManager.checkExec(KernelSecurityManager.java:292)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1016)
at java.lang.Runtime.exec(Runtime.java:617)
at java.lang.Runtime.exec(Runtime.java:485)
at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:183)
at jline.internal.TerminalLineSettings.exec(TerminalLineSettings.java:173)
at jline.internal.TerminalLineSettings.stty(TerminalLineSettings.java:168)
at jline.internal.TerminalLineSettings.get(TerminalLineSettings.java:72)
at jline.internal.TerminalLineSettings.<init>(TerminalLineSettings.java:52)
at jline.UnixTerminal.<init>(UnixTerminal.java:31)
at net.es.enos.shell.Shell.startShell(Shell.java:99)
at net.es.enos.sshd.SshdShell.run(SshdShell.java:119)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "ENOS Shell User= user1" java.lang.NullPointerException
at net.es.enos.shell.Shell.startShell(Shell.java:119)
at net.es.enos.sshd.SshdShell.run(SshdShell.java:119)
at java.lang.Thread.run(Thread.java:745)
The ENOS root directory is defined, by default, as /tmp/enos. However, on some operating systems (MacOS in particular), /tmp gets cleared on a reboot. On some other operating systems, it's common practice for /tmp to be a RAM disk for increased performance (which has a similar effect).
Losing the contents of the ENOS root directory is a Bad Thing (TM).
We should pick a better place for this.
This activity covers the implementation, unit test writing, designer test, and documentation of the End-user controlled OVS feature.
The MP-VPN code should use the database-backed topology objects, rather than pulling network topology information from the topology builder (which currently only supports a hard-coded topology).
Note that this will require some API changes, since the interfaces for topology objects and topology builder objects are (by design) not the same.
During the login of an unprivileged user, the enos backend can sometimes generate an exception related to permissions. This doesn't happen all of the time. Back-end stack trace:
163434 [pool-2-thread-5] WARN net.es.enos.kernel.users.Users - authUser entry
163435 [pool-2-thread-5] WARN net.es.enos.kernel.users.Users - looking for key for bmah2
163450 [pool-2-thread-5] WARN net.es.enos.kernel.users.Users - bmah2 has entered correct password
163451 [pool-2-thread-5] INFO org.apache.sshd.server.session.ServerSession - Session bmah2@/0:0:0:0:0:0:0:1:53058 authenticated
163457 [pool-2-thread-7] WARN org.apache.sshd.server.session.ServerSession - Exception caught
java.lang.SecurityException: Illegal Thread access from pool-2-thread-7 onto ENOS Shell User= bmah2
at net.es.enos.kernel.security.KernelSecurityManager.checkAccess(KernelSecurityManager.java:75)
at java.lang.Thread.checkAccess(Thread.java:1418)
at java.lang.Thread.setPriority(Thread.java:1122)
at java.lang.Thread.init(Thread.java:413)
at java.lang.Thread.init(Thread.java:349)
at java.lang.Thread.<init>(Thread.java:595)
at net.es.enos.sshd.SshdShell.start(SshdShell.java:78)
at org.apache.sshd.server.channel.ChannelSession.handleShell(ChannelSession.java:433)
at org.apache.sshd.server.channel.ChannelSession.handleRequest(ChannelSession.java:284)
at org.apache.sshd.server.channel.ChannelSession.handleRequest(ChannelSession.java:238)
at org.apache.sshd.common.session.AbstractSession.channelRequest(AbstractSession.java:1083)
at org.apache.sshd.server.session.ServerSession.running(ServerSession.java:240)
at org.apache.sshd.server.session.ServerSession.handleMessage(ServerSession.java:216)
at org.apache.sshd.common.session.AbstractSession.decode(AbstractSession.java:587)
at org.apache.sshd.common.session.AbstractSession.messageReceived(AbstractSession.java:253)
at org.apache.sshd.common.AbstractSessionIoHandler.messageReceived(AbstractSessionIoHandler.java:54)
at org.apache.sshd.common.io.nio2.Nio2Session$2.completed(Nio2Session.java:231)
at org.apache.sshd.common.io.nio2.Nio2Session$2.completed(Nio2Session.java:217)
at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
at sun.nio.ch.Invoker.invokeDirect(Invoker.java:145)
at sun.nio.ch.UnixAsynchronousSocketChannelImpl.implRead(UnixAsynchronousSocketChannelImpl.java:553)
at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:275)
at sun.nio.ch.AsynchronousSocketChannelImpl.read(AsynchronousSocketChannelImpl.java:296)
at java.nio.channels.AsynchronousSocketChannel.read(AsynchronousSocketChannel.java:407)
at org.apache.sshd.common.io.nio2.Nio2Session.startReading(Nio2Session.java:217)
at org.apache.sshd.common.io.nio2.Nio2Session$2.completed(Nio2Session.java:232)
at org.apache.sshd.common.io.nio2.Nio2Session$2.completed(Nio2Session.java:217)
at sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:126)
at sun.nio.ch.Invoker$2.run(Invoker.java:206)
at sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:112)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
163459 [pool-2-thread-7] INFO org.apache.sshd.server.session.ServerSession - Session bmah2@/0:0:0:0:0:0:0:1:53058 closed
Scenario to reproduce:
The problem is that Shell's threads come from a thread pool and after running for a user, it needs to be reset.
Model any created/discovered OSCARS circuits as topology within the ENOS topology service.
This epic covers discovery of OSCARS topology, provisioning of OSCARS circuits, and the inventory of OSCARS circuits as topology.
The class net.es.enos.api.SSHConnection
has hard-coded usernames and passwords. These need to be audited and/or/removed.
On UNIX, an sshd login prints the motd (etc.) for an interactive shell login, but not if you're invoking sshd to run a command. IIRC this functionality is implemented in the back-end sshd daemon.
enos should do something similar, so if invoke sshd to run say a python script within enos, I don't get the "Welcome to enos" banner in my script's output.
Purpose: detection of hard and software failure on an within a VPN / OSCARS circuit.
Feature will utilize ProxMox VE (https://www.proxmox.com/en/proxmox-ve) to dynamically create, delete, and generally manage Linux-based containers. This feature is required for NFV support, however, before this, it'll be used to create containers for user controllers, fake hosts, etc. Also required for site management.
This task should wait until deployment of proxmox on the testbed if complete.
Mostly data type translation/adaption.
On the first startup of ENOS on a fresh install, ${ENOS_ROOT}/etc doesn't exist. This prevents sshd from writing a new host key at startup time:
83688 [pool-2-thread-1] INFO org.apache.sshd.server.session.ServerSession - Server session created from /0:0:0:0:0:0:0:1:55816
83690 [pool-2-thread-1] INFO org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider - Generating host key...
83693 [pool-2-thread-1] INFO net.es.enos.kernel.security.KernelSecurityManager - checkWrite allows /var/enos/etc/hostkey.ser because thread is privileged
83693 [pool-2-thread-1] WARN org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider - Unable to write key /var/enos/etc/hostkey.ser: java.io.FileNotFoundException: /var/enos/etc/hostkey.ser (No such file or directory)
83695 [pool-2-thread-1] INFO org.apache.sshd.server.session.ServerSession - Kex: server->client aes128-ctr hmac-md5 none
83695 [pool-2-thread-1] INFO org.apache.sshd.server.session.ServerSession - Kex: client->server aes128-ctr hmac-md5 none
83697 [pool-2-thread-1] INFO net.es.enos.kernel.security.KernelSecurityManager - checkRead ok /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/sunec.jar not an ENOS file. Rely on system access
83697 [pool-2-thread-1] INFO net.es.enos.kernel.security.KernelSecurityManager - checkRead ok /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/ext/sunec.jar not an ENOS file. Rely on system access
100899 [pool-2-thread-3] INFO org.apache.sshd.server.session.ServerSession - Server session created from /0:0:0:0:0:0:0:1:55819
100902 [pool-2-thread-4] INFO org.apache.sshd.server.session.ServerSession - Kex: server->client aes128-ctr hmac-md5 none
100902 [pool-2-thread-4] INFO org.apache.sshd.server.session.ServerSession - Kex: client->server aes128-ctr hmac-md5 none
Despite this problem, ENOS continues to operate fairly normally. On the first user login, ${ENOS_ROOT}/etc gets created. ENOS will continue using the same (unsaved) host key until ENOS is stopped and restarted.
On the second bootup, ENOS again fails to find a saved host key and generates a different one than before. This time, ${ENOS_ROOT}/etc exists, so it can save the key, and all works well after any users who logged in on the first boot clear out the first host key from their SSH known_hosts file.
Filing this minor but annoying bug so I don't forget to fix it. Should be pretty easy, just need to make sure that ${ENOS_ROOT}/etc exists before we initialize SSH.
user1@enos> adduser user2 123 user
student2:enos davidhua$ ls users
admin user1 user2
student2:enos davidhua$ cat etc/enos.users
user2:$6$76n9.pVm$GvyXYtoa.4NHpQGlZduOpLpmKt5xLwRxS9JXNyLfKAkR1qS6d6jZFA1lpdfLF.VZd2cKjGgwfuBnLOOt2.1wO1:user
admin:$6$uYcVQ/dk$XZM6aobum8wFc/etdcawiRqYZI4f6ctulJrtlTULLPAE/KytbrFYfcqHHg9fCPxofPrEBtsc6RI0T2Wf33EHw1:root
user1:$6$L4yxQeoZ$tLoIGpDyiNn55x0FIq9iRhGzx4ojeviK734iR.H0ayywEQliEbdjZKm9KkhQTLa6X/fbUUWgQgkH0YZMtWdav0:user
Create OVS instances for users, attach them to hardware switches. This supports OpenFlow experiments on the SDN testbed, where we don't want to give (too much) Corsa access. This task, automation, should wait until the deployment of proxmox is done or planned.
This is only when executing a program in non interactive mode, i.e.
lomax@enos> python test.py
Write design documentation describing how to: Create OVS instances for users, attach them to hardware switches.
Build a topology adaptor to import layer 2 OSCARS topology into ENOS.
Package OSCARS Java Client into ENOS bundle as a new OSGi service. Add appropriate configuration support allow for provisioning of remote OSCARS instance.
Description:
pScheduler is doing most of what we want to accomplish here.
Tasks:
For a number of reasons, we need to make the MP-VPN feature use epipes instead of pre-configured OSCARS circuits. This is primarily because OSCARS is implemented on VPLS, and contains some MAC learning and other LAN emulation features that do not interact well with the MP-VPN MAC address translation that is needed to ensure isolation between multiple VPNs.
The practical implication is VPNs running over OSCARS circuits will experience degraded connectivity (due to MAC learning timeouts) and throughput (due to flooding bandwidth limits). These problems were first seen during the SC15 demo prep and resulting troubleshooting.
This issue depends on #42.
If the first login session to enos is by an unprivileged user, the login session hangs after printing the banner and before the command-line prompt.
Server-side stack traces as follows:
Setting ENOS_ROOTDIR to /Users/bmah/IdeaProjects/enos/base
Setting ENOS_HOME to /Users/bmah/IdeaProjects/enos/base
JarClassLoader: Warning: jline/Terminal.class in lib/jython-standalone-2.5.2.jar is hidden by lib/jline-2.11.jar (with different bytecode)
JarClassLoader: Warning: jline/UnixTerminal.class in lib/jython-standalone-2.5.2.jar is hidden by lib/jline-2.11.jar (with different bytecode)
JarClassLoader: Warning: jline/UnsupportedTerminal.class in lib/jython-standalone-2.5.2.jar is hidden by lib/jline-2.11.jar (with different bytecode)
JarClassLoader: Warning: jline/WindowsTerminal$1.class in lib/jython-standalone-2.5.2.jar is hidden by lib/jline-2.11.jar (with different bytecode)
JarClassLoader: Warning: jline/WindowsTerminal.class in lib/jython-standalone-2.5.2.jar is hidden by lib/jline-2.11.jar (with different bytecode)
JarClassLoader: Warning: Null manifest from input stream associated with: lib/maven-toolchain-1.0.jar
JarClassLoader: Warning: org/apache/commons/logging/Log.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/LogConfigurationException.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/LogFactory$1.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/LogFactory$2.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/LogFactory$3.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/LogFactory.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/LogSource.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/impl/Jdk14Logger.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/impl/LogFactoryImpl.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/impl/NoOpLog.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/impl/SimpleLog$1.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: org/apache/commons/logging/impl/SimpleLog.class in lib/commons-logging-api-1.1.jar is hidden by lib/commons-logging-1.0.4.jar (with different bytecode)
JarClassLoader: Warning: com/google/common/collect/package-info.class in lib/google-collections-1.0.jar is hidden by lib/jython-standalone-2.5.2.jar (with different bytecode)
0 [main] INFO net.es.enos.boot.BootStrap - Starting ENOS
0 [main] INFO net.es.enos.boot.BootStrap - Starting BootStrap thread
1 [ENOS Bootstrap] INFO net.es.enos.boot.BootStrap - Starting services
33 [ENOS Bootstrap] INFO org.apache.sshd.common.util.SecurityUtils - BouncyCastle not registered, using the default JCE provider
387 [ENOS Bootstrap] INFO net.es.enos.shell.ShellCommandsFactory - Adding Shell command help
387 [ENOS Bootstrap] INFO net.es.enos.shell.ShellCommandsFactory - Adding Shell command exit
388 [ENOS Bootstrap] INFO net.es.enos.shell.ShellCommandsFactory - Adding Shell command test
389 [ENOS Bootstrap] INFO net.es.enos.shell.ShellCommandsFactory - Adding Shell command python
389 [ENOS Bootstrap] INFO net.es.enos.shell.ShellCommandsFactory - Adding Shell command adduser
389 [ENOS Bootstrap] INFO net.es.enos.shell.ShellCommandsFactory - Adding Shell command passwd
3361 [pool-2-thread-1] INFO org.apache.sshd.server.session.ServerSession - Session created from /0:0:0:0:0:0:0:1:52609
4690 [pool-2-thread-5] WARN net.es.enos.kernel.users.Users - authUser entry
4690 [pool-2-thread-5] WARN net.es.enos.kernel.users.Users - looking for key for bmah2
4804 [pool-2-thread-5] WARN net.es.enos.kernel.users.Users - bmah2 has entered correct password
4805 [pool-2-thread-5] INFO org.apache.sshd.server.session.ServerSession - Session bmah2@/0:0:0:0:0:0:0:1:52609 authenticated
Shell Starting
Exception in thread "ENOS Shell User= bmah2" java.lang.ExceptionInInitializerError
at net.es.enos.shell.Shell.run(Shell.java:104)
at java.lang.Thread.run(Thread.java:744)
Caused by: java.util.MissingResourceException: Can't find bundle for base name jline.console.completer.CandidateListCompletionHandler, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:721)
at jline.console.ConsoleReader.<clinit>(ConsoleReader.java:93)
... 2 more
Caused by: java.lang.ClassCastException: jline.console.completer.CandidateListCompletionHandler cannot be cast to ResourceBundle
at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2574)
at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1436)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1400)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1354)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1354)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1296)
... 4 more
The following complaints appeared on Python's stdout after setting up a two-node MP-VPN between lbl-diskpt1 and bnl-diskpt1 with these commands:
vpn create vpn1
vpn vpn1 addpop denv
vpn vpn1 addpop aofa
vpn vpn1 addsite lbl.gov
vpn vpn1 addsite bnl.gov
vpn vpn1 addhost [email protected]
vpn vpn1 addhost [email protected]
These seem to be caused by the ARP packets from lbl-diskpt1.
admin@NetShell> port name 24 type HwToCore
key 24.1994
vpn1.denv-tb-of-1
port name 24 type HwToCore
key 24.1994
untapBroadcastEntry with k {mac:FF:FF:FF:FF:FF:FF,vlan:1994,port:24}
not in index
[410]2015-10-30 14:49:40,444-L2SwitchScope-WARNING-PacketOut(scope=vpn1.denv-tb-of-1,port=Port(name=2),src=00:60:DD:44:2B:2C,dst=FF:FF:FF:FF:FF:FF,etherType=0,vlan=1994) is not within this scope vpn1.denv-tb-of-1
[410]2015-10-30 14:49:40,466-L2SwitchScope-WARNING-PacketOut(scope=vpn1.denv-tb-of-1,port=Port(name=2),src=00:60:DD:44:2B:2C,dst=FF:FF:FF:FF:FF:FF,etherType=0,vlan=1994) is not valid in vpn1.denv-tb-of-1
port name eth11 type SwToHw.WAN
key eth11.16777215
[410]2015-10-30 14:49:41,365-SimpleController-WARNING-(eth11, 1994, FF:FF:FF:FF:FF:FF) not found in org.python.proxies.layer2.odl.client$ODLClient$245@56120417.scopeIndex
None
[410]2015-10-30 14:49:41,378-SimpleController-WARNING-No scope for PacketInEvent(inPort=Port(name=eth11),srcMac=00:60:DD:44:2B:2C,dstMac=FF:FF:FF:FF:FF:FF,vlan=1994)
port name eth11 type SwToHw.WAN
key eth11.16777215
[410]2015-10-30 14:49:42,364-SimpleController-WARNING-(eth11, 1994, FF:FF:FF:FF:FF:FF) not found in org.python.proxies.layer2.odl.client$ODLClient$245@56120417.scopeIndex
None
[410]2015-10-30 14:49:42,381-SimpleController-WARNING-No scope for PacketInEvent(inPort=Port(name=eth11),srcMac=00:60:DD:44:2B:2C,dstMac=FF:FF:FF:FF:FF:FF,vlan=1994)
It looks like we're trying to do a PACKET_OUT on port 2 of denv-tb-of-1. I'm wondering if we should be trying port 1 instead (both go to denv-ovs but the link using port 1 is of type "hw" and the link using port 2 is of type "none").
Add service logic into ENOS for gluing shell commands/application API into pathfinding and OSCARS provisioning operations.
Instead of creating a mesh of OSCARS circuits, create circuits along the physical topology and implement forwarding across multiple POP's.
Stretch goal: this could slip.
Investigate ProxMox programmable API. Design ENOS management of Linux Kernel virtual machines (KVM) and Linux containers (LXC).
Resource partitioning provides virtualized resource views on a per "user" basis.
When an ENOS python program calls sys.exit() to quit, this cause not only the program to quit, but the whole JVM.
Extended existing path computation engine to handle intelligent routing of links utilized for a MPVPN instance.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.