trema 0.2.5 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +1 -1
- data/Doxyfile +1 -1
- data/Gemfile +18 -6
- data/README.md +112 -5
- data/Rakefile +3 -1
- data/Rantfile +88 -1
- data/bin/trema +248 -0
- data/bin/trema-config +59 -0
- data/cruise.rb +1 -1
- data/features/example.dumper.feature +45 -65
- data/features/example.hello_trema.feature +21 -0
- data/features/example.learning_switch.feature +26 -28
- data/features/example.list_switches.feature +19 -33
- data/features/example.message.echo_reply.feature +10 -10
- data/features/example.message.echo_request.feature +2 -2
- data/features/example.message.features_request.feature +6 -5
- data/features/example.message.hello.feature +47 -13
- data/features/example.message.set_config.feature +4 -4
- data/features/example.message.vendor-action.feature +23 -0
- data/features/example.multi_learning_switch.feature +14 -42
- data/features/example.packet_in.feature +31 -0
- data/features/example.packetin_filter_config.feature +11 -7
- data/features/example.patch_panel.feature +29 -0
- data/features/example.repeater_hub.feature +43 -40
- data/features/example.switch_info.feature +51 -0
- data/features/example.switch_monitor.feature +24 -42
- data/features/packetin_filter.feature +28 -22
- data/features/step_definitions/misc_steps.rb +19 -8
- data/features/step_definitions/send_packets_steps.rb +1 -10
- data/features/step_definitions/stats_steps.rb +4 -4
- data/features/support/env.rb +2 -1
- data/features/support/hooks.rb +35 -2
- data/features/switch_manager.feature +18 -12
- data/features/trema-config.feature +26 -39
- data/features/trema.dump_flows.feature +26 -12
- data/features/trema.help.feature +26 -0
- data/features/trema.kill.feature +39 -41
- data/features/trema.killall.feature +23 -23
- data/features/trema.reset_stats.feature +50 -10
- data/features/trema.run.feature +28 -39
- data/features/trema.send_packets.feature +29 -40
- data/features/trema.show_stats.feature +30 -33
- data/features/trema.up.feature +33 -0
- data/features/trema.version.feature +9 -0
- data/ruby/extconf.rb +7 -0
- data/ruby/trema/aggregate-stats-reply.rb +3 -3
- data/ruby/trema/app.rb +5 -1
- data/ruby/trema/barrier-request.c +55 -30
- data/ruby/trema/cli.rb +8 -8
- data/ruby/trema/command.rb +1 -3
- data/ruby/trema/command/dump_flows.rb +5 -24
- data/ruby/trema/command/kill.rb +31 -36
- data/ruby/trema/command/killall.rb +1 -19
- data/{features/step_definitions/kill_steps.rb → ruby/trema/command/netns.rb} +13 -5
- data/ruby/trema/command/reset_stats.rb +3 -23
- data/ruby/trema/command/ruby.rb +2 -19
- data/ruby/trema/command/run.rb +6 -27
- data/ruby/trema/command/send_packets.rb +6 -90
- data/ruby/trema/command/show_stats.rb +21 -40
- data/ruby/trema/command/up.rb +5 -26
- data/ruby/trema/command/version.rb +1 -5
- data/ruby/trema/controller.c +14 -16
- data/ruby/trema/custom-switch.rb +56 -0
- data/ruby/trema/desc-stats-reply.rb +5 -5
- data/ruby/trema/dsl/configuration.rb +4 -0
- data/{features/step_definitions/up_steps.rb → ruby/trema/dsl/custom-switch.rb} +18 -4
- data/ruby/trema/dsl/netns.rb +78 -0
- data/ruby/trema/dsl/parser.rb +2 -0
- data/ruby/trema/dsl/runner.rb +8 -0
- data/ruby/trema/dsl/syntax.rb +18 -0
- data/ruby/trema/echo-reply.h +2 -2
- data/ruby/trema/echo-request.c +3 -5
- data/ruby/trema/enqueue.rb +2 -2
- data/ruby/trema/error.c +3 -3
- data/ruby/trema/executables.rb +26 -2
- data/ruby/trema/features-request.c +3 -5
- data/ruby/trema/flow-removed.c +6 -6
- data/ruby/trema/flow-stats-reply.rb +6 -8
- data/ruby/trema/flow.rb +12 -1
- data/ruby/trema/get-config-request.c +55 -28
- data/ruby/trema/hello.c +3 -5
- data/ruby/trema/host.rb +8 -0
- data/ruby/trema/list-switches-reply.c +1 -1
- data/ruby/trema/mac.rb +1 -1
- data/ruby/trema/match.c +15 -14
- data/ruby/trema/monkey-patch/module/deprecation.rb +0 -2
- data/ruby/trema/netns.rb +127 -0
- data/ruby/trema/ordered-hash.rb +5 -4
- data/ruby/trema/packet-in.c +136 -113
- data/ruby/trema/packet-queue.rb +9 -9
- data/ruby/trema/packetin-filter.rb +1 -1
- data/ruby/trema/phost.rb +16 -7
- data/ruby/trema/port-mod.c +6 -5
- data/ruby/trema/port-stats-reply.rb +2 -2
- data/ruby/trema/process.rb +29 -0
- data/ruby/trema/queue-stats-reply.rb +2 -4
- data/ruby/trema/send-out-port.rb +5 -3
- data/ruby/trema/set-eth-addr.rb +4 -0
- data/ruby/trema/set-ip-addr.rb +4 -2
- data/ruby/trema/set-ip-dst-addr.rb +2 -1
- data/ruby/trema/set-ip-src-addr.rb +2 -1
- data/ruby/trema/set-ip-tos.rb +3 -2
- data/ruby/trema/set-transport-port.rb +3 -2
- data/ruby/trema/set-vlan-priority.rb +3 -2
- data/ruby/trema/set-vlan-vid.rb +5 -4
- data/ruby/trema/shell/reset_stats.rb +2 -1
- data/ruby/trema/shell/run.rb +1 -1
- data/ruby/trema/shell/send_packets.rb +1 -1
- data/ruby/trema/shell/show_stats.rb +1 -1
- data/ruby/trema/stats-helper.rb +3 -3
- data/ruby/trema/stats-reply.c +26 -17
- data/ruby/trema/stats-request.c +39 -41
- data/ruby/trema/switch-daemon.rb +36 -31
- data/ruby/trema/switch.c +1 -1
- data/ruby/trema/table-stats-reply.rb +1 -1
- data/ruby/trema/timers.rb +13 -13
- data/ruby/trema/trema.c +3 -3
- data/ruby/trema/tremashark.rb +9 -2
- data/ruby/trema/util.rb +39 -15
- data/ruby/trema/vendor-action.rb +8 -3
- data/ruby/trema/vendor-stats-reply.rb +4 -6
- data/ruby/trema/vendor.c +1 -1
- data/ruby/trema/version.rb +1 -1
- data/spec/trema/barrier-request_spec.rb +47 -37
- data/spec/trema/controller_spec.rb +1 -0
- data/spec/trema/dsl/runner_spec.rb +8 -3
- data/spec/trema/dsl/vhost_spec.rb +8 -8
- data/spec/trema/echo-request_spec.rb +1 -0
- data/spec/trema/features-request_spec.rb +1 -0
- data/spec/trema/flow-removed_spec.rb +9 -9
- data/spec/trema/get-config-request_spec.rb +51 -39
- data/spec/trema/match_spec.rb +1 -1
- data/spec/trema/openflow-error_spec.rb +11 -11
- data/spec/trema/packet-out_spec.rb +5 -5
- data/spec/trema/queue-get-config-reply_spec.rb +1 -1
- data/spec/trema/queue-get-config-request_spec.rb +1 -1
- data/spec/trema/set-eth-dst-addr_spec.rb +1 -1
- data/spec/trema/set-eth-src-addr_spec.rb +1 -1
- data/spec/trema/set-ip-dst-addr_spec.rb +1 -0
- data/spec/trema/set-ip-src-addr_spec.rb +1 -0
- data/spec/trema/set-ip-tos_spec.rb +1 -0
- data/spec/trema/set-transport-dst-port_spec.rb +1 -0
- data/spec/trema/set-transport-src-port_spec.rb +1 -0
- data/spec/trema/set-vlan-priority_spec.rb +1 -0
- data/spec/trema/set-vlan-vid_spec.rb +2 -1
- data/spec/trema/stats-reply_spec.rb +38 -36
- data/spec/trema/stats-request_spec.rb +6 -6
- data/spec/trema/strip-vlan-header_spec.rb +1 -0
- data/spec/trema/util_spec.rb +3 -2
- data/spec/trema/vendor-action_spec.rb +9 -8
- data/src/examples/dumper/dumper.c +8 -6
- data/src/examples/dumper/dumper.rb +1 -1
- data/{features/step_definitions/killall_steps.rb → src/examples/hello_trema/hello-trema.rb} +6 -5
- data/src/examples/hello_trema/hello_trema.c +4 -4
- data/src/examples/learning_switch/learning_switch.c +1 -1
- data/src/examples/list_switches/list_switches.c +2 -2
- data/src/examples/match_compare/match-compare.rb +2 -2
- data/src/examples/multi_learning_switch/multi-learning-switch.rb +1 -1
- data/src/examples/multi_learning_switch/multi_learning_switch.c +3 -3
- data/src/examples/openflow_message/README +1 -1
- data/src/examples/openflow_message/echo-request.rb +1 -1
- data/src/examples/openflow_message/features_request.c +21 -21
- data/src/examples/openflow_message/hello.c +1 -3
- data/src/examples/openflow_message/hello.rb +9 -24
- data/src/examples/{hello_trema/hello_trema.rb → openflow_message/vendor-action.rb} +17 -7
- data/src/examples/openflow_message/vendor_action.c +105 -0
- data/src/examples/openflow_switch/hello_switch.c +81 -0
- data/src/examples/packet_in/packet-in.rb +9 -13
- data/src/examples/packetin_filter_config/packetin_filter_config.c +2 -2
- data/src/examples/patch_panel/network.conf +14 -0
- data/src/examples/patch_panel/patch-panel.conf +1 -0
- data/{features/step_definitions/show_stats_steps.rb → src/examples/patch_panel/patch-panel.rb} +29 -13
- data/src/examples/switch_info/{switch_info.rb → switch-info.rb} +2 -2
- data/src/examples/switch_info/switch_info.c +4 -4
- data/src/examples/switch_monitor/switch_monitor.c +3 -3
- data/src/examples/traffic_monitor/counter.c +9 -9
- data/src/examples/traffic_monitor/fdb.c +9 -9
- data/src/lib/arp.h +1 -1
- data/src/lib/buffer.c +4 -3
- data/src/lib/byteorder.c +31 -5
- data/src/lib/byteorder.h +2 -2
- data/src/lib/chibach.c +8 -6
- data/src/lib/daemon.c +29 -3
- data/src/lib/doubly_linked_list.c +6 -1
- data/src/lib/ether.c +1 -1
- data/src/lib/ether.h +1 -1
- data/src/lib/event_handler.c +3 -3
- data/src/lib/hash_table.c +1 -1
- data/src/lib/linked_list.c +50 -2
- data/src/lib/linked_list.h +2 -2
- data/src/lib/log.c +122 -22
- data/src/lib/log.h +13 -9
- data/src/lib/management_interface.c +361 -0
- data/src/lib/management_interface.h +42 -0
- data/src/lib/management_service_interface.c +104 -0
- data/src/lib/management_service_interface.h +136 -0
- data/src/lib/match_table.c +5 -5
- data/src/lib/message_queue.c +5 -3
- data/src/lib/message_queue.h +1 -1
- data/src/lib/messenger.c +73 -39
- data/src/lib/messenger.h +3 -2
- data/src/lib/openflow_application_interface.c +17 -17
- data/src/lib/openflow_message.c +175 -23
- data/src/lib/openflow_message.h +2 -1
- data/src/lib/openflow_switch_interface.c +12 -12
- data/src/lib/packet_parser.c +11 -32
- data/src/lib/packetin_filter_interface.c +5 -5
- data/src/lib/persistent_storage.c +7 -7
- data/src/lib/secure_channel.c +6 -6
- data/src/lib/secure_channel.h +1 -1
- data/src/lib/stat.c +54 -17
- data/src/lib/stat.h +9 -0
- data/src/lib/timer.c +11 -10
- data/src/lib/trema.c +38 -9
- data/src/lib/trema.h +1 -0
- data/src/lib/trema_private.h +6 -0
- data/src/lib/trema_wrapper.c +4 -4
- data/src/lib/trema_wrapper.h +10 -10
- data/src/lib/utility.c +6 -6
- data/src/management/application.c +224 -0
- data/src/management/echo.c +185 -0
- data/src/management/set_logging_level.c +153 -0
- data/src/management/show_stats.c +150 -0
- data/src/management/trema_manager +184 -0
- data/src/packetin_filter/packetin_filter.c +31 -29
- data/src/switch_manager/cookie_table.c +7 -7
- data/src/switch_manager/dpid_table.c +3 -3
- data/src/switch_manager/dpid_table.h +0 -1
- data/src/switch_manager/management_interface.h +0 -1
- data/src/switch_manager/ofpmsg_recv.c +3 -3
- data/src/switch_manager/ofpmsg_recv.h +0 -1
- data/src/switch_manager/ofpmsg_send.c +2 -2
- data/src/switch_manager/ofpmsg_send.h +0 -1
- data/src/switch_manager/secure_channel_listener.c +2 -2
- data/src/switch_manager/secure_channel_receiver.c +2 -2
- data/src/switch_manager/secure_channel_receiver.h +0 -1
- data/src/switch_manager/secure_channel_sender.c +8 -1
- data/src/switch_manager/service_interface.c +5 -4
- data/src/switch_manager/switch.c +79 -53
- data/src/switch_manager/switch_manager.c +24 -22
- data/src/switch_manager/xid_table.c +6 -6
- data/src/switch_manager/xid_table.h +0 -1
- data/src/tremashark/README +4 -3
- data/src/tremashark/packet_capture.c +11 -9
- data/src/tremashark/pcap_queue.c +2 -2
- data/src/tremashark/pcap_queue.h +2 -2
- data/src/tremashark/plugin/packet-trema/Makefile +1 -1
- data/src/tremashark/plugin/packet-trema/Makefile.common +1 -1
- data/src/tremashark/plugin/packet-trema/packet-trema.c +50 -37
- data/src/tremashark/queue.c +5 -4
- data/src/tremashark/queue.h +1 -1
- data/src/tremashark/stdin_relay.c +10 -8
- data/src/tremashark/syslog_relay.c +14 -12
- data/src/tremashark/tremashark.c +15 -18
- data/trema +2 -96
- data/trema-config +2 -52
- data/trema.gemspec +12 -1
- data/unittests/cmockery_trema.h +14 -13
- data/unittests/lib/buffer_test.c +1 -1
- data/unittests/lib/byteorder_test.c +108 -25
- data/unittests/lib/daemon_test.c +141 -5
- data/unittests/lib/doubly_linked_list_test.c +5 -1
- data/unittests/lib/ether_test.c +4 -4
- data/unittests/lib/hash_table_test.c +5 -3
- data/unittests/lib/linked_list_test.c +82 -4
- data/unittests/lib/log_test.c +96 -5
- data/unittests/lib/management_interface_test.c +240 -0
- data/unittests/lib/management_service_interface_test.c +319 -0
- data/unittests/lib/message_queue_test.c +6 -2
- data/unittests/lib/messenger_test.c +167 -2
- data/unittests/lib/openflow_application_interface_test.c +16 -22
- data/unittests/lib/openflow_message_test.c +721 -24
- data/unittests/lib/packet_info_test.c +2 -2
- data/unittests/lib/packet_parser_test.c +15 -16
- data/unittests/lib/packetin_filter_interface_test.c +6 -6
- data/unittests/lib/persistent_storage_test.c +11 -11
- data/unittests/lib/stat_test.c +151 -7
- data/unittests/lib/timer_test.c +1 -1
- data/unittests/lib/trema_private_test.c +2 -2
- data/unittests/lib/trema_test.c +40 -12
- data/unittests/lib/utility_test.c +3 -3
- data/unittests/lib/wrapper_test.c +3 -3
- data/unittests/packetin_filter/packetin_filter_test.c +12 -11
- data/unittests/switch_manager/switch_manager_test.c +29 -22
- metadata +99 -20
- data/features/step_definitions/log_steps.rb +0 -90
- data/features/step_definitions/run_steps.rb +0 -91
- data/features/trema.feature +0 -27
- data/features/tutorial.hello_trema.feature +0 -27
- data/features/tutorial.packet_in.feature +0 -47
- data/features/tutorial.switch_info.feature +0 -55
- data/ruby/trema/command/usage.rb +0 -63
|
@@ -4,7 +4,7 @@ Feature: Send set config messages
|
|
|
4
4
|
I want to send set config messages to openflow switches
|
|
5
5
|
So that I can set configuration parameters of openflow switches
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
@wip
|
|
8
8
|
Scenario: set config x 10
|
|
9
9
|
When I try trema run "./objects/examples/openflow_message/set_config 10" with following configuration (backgrounded):
|
|
10
10
|
"""
|
|
@@ -12,10 +12,10 @@ Feature: Send set config messages
|
|
|
12
12
|
"""
|
|
13
13
|
And wait until "set_config" is up
|
|
14
14
|
And *** sleep 2 ***
|
|
15
|
-
And I
|
|
15
|
+
And I run `trema killall`
|
|
16
16
|
Then the log file "openflowd.set_config.log" should include "received: OFPT_SET_CONFIG" x 11
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
@wip
|
|
19
19
|
Scenario: set config x 10 in Ruby
|
|
20
20
|
When I try trema run "./src/examples/openflow_message/set-config.rb 0xabc, 10" with following configuration (backgrounded):
|
|
21
21
|
"""
|
|
@@ -23,5 +23,5 @@ Feature: Send set config messages
|
|
|
23
23
|
"""
|
|
24
24
|
And wait until "SetConfigController" is up
|
|
25
25
|
And *** sleep 2 ***
|
|
26
|
-
And I
|
|
26
|
+
And I run `trema killall`
|
|
27
27
|
Then the log file "openflowd.set-config.log" should include "received: OFPT_SET_CONFIG" x 11
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
Feature: "Vendor Action" sample application
|
|
2
|
+
|
|
3
|
+
In order to learn how to send Vendor Action
|
|
4
|
+
As a developer using Trema
|
|
5
|
+
I want to execute "Vendor Action" sample application
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given a file named "vendor_action.conf" with:
|
|
9
|
+
"""
|
|
10
|
+
vswitch( "vendor_action" ) { datapath_id "0xabc" }
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
@slow_process
|
|
14
|
+
Scenario: Run "Packet In" C example
|
|
15
|
+
Given I run `trema run ../../objects/examples/openflow_message/vendor_action -c vendor_action.conf -d`
|
|
16
|
+
And wait until "vendor_action" is up
|
|
17
|
+
Then the file "../../tmp/log/openflowd.vendor_action.log" should contain "actions=note:54.72.65.6d.61.00"
|
|
18
|
+
|
|
19
|
+
@slow_process
|
|
20
|
+
Scenario: Run "Packet In" Ruby example
|
|
21
|
+
Given I run `trema run ../../src/examples/openflow_message/vendor-action.rb -c vendor_action.conf -d`
|
|
22
|
+
And wait until "VendorActionSampleController" is up
|
|
23
|
+
Then the file "../../tmp/log/openflowd.vendor_action.log" should contain "actions=note:54.72.65.6d.61.00"
|
|
@@ -1,12 +1,11 @@
|
|
|
1
|
-
Feature:
|
|
1
|
+
Feature: "Multi Learning Switch" sample application
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
In order to learn how to implement software L2 switch (multiple switch support)
|
|
4
|
+
As a developer using Trema
|
|
5
|
+
I want to execute "Multi Learning Switch" sample application
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
Given I try trema run "./objects/examples/multi_learning_switch/multi_learning_switch" with following configuration (backgrounded):
|
|
7
|
+
Background:
|
|
8
|
+
Given a file named "multi_learning_switch.conf" with:
|
|
10
9
|
"""
|
|
11
10
|
vswitch("multi_learning1") { datapath_id "0x1" }
|
|
12
11
|
vswitch("multi_learning2") { datapath_id "0x2" }
|
|
@@ -26,9 +25,11 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
26
25
|
link "multi_learning2", "multi_learning3"
|
|
27
26
|
link "multi_learning3", "multi_learning4"
|
|
28
27
|
"""
|
|
29
|
-
And wait until "multi_learning_switch" is up
|
|
30
|
-
And *** sleep 1 ***
|
|
31
28
|
|
|
29
|
+
@slow_process
|
|
30
|
+
Scenario: Run "Multi Learning Switch" C example
|
|
31
|
+
Given I run `trema run ../../objects/examples/multi_learning_switch/multi_learning_switch -c multi_learning_switch.conf -d`
|
|
32
|
+
And wait until "multi_learning_switch" is up
|
|
32
33
|
When I send 2 packets from host1 to host2
|
|
33
34
|
Then the total number of tx packets should be:
|
|
34
35
|
| host1 | host2 | host3 | host4 |
|
|
@@ -36,7 +37,6 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
36
37
|
And the total number of rx packets should be:
|
|
37
38
|
| host1 | host2 | host3 | host4 |
|
|
38
39
|
| 0 | 2 | 0 | 0 |
|
|
39
|
-
|
|
40
40
|
When I send 3 packets from host3 to host4
|
|
41
41
|
Then the total number of tx packets should be:
|
|
42
42
|
| host1 | host2 | host3 | host4 |
|
|
@@ -44,7 +44,6 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
44
44
|
And the total number of rx packets should be:
|
|
45
45
|
| host1 | host2 | host3 | host4 |
|
|
46
46
|
| 0 | 2 | 0 | 3 |
|
|
47
|
-
|
|
48
47
|
When I send 2 packets from host4 to host1
|
|
49
48
|
Then the total number of tx packets should be:
|
|
50
49
|
| host1 | host2 | host3 | host4 |
|
|
@@ -52,7 +51,6 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
52
51
|
And the total number of rx packets should be:
|
|
53
52
|
| host1 | host2 | host3 | host4 |
|
|
54
53
|
| 2 | 2 | 0 | 3 |
|
|
55
|
-
|
|
56
54
|
When I send 4 packets from host2 to host3
|
|
57
55
|
Then the total number of tx packets should be:
|
|
58
56
|
| host1 | host2 | host3 | host4 |
|
|
@@ -60,7 +58,6 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
60
58
|
And the total number of rx packets should be:
|
|
61
59
|
| host1 | host2 | host3 | host4 |
|
|
62
60
|
| 2 | 2 | 4 | 3 |
|
|
63
|
-
|
|
64
61
|
When I send 1 packets from host1 to host4
|
|
65
62
|
Then the total number of tx packets should be:
|
|
66
63
|
| host1 | host2 | host3 | host4 |
|
|
@@ -69,31 +66,10 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
69
66
|
| host1 | host2 | host3 | host4 |
|
|
70
67
|
| 2 | 2 | 4 | 4 |
|
|
71
68
|
|
|
72
|
-
|
|
73
|
-
Scenario:
|
|
74
|
-
Given I
|
|
75
|
-
|
|
76
|
-
vswitch("multi_learning1") { datapath_id "0x1" }
|
|
77
|
-
vswitch("multi_learning2") { datapath_id "0x2" }
|
|
78
|
-
vswitch("multi_learning3") { datapath_id "0x3" }
|
|
79
|
-
vswitch("multi_learning4") { datapath_id "0x4" }
|
|
80
|
-
|
|
81
|
-
vhost("host1")
|
|
82
|
-
vhost("host2")
|
|
83
|
-
vhost("host3")
|
|
84
|
-
vhost("host4")
|
|
85
|
-
|
|
86
|
-
link "multi_learning1", "host1"
|
|
87
|
-
link "multi_learning2", "host2"
|
|
88
|
-
link "multi_learning3", "host3"
|
|
89
|
-
link "multi_learning4", "host4"
|
|
90
|
-
link "multi_learning1", "multi_learning2"
|
|
91
|
-
link "multi_learning2", "multi_learning3"
|
|
92
|
-
link "multi_learning3", "multi_learning4"
|
|
93
|
-
"""
|
|
94
|
-
And wait until "MultiLearningSwitch" is up
|
|
95
|
-
And *** sleep 1 ***
|
|
96
|
-
|
|
69
|
+
@slow_process
|
|
70
|
+
Scenario: Run "Multi Learning Switch" Ruby example
|
|
71
|
+
Given I run `trema run ../../src/examples/multi_learning_switch/multi-learning-switch.rb -c multi_learning_switch.conf -d`
|
|
72
|
+
And wait until "MultiLearningSwitch" is up
|
|
97
73
|
When I send 2 packets from host1 to host2
|
|
98
74
|
Then the total number of tx packets should be:
|
|
99
75
|
| host1 | host2 | host3 | host4 |
|
|
@@ -101,7 +77,6 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
101
77
|
And the total number of rx packets should be:
|
|
102
78
|
| host1 | host2 | host3 | host4 |
|
|
103
79
|
| 0 | 2 | 0 | 0 |
|
|
104
|
-
|
|
105
80
|
When I send 3 packets from host3 to host4
|
|
106
81
|
Then the total number of tx packets should be:
|
|
107
82
|
| host1 | host2 | host3 | host4 |
|
|
@@ -109,7 +84,6 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
109
84
|
And the total number of rx packets should be:
|
|
110
85
|
| host1 | host2 | host3 | host4 |
|
|
111
86
|
| 0 | 2 | 0 | 3 |
|
|
112
|
-
|
|
113
87
|
When I send 2 packets from host4 to host1
|
|
114
88
|
Then the total number of tx packets should be:
|
|
115
89
|
| host1 | host2 | host3 | host4 |
|
|
@@ -117,7 +91,6 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
117
91
|
And the total number of rx packets should be:
|
|
118
92
|
| host1 | host2 | host3 | host4 |
|
|
119
93
|
| 2 | 2 | 0 | 3 |
|
|
120
|
-
|
|
121
94
|
When I send 4 packets from host2 to host3
|
|
122
95
|
Then the total number of tx packets should be:
|
|
123
96
|
| host1 | host2 | host3 | host4 |
|
|
@@ -125,7 +98,6 @@ Feature: control multiple openflow switches using multi learning switch controll
|
|
|
125
98
|
And the total number of rx packets should be:
|
|
126
99
|
| host1 | host2 | host3 | host4 |
|
|
127
100
|
| 2 | 2 | 4 | 3 |
|
|
128
|
-
|
|
129
101
|
When I send 1 packets from host1 to host4
|
|
130
102
|
Then the total number of tx packets should be:
|
|
131
103
|
| host1 | host2 | host3 | host4 |
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Feature: "Packet In" sample application
|
|
2
|
+
|
|
3
|
+
In order to learn how to handle Packet In messages
|
|
4
|
+
As a developer using Trema
|
|
5
|
+
I want to execute "Packet In" sample application
|
|
6
|
+
|
|
7
|
+
Background:
|
|
8
|
+
Given a file named "packet_in.conf" with:
|
|
9
|
+
"""
|
|
10
|
+
vswitch("packet_in") { dpid 0xabc }
|
|
11
|
+
|
|
12
|
+
vhost("host1")
|
|
13
|
+
vhost("host2")
|
|
14
|
+
|
|
15
|
+
link "packet_in", "host1"
|
|
16
|
+
link "packet_in", "host2"
|
|
17
|
+
"""
|
|
18
|
+
|
|
19
|
+
@slow_process
|
|
20
|
+
Scenario: Run "Packet In" C example
|
|
21
|
+
Given I run `trema run ../../objects/examples/packet_in/packet_in -c packet_in.conf -d`
|
|
22
|
+
And wait until "packet_in" is up
|
|
23
|
+
When I send 1 packet from host1 to host2
|
|
24
|
+
Then the file "../../tmp/log/packet_in.log" should contain "received a packet_in"
|
|
25
|
+
|
|
26
|
+
@slow_process
|
|
27
|
+
Scenario: Run "Packet In" Ruby example
|
|
28
|
+
Given I run `trema run ../../src/examples/packet_in/packet-in.rb -c packet_in.conf -d`
|
|
29
|
+
And wait until "PacketInDumper" is up
|
|
30
|
+
When I send 1 packet from host1 to host2
|
|
31
|
+
Then the file "../../tmp/log/PacketInDumper.log" should contain "received a packet_in"
|
|
@@ -4,7 +4,7 @@ Feature: Packet-In filter configuration example
|
|
|
4
4
|
I want to configure packetin_filter
|
|
5
5
|
So that I can configuration filters of packetin_filter
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
@wip
|
|
8
8
|
Scenario: add filter
|
|
9
9
|
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
10
10
|
"""
|
|
@@ -16,9 +16,10 @@ Feature: Packet-In filter configuration example
|
|
|
16
16
|
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/add_filter"
|
|
17
17
|
Then the output should include:
|
|
18
18
|
"""
|
|
19
|
-
A packetin filter was added ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan =
|
|
19
|
+
A packetin filter was added ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper ).
|
|
20
20
|
"""
|
|
21
21
|
|
|
22
|
+
@wip
|
|
22
23
|
Scenario: dump filter
|
|
23
24
|
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
24
25
|
"""
|
|
@@ -35,6 +36,7 @@ Feature: Packet-In filter configuration example
|
|
|
35
36
|
[#1] match = [wildcards = 0x3fffff(all), in_port = 0, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0, dl_vlan_pcp = 0, dl_type = 0, nw_tos = 0, nw_proto = 0, nw_src = 0.0.0.0/0, nw_dst = 0.0.0.0/0, tp_src = 0, tp_dst = 0], priority = 0, service_name = dumper.
|
|
36
37
|
"""
|
|
37
38
|
|
|
39
|
+
@wip
|
|
38
40
|
Scenario: dump filter strict
|
|
39
41
|
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
40
42
|
"""
|
|
@@ -46,16 +48,17 @@ Feature: Packet-In filter configuration example
|
|
|
46
48
|
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/dump_filter_strict"
|
|
47
49
|
Then the output should include:
|
|
48
50
|
"""
|
|
49
|
-
0 packetin filter found ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan =
|
|
51
|
+
0 packetin filter found ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper, strict = true ).
|
|
50
52
|
"""
|
|
51
53
|
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/add_filter"
|
|
52
54
|
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/dump_filter_strict"
|
|
53
55
|
Then the output should include:
|
|
54
56
|
"""
|
|
55
|
-
1 packetin filter found ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan =
|
|
56
|
-
[#0] match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan =
|
|
57
|
+
1 packetin filter found ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper, strict = true ).
|
|
58
|
+
[#0] match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], priority = 65535, service_name = dumper.
|
|
57
59
|
"""
|
|
58
60
|
|
|
61
|
+
@wip
|
|
59
62
|
Scenario: delete filter strict
|
|
60
63
|
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
61
64
|
"""
|
|
@@ -67,15 +70,16 @@ Feature: Packet-In filter configuration example
|
|
|
67
70
|
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/delete_filter_strict"
|
|
68
71
|
Then the output should include:
|
|
69
72
|
"""
|
|
70
|
-
0 packetin filter was deleted ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan =
|
|
73
|
+
0 packetin filter was deleted ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper, strict = true ).
|
|
71
74
|
"""
|
|
72
75
|
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/add_filter"
|
|
73
76
|
And I try to run "TREMA_HOME=`pwd` ./objects/examples/packetin_filter_config/delete_filter_strict"
|
|
74
77
|
Then the output should include:
|
|
75
78
|
"""
|
|
76
|
-
1 packetin filter was deleted ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan =
|
|
79
|
+
1 packetin filter was deleted ( match = [wildcards = 0xc(dl_src|dl_dst), in_port = 1, dl_src = 00:00:00:00:00:00, dl_dst = 00:00:00:00:00:00, dl_vlan = 0xffff, dl_vlan_pcp = 0, dl_type = 0x800, nw_tos = 0, nw_proto = 10, nw_src = 10.0.0.1/32, nw_dst = 10.0.0.2/32, tp_src = 1024, tp_dst = 2048], service_name = dumper, strict = true ).
|
|
77
80
|
"""
|
|
78
81
|
|
|
82
|
+
@wip
|
|
79
83
|
Scenario: delete filter
|
|
80
84
|
When I try trema run "./objects/examples/dumper/dumper" with following configuration (backgrounded):
|
|
81
85
|
"""
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Feature: "Patch Panel" sample application
|
|
2
|
+
|
|
3
|
+
In order to learn how to implement software patch panel
|
|
4
|
+
As a developer using Trema
|
|
5
|
+
I want to execute "Patch Panel" sample application
|
|
6
|
+
|
|
7
|
+
@slow_process
|
|
8
|
+
Scenario: Run "Patch Panel" Ruby example
|
|
9
|
+
Given a file named "patch-panel.conf" with:
|
|
10
|
+
"""
|
|
11
|
+
1 2
|
|
12
|
+
"""
|
|
13
|
+
And a file named "network.conf" with:
|
|
14
|
+
"""
|
|
15
|
+
vswitch("patch") { datapath_id "0xabc" }
|
|
16
|
+
|
|
17
|
+
vhost("host1") { ip "192.168.0.1" }
|
|
18
|
+
vhost("host2") { ip "192.168.0.2" }
|
|
19
|
+
|
|
20
|
+
link "patch", "host1"
|
|
21
|
+
link "patch", "host2"
|
|
22
|
+
"""
|
|
23
|
+
And I run `trema run ../../src/examples/patch_panel/patch-panel.rb -c network.conf -d`
|
|
24
|
+
And wait until "PatchPanel" is up
|
|
25
|
+
When I send 1 packet from host1 to host2
|
|
26
|
+
And I run `trema show_stats host1 --tx`
|
|
27
|
+
And I run `trema show_stats host2 --rx`
|
|
28
|
+
Then the output from "trema show_stats host1 --tx" should contain "192.168.0.2,1,192.168.0.1,1,1,50"
|
|
29
|
+
And the output from "trema show_stats host2 --rx" should contain "192.168.0.2,1,192.168.0.1,1,1,50"
|
|
@@ -1,49 +1,52 @@
|
|
|
1
|
-
Feature:
|
|
1
|
+
Feature: "Repeater Hub" sample application
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
In order to learn how to flood incoming packets to every other port
|
|
4
|
+
As a developer using Trema
|
|
5
|
+
I want to execute "Repeater Hub" sample application
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
When I try trema run "./objects/examples/repeater_hub/repeater_hub" with following configuration (backgrounded):
|
|
7
|
+
Background:
|
|
8
|
+
Given a file named "repeater_hub.conf" with:
|
|
10
9
|
"""
|
|
11
|
-
vswitch("repeater_hub") { datapath_id
|
|
12
|
-
|
|
13
|
-
vhost("host1") {
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
vswitch("repeater_hub") { datapath_id 0xabc }
|
|
11
|
+
|
|
12
|
+
vhost("host1") {
|
|
13
|
+
ip "192.168.0.1"
|
|
14
|
+
promisc "On"
|
|
15
|
+
}
|
|
16
|
+
vhost("host2") {
|
|
17
|
+
ip "192.168.0.2"
|
|
18
|
+
promisc "On"
|
|
19
|
+
}
|
|
20
|
+
vhost("host3") {
|
|
21
|
+
ip "192.168.0.3"
|
|
22
|
+
promisc "On"
|
|
23
|
+
}
|
|
16
24
|
|
|
17
25
|
link "repeater_hub", "host1"
|
|
18
26
|
link "repeater_hub", "host2"
|
|
19
27
|
link "repeater_hub", "host3"
|
|
20
28
|
"""
|
|
21
|
-
And wait until "repeater_hub" is up
|
|
22
|
-
And I send 1 packet from host1 to host2
|
|
23
|
-
And I try to run "./trema show_stats host1 --tx" (log = "host1.repeater_hub.log")
|
|
24
|
-
And I try to run "./trema show_stats host2 --rx" (log = "host2.repeater_hub.log")
|
|
25
|
-
And I try to run "./trema show_stats host3 --rx" (log = "host3.repeater_hub.log")
|
|
26
|
-
Then the content of "host1.repeater_hub.log" and "host2.repeater_hub.log" should be identical
|
|
27
|
-
And the content of "host1.repeater_hub.log" and "host3.repeater_hub.log" should be identical
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
Scenario: Run repeater hub (Ruby)
|
|
31
|
-
When I try trema run "./src/examples/repeater_hub/repeater-hub.rb" with following configuration (backgrounded):
|
|
32
|
-
"""
|
|
33
|
-
vswitch("repeater_hub") { datapath_id "0xabc" }
|
|
34
29
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
30
|
+
@slow_process
|
|
31
|
+
Scenario: Run "Repeater Hub" C example
|
|
32
|
+
Given I run `trema run ../../objects/examples/repeater_hub/repeater_hub -c repeater_hub.conf -d`
|
|
33
|
+
And wait until "repeater_hub" is up
|
|
34
|
+
When I send 1 packet from host1 to host2
|
|
35
|
+
And I run `trema show_stats host1 --tx`
|
|
36
|
+
And I run `trema show_stats host2 --rx`
|
|
37
|
+
And I run `trema show_stats host3 --rx`
|
|
38
|
+
Then the output from "trema show_stats host1 --tx" should contain "192.168.0.2,1,192.168.0.1,1,1,50"
|
|
39
|
+
And the output from "trema show_stats host2 --rx" should contain "192.168.0.2,1,192.168.0.1,1,1,50"
|
|
40
|
+
And the output from "trema show_stats host3 --rx" should contain "192.168.0.2,1,192.168.0.1,1,1,50"
|
|
41
|
+
|
|
42
|
+
@slow_process
|
|
43
|
+
Scenario: Run "Repeater Hub" Ruby example
|
|
44
|
+
Given I run `trema run ../../src/examples/repeater_hub/repeater-hub.rb -c repeater_hub.conf -d`
|
|
45
|
+
And wait until "RepeaterHub" is up
|
|
46
|
+
When I send 1 packet from host1 to host2
|
|
47
|
+
And I run `trema show_stats host1 --tx`
|
|
48
|
+
And I run `trema show_stats host2 --rx`
|
|
49
|
+
And I run `trema show_stats host3 --rx`
|
|
50
|
+
Then the output from "trema show_stats host1 --tx" should contain "192.168.0.2,1,192.168.0.1,1,1,50"
|
|
51
|
+
And the output from "trema show_stats host2 --rx" should contain "192.168.0.2,1,192.168.0.1,1,1,50"
|
|
52
|
+
And the output from "trema show_stats host3 --rx" should contain "192.168.0.2,1,192.168.0.1,1,1,50"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Feature: "Switch Info" sample application
|
|
2
|
+
|
|
3
|
+
In order to learn how to acquire switch spec
|
|
4
|
+
As a developer using Trema
|
|
5
|
+
I want to execute "Switch Info" sample application
|
|
6
|
+
|
|
7
|
+
@slow_process
|
|
8
|
+
Scenario: Run "Switch Info" C example
|
|
9
|
+
Given a file named "switch_info.conf" with:
|
|
10
|
+
"""
|
|
11
|
+
vswitch { datapath_id 0xabc }
|
|
12
|
+
"""
|
|
13
|
+
And I run `trema run ../../objects/examples/switch_info/switch_info -c switch_info.conf -d`
|
|
14
|
+
And *** sleep 2 ***
|
|
15
|
+
Then the file "../../tmp/log/switch_info.log" should contain "datapath_id: 0xabc"
|
|
16
|
+
And the file "../../tmp/log/switch_info.log" should contain "#ports: 1"
|
|
17
|
+
|
|
18
|
+
@slow_process
|
|
19
|
+
Scenario: Run "Switch Info" C example with two switches
|
|
20
|
+
Given a file named "switch_info.conf" with:
|
|
21
|
+
"""
|
|
22
|
+
vswitch { datapath_id 0xabc }
|
|
23
|
+
vswitch { datapath_id 0xdef }
|
|
24
|
+
link "0xabc", "0xdef"
|
|
25
|
+
"""
|
|
26
|
+
And I run `trema run ../../objects/examples/switch_info/switch_info -c switch_info.conf -d`
|
|
27
|
+
And *** sleep 2 ***
|
|
28
|
+
Then the file "../../tmp/log/switch_info.log" should contain "#ports: 2"
|
|
29
|
+
|
|
30
|
+
@slow_process
|
|
31
|
+
Scenario: Run "Switch Info" Ruby example
|
|
32
|
+
Given a file named "switch_info.conf" with:
|
|
33
|
+
"""
|
|
34
|
+
vswitch { datapath_id 0xabc }
|
|
35
|
+
"""
|
|
36
|
+
And I run `trema run ../../src/examples/switch_info/switch-info.rb -c switch_info.conf -d`
|
|
37
|
+
And *** sleep 2 ***
|
|
38
|
+
Then the file "../../tmp/log/SwitchInfo.log" should contain "datapath_id: 0xabc"
|
|
39
|
+
And the file "../../tmp/log/SwitchInfo.log" should contain "#ports: 1"
|
|
40
|
+
|
|
41
|
+
@slow_process
|
|
42
|
+
Scenario: Run "Switch Info" Ruby example with two switches
|
|
43
|
+
Given a file named "switch_info.conf" with:
|
|
44
|
+
"""
|
|
45
|
+
vswitch { datapath_id 0xabc }
|
|
46
|
+
vswitch { datapath_id 0xdef }
|
|
47
|
+
link "0xabc", "0xdef"
|
|
48
|
+
"""
|
|
49
|
+
And I run `trema run ../../src/examples/switch_info/switch-info.rb -c switch_info.conf -d`
|
|
50
|
+
And *** sleep 2 ***
|
|
51
|
+
Then the file "../../tmp/log/SwitchInfo.log" should contain "#ports: 2"
|