Software-Defined Networkingの略。その名の通り、ソフトウエアで定義可能なネットワークシステムのことを指す。

 これまでのネットワーク機器では、基本的にベンダーが搭載した標準プロトコルやベンダー独自のプロトコルしか動作させられなかった。一度設定したルールを変更するのも大変だった。

 かつてのコンピューターシステムではこうした状況でも問題がなかったが、クラウド化の進展によってデータセンターのリソースが仮想化し、動的にネットワークを構成する必要が出てきた。例えば、3台の仮想マシンで動作させていたサービスを、負荷が増大したので新たに2台追加する、負荷の減少したので、逆に1台減らす、といった動的な構成がもとめられるようになってきた。

 SDNは、ネットワークに柔軟性を与えるため、ネットワーク管理者がソフトウエアによって自由にネットワーク機器の動作を制御できるようにしようという考え方である。具体的には、API(application programming interfaces)によってルーターやスイッチを独自のアプリケーションから制御できるようにすることで実現する。このAPIを使うことで、パケットのパラメーターを操作したり、新たなヘッダーを加えたり、あるいは受け取ったパケットの特徴からパケットの配送方法・方向を制御したりすることが可能になる。SDNを実現するためのAPI仕様としては「OpenFlow」が有名である。