README.md in trema-0.2.3 vs README.md in trema-0.2.4

- old
+ new

@@ -15,10 +15,22 @@ emulates an OpenFlow-based network and end-hosts is provided for testing your own controllers. For debugging, a wireshark plug-in to diagnose internal data-flows among functional modules is provided. +Supported Platforms +------------------- + +Trema supports GNU/Linux only. And it has been tested on the following environments: + +* Ubuntu 12.04, 11.10, 11.04, 10.10, and 10.04 (i386/amd64, Desktop Edition) +* Debian GNU/Linux 6.0 (i386/amd64) + +It may also run on other GNU/Linux distributions but is not tested and +NOT SUPPORTED at this moment. + + Getting Started --------------- 1.Install the prerequisites at the command prompt: @@ -31,32 +43,94 @@ 3.Follow the guidelines to start developing your OpenFlow controller. You may find the following resources handy: * The [Getting Started with Trema](https://github.com/trema/trema/wiki/Quick-start). * The [Trema in 10 Minutes Tutorial](http://trema-10min.heroku.com/). * The [Trema Tutorial](http://trema-tutorial.heroku.com/). -* The [Trema Ruby API documents](http://rubydoc.info/github/trema/trema/master/frames). * The [Programming Trema Article (in Japanese)](http://gihyo.jp/dev/serial/01/openflow_sd/0007). +Ruby API +-------- + +The following is an exerpt from the Trema Ruby API. +The full documents are found here http://rubydoc.info/github/trema/trema/master/frames + +### Event and Message Handlers + +Subclass +[Trema::Controller](http://rubydoc.info/github/trema/trema/master/Trema/Controller) +and override some of the following methods to implement your own +controller. + +* [switch_ready(datapath_id)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:switch_ready) +* [switch_disconnected(datapath_id)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:switch_disconnected) +* [packet_in(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:packet_in) +* [flow_removed(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:flow_removed) +* [port_status(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:port_status) +* [openflow_error(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:openflow_error) +* [features_reply(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:features_reply) +* [stats_reply(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:stats_reply) +* [barrier_reply(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:barrier_reply) +* [get_config_reply(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:get_config_reply) +* [queue_get_config_reply(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:queue_get_config_reply) +* [vendor(datapath_id, message)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:vendor) + +### Flow-Mod and Packet-Out + +For sending Flow-Mod and Packet-Out, there are some methods defined in +[Trema::Controller](http://rubydoc.info/github/trema/trema/master/Trema/Controller) +class. + +* [send_flow_mod_add(datapath_id, options)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:send_flow_mod_add) +* [send_flow_mod_delete(datapath_id, options)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:send_flow_mod_delete) +* [send_flow_mod_modify(datapath_id, options)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:send_flow_mod_modify) +* [send_packet_out(datapath_id, options)](http://rubydoc.info/github/trema/trema/master/Trema/Controller:send_packet_out) + +### Other OpenFlow Messages + +The following OpenFlow messages can be sent with +[Trema::Controller#send_message](http://rubydoc.info/github/trema/trema/master/Trema/Controller:send_message) + +* [Trema::FeaturesRequest](http://rubydoc.info/github/trema/trema/master/Trema/FeaturesRequest) +* [Trema::SetConfigRequest](http://rubydoc.info/github/trema/trema/master/Trema/SetConfigRequest) +* [Trema::GetConfigRequest](http://rubydoc.info/github/trema/trema/master/Trema/GetConfigRequest) +* [Trema::QueueGetConfigRequest](http://rubydoc.info/github/trema/trema/master/Trema/QueueGetConfigRequest) +* [Trema::DescStatsRequest](http://rubydoc.info/github/trema/trema/master/Trema/DescStatsRequest) +* [Trema::FlowStatsRequest](http://rubydoc.info/github/trema/trema/master/Trema/FlowStatsRequest) +* [Trema::AggregateStatsRequest](http://rubydoc.info/github/trema/trema/master/Trema/AggregateStatsRequest) +* [Trema::TableStatsRequest](http://rubydoc.info/github/trema/trema/master/Trema/TableStatsRequest) +* [Trema::PortStatsRequest](http://rubydoc.info/github/trema/trema/master/Trema/PortStatsRequest) +* [Trema::QueueStatsRequest](http://rubydoc.info/github/trema/trema/master/Trema/QueueStatsRequest) +* [Trema::VendorStatsRequest](http://rubydoc.info/github/trema/trema/master/Trema/VendorStatsRequest) +* [Trema::BarrierRequest](http://rubydoc.info/github/trema/trema/master/Trema/BarrierRequest) +* [Trema::PortMod](http://rubydoc.info/github/trema/trema/master/Trema/PortMod) +* [Trema::Vendor](http://rubydoc.info/github/trema/trema/master/Trema/Vendor) + +### Actions + +Each flow table entry contains a list of actions that will be executed when a packet matches the entry. + +* [Trema::SendOutPort](http://rubydoc.info/github/trema/trema/master/Trema/SendOutPort) +* [Trema::SetEthSrcAddr](http://rubydoc.info/github/trema/trema/master/Trema/SetEthSrcAddr) +* [Trema::SetEthDstAddr](http://rubydoc.info/github/trema/trema/master/Trema/SetEthDstAddr) +* [Trema::SetIpSrcAddr](http://rubydoc.info/github/trema/trema/master/Trema/SetIpSrcAddr) +* [Trema::SetIpDstAddr](http://rubydoc.info/github/trema/trema/master/Trema/SetIpDstAddr) +* [Trema::SetIpTos](http://rubydoc.info/github/trema/trema/master/Trema/SetIpTos) +* [Trema::SetTransportSrcPort](http://rubydoc.info/github/trema/trema/master/Trema/SetTransportSrcPort) +* [Trema::SetTransportDstPort](http://rubydoc.info/github/trema/trema/master/Trema/SetTransportDstPort) +* [Trema::SetVlanVid](http://rubydoc.info/github/trema/trema/master/Trema/SetVlanVid) +* [Trema::SetVlanPriority](http://rubydoc.info/github/trema/trema/master/Trema/SetVlanPriority) +* [Trema::StripVlanHeader](http://rubydoc.info/github/trema/trema/master/Trema/StripVlanHeader) +* [Trema::VendorAction](http://rubydoc.info/github/trema/trema/master/Trema/VendorAction) + + Meta ---- * Web Page: http://trema.github.com/trema/ * Bugs: https://github.com/trema/trema/issues * Mailing List: https://groups.google.com/group/trema-dev * Twitter: http://twitter.com/trema_news - - -Supported Platforms -------------------- - -Trema has been tested ONLY on the following environments: - -* Ubuntu 12.04, 11.10, 11.04, 10.10, and 10.04 (i386/amd64, Desktop Edition) -* Debian GNU/Linux 6.0 (i386/amd64) - -It may also run on other GNU/Linux distributions but is not tested and -NOT SUPPORTED at this moment. Contributors ------------