8月1日開催のイベント「Developers Summit 2013 Summer」(夏サミ2013)で、10Gigabit Ethernetの実践的な使いどころのほか、さらにその先の40Gigabit Ethernetに関する考察も紹介されます。ぜひご参加ください!
- 「Webサービスのための10/40Gigabit Ethernetの可能性」(セッション紹介ページ)
はじめに
Webサービスを取り巻く環境はクラウド・コンピューティングなどの出現で日々変化してきています。しかし着実な流れとして、既存のGigabit Ethernetの環境からより広帯域のネットワーク接続へと進んでいるのも事実です。仮想マシンとして動作するクラウド環境であれ、物理マシンで構成されたクラスターであれ、ネットワーク帯域の高速化はWebサービス全体にも大きな影響を与えます。
ここでは、普及目前になってきた10Gigabit Ethernetの動作確認とベンチマーク方法などから、高速ネットワークの基礎を学んでいきます。
対象読者
Webサービスの設計・構築・運用を行うシステム・エンジニア。
必要な環境
Linux環境およびIntel x86システム。
ネットワーク・インターフェースの確認方法
10Gigabit Ethernetは、いままでと同じように取り扱うことができます。ipコマンドを使えば、システム上のネットワーク・インターフェースの状況が見えてきます。まずは、その使い方から見ていきましょう。
# ip link show 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 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 mq state UP qlen 1000 link/ether 00:25:90:9c:18:30 brd ff:ff:ff:ff:ff:ff 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 00:25:90:9c:18:31 brd ff:ff:ff:ff:ff:ff
10Gigabit Ethernetがどのような接続方式をサポートするかは、ethtoolを使えば詳細を確認できます。
SPF+コネクタを経由した光ファイバー接続、Twinaxケーブルや10GBASE-Tによるカッパー接続があります。カッパー接続など銅線を使ったものはケーブル長が短く、光ファイバー接続ではケーブル長が長いという特性があります。通常ラック内で利用する場合には、さほど問題になりませんが、複数ラックを跨ぐような10Gigabit Ethernet Switchとの接続の場合には、光ファイバー接続が必要です。
# ethtool eth0 Settings for eth0: Supported ports: [ FIBRE ] Supported link modes: 10000baseT/Full Supported pause frame use: No Supports auto-negotiation: No Advertised link modes: 10000baseT/Full Advertised pause frame use: No Advertised auto-negotiation: No Speed: 10000Mb/s Duplex: Full Port: Direct Attach Copper PHYAD: 0 Transceiver: external Auto-negotiation: off Supports Wake-on: d Wake-on: d Current message level: 0x00000007 (7) drv probe link Link detected: yes
最近のネットワーク・インターフェースカードでは、NIC上でさまざまなオフロード処理を実現するための機構が搭載されています。TCPセグメンテーション・オフロード(TSO)や、ラージ・レシーブ・オフロード(LRO)などが、オフロード処理機構として一般的です。これらの機能をOnにすることで、トラフィック・パターンによってはネットワーク処理性能を向上させることができますので、適宜設定すると良いでしょう。またNIC上の各種オフロード処理は、ベンダーや製品により異なっていますので注意が必要です。
# ethtool -k eth0 Features for eth0: rx-checksumming: on tx-checksumming: on scatter-gather: on tcp-segmentation-offload: on udp-fragmentation-offload: off generic-segmentation-offload: on generic-receive-offload: on large-receive-offload: on rx-vlan-offload: on tx-vlan-offload: on ntuple-filters: off receive-hashing: on