Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Large multipart reply collapsed #94

Open
shun159 opened this issue Nov 8, 2016 · 6 comments
Open

Large multipart reply collapsed #94

shun159 opened this issue Nov 8, 2016 · 6 comments

Comments

@shun159
Copy link

shun159 commented Nov 8, 2016

※日本語で失礼します。

Lagopus開発者のみなさま、はじめまして。
私は自作のコントローラをTravisCIでテストをするため、Lagopusを使わせてもらっています。
Travisでも動いてくれ、とても感謝しています。

今回ですが、OFPMPF_REPLY_MORE付きのmultipartメッセージのハンドリングのテストを
書いていた際に、Lapopusからコントローラへ、malformedなmultipart replyメッセージが送信されている
ようにみえました。

このコントローラに問題があるのかもしれませんが、ご確認いただければと思います。
また、追加の情報が必要でしたら適宜コメントをおねがいいたします。

環境は以下のとおりです。

ソフトウェア:

Lagopusの設定について

channel channel01 create -dst-addr 127.0.0.1 -protocol tcp

controller controller01 create -channel channel01 -role master -connection-type main

bridge bridge01 create -controller controller01 -dpid 0x1
bridge bridge01 enable

アプリケーションについて

※ ビルドにはインターネット接続、起動にはErlang/OTP 19が必要となります。

$ wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_19.1-3~ubuntu~xenial_amd64.deb
$ sudo dpkg -i esl-erlang_19.1-3~ubuntu~xenial_amd64.deb
$ git clone https://github.com/shun159/gyges
$ cd gyges
$ make compile

./start_dev.shを起動し、以下のコードをerl shellで再現できます。

再現コード:

  • flow_stats_reply
    • キャプチャファイル中No.171~200
ok = gyges:start_listener(6633, 16).
FlowMods = lists:map(fun(X) ->
                               Instr = [{goto_table, 1}],
                               Match = [ofproto_oxm:new(openflow_basic, metadata, <<X:64>>),
                                        ofproto_oxm:new(openflow_basic, eth_type, <<16#0800:16>>),
                                        ofproto_oxm:new(openflow_basic, ipv4_src, <<10,10,10,1>>),
                                        ofproto_oxm:new(openflow_basic, ip_dscp, <<1:8>>),
                                        ofproto_oxm:new(openflow_basic, ip_proto, <<6:8>>),
                                        ofproto_oxm:new(openflow_basic, tcp_dst, <<X:16>>)],
                               ofproto_v4:flow_mod_add(0, [{table_id, 1},
                                                           {match, Match},
                                                           {instructions, Instr}])
                       end, lists:seq(1, 1000)).
ofc_dp_conn:send_msgs({"00:00:00:00:00:00:00:01", 0}, FlowMods).
{ok, FlowStats} = ofc_dp_conn:get_flows({"00:00:00:00:00:00:00:01", 0}, [{table_id, 1}]).
  • table_features_reply
    • キャプチャファイル中No.637~655
ok = gyges:start_listener(6633, 16).
FlowMods2 = lists:map(fun(X) ->
                               Instr = [{goto_table, 1}],
                               Match = [ofproto_oxm:new(openflow_basic, metadata, <<X:64>>),
                                        ofproto_oxm:new(openflow_basic, eth_type, <<16#0800:16>>),
                                        ofproto_oxm:new(openflow_basic, ipv4_src, <<10,10,10,1>>),
                                        ofproto_oxm:new(openflow_basic, ip_dscp, <<1:8>>),
                                        ofproto_oxm:new(openflow_basic, ip_proto, <<6:8>>),
                                        ofproto_oxm:new(openflow_basic, tcp_dst, <<X:16>>)],
                               ofproto_v4:flow_mod_add(0, [{table_id, X},
                                                           {match, Match},
                                                           {instructions, Instr}])
                       end, lists:seq(1, 254)).
ofc_dp_conn:send_msgs({"00:00:00:00:00:00:00:01", 0}, FlowMods2).
ofc_dp_conn:get_table_features({"00:00:00:00:00:00:00:01", 0}). 

キャプチャファイル:

@ynkjm
Copy link

ynkjm commented Nov 9, 2016

@shun159 ありがとうございます.
調べてみます.

@ynkjm ynkjm added the bug label Nov 22, 2016
@ynkjm
Copy link

ynkjm commented Nov 22, 2016

@shun159

Lagopusのmultipart replyに関するコードがOF1.3.2準拠のままでOF1.3.3以降に対応していないようです.
対応するようにします.

@shun159
Copy link
Author

shun159 commented Nov 22, 2016

@ynkjm
ありがとうございます,対応を楽しみにしています.

@shun159
Copy link
Author

shun159 commented Jan 18, 2017

@ynkjm
急いでないのですが、こちらその後いかがでしょうか。

@ynkjm
Copy link

ynkjm commented Jan 18, 2017

@shun159

おまたせしてすみません.
テストしましたので,今月中にパッチを出したいと思います.

@shun159
Copy link
Author

shun159 commented Jan 19, 2017

@ynkjm 楽しみにしています!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants