Reference Guide
Table Of Contents
- 1 Introduction
- 2 Establishing Your Test and Development Environments
- 3 Developing Applications
- Introduction
- Authentication
- REST API
- Audit Logging
- Alert Logging
- Configuration
- High Availability
- OpenFlow
- Metrics Framework
- GUI
- SKI Framework - Overview
- SKI Framework - Navigation Tree
- SKI Framework - Hash Navigation
- SKI Framework - View Life-Cycle
- SKI Framework - Live Reference Application
- UI Extension
- Introduction
- Controller Teaming
- Distributed Coordination Service
- Persistence
- Backup and Restore
- Device Driver Framework
- 4 Application Security
- 5 Including Debian Packages with Applications
- 6 Sample Application
- Application Description
- Creating Application Development Workspace
- Application Generator (Automatic Workspace Creation)
- Creating Eclipse Projects
- Updating Project Dependencies
- Building the Application
- Installing the Application
- Application Code
- 7 Testing Applications
- 8 Built-In Applications
- Appendix A
- Appendix B
- Bibliography
.addField(createBasicField(PV, ETH_SRC, MAC, MAC_MASK))
.addField(createBasicField(PV, ETH_TYPE, EthernetType.IPv4))
.addField(createBasicField(PV, IP_PROTO, IpProtocol.TCP))
.addField(createBasicField(PV, TCP_DST, SMTP_PORT));
return (Match) mm.toImmutable();
}
private static final long INS_META_MASK = 0xffff0000;
private static final long INS_META_DATA = 0x33ab0000;
private List<Instruction> createInstructions() {
// NOTE static imports of:
// com.hp.of.lib.instr.ActionFactory.createAction;
// com.hp.of.lib.instr.InstructionFactory.createInstruction;
// com.hp.of.lib.instr.InstructionFactory.createMutableInstruction;
List<Instruction> result = new ArrayList<Instruction>();
result.add(createInstruction(PV, InstructionType.WRITE_METADATA,
INS_META_DATA, INS_META_MASK));
InstrMutableAction apply = createMutableInstruction(PV,
InstructionType.APPLY_ACTIONS);
apply.addAction(createAction(PV, ActionType.DEC_NW_TTL))
.addAction(createActionSetField(PV, ETH_DST, MAC_DEST))
.addAction(createActionSetField(PV, IPV4_DST, IP_DEST));
result.add((Instruction) apply.toImmutable());
return result;
}
}
Core Controller
The Core Controller handles the connections from OpenFlow switches and provides the means for
upper layers of software to interact with those switches via the ControllerService API.
Design Goals
The following are the overall design goals of the core controller:
•
To support OpenFlow 1.0.0 and 1.3.2 switches.
•
To provide the base platform for higher-level OpenFlow Controller functionality.
•
To implement the services of:
Accepting and maintaining connections from OpenFlow-capable switches
33