SDN(Software Defined Network)
SDNは多岐にわたるソリューションだが、今回はベンダーロックインされない。OSSで手軽に検証できるものを紹介しよう。
発端は、HCIで利用するためのSDNを色々試しているうちにちょっと詳しくなってしまったので、備忘録として残しておこうと思った。
有名どころで言えば、OpenFlowやNSXだろう。これらのソリューションは確かに有能だがCloud全盛期の時代にはあまり向かないソリューションではないだろうか。もっと手軽に試せて、かつCloudに類似した環境を作るのに良いものとして以下のものを紹介しよう。
- Calico
- bird
- quagga
- VyOS
背景
HCIと組み合わせて、利用可能なお手軽SDNはないものかと探す日々。Kubernetesで完結できればいいなと思いつつ、Calicoから調べ始める。当然、KubernetesのフロントのNetworkはKubernetes外なので何かしらなNetworkが必要になる。最初はLBだけあれば別にIngressに渡せばいいだけと思っていたが、MetalLBなるものに出会い。Cloudで利用するようなService Type Load Blancerにしたいという思いから、深みにはまっていってしまった。MetalLBについて、IPVS Mode出現で色々事情が変わってしまったが、Balancingを最適にするためにECMP Baseで考えていたのBGPが利用可能なSDNを色々試すことになってしまった。どの道、拡張性、可用性を兼ね備えたiBGPを考えていたので、気軽に考えていたのだが、、、甘かった。
Calico
https://docs.projectcalico.org/v3.8/introduction/
Kubernetes Backend Networkとしてよく利用されるCalico中身はbirdでKubernetesなどでAPI連携できるIFを持たせたもの。試したことはないけどOpenStack等でも使えるらしい。BGPを利用してここの通信制御を行なっているらしい。
開発が活発で記事掲載時点でVersion 3.8が最新
基本Kubernetes上で動かすので独立したものを検証する意味はなかった。BackendがbirdなのでBirdを検証すれば良いと思いつつ、Kubernetes内でのCalicoのカスタマイズの仕方についてはどこかで検証し記載する予定。特にMultipassがどのようにすれば実現できるのか悩み中。
bird
https://bird.network.cz/
CalicoのBackendで利用されるSDN。軽い。JSONでConfigできる。
詳細な検証を記載予定。
quagga
https://www.quagga.net/
古き良きSDN。CiscoやJuniperライクに作られているのでNetwork出身の方には使いやすい。
詳細な検証を記載予定。
VyOS
https://vyos.io/
quaggaの派生、どうやらECMPのマルチパスができるらしい。上記のものはできなかったので検証中。
詳細な検証を記載予定。