Re:RIP
an amazing routing protocol
Yuki Azuma 東 佑輝
2
誰
● 名前 東佑輝
● 所属 東京工業高等専門学校
● 性別 男性
● 年齢 0x11
● 趣味 OS 自作 , 登山
● 埼玉在住
● HP: UEFI.JP
● TWITTER: @heppoko_yuki
● CALLSIGN: JJ1QYQ
3
何したの
● microps に RIP の実装を追加
● なんかルーティングっぽいことができるようになった
4
なんで RIP?
● 先週黒い先輩に cisco router のイロハを教わった
● RIP というプロトコルがあることを知った
● インターンに来た
● 自分が発展コースであることを初めて知った
● 思いつきで RIP を実装することにした
– エェ ...
5
RIPにまつわるPOEM
6
In AS: Routing
● 静的ルーティングは大変!
– 台数が多いときつい
– 構成変更時に全てのコンピュータを操作しなければいけない
● IGP( 動的ルーティング )
– Interior Gateway Protocol
● RIP
● IGRP
● OSPF
● IS-IS
7
RIP とは
● Routing Information Protocol
– original は BSD4.3
– 1988 年に RIPv1 の仕様策定
– 1998 年に RIPv2 の仕様策定
● いにしえのルーティング・プロトコル
● 距離ベクトル型ルーティング・プロトコル
8
RIPv1 Packet
MAC header
IP header
UDP header
command version 0
address family identifier 0
IP address(advertise)
0
0
metric
1route
value mean description
0x1 request
0x2 response
0x3 traceoff obsolete
0x4 traceon obsolete
0x5 reserved Sun Microsystems
command
https://www.iana.org/assignments/rip-types/rip-types.xhtml
9
Real RIPv1 Packet
0000 ff ff ff ff ff ff 34 95 db 2d b7 10 08 00 45 00 ......4..-....E.
0010 00 48 00 80 00 00 ff 11 f0 79 c0 a8 0a 03 ff ff .H.......y......
0020 ff ff 02 08 02 08 00 34 9f 9c 02 01 00 00 00 02 .......4........
0030 00 00 c6 12 02 00 00 00 00 00 00 00 00 00 00 00 ................
0040 00 02 00 02 00 00 c6 12 01 00 00 00 00 00 00 00 ................
0050 00 00 00 00 00 02 ......
10
packet の流れ
Tanigawadake
Kitadake
Ontakesan
A: 192.168.0.0/24 B: 192.168.1.0/24
192.168.0.1
192.168.0.2
C:
192.168.2.0/24
192.168.1.1
192.168.1.2
192.168.2.1
11
packet の流れ
Ontakesan の Response を考えてみる
Network Nexthop Metric
192.168.2.0/24 0(directed) 1
192.168.1.0/24 0(directed) 1
起動時の routing table
12
packet の流れ
Tanigawadake
Kitadake
Ontakesan
A: 192.168.0.0/24 B: 192.168.1.0/24
192.168.0.1
192.168.0.2
C:
192.168.2.0/24
192.168.1.1
192.168.1.2
192.168.2.1
Network Nexthop Metric
192.168.2.0/24 0(directed) 1
192.168.1.0/24 0(directed) 1
13
packet の流れ
Kitadake の routing table
Network Nexthop Metric
192.168.0.0/24 0(directed) 1
192.168.1.0/24 0(directed) 1
起動時 Network Nexthop Metric
192.168.0.0/24 0(directed) 1
192.168.1.0/24 0(directed) 1
192.168.2.0/24 192.168.1.2 2
response 受信後
重要 : metric を increment して更新
14
packet の流れ
Tanigawadake
Kitadake
Ontakesan
A: 192.168.0.0/24 B: 192.168.1.0/24
192.168.0.1
192.168.0.2
C:
192.168.2.0/24
192.168.1.1
192.168.1.2
192.168.2.1
Network Nexthop Metric
192.168.0.0/24 0(directed) 1
192.168.1.0/24 0(directed) 1
192.168.2.0/24 192.168.1.2 2
15
packet の流れ
Tanigawadake の routing table
Network Nexthop Metric
192.168.0.0/24 0(directed) 1
起動時 Network Nexthop Metric
192.168.0.0/24 0(directed) 1
192.168.1.0/24 192.168.0.2 2
192.168.2.0/24 192.168.0.2 3
response 受信後
16
簡単でしょ?
17
RIP: Regular Update
● 30 秒おきに自分の持ってる経路情報を広告する
● 広告を受け取ったら、自分の経路情報と比較し更新
● RIP の基本的な動作形態はこれ
● 今回はこれだけを実装
– 他にも、起動時に request を送ったりするべき
– 経路情報のループを防ぐ機能も RFC に規定されているが未実装
18
経路の選択
● 経路情報が更新されたら、経路を更新し適用する
● 適用は Bellman-ford Algorithm に則る
● RFC が詳しいので読んでみてほしい (RFC1058)
https://tools.ietf.org/html/rfc1058
19
Image
20
Network
21
Packet Capture
22
Packet Capture
23
Router の console
24
感想
● バカといわれる RIP だけれど実装するのはそこそこ手間
● ダブルポインタ、トリプルポインタ難しい
● おべんとう美味しかったです
● 色々質問して勉強できてよかったです
25
Thank you
● 実装した RIP は microps に PR 予定
● https://github.com/Heppokoyuki/microps/tree/
feature/ripv1

Re:RIP RIPを実装してみた

  • 1.
    Re:RIP an amazing routingprotocol Yuki Azuma 東 佑輝
  • 2.
    2 誰 ● 名前 東佑輝 ●所属 東京工業高等専門学校 ● 性別 男性 ● 年齢 0x11 ● 趣味 OS 自作 , 登山 ● 埼玉在住 ● HP: UEFI.JP ● TWITTER: @heppoko_yuki ● CALLSIGN: JJ1QYQ
  • 3.
    3 何したの ● microps にRIP の実装を追加 ● なんかルーティングっぽいことができるようになった
  • 4.
    4 なんで RIP? ● 先週黒い先輩にcisco router のイロハを教わった ● RIP というプロトコルがあることを知った ● インターンに来た ● 自分が発展コースであることを初めて知った ● 思いつきで RIP を実装することにした – エェ ...
  • 5.
  • 6.
    6 In AS: Routing ●静的ルーティングは大変! – 台数が多いときつい – 構成変更時に全てのコンピュータを操作しなければいけない ● IGP( 動的ルーティング ) – Interior Gateway Protocol ● RIP ● IGRP ● OSPF ● IS-IS
  • 7.
    7 RIP とは ● RoutingInformation Protocol – original は BSD4.3 – 1988 年に RIPv1 の仕様策定 – 1998 年に RIPv2 の仕様策定 ● いにしえのルーティング・プロトコル ● 距離ベクトル型ルーティング・プロトコル
  • 8.
    8 RIPv1 Packet MAC header IPheader UDP header command version 0 address family identifier 0 IP address(advertise) 0 0 metric 1route value mean description 0x1 request 0x2 response 0x3 traceoff obsolete 0x4 traceon obsolete 0x5 reserved Sun Microsystems command https://www.iana.org/assignments/rip-types/rip-types.xhtml
  • 9.
    9 Real RIPv1 Packet 0000ff ff ff ff ff ff 34 95 db 2d b7 10 08 00 45 00 ......4..-....E. 0010 00 48 00 80 00 00 ff 11 f0 79 c0 a8 0a 03 ff ff .H.......y...... 0020 ff ff 02 08 02 08 00 34 9f 9c 02 01 00 00 00 02 .......4........ 0030 00 00 c6 12 02 00 00 00 00 00 00 00 00 00 00 00 ................ 0040 00 02 00 02 00 00 c6 12 01 00 00 00 00 00 00 00 ................ 0050 00 00 00 00 00 02 ......
  • 10.
    10 packet の流れ Tanigawadake Kitadake Ontakesan A: 192.168.0.0/24B: 192.168.1.0/24 192.168.0.1 192.168.0.2 C: 192.168.2.0/24 192.168.1.1 192.168.1.2 192.168.2.1
  • 11.
    11 packet の流れ Ontakesan のResponse を考えてみる Network Nexthop Metric 192.168.2.0/24 0(directed) 1 192.168.1.0/24 0(directed) 1 起動時の routing table
  • 12.
    12 packet の流れ Tanigawadake Kitadake Ontakesan A: 192.168.0.0/24B: 192.168.1.0/24 192.168.0.1 192.168.0.2 C: 192.168.2.0/24 192.168.1.1 192.168.1.2 192.168.2.1 Network Nexthop Metric 192.168.2.0/24 0(directed) 1 192.168.1.0/24 0(directed) 1
  • 13.
    13 packet の流れ Kitadake のrouting table Network Nexthop Metric 192.168.0.0/24 0(directed) 1 192.168.1.0/24 0(directed) 1 起動時 Network Nexthop Metric 192.168.0.0/24 0(directed) 1 192.168.1.0/24 0(directed) 1 192.168.2.0/24 192.168.1.2 2 response 受信後 重要 : metric を increment して更新
  • 14.
    14 packet の流れ Tanigawadake Kitadake Ontakesan A: 192.168.0.0/24B: 192.168.1.0/24 192.168.0.1 192.168.0.2 C: 192.168.2.0/24 192.168.1.1 192.168.1.2 192.168.2.1 Network Nexthop Metric 192.168.0.0/24 0(directed) 1 192.168.1.0/24 0(directed) 1 192.168.2.0/24 192.168.1.2 2
  • 15.
    15 packet の流れ Tanigawadake のrouting table Network Nexthop Metric 192.168.0.0/24 0(directed) 1 起動時 Network Nexthop Metric 192.168.0.0/24 0(directed) 1 192.168.1.0/24 192.168.0.2 2 192.168.2.0/24 192.168.0.2 3 response 受信後
  • 16.
  • 17.
    17 RIP: Regular Update ●30 秒おきに自分の持ってる経路情報を広告する ● 広告を受け取ったら、自分の経路情報と比較し更新 ● RIP の基本的な動作形態はこれ ● 今回はこれだけを実装 – 他にも、起動時に request を送ったりするべき – 経路情報のループを防ぐ機能も RFC に規定されているが未実装
  • 18.
    18 経路の選択 ● 経路情報が更新されたら、経路を更新し適用する ● 適用はBellman-ford Algorithm に則る ● RFC が詳しいので読んでみてほしい (RFC1058) https://tools.ietf.org/html/rfc1058
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
    24 感想 ● バカといわれる RIPだけれど実装するのはそこそこ手間 ● ダブルポインタ、トリプルポインタ難しい ● おべんとう美味しかったです ● 色々質問して勉強できてよかったです
  • 25.
    25 Thank you ● 実装したRIP は microps に PR 予定 ● https://github.com/Heppokoyuki/microps/tree/ feature/ripv1