SlideShare a Scribd company logo
2
Most read
3
Most read
22
Most read
AS45679の実態
FreeBSD WorkShop 2022/06/24
Tomocha < tomo [at] tomocha.net >
AS45679の歴史
• 2009年割当
• INTEC(WIDE), SAKURA, Hurricane, Convivial-Net, etc… との接続
• IPv6経路交換を前提、フルルートニヤニヤ。
• PA/PIアドレスは無し、下位組織としてアドレスをアサインしてもらう
• IPv6 over IPv4 tunnel
• 2014年 SoftEther社と接続
• IPv4 + IPv6
• Linux + Quagga
• NGN閉域折りし
• 2021年
• IPv4/IPv6 特殊用途PIアドレスの割振を受ける
• クラウド型トランジットを受ける(Vultr/xTom)
• 2022年
• Upstream 増強計画中(10G/25GxN本クラスの専用線、DCとのWDMは構築済み)
AS45679コンセプト
• 旧世代のサーバーで構築
• ソフトウェアBGPルータで10Gbpsの性能
• 実際には8Gbpsぐらいを目標
• E5-26xx Ivy Bridge 世代以降のCPUを採用
• 最近とても安いよ? ebayで破格。DDR3も安くなったよ。お下がりにはちょうどよい。
• Full RouteをN本扱う
• 想定は3本以上
• 拠点冗長
• OS/BGPDはすべて異なる組み合わせ
• 商用に耐えうる耐障害性
• MTU 1500
物理構成(概要)
EtherIP over Flets#1
EtherIP over Flets#2
IX2215
IX2215 IX2215
IX2215
SW
SW
関西 関東
NGN
VM1 VM2 VM3 VM4
TransitE
(Vultr)
RT
1
RT
2
RT
3
RT
4
TransitD
(xTom)
TransitB TransitC
TransitA
論理構成(概要)
関西 関東
Vultr
(FreeBSD + FRR)
xTom
(Debian + FRR)
TransitA
RT1
(Debian + FRR)
RT2
(予定)
RT3
( F12 + FRR )
RT4
(予定)
PeerA
Hurricane
(IPv6 Only)
BBIX
IPIP tunnel
SoftEther (MTU1500)
EtherIP (MTU1500)
Full Route Transit
NGN
IPv6 over IPoE
IPv6 over
IPv4 PPPoE
計画中
BGPルータのスペック
• CPU: 4vCPU~8vCPU
• MEM: 8GB~16GB
• NIC: Mellanox Dual Port 10G x1
• OS: FreeBSD / Debian
• BGPD: FRR, etc..(検討中)
• MRT dumpはやりたい(希望)
• たくさんのストレージ
• VMWare上のvm
• ベアメタルが理想だが電気代が…
ゴールは、地方ISPクラスが十分に使える程度の性能
FreeBSD12はまりどころ(Kernel)
• EtherIPが動かない
• FreeBSD9ぐらいから動いてないらしい
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=256820
https://www.seirios.org/seirios/dokuwiki/doku.php?id=tweet:2021:0530_01
• FreeBSD12 (パッチは取込予定)
• FreeBSD13 (パッチは取込予定)
FreeBSD12はまりどころ(Kernel)
• Full Routeを投入すると…
• netstat: sysctl: net.route.0.0.dump.0: Cannot allocate memory
• netstat –rn を根気よく。
• 一回目のシステムコールで経路分のメモリを確保
2回目のシステムコールで実際にデータを表示しようとして、経路数に大幅に差分
があった場合、メモリ不足になる
• FIBに入れる経路上限、基準がわからず
• zebraからFIBに経路を一回で入れるキューの単位。Full Tableを受けた瞬間、まと
まったキューが確保されなければならないらしい (by ほ。さん)
/boot/loader.conf
net.route.netisr_maxqlen=204800
FreeBSD12での固有トラブル(FRR7.5.1)
• FRR 7.5.1
• bgpd メモリリークで数日でcore dump
• bgpd の CPUが常に100%
• Full Route 1 pathだと発生しないように見える
• 1 Core分のCpu sys が常に100%, 多量の context switching, High
LoadAverage
• おそらく、正しくFIBに入れれずエラーになった経路があるのではないか?
• 入ってる経路もある?
• 失敗が原因で負荷が上がってる可能性
FreeBSD12での固有トラブル(FRR8.x)
• FRR 8.x 動かない
• ビルドができない
• libyang2 が ports にないので、別途準備が必要
• Netlink回りの不具合
• F11から実装が変わったが、メモリの確保の実装が雑でCoredump (by hrs-san)
• 数千経路も FIB に納めれない
• SoftEther 仮想IF、VLANが生えたとき、frrが認識できない
• zebraの再起動が必要
• zebra経由でIPアドレス操作ができない
• 削除・追加が反映されない
• zebraの再起動でも反映されない
• watchdogは鬼門
• bgpd の負荷が上がると… バッツン process 再起動
• PAGERの変更 ( bugではないが…&仕様変更 )
• VTYSH_PAGER=less → setenv VTYSH_PAGER "more -e“
いずれも不具合系はLinux(Debian) + FRRは問題無し。
FreeBSD12 + FRR8.x 環境でhrs sanの協力により多く修正。
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=260950
SoftEtherを使った仮想NIC問題
• Linkは上がっているように見えて実は半落ちしてる問題
• 経路ループが発生…
• IGPは上がってBGPセッションは張られているが packet の fowardingされ
なくなる
• netstat –r レベルでは正常に見える
• 原因不明(要調査)
• zebraがまだIf/Addrが完璧に認識できない
• 動くこともあれば動かないことも
• 発生パターンの調査
• zebra回りに修正がまだ必要かも…
SoftEtherを使った仮想NIC問題(解決編)
Linuxで VPN Server を建てて、
vlanにBridgeする
VMwareが動いてるので、vm建て放題だし…
ルータから見たら、vlan interface をつくって、 point to point interface として扱えばよいし楽だよね…
物理構成(概要) ver 1.0
EtherIP over Flets#1
EtherIP over Flets#2
IX2215
IX2215 IX2215
IX2215
SW
SW
関西 関東
NGN
VM1 VM2 VM3 VM4
RT
1
RT
2
RT
3
RT
4
TransitE
(Vultr)
TransitD
(xTom)
TransitB TransitC
TransitA
物理構成(概要) ver 2.0
SE
1
SE
2
SE
3
SE
4
EtherIP over Flets#1
EtherIP over Flets#2
IX2215
IX2215 IX2215
IX2215
SW
SW
関西 関東
NGN
VM1 VM2 VM3 VM4
RT
1
RT
2
RT
3
RT
4
TransitE
(Vultr)
TransitD
(xTom)
TransitB TransitC
TransitA
構成の結論
OS標準のTunnel以外は分ける
• Tunnelの足の経路のばたつき
• Static Routeを書き忘れたり
• VPN/Tunnel収容ルータは専用に作る
• 意外とCPU食うので割り込みが…
• AffinityでCPU coreを固定するとクラッシュするプロセス…
• 起動時に失敗したり
• OS標準実装のTunnelだと、MTU1500にならないし…
おまけ(1)
FreeBSDではないお話
FRR7.5.x の不具合(1)
• route-map が正しく動作しない
• MED
• 付与されているように見えて、適用した値が広報されないとか…
• prefix-list
• route-map が deny で、 prefix-list が permit/deny だと動かないとか…
• 実装が逆だったり、二重否定は動かなかったり(記憶曖昧)
• bogon-filter を書くときに苦労した
• シーケンス番号が並ばない、ソートされない
• ip prefix-list PL_LIST1 seq 100 …
ip prefix-list PL_LIST1 seq 200 …
ip prefix-list PL_LIST1 seq 150 … etc
• Config が読みにくい orz
そういえば、2014年頃、
vyatta / Quagga で試したときも正しく動かなかったな…
FRR7.5.x の不具合(2)
• bgp_read_packet error
• Loopback で IBGP が張れない
• FRR7.0.xからのバグ
• https://github.com/FRRouting/frr/issues/4438
クラウド型トランジット
特徴
• VPSベースの固定vCPU、固定MEM、転送量課金(TB単位での契約)
• 1vCPU, MEM 2GB, bandwidth 2TB (10G IF) 10ドルぐらい
• 持ち込みアドレス、持ち込みAS対応
• BGP Full Table 対応
• IX接続 可能
• IPv6に対応、IPoEにてTunnelを作成
• IPoEを契約するISP選択
• 同じVNEであっても、ローミング提供のISPを契約すると、卸先ISP全体での公平
制御される可能性がある
• 同じIPoE/VNEでも契約先が重要
• おすすめはTransix(IIJ経由)もしくはSoftbank
クラウド型トランジット
特徴(続き)
• FreeBSDにも対応しており、海外では割と主流
• テラ(ギガ)が不足したら自動的に落ちる(通信が止まるはず)
• 必要だったらテラを買えばよい
• 必要だったら複数インスタンス契約すればよい
• ECMP ロードバランスすれば冗長性も可用性も上がる
円安ぅ。。。。反対(>_<)
BGPの特徴を最大限に活用
クラウド型トランジット
• BGP対応のロケーションが限られる
• MEM 2GBだとメモリが厳しい
• 意図的にswapに逃がす
• FIBに入れない
• Loopbackなどの経路はIGP(OSPF)で経路交換、FIBに投入
• 自PIアドレスの経路、その他内部経路もFIBに投入(BGP)
• 経路ループ防止のため
• Null/経路生成はコアルータや経路生成ルータのみ
• ブラックホール防止のため
• それ以外は、Upstreamにデフォルトルート
• best-path 経路計算は不要
• コンバージェンスも気にしなくてよい
ip protocol bgp <route-map>
クラウド型トランジット(苦難編)
• BGPセッション…
• とあるVPSは同一ネットワーク上にBGPルータが別に存在する
• FIBにいれずにデフォゲに投げていたら突然通信できなくなる
• Source address validation を入れたらしい…
→ 大障害に
→ メモリ増強して対応orz
• eBGP multihopする事業者
• デフォゲになげていたらOK
• BGP communityが提供されない
• そら、ローカルで使う想定だしな…
• マルチリージョンで使うと海外の海外に回ったり…
• 日本国内から太平洋横断して帰ってくるとか
• 力の強いトランジットを仕入れているとあるある…
• AS6939(Hurricane Electric) こわい
クラウド型トランジット
• Vultr
• https://www.vultr.com/ja/features/bgp/
• xTom
• https://xtom.com/vps/
• List of IPv6 tunnel brokers
• https://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers
最後に
hrsさん、ほ。さん、kozukaさん、多大な協力ありがとうござ
いました。
時間が出来次第、ほかのbgpd(BIRD)も投入していきます。

More Related Content

PDF
BGP Unnumbered で遊んでみた
PDF
大規模DCのネットワークデザイン
PDF
パケットキャプチャの勘どころ Ssmjp 201501
PDF
IPv4/IPv6 移行・共存技術の動向
PDF
さくらのVPS で IPv4 over IPv6ルータの構築
PDF
Scapyで作る・解析するパケット
PDF
自宅サーバラックの勧め BGP4編
PDF
インターネットの仕組みとISPの構造
BGP Unnumbered で遊んでみた
大規模DCのネットワークデザイン
パケットキャプチャの勘どころ Ssmjp 201501
IPv4/IPv6 移行・共存技術の動向
さくらのVPS で IPv4 over IPv6ルータの構築
Scapyで作る・解析するパケット
自宅サーバラックの勧め BGP4編
インターネットの仕組みとISPの構造

What's hot (20)

PDF
スイッチ・ルータのしくみ
PDF
閉域網接続の技術入門
PPTX
フロー技術によるネットワーク管理
PDF
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
PDF
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
PDF
Ethernetの受信処理
PDF
大規模サービスを支えるネットワークインフラの全貌
PDF
ISPの向こう側、どうなってますか
PDF
TCAMのしくみ
PDF
本当は楽しいインターネット
PDF
アーキテクチャから理解するPostgreSQLのレプリケーション
PDF
ロードバランスへの長い道
PDF
TLS 1.3 と 0-RTT のこわ〜い話
PPTX
Slurmのジョブスケジューリングと実装
PDF
IPv6マルチプレフィックスの話
PDF
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PPTX
自宅インフラの育て方 第2回
PPTX
VyOSで作るIPv4 Router/IPv6 Bridge
PPTX
本当は恐ろしい分散システムの話
PDF
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
スイッチ・ルータのしくみ
閉域網接続の技術入門
フロー技術によるネットワーク管理
知っているようで知らないNeutron -仮想ルータの冗長と分散- - OpenStack最新情報セミナー 2016年3月
macOSの仮想化技術について ~Virtualization-rs Rust bindings for virtualization.framework ~
Ethernetの受信処理
大規模サービスを支えるネットワークインフラの全貌
ISPの向こう側、どうなってますか
TCAMのしくみ
本当は楽しいインターネット
アーキテクチャから理解するPostgreSQLのレプリケーション
ロードバランスへの長い道
TLS 1.3 と 0-RTT のこわ〜い話
Slurmのジョブスケジューリングと実装
IPv6マルチプレフィックスの話
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
自宅インフラの育て方 第2回
VyOSで作るIPv4 Router/IPv6 Bridge
本当は恐ろしい分散システムの話
Geekなぺーじ ネットワーク技術者ではない方々向けIPv6セミナー2
Ad

Similar to AS45679 on FreeBSD (20)

PPT
20140310 fpgax
PDF
Trema day 1
PPTX
自宅スケーラブル・ファイルシステムのご紹介
PDF
Info talk2013
PDF
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
 
PDF
さくらのクラウドインフラの紹介
PDF
EthernetやCPUなどの話
PDF
L2 over L3 ecnaspsulations
PDF
Wireguard 実践入門
PDF
Linux packet-forwarding
PDF
A story of porting OpenBSD/luna88k
PDF
Open-FCoE_osc2011tokyofall_20111119
PDF
Xenとzfsで作る家庭内VDIサーバ
PDF
Janog60 yosou
PPTX
545人のインフラを支えたNOCチーム!
PDF
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
PPTX
自宅ラック勉強会 4.0/2014 LT資料
PDF
20apr2012 kernelvm7-main
PDF
Oss dev-04
PDF
SDN Japan: ovs-hw
20140310 fpgax
Trema day 1
自宅スケーラブル・ファイルシステムのご紹介
Info talk2013
余ったPCをルータに変える、ソフトウェアルータ「SEIL/x86」
 
さくらのクラウドインフラの紹介
EthernetやCPUなどの話
L2 over L3 ecnaspsulations
Wireguard 実践入門
Linux packet-forwarding
A story of porting OpenBSD/luna88k
Open-FCoE_osc2011tokyofall_20111119
Xenとzfsで作る家庭内VDIサーバ
Janog60 yosou
545人のインフラを支えたNOCチーム!
FPGAで作るOpenFlow Switch (FPGAエクストリーム・コンピューティング 第6回) FPGAX#6
自宅ラック勉強会 4.0/2014 LT資料
20apr2012 kernelvm7-main
Oss dev-04
SDN Japan: ovs-hw
Ad

AS45679 on FreeBSD