hydrogen → helium での linux kernel の違い

13

Click here to load reader

Upload: masakazu-asama

Post on 10-Jun-2015

1.036 views

Category:

Internet


1 download

DESCRIPTION

VyOS Users Meeting Japan #1 の発表資料です。

TRANSCRIPT

Page 1: Hydrogen → Helium での Linux kernel の違い

Hydrogen → Helium での Linux kernel の違い

浅間 正和 @ 有限会社 銀座堂

Page 2: Hydrogen → Helium での Linux kernel の違い

VyOS の話しません

Page 3: Hydrogen → Helium での Linux kernel の違い

はじめに• こんな内容 • net の中で起きた VyOS に影響がありそうな変更を紹介 • net の中でも TCP fast open 等 VyOS の機能にはそんなに影響がなさそうなものは今回は除外

• 動機 • Helium で Linux kernel のバージョンが 3.13 にあがるらしい • ちなみに Hydrogen は 3.3 だった

• net 周りでどんな違いがあるのか調べてみたい • 注意 • この発表はあくまで Linux kernel の違いであってここで紹介する機能が VyOS でサポートされるという意味ではないです

• でも CLI さえ作れば簡単に組み込むことはできると思います • 欲しい機能があったらこの後の @hiroysato さんの発表を参考に自分で組み込んでみよう!

3

Page 4: Hydrogen → Helium での Linux kernel の違い

L2TPv3 over IPv6 のサポート• 概要 • Linux kernel 3.4 以前では L2TPv3 のトランスポートに IPv4 しか利用できなかったが IPv6 でもできるようになった

• Unmanaged L2TPv3 として設定する場合は以下のように iproute2 コマンドを実行 !!!!!!

• 変更されたバージョン • Linux kernel 3.5

# modprobe l2tp_ip6 # modprobe l2tp_eth # ip l2tp add tunnel remote 2001:db8:123::123 \ local 2001:db8:234::234 \ tunnel_id 123 peer_tunnel_id 123 encap ip # ip l2tp add session name l2tpeth0 tunnel_id 123 \ session_id 123 peer_session_id 123

4

Page 5: Hydrogen → Helium での Linux kernel の違い

IPv4 ルーティング・キャッシュ機能廃止• 概要 • IPv4 のルーティングではいちど探索したルーティング・テーブルのエントリーをキャッシュしておくことで同一フローのパケットの探索処理を高速化する仕組みがあった

• お行儀の良いパケットしか受け取らないのであれば問題はないが DoS 攻撃を受けると悲しいことになるということで削除された

• 変更されたバージョン • Linux kernel 3.6

5

Page 6: Hydrogen → Helium での Linux kernel の違い

IPv4 ルーティング・キャッシュ機能廃止

1flow 256flow 65,536flow 16,777,216flow 2,147,483,648flow

Internet Week 2010 S7 Vyatta ~仮想世界をになうルーター~ 『Vyatta 徹底評価!』の資料より引用

https://www.nic.ad.jp/ja/materials/iw/2010/proceedings/s7/iw2010-s7-03.pdf6

Page 7: Hydrogen → Helium での Linux kernel の違い

IPv4 ルーティング・キャッシュ機能廃止

Internet Week 2010 S7 Vyatta ~仮想世界をになうルーター~ 『Vyatta 徹底評価!』の資料より引用

https://www.nic.ad.jp/ja/materials/iw/2010/proceedings/s7/iw2010-s7-03.pdf7

Page 8: Hydrogen → Helium での Linux kernel の違い

VXLAN 機能の追加• 概要 • 乱立する NVO3(Network Virtualization Over L3)技術のうち現在 IETF で標準化が進められている VXLAN が実装された

• iproute2 コマンドで以下のように実行することで利用できる !!!

• 上記のコマンドを実行すると vxlan0 という名前の仮想イーサネット・インターフェースが作成される

• eth0 上の 239.1.1.123 というマルチキャスト・グループに参加しブロードキャストやマルチキャスト等のフレームはカプセル化後にこのマルチキャスト・アドレス宛に送信される

• 変更されたバージョン • Linux kernel 3.7

# ip link add vxlan0 type vxlan \ id 123 group 239.1.1.123 dev eth0

8

Page 9: Hydrogen → Helium での Linux kernel の違い

IPv6 で ECMP のサポート• 概要 • IPv4 ですでにサポートされていた Equal Cost Multi-Path(ECMP:同一の宛先プレフィクスで異なるネクスト・ホップのルーティング・テーブル・エントリーを複数登録してトラヒックを分散させるための技術)が IPv6 でもサポートされた

• 以下の情報のハッシュ値からネクスト・ホップを選択する • 送信元アドレスと宛先アドレス • 送信元ポートと宛先ポート(UDP/TCP/SCTP の場合) • ICMP タイプと ICMP コード(ICMP の場合) • フロー・ラベル値

• 変更されたバージョン • Linux kernel 3.8

9

Page 10: Hydrogen → Helium での Linux kernel の違い

802.1ad(Q-in-Q)のサポート• 概要 • VLAN タグを入れ子にできる IEEE 802.1ad の機能が実装された !!!!!!!!!!

• 変更されたバージョン • Linux kernel 3.10

# ip link add link eth0 eth0.123 \ type vlan proto 802.1ad id 123 # ip link add link eth0.123 eth0.123.234 type vlan proto 802.1q id 234 # ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mo link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast s link/ether 52:54:00:bf:b6:10 brd ff:ff:ff:ff:ff:ff 3: eth0.123@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN link/ether 52:54:00:bf:b6:10 brd ff:ff:ff:ff:ff:ff 4: [email protected]: <BROADCAST,MULTICAST,M-DOWN> mtu 1500 qdisc link/ether 52:54:00:bf:b6:10 brd ff:ff:ff:ff:ff:ff

10

Page 11: Hydrogen → Helium での Linux kernel の違い

VTI over IPv6 のサポート• 概要 • IPv4 でしか利用できなかった VTI が IPv6 でも利用できるようになった

• VTI のはなしは以下の URL を参照… • http://www.slideshare.net/m-asama/vti-18507230

• 変更されたバージョン • Linux kernel 3.13

11

Page 12: Hydrogen → Helium での Linux kernel の違い

{ip|ip6|arp|eb}tables → nftables• 概要 • 2009 年に初めてリリースされいままでメインラインに取り込まれずメンテナンスされていた nftables が Linux kernel 3.13 でメインラインにマージされた(旧来の {ip|ip6|arp|eb}tables もいままで通り利用可能だが混在は不可)

• プロトコル毎にコマンドが別れており且つカーネル内でもコードの重複が多かった {ip|ip6|arp|eb}tables を nftables というひとつのコマンドで制御できるようにし且つエンジンも共通化したらしい • ペイロード内のデータをオフセットとサイズを指定して比較したり…といった低レベルの機能を実装した VM が用意されていて nfstables はその VM の命令セットにコンパイルして NETLINK でカーネルに流し込む…みたいなことをしてるらしい

• 変更されたバージョン • Linux kernel 3.13

12

Page 13: Hydrogen → Helium での Linux kernel の違い

参考文献• Linux Kernel Newbies • http://kernelnewbies.org/Linux_3.4 • …

• http://kernelnewbies.org/Linux_3.13