43
『制限も可能性もEthernet Switch Driverから』 Trema Day #1 © 2013 SRCHACK.ORG

TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

『制限も可能性もEthernet Switch Driverから』

Trema Day #1

© 2013 SRCHACK.ORG

Page 2: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG2

自己紹介@SRCHACK.ORG

(えす・あーる・しー・はっく)

Twitter:@SRCHACK

Blog:http://www.srchack.org/

• ネットワーク屋でも組込屋でもありません。

– ただの趣味人です。

• OpenFlowを専門にしている訳でもありません。

– 専門分野を持つ気が無く、分野関係無くやりたい事はやり

たい

• あのルータを販売してる会社の関係者では在りません

Page 3: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG3

今回のネタ

• イロイロと考えてみました。。。

– OpenFlow

1.3 for OpenWRT

– OFCとしてのRaspberry Pi利用

– Open vSwitch

1.7.1 for OpenWRT

Page 4: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG4

今回のネタ

• イロイロと考えてみました。。。

– OpenFlow

1.3 for OpenWRT

• 実装できてから公開したいなぁ。

– OFCとしてのRaspberry Pi利用

• ある程度動かせるか試したしなぁ。

– Open vSwitch

1.7.1 for OpenWRT

• 普通すぎてインパクトないなぁ。

Page 5: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG5

今回のネタ

• いろいろ考えましたが、二週間前ぐらい

– 「OpenFlow実践入門」読みながら

• あのルータの制限多いよなぁ

Page 6: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG6

今回のネタ

• 「制限も可能性も

Ethernet Switch Driverから」

Page 7: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG7

今回のネタ

• 「制限も可能性も

Ethernet Switch Driverから」

– あのルータをOpenFlowスイッチとし て動作させるには必要不可欠。

– あのOpenFlowスイッチの制限の大半 の原因。(VLAN、Portステータス)

Page 8: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG8

目次

• Ethernet Switchについて

• Ethernet Switch Driverについて

• あのルータの実現方法/制限について

• あのルータのEthernet Switch Chip

• Ethernet Switch Chip/Driverの仕様

• Ethernet Switch Driverのソースはどこ

• OFP1.0準拠の為に作るEthernet Switch Driver

Page 9: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG9

目次

• Ethernet Switchについて

• Ethernet Switch Driverについて

• あのルータの実現方法/制限について

• あのルータのEthernet Switch Chip

• Ethernet Switch Chip/Driverの仕様

• Ethernet Switch Driverのソースはどこ

• OFP1.0準拠の為に作るEthernet Switch Driver

Page 10: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG10

Ethernet Switchとは

• みんな大好きCisco CatalystやHP ProCurve、 DELL PowerConnectとかのL2、L3スイッチ

ではありません。

Page 11: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG11

Ethernet Switchとは

• みんな大好きCisco CatalystやHP ProCurve、 DELL PowerConnectとかのL2、L3スイッチ

ではありません。

• 家庭用ルータのLANポートに複数ポートのハブ が搭載されています。このスイッチの事です。

コレの事です。

Page 12: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG12

Ethernet Switchとは

• 家庭用ルータの製品概要に4Portハブ搭載とか 書かれているアレです。

コレの事です。

Page 13: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG13

Ethernet Switchとは

• 内部的には、eth0に対しEthernet Switchが くっついてる状態(ハブといわれている箇所)

Port1 Port2 Port3 Port4WAN Port

Ethernet Switch Chip

Port1 Port2 Port3 Port4

Port0

CPU

eth1 eth0

Page 14: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG14

Ethernet Switchとは

• 家庭用ルータの製品概要に4Portハブ搭載とか 書かれているアレです。

• 実は馬鹿ハブの様に馬鹿じゃないんですっ!

馬鹿じゃないんですっ!

Page 15: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG15

Ethernet Switchとは

• 馬鹿ハブとは違ってそれなりの機能がついてま す。

– VLANが切れる。

– 各Portステータスが取得できる。

Page 16: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG16

Ethernet Switchとは

• 馬鹿ハブとは違っていろんな機能がついてます。

– VLANが切れる。

– 各Portステータスが取得できる。

CPUからEthernet Switchは制御できる。

Firmware(Linux)から操作する為のドライバ があるからできる。

Page 17: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG17

目次

• Ethernet Switchについて

• Ethernet Switch Driverについて

• あのルータの実現方法/制限について

• あのルータのEthernet Switch Chip

• Ethernet Switch Chip/Driverの仕様

• Ethernet Switch Driverのソースはどこ

• OFP1.0準拠の為に作るEthernet Switch Driver

Page 18: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG18

Ethernet Switch Driverとは

• 名前そのままでEthernet SwitchのDriverです。

• Ethernet Switchを利用する為のドライバ

– ドライバをロードしないとeth0が使えない訳 では無さそう、通常は馬鹿ハブ状態で動く?

コレの為のドライバ。

Page 19: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG19

Ethernet Switch Driverとは

• このドライバはいろいろな機能を提供。

– VLAN機能

– 各物理ポートステータス

Port1 Port2 Port3 Port4WAN Port

Ethernet Switch Chip

Port1 Port2 Port3 Port4

Port0

CPU

eth1 eth0

Page 20: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG20

目次

• Ethernet Switchについて

• Ethernet Switch Driverについて

• あのルータの実現方法/制限について

• あのルータのEthernet Switch Chip

• Ethernet Switch Chip/Driverの仕様

• Ethernet Switch Driverのソースはどこ

• OFP1.0準拠の為に作るEthernet Switch Driver

Page 21: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG21

あのルータの実現方法

• 馬鹿ハブではなくスイッチとして動かす為に、 VLANでポートを分割することで実現が可能に なっています。

各ポートが通信できない状態に設定可能

Page 22: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG22

あのルータの実現方法

• 内部的にはコンナ感じでVLAN IDが付いて認識 できる形になる。

Port1 Port2 Port3 Port4WAN Port

Ethernet Switch Chip

Port1 Port2 Port3 Port4

Port0

CPU

eth1 eth0eth0.1eth0.2eth0.3eth0.4

※VLANアダプタとして認識

Page 23: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG23

あのルータ(OFS)の制限

• ポートステータスが正常に取得できない。

※仮想NICなのでステータスが常にUPになる。

Port1 Port2 Port3 Port4WAN Port

Ethernet Switch Chip

Port1 Port2 Port3 Port4

Port0

CPU

eth1 eth0eth0.1eth0.2eth0.3eth0.4

Page 24: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG24

あのルータ(OFS)の制限

• VLANパケットが正常に処理できない。

※Ethernet SwitchでVLAN IDの付加/削除を 行なうので元々付いてたVLAN IDが意味を成 さない。

dst_mac src_mac IEEE802.1Q frame_type ~

Ethernetフレーム

user_priority CFI VID

IEEE802.1Qヘッダ

Ethernet Switchで書き換えを行なう

Page 25: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG25

あのルータ(OFS)の制限

Port1 Port2 Port3 Port4WAN Port

Ethernet Switch Chip

Port1 Port2 Port3 Port4

Port0

CPU

eth1 eth0

外部に出る時はVLAN IDが消える

VLAN IDが付いた状態

Page 26: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG26

目次

• Ethernet Switchについて

• Ethernet Switch Driverについて

• あのルータの実現方法/制限について

• あのルータのEthernet Switch Chip

• Ethernet Switch Chip/Driverの仕様

• Ethernet Switch Driverのソースはどこ

• OFP1.0準拠の為に作るEthernet Switch Driver

Page 27: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG27

あのルータのEthernet Switch Chip

• 何を利用しているかを確認するには、ルータを 開けてチップを直接目視するか、OpenWRTの サイト等で情報を探す事になります。

Page 28: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG28

あのルータのEthernet Switch Chip

機種名 CPU Ethernet Switch

Buffalo

WHR-G301N

Atheros

AR7240※CPUに内蔵

Buffalo

WZR-HP-AG300H

Atheros

AR7161Atheros

AR8316

Buffalo

WZR-HP-G301NH

Atheros

AR9132 Realtek

RTL8366RB

PLANEX

MZK-WNH

Ralink

RT3050F ※CPUに内蔵

• 機種によりChipもバラバラです。

– しかもCPU内蔵、外付けも様々です。

• なので個別に見て行く必要が出てきます。

Page 29: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG29

目次

• Ethernet Switchについて

• Ethernet Switch Driverについて

• あのルータの実現方法/制限について

• あのルータのEthernet Switch Chip

• Ethernet Switch Chip/Driverの仕様

• Ethernet Switch Driverのソースはどこ

• OFP1.0準拠の為に作るEthernet Switch Driver

Page 30: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG30

Ethernet Switch Chip/Driverの仕様

• データシートを見る– Atheros(読み方は、あせろす?)

• データシートが見つからない

• どこかで見た記憶はあるが。。。

– Realtek

• http://realtek.info/

• データシートをダウンロードできる。蟹さん♪

– Ralink

• http://www.ralinktech.com/

• ホームページは繋がらないけど、

Google先生に聞けば解決。

Page 31: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG31

Ethernet Switch Chip/Driverの仕様

• OpenWRTのサイトを見ても、ハードウェア一 覧のページに載ってたり、無かったり。

– Wikiに載ってたり、フォーラムに載ってたり。

• 同じチップの機種の情報から辿ったり。– Google先生に頼っても見つかんないとか。。。

情報捜すのは、かなり面倒。

Page 32: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG32

Ethernet Switch Chip/Driverの仕様

• 結論

– 手抜きは諦める。

– 仕様を確認するには、データシートを 眺めるか、今実装されてるソースをみ るのが一番はやい。。。

一緒にソース読みませんか?

Page 33: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG33

目次

• Ethernet Switchについて

• Ethernet Switch Driverについて

• あのルータの実現方法/制限について

• あのルータのEthernet Switch Chip

• Ethernet Switch Chip/Driverの仕様

• Ethernet Switch Driverのソースはどこ

• OFP1.0準拠の為に作るEthernet Switch Driver

Page 34: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG34

Driverのソースはどこ

• Linux Kernelに含まれています。

– OpenWRTで提供されるものもあります。

• trunk/target/linux/generic/files/drivers/net/phy

– rtl8366とかar8216の様に外部チップの場合、

ここに入っている。

• trunk/target/linux/ar71xx/files/drivers/net/ether net/atheros/ag71xx

– ar7240とかar8216の様にCPU内蔵の場合、

各アーキテクチャ毎にディレクトリが存在。

Page 35: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG35

目次

• Ethernet Switchについて

• Ethernet Switch Driverについて

• あのルータの実現方法/制限について

• あのルータのEthernet Switch Chip

• Ethernet Switch Chip/Driverの仕様

• Ethernet Switch Driverのソースはどこ

• OFP1.0準拠の為に作るEthernet Switch Driver

Page 36: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG36

OFP1.0準拠の為に

• まだ未実装で、ポートステータス、VLAN制限 を無くせないか苦戦中

Page 37: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG37

OFP1.0準拠の為に

• まだ未実装で、ポートステータス、VLAN制限 を無くせないか苦戦中

– 実はポートステータスの制限は、swconfig から情報取れる為、何気にユーザプログラム 側の作り変えで対応可能。

Page 38: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG38

OFP1.0準拠の為に

• まだ未実装で、ポートステータス、VLAN制限 を無くせないか苦戦中

– 実はポートステータスの制限は、swconfig から情報取れる為、何気にユーザプログラム 側の作り変えで対応可能。

OpenWRT

(Linux)

OpenFlow

for OpenWRT

市販ルータ

できればココで 対応したい

Page 39: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG39

OFP1.0準拠の為に

Port1 Port2 Port3 Port4

Ethernet Switch Chip

Port1 Port2 Port3 Port4

Port0

veth1 veth2 veth3 veth4

仮想Etherデバイスの様に見せれば、 net_deviceとして普通に見えるはず。

※Ethernet Switch Driverから拾え るポートステータスをマッピング。

Page 40: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG40

OFP1.0準拠の為に

Port1 Port2 Port3 Port4WAN Port

Ethernet Switch Chip

Port1 Port2 Port3 Port4

Port0

CPU

eth1 eth0 ここがtrunk状態でVLAN ID じゃないと識別できないのは 本当なのか?

Page 41: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG41

OFP1.0準拠の為に

• ドライバのソースを見てみる(AR7240)#define AR934X_REG_PORT_VLAN1(_port) (AR934X_REG_PORT_BASE((_port)) + 0x08)

#define AR934X_PORT_VLAN1_DEFAULT_SVID_S 0

#define AR934X_PORT_VLAN1_FORCE_DEFAULT_VID_EN BIT(12)

#define AR934X_PORT_VLAN1_PORT_TLS_MODE BIT(13)

#define AR934X_PORT_VLAN1_PORT_VLAN_PROP_EN BIT(14)

#define AR934X_PORT_VLAN1_PORT_CLONE_EN BIT(15)

#define AR934X_PORT_VLAN1_DEFAULT_CVID_S 16

#define AR934X_PORT_VLAN1_FORCE_PORT_VLAN_EN BIT(28)

#define AR934X_PORT_VLAN1_ING_PORT_PRI_S 29

#define AR934X_REG_PORT_VLAN2(_port) (AR934X_REG_PORT_BASE((_port)) + 0x0c)

こっちは8021Qの設定

???

Page 42: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG42

OFP1.0準拠の為に

Port1 Port2 Port3 Port4WAN Port

Ethernet Switch Chip

Port1 Port2 Port3 Port4

Port0

CPU

eth1 eth0 8021Q以外でできる?

veth1 veth2 veth3 veth4

各ポートから入るデータをEtherフレームそのままで 入力ポートを判別した状態で取れるなら。。。

Page 43: TremaDay #1 『制限も可能性もEthernet Switch Driverから』 · • OpenFlowを専門にしている訳でもありません。 ... 今回のネタ • イロイロと考えてみました。。。

© 2013 SRCHACK.ORG43

質疑応答