Firewall)は、HTTPリクエストをフィルタリングし、SQLインジェクションコメントスパムXSSDDoSアタックWordPressなど特定のアプリを狙った攻撃などの攻撃をネットワークのエッジで、つまりサーバに到達する前に守ってくれます。顧客企業がカスタムメイドしたルールの総計で、それが全てのリクエストに当てはめられます。その処理速度は平均1ms以下、概ね400μs程度。1日あたり12億リクエストを防御しているとのこと。Graham-Cummingが、その処理速度を高速スクリプト言語Luaを活用して、当初の10msから1/10以下に短縮した取組みを紹介してくれています。LuaJIT)を使って改善。コンパイルしたLuaファイルを動的に読込み、つまりLuaをアセンブリ言語のように使い、mod_securityもしくはCloudFlareで用意したルールを、Luaにコンパイルし、動的にnginxに読込んでいる。再起動せずに新しいルールを柔軟に適用できる。ルールコンパイラの最適化clauseの並びを工夫することで、サブclauseがマッチしなければすぐにスキップできる。オペレータをシンプルなstringマッチなど高速なものに置き換える。マクロ拡張が必要になりそうかどうかの情報をWAFランタイムに与える。繰り返しでてくるstringや変数が必ず一度だけ計算されるようにグローバルに最適化する。その他の最適化Luaの基本的なチューニング。ローカルはグローバルよりもかなり早い。コロンでなくドット構文を使う。クロージャの利用を極力控えた。最近までLuaJITにおいてクロージャはやや遅かった。JITとキャッシュオプションを適用。使い、インメモリキャッシュの効果をだす。アレーを特別な使い方をしている。(?)JITに適用可能なコードであることの確認。いう二段階でキャッシュ。メモイゼーション正規表現を徹底的に磨くPCREツールを利用することで、本番環境のノードにおける正規表現の実行時間を計測。マッチングのスピードアップのために、独自バージョンのエイホ-コラシックアルゴリズムを実装。LUA版をオープンソースで提供。hellを避けつつ、100%ノンブロッキングI/Oを享受するため。」にngx_luaに取組んだ経緯を紹介してくれています。cosocketの前提として、Luaはネイティブでコアルーティンをサポートしている。同期させた状態でコードをマジックのように反映してくれる。Redis用のドライバを作成し、パフォーマンスを大幅に改善し、そこから開発コミュニティが盛り上がり、ライブラリが充実していった。WAFの開発に関わった。講演の後半では関連ライブラリの解説を順次してくれています。TopアクセスランキングBack。