狠狠撸

狠狠撸Share a Scribd company logo
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
尝尝顿笔机能の概要尝尝顿笔机能の概要
木本雅彦 <kimoto@soum.co.jp>
<kimoto@ohnolab.org>
株式会社創夢 第三開発部 シニアプロジェクトマネージャ
初版:2005年7月作成、改定版:2015年3月作成
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
スイッチネットワークというもの
スイッチを用いたネットワーク構築
LAN/WANでEthernetが中心に
L2で冗長性, 仮想LAN, 帯域制御, リンク集約を実現する
単純な機器を用いるので故障しにくい
L2スイッチの高機能化とL3スイッチの登場
レイヤーごとの差異があいまいになりつつある
1/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
L2トポロジーを把握する方法
SNMP
ping, traceroute
CDP(Cisco Discovery Protocol)
LLDP(Link Layer Discovery Protocol)
2/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
Link Layer Discovery Protocol
スイッチ同士での情報交換のためのプロトコル
現状ではベンダ独自で類似機能を持つ
IEEE 802.1abで標準化される予定
3/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
Link Layer Discovery Protocol
隣接したスイッチ間で情報を教え合う
4/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
Link Layer Discovery Protocol
SNMPでトポロジー情報などを収集する
5/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
LLDPの機能
隣接装置識別情報の収集
隣接ポート識別 ? 構成情報の収集
隣接装置systemMIBの一部の収集
隣接装置のIPアドレスの収集
ベンダ独自情報の収集
6/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
LLDPの動作
隣接装置に情報を送るだけ(要求はできない)
送信側 :
一定間隔(30秒)で情報を送信する
インタフェースが落ちる時に情報を送信する
一定間隔以上(2秒)では送らない
受信側 :
ポート単位で隣接機器の情報を格納する
一定時間(120秒)過ぎた情報は破棄する
得られた情報はSNMP経由で参照できるようにする
7/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
LLDPDU
リンク層のパケットである
8/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
TLV (Type & Length & Value)
LLDPで使うTypeの例
シャーシID (必須)
ポートID (必須)
TTL (必須)
ポートの説明
システム名
システムの説明
管理アドレス
End of LLDPDU(必須)
9/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
実装の際の注意点
L2パケットなので、BPFとかPACKET socketを使う
リンクアップ?ダウンのイベントを効率よく検知する必要
がある
ポートごとに複数の対向ノードのデータを管理する必要
があるかどうかで、実装の面倒さが変わる
組込プログラミングは、なるべく動作中にmallocしたくない
最初に固定バッファを確保したほうがよい
snmpdに対してMIBを追加する方法
net-snmpだと外部プロセスで追加MIBを処理する方法があるのだ
が、当時まともなドキュメントとサンプルコードがなかった
ASN.1でMIBを記述し、コンバータが生成したコードをベースにして頑
張った
10/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
現在のLLDPの使われかた
CISCOの場合はいまだにCDPが一般的なようだ
OpenFlowでLLDPを使うので、そこそこ実装は普及し
ている
Linuxだとlldpdかopenlldp(lldpad)が多いようだ
11/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
実装状況
http://www.kempgen.net/voip/lldp-
agents.html
lldpd
http://vincentbernat.github.io/lldpd/
Linux, OpenBSD, NetBSD, FreeBSD, Mac OS X
ISC Licence
openlldp (lldpad)
http://openlldp.sourceforge.net/
Linux, NetBSD, FreeBSD, Mac OS X
BSD style Licence
12/13
(c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6
おわりに
LLDPのプロトコル仕様と機能について概説した
実装上の注意点をちょっとだけ触れた
その昔はLinuxなどで動く実装がなかったのですが、最
近は結構実装があるんですね
でもスクラッチから作れと言われたら作りますよ
13/13

More Related Content

尝尝顿笔机能の概要

  • 1. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 尝尝顿笔机能の概要尝尝顿笔机能の概要 木本雅彦 <kimoto@soum.co.jp> <kimoto@ohnolab.org> 株式会社創夢 第三開発部 シニアプロジェクトマネージャ 初版:2005年7月作成、改定版:2015年3月作成
  • 2. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 スイッチネットワークというもの スイッチを用いたネットワーク構築 LAN/WANでEthernetが中心に L2で冗長性, 仮想LAN, 帯域制御, リンク集約を実現する 単純な機器を用いるので故障しにくい L2スイッチの高機能化とL3スイッチの登場 レイヤーごとの差異があいまいになりつつある 1/13
  • 3. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 L2トポロジーを把握する方法 SNMP ping, traceroute CDP(Cisco Discovery Protocol) LLDP(Link Layer Discovery Protocol) 2/13
  • 4. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 Link Layer Discovery Protocol スイッチ同士での情報交換のためのプロトコル 現状ではベンダ独自で類似機能を持つ IEEE 802.1abで標準化される予定 3/13
  • 5. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 Link Layer Discovery Protocol 隣接したスイッチ間で情報を教え合う 4/13
  • 6. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 Link Layer Discovery Protocol SNMPでトポロジー情報などを収集する 5/13
  • 7. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 LLDPの機能 隣接装置識別情報の収集 隣接ポート識別 ? 構成情報の収集 隣接装置systemMIBの一部の収集 隣接装置のIPアドレスの収集 ベンダ独自情報の収集 6/13
  • 8. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 LLDPの動作 隣接装置に情報を送るだけ(要求はできない) 送信側 : 一定間隔(30秒)で情報を送信する インタフェースが落ちる時に情報を送信する 一定間隔以上(2秒)では送らない 受信側 : ポート単位で隣接機器の情報を格納する 一定時間(120秒)過ぎた情報は破棄する 得られた情報はSNMP経由で参照できるようにする 7/13
  • 9. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 LLDPDU リンク層のパケットである 8/13
  • 10. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 TLV (Type & Length & Value) LLDPで使うTypeの例 シャーシID (必須) ポートID (必須) TTL (必須) ポートの説明 システム名 システムの説明 管理アドレス End of LLDPDU(必須) 9/13
  • 11. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 実装の際の注意点 L2パケットなので、BPFとかPACKET socketを使う リンクアップ?ダウンのイベントを効率よく検知する必要 がある ポートごとに複数の対向ノードのデータを管理する必要 があるかどうかで、実装の面倒さが変わる 組込プログラミングは、なるべく動作中にmallocしたくない 最初に固定バッファを確保したほうがよい snmpdに対してMIBを追加する方法 net-snmpだと外部プロセスで追加MIBを処理する方法があるのだ が、当時まともなドキュメントとサンプルコードがなかった ASN.1でMIBを記述し、コンバータが生成したコードをベースにして頑 張った 10/13
  • 12. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 現在のLLDPの使われかた CISCOの場合はいまだにCDPが一般的なようだ OpenFlowでLLDPを使うので、そこそこ実装は普及し ている Linuxだとlldpdかopenlldp(lldpad)が多いようだ 11/13
  • 13. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 実装状況 http://www.kempgen.net/voip/lldp- agents.html lldpd http://vincentbernat.github.io/lldpd/ Linux, OpenBSD, NetBSD, FreeBSD, Mac OS X ISC Licence openlldp (lldpad) http://openlldp.sourceforge.net/ Linux, NetBSD, FreeBSD, Mac OS X BSD style Licence 12/13
  • 14. (c) Masahiko KIMOTO, Ph.D. - http://www.earthlight.jp/ Powered by Rabbit 2.1.6 おわりに LLDPのプロトコル仕様と機能について概説した 実装上の注意点をちょっとだけ触れた その昔はLinuxなどで動く実装がなかったのですが、最 近は結構実装があるんですね でもスクラッチから作れと言われたら作りますよ 13/13