nftlb開発者ガイド

投稿日: 30 年 2019 月 XNUMX 日

概要

nftlb netfilter / nftables linuxネットワークスタックに依存しています。 この新しいスタックにより、現在の負荷分散設計に適合するために必要な新しい概念と機能が提供されます。

この記事では、nftablesロードバランサーのデータパスと制御パスの設計方法について概説します。

データパスフック

これらは、構成可能なチェーンを利用して、nftlbが使用するNetfilterフックです。 バックエンドへの確立された転送接続を高速化するために、接続追跡オフロードのような新しい概念を含める必要があります。

                                                                  ------------
                                                                 |    DNSBL   |
                                                                  ------------
                                                                       |
                                                                     queue
                      ingress                                          |  prerouting                      forward         postrouting
      ------------ ------------- --------------                   ------------ -------                 --------------       -------
     |   filter   |    filter   |    filter    |                 |   filter   |  nat  |               |    filter    |     |  nat  |
     |     0      |    50-99    |     100      |                 |    -150    |   0   |               |      0       |     |  100  | 
 --> |            |             | Sec Policies |-( Conntrack )-> | Sec Limits |       |-( Routing )-> |              | --> |       |
     | Clustering | Flow tables | DSR          |           VS{}  | Helpers    | dNAT  |         VS{}  | Flow offload |     |  sNAT |
     |            |             | stless dNAT  |                 | Marks      |       |                --------------       -------
      ------------ ------------- --------------                   ------------ ------- 

進入

(0)フィルター:クラスタリング管理用に予約されています。 nftlbにはまだ含まれていません。
(50-99)フィルター:フローテーブル高速化用に予約されています。 nftlbにはまだ含まれていません。
(100)フィルター:セキュリティポリシー(ブラックリストとホワイトリスト)、Direct Server Return、およびステートレスdNATトポロジ。

事前ルーティング

(-150)フィルター:確立された接続の最大数、1秒あたりのTCP RSTの制限、1秒あたりのTCP SYNの制限、厳密ではないTCP接続のドロップ、DNSBLサービスへのキュー、仮想サービス、およびバックエンドマーク、ヘルパーの使用、仮想サービスごとの入力接続のロギング。
(0)nat:宛先NATマングリング用に予約済み。

フォワード

(0)フィルター:フローオフロード用に予約済み。 nftlbにはまだ含まれていません。

後回し

(100)nat:宛先NATマングリング用に予約済み。

制御パス

nftlb制御パスは、単純なhttpサーバーにAPIを提供するデーモン、またはJSON形式の構成ファイルを受け入れるスタンドアロンのバイナリとして設計されています。

                -------------    traduction     -------------             --------
   JSON API    |             |   objs to nft   |             |  netlink  |        |
 ------------> | http server | --------------> | libnftables | --------> | kernel |
               |             |        |        |             |           |        |
                -------------         |         -------------             --------
                                      |               netlink                |
                                       ---------------------------------------
上の共有:

GNU Free Documentation Licenseの条項に基づくドキュメンテーション。

この記事は役に立ちましたか?

関連記事