OpenLDAPのCSN
OpenLDAPが冗長構成を取るとき、
マスター側をプロバイダ、
スレーブ側をコンシューマって言うらしいんですが。
この同期をするとき、プロバイダ側の情報が新しいのか、
コンシューマ側の情報が新しいのかを判断するためのタイムスタンプみたいな情報が、CSNで
エントリごとのCSNと、データベース全体のCSNがあるそうです。
そのCSNを元にして差分だったり、
CSNがなければ全エントリを同期するといった判断をするための基準になっています。
CSNは同期が完了した際に、プロバイダからコンシューマに対して、
同期完了後のCSNを通知します。
その通知されたCSNを、次回同期する際に送りつけて同期するっていうのが
生本的な動きのようです。
削除されたエントリについてどうやって知ってるのか分からん。
同期する際には 前回のCSNを使って同期するのが基本なのですが、
違うCSNを使うようにしたい場合は、
/usr/sbin/slapd -c rid=XXX,csn=YYYYMMDDHHMMSS.XXXXXXZ#[SID]#XXXXXX;YYYYMMDDHHMMSS.XXXXXXZ#[SID]#XXXXXX
というオプションをつけてあげると、
1番目のCSNと2番めのCSNの差分を見て応答してくれるみたいです。
プロバイダとコンシューマどっちのCSNをどっちに書くのかっていうのも分かってない。
パケットキャプチャして送ってるCSNを見る限りだと、
プロバイダ;コンシューマっぽいけど。