« ◆ OpenFlowフレームワーク Trema 0.4 のインストール | トップページ | ◆ 単純なブリッジの実装【OpenFlow1.0をTremaの土管として使う】 »

2013年10月14日 (月)

◆ 【OpenFlow1.0スイッチをTremaの土管として使う】検討してみた→いけそう

OpenFlowを本来あるべき姿ではなくて、ネットワーク機器を自分で手軽にプログラミングするためのツールとして使えると面白いのではないか思い、実現性を検討してみました。

やりたいことは、
1) OpenFlow スイッチは純粋にパケットの出し入れだけに使う
2) パケットをどう処理するかはすべてOpenFlowコントローラ側にまかせる
ということです。すべてのパケットをコントローラで制御しなければならないので性能はでませんが、求めているのは性能ではありません。

OpenFlowスイッチからOpenFlowコントローラにパケットのデータを丸投げさせることができるのかを検討していきます。

OpenFlow コントローラには、OpenFlow フレームワークである Trema を用いることを想定します。

■ 課題:OpenFlowコントローラはデータに欠落なくパケットを受け取れるか?

OpenFlow1.0において、OpenFlowスイッチがフローエントリに一致しないパケットを受け取ったときにはOpenFlowコントローラにパケットを送ることになっています。が、そのパケットの全データを送っているでしょうか?

OpenFlow1.0の仕様書 P.36 には以下の記載があります:

If the packet is sent because of a flow table miss, then at least miss_send_len bytes from the OFPT_SET_CONFIG message are sent. The default miss_send_len is 128 bytes.

つまり、デフォルトでは128バイトまでしか送らないことになっています。

一方で、上記の直前には以下が書かれています(同じくP.36):

If the packet is sent because of a “send to controller” action, then max_len bytes from the action_output of the flow setup request are sent.

と、いうことで、フローエントリを追加してコントローラに送信するようにしてやれば、そのフローエントリで指定しているmax_len バイト分までのサイズのパケットを送ってくれるということです。max_len に十分な大きさを指定すれば、課題はクリアできそうです。

■フローエントリの max_len って何?

さて、次の疑問は max_len が何かということです。

OpenFlow1.0 の仕様書 P.22 には以下の記載があります:

An action_output has the following fields:

/* Action structure for OFPAT_OUTPUT, which sends packets out ’port’.
 * When the ’port’ is the OFPP_CONTROLLER, ’max_len’ indicates the max
 * number of bytes to send.  A ’max_len’ of zero means no bytes of the
 * packet should be sent.*/

struct ofp_action_output {
    uint16_t type;                  /* OFPAT_OUTPUT. */
    uint16_t len;                   /* Length is 8. */
    uint16_t port;                  /* Output port. */
    uint16_t max_len;               /* Max length to send to controller. */
};
OFP_ASSERT(sizeof(struct ofp_action_output) == 8);

The max_len indicates the maximum amount of data from a packet that should be sent when the port is OFPP_CONTROLLER.

つまり、フローエントリのアクションにmax_lenを指定すれば最大でそのサイズまでは送ると書いてあります。

■Tremaでアクションにmax_lenを指定するには?

今度はTremaのAPIを調べてみます。

パケットをポートに送るアクションはTrema では SendOutPort クラスですのでこの API を調べます:
http://rubydoc.info/github/trema/trema/master/Trema/SendOutPort

ここでコンストラクタのメソッドを見ると、max_len を引数に指定する形式と指定をしない形式の2つがありますが、引数の説明文には以下の記載があります:

:max_len (Number) —

the maximum number of bytes from a packet to send to controller when port is set to OFPP_CONTROLLER. A zero length means no bytes of the packet should be sent. It defaults to 64K.

つまり、Trema では max_len のデフォルトが64kバイトです。
max_len の型は先ほど確認したOpenFlow1.0 の仕様書での記載個所においてuint16_t max_len と宣言されていることから64Kバイトは最大値になります。

以上から、Trema を使えば何も気にせずに最大サイズのパケットを送るようにOpenFlowスイッチにフローエントリを登録できます。

■結論

以下とすればよい:

1) どんなパケットもコントローラに送るフローエントリをOpenFlowスイッチに登録する。
2) Tremaから、アクションでコントローラへ送信するOFPP_CONTROLLERを指定してフローエントリを登録する。このとき、パケットサイズについて特に特別なことはいらない。(デフォルトでmax_lenに最大値64Kバイトが指定されるため)

次回は、Tremaで2ポートのブリッジを作ってみたいと思います。

p.s.
OpenFlow 1.0 では mtu について何も書いてありません。イーサネットなら1518バイトだし、ジャンボフレームでもさすがに64Kバイトはないでしょうから(いまのところはですが)、64Kバイトあれば大丈夫でしょう。


OpenFlow 1.0 の仕様書:
  http://archive.openflow.org/documents/openflow-spec-v1.0.0.pdf

« ◆ OpenFlowフレームワーク Trema 0.4 のインストール | トップページ | ◆ 単純なブリッジの実装【OpenFlow1.0をTremaの土管として使う】 »

コメント

Can you put it on the scales, please? http://xvedio.in.net/ sexvedio Intervening in the redistricting case would enable the federal government to seek a declaration that Texas’s 2011 redistricting plans for the U.S. Congress and the Texas State House of Representatives were adopted in order to deny or restrict the right to vote on account of race, color, or membership in a language minority group.

Where are you from? http://xxxnx.fun/ xixx Automatic Renewal Program: Your subscription will continue without interruption for as long as you wish, unless you instruct us otherwise. Your subscription will automatically renew at the end of the term unless you authorize cancellation. Each year, you'll receive a notice and you authorize that your credit/debit card will be charged the annual subscription rate(s). You may cancel at any time during your subscription and receive a full refund on all unsent issues. If your credit/debit card or other billing method can not be charged, we will bill you directly instead.

What university do you go to? http://yuvututube.fun/ yuvutu videos The market is in a glut with registered stocks in LMEwarehouses at a record high above 200,000 tonnes, whileMacquarie Bank forecasts nickel supply will rise 4.1 percent1.845 million tonnes this year.

Hello good day http://xxxnx.fun/ www.xlxx.com She was, quite simply, the most famous lawyer in the land, and had been ever since she had taken silk in 1948 (she and Helena Normanton were the first two female barristers to achieve this status – though Normanton, who was much older than Heilbron, no longer practised).

No, I'm not particularly sporty http://rockettube.fun/ rockettube.com Coptic Christians account for about a tenth of the 84 million people living in the Arab world's most populous state. They have suffered discrimination for decades, but communal tensions and attacks rose sharply under Mursi and have continued after his overthrow.

I can't get a signal http://femjoy.in.net/ femjoy angels "Teen Mom 2" star Jenelle Evans is back in the slammer after being arrested in Caswell Beach, N.C., on April 23, 2013. According to court documents obtained by TMZ, Evans, 21, was booked after police discovered a significant amount of heroin in her possession. Police arrived at Evans' home after a domestic dispute with husband Courtland Rogers. The charges against Evans include drug possession, possession of paraphernalia and simple assault on Rogers. TMZ reports that the assault charge stems from an altercation in which Evans struck Rogers with a piece of furniture. This isn't Evans' first run-in with the law. In fact, the MTV star has racked up quite the collection of mug shots ...

I saw your advert in the paper http://imagefap.in.net/ www.imagefap "Being successful on the road is about avoiding turnovers, being consistent in the kicking game and not giving up big plays on defense," said Oklahoma State coach Mike Gundy. "And in two of those three areas, we were poor. We were poor in the kicking game and we turned the ball over. It's really very simple, you play right into the crowd."

コメントを書く

(ウェブ上には掲載しません)

トラックバック

« ◆ OpenFlowフレームワーク Trema 0.4 のインストール | トップページ | ◆ 単純なブリッジの実装【OpenFlow1.0をTremaの土管として使う】 »

最近のトラックバック

無料ブログはココログ