SAM: Stateless Address Mapping - JANOG

SAM: Stateless Address Mapping
~IPv6時代のIPv4を考える~
松嶋 聡
ソフトバンクテレコム
6rdの経験から
• IPv4アドレスは、タダのインターナルIDになった
• 6rd ボーダールータはIPv6宛先アドレスから自動的に
カプセル化IPv4宛先アドレスを導く
• 6rd CEは設定されたIPv4アドレスから自動的に
Delegated Prefixを導く
• 6rdはコスト的に非常に有利なので、この原理の適用先
を広げたい
なぜステートレスがよい?
ステートレス
ステートフル
ユーザー/セッション数に応じた設備投資
トラフィック量に応じた設備投資
IPv4 Internet
IPv6
IPv4 Internet
IPv6
Point-to-Point
NBMA
6rd
上
SP’s IPv6
prefix
IPv4
IPv4
下
Local
Site
Interface ID
もしも上下逆転が可能なら
IPv4 over IPv6
上
IPv4
SP’s IPv6
prefix
IPv4
下
Local
Site
Interface ID
そんなにうまくは行かない
上
SP’s v4
prefix
SP’s IPv6
prefix
はみ出る
ユーザー
ユニーク部
ユーザーユニーク部
下
Local
Site
Interface ID
解決策その1
32bit
SP’s v4
prefix
SP’s IPv6
prefix
上
ユーザー
ユニーク部
?
ユーザーユニーク部
下
v4アドレス共通部を
追い出す
Local
Site
Interface ID
解決策その2
32bit
SP’s v4
prefix
SP’s IPv6
prefix
上
ユーザー
ユニーク部
TCP/UDP
?Port
ユーザーユニーク部
下
Local
Site
空いたビットをポート
番号でうめる
Interface ID
Stateless Address Mapping for
IPv4
over
IPv6
48bit
(IPv4 + Port)
32bit
ISP’s
prefix
SP’s IPv6
prefix
16bit
ユーザー TCP/UDP
ユニーク部
Port
ユーザーユニーク部
上
IPv4アドレス共有
local
site
Interface ID
下
Example Configurations
SP IPv4 Prefix = 10.255.0.0/16
IPv4 routing table
...
10.255.0.0/16 => 10.0.0.1
...
IPv4
IPv4 routing table
10.255.0.0/16 => tunnel0
Default => 10.0.0.2
10.0.0.1
Tunnel0 address=10.255.255.254/32
Border Relay Router
tunnel0
2400:2401::1
- Define IPv4 global address and NAPT
ports,
consist of SP’s IPv6 address
- Encapsulate by IPv6 packet
appropriately
SP’s IPv6 access NW
2400:2400::/24
IPv4 address: 10.255.AB.CD
NAPT ports: 0xEF00~0xEFFF
DHCP-PD
2400:24AB:CDEF::1
1つのIPv4アドレスを
256人で共有
Tunnel0 address=Unnumbered
Border Relay = 2400:2401::1
LAN address =192.168.3.1/24
tunnel0
CPE
192.168.3.10/24
Example behavior - UpstreamSP IPv4 Prefix = 10.255.0.0/16
IPv4 routing table
...
10.255.0.0/16 => 10.0.0.1
...
IPv4
Dst=1.1.1.1:80
Src=10.255.AB.CD:0xEF00
IPv4 routing table
10.255.0.0/16 => tunnel0
Default => 10.0.0.2
10.0.0.1
Packet
TCP IPv4
Tunnel0 address=10.255.255.254/32
Border Relay Router
tunnel0
Dst=1.1.1.1:80
Src=10.255.AB.CD:0xEF00
2400:2401::1
Packet
- Define IPv4 global address and NAPT
ports,
consist of SP’s IPv6 address
- Encapsulate by IPv6 packet
appropriately
TCP IPv4
SP’s IPv6 access NW
2400::2400/24
NAPT
IPv4 address: 10.255.AB.CD
NAPT ports: 0xEF00~0xEFFF
Packet
IPv6
Dst=2400:2401::1
Src=2400:24AB:CDEF::1
Dst=1.1.1.1:80
Src=192.168.3.10:1024
TCP IPv4
tunnel0
CPE
192.168.3.10/24
LAN address =192.168.3.1/2
Example behavior - Downstream SP IPv4 Prefix = 10.255.0.0/16
IPv4 routing table
...
10.255.0.0/16 => 10.0.0.1
...
IPv4
Dst=10.255.AB.CD:0xEF00
Src=1.1.1.1:80
IPv4 routing table
10.255.0.0/16 => tunnel0
Default => 10.0.0.2
10.0.0.1
Packet
TCP IPv4
Tunnel0 address=10.255.255.254/32
Border Relay Router
tunnel0
Dst=10.255.AB.CD:0xEF00
Src=1.1.1.1:80
2400:2401::1
Packet
- Define IPv4 global address and NAPT
ports,
consist of SP’s IPv6 address
- Encapsulate by IPv6 packet
appropriately
TCP IPv4
SP’s IPv6 access NW
2400:2400::/24
NAPT
IPv4 address: 10.255.AB.CD
NAPT ports: 0xEF00~0xEFFF
Packet
IPv6
Dst=192.168.3.10:1024
Src=1.1.1.1:80
TCP IPv4
tunnel0
CPE
Dst=2400:24AB:CDEF::1
Src=2400:2401::1
192.168.3.10/24
LAN address =192.168.3.1/2
Example behavior - Upstream(2)
IPv4 routing table
SP IPv4 Prefix = 10.255.0.0/16
...
10.255.0.0/16 => 10.0.0.1
...
IPv4
IPv4 routing table
10.255.0.0/16 => tunnel0
Default => 10.0.0.2
10.0.0.1
Tunnel0 address=10.255.255.254/32
Border Relay Router
tunnel0
Dst=10.255.27.36:66
Src=10.255.AB.CD:0xEF00
Packet
TCP IPv4
2400:2401::1
Hex
: 1B 24 42
IPv6
SP’s IPv6 access NW
2400::2400/24
Dst=2400:241B:2442::1
Src=2400:24AB:CDEF::1
Dst=10.255.27.36:66
Src=192.168.3.10:1024
IPv4 address: 10.255.AB.CD
NAPT ports: 0xEF00~0xEFFF
NAPT
Packet
TCP IPv4
tunnel0
CPE
192.168.3.10/24
サマリ
• 6rd著者(Rémi Després)によるSAMの詳細は、以下のI-Dにあり
ます
“draft-despres-softwire-sam”
• 6rdの原理をIPv4 over IPv6にも適用すると、1つのIPv4アドレ
スを複数ユーザーが共有することも可能
• CPEはIPv4アドレスと利用可能なポート番号を自動的に導く
• ボーダールータはIPv4宛先アドレス,ポート番号から自動的に
カプセル化IPv6宛先アドレスを導く
• NATはCPEの1段のみ。ボーダールータはNATステートなし
もちろんトンネルもステートレス