Skip to content

パート9: オーバーレイとネイティブルーティングの詳細クイズ ​

Cilium 1.20.2 · 2026-10-15

トンネルの仕組み ​

  1. Ciliumはカプセル化パケットの24ビットVNIに何を設定しますか?

    • A) 宛先ノードID
    • B) 送信元エンドポイントのセキュリティID
    • C) CiliumのクラスターID
    • D) 受信側がcilium_tunnel_mapで対応付けるノードごとのランダム値
    回答を表示

    回答: B) 送信元エンドポイントのセキュリティID

    VNIには送信元IDが含まれます(world-ipv4/world-ipv6はworldとして送信され、hostはremote-nodeに書き換えられます)。受信側はipcacheも持つため、VNIは最適化であり唯一の情報源ではありません。cilium_tunnel_mapは1.18でデータパスから削除されました(agentは残存するマップのpinを解除するだけです)。Goパッケージは1.19で削除され、トンネルエンドポイントはipcacheの値に含まれます。

  2. Ciliumでは、IDの伝送に関してGeneveとVXLANでどのような違いがありますか?

    • A) GeneveはTLVオプションでIDを運び、VXLANはVNIでIDを運ぶ
    • B) GeneveはIDを運ばず、ポリシーは送信側だけで評価される
    • C) Geneveは外側UDPの送信元ポートでIDを運ぶ
    • D) 違いはない。どちらもVNIでIDを運び、GeneveオプションはDSRのサービスアドレスとポートにだけ使われる
    回答を表示

    回答: D) 違いはない。どちらもVNIでIDを運び、GeneveオプションはDSRのサービスアドレスとポートにだけ使われる

    Ciliumが挿入するGeneveオプション(クラス0x014B、タイプ0x81)はDSR用だけです。外側の送信元ポート範囲(tunnelSourcePortRange)はエントロピーにだけ影響し、IDとは無関係です。

  3. トンネルモードでは、外側のUDP/IPヘッダーをどのコンポーネントが作成しますか?

    • A) パケットにヘッダーを書き込むbpf_lxcプログラム
    • B) ユーザー空間のcilium-agent
    • C) BPFがトンネルキーを設定してリダイレクトした後に、フローベースのcilium_vxlan/cilium_geneveデバイスの背後にあるカーネルのvxlan/geneveドライバーが作成する
    • D) NICファームウェア
    回答を表示

    回答: C) BPFがトンネルキーを設定してリダイレクトした後に、フローベースのcilium_vxlan/cilium_geneveデバイスの背後にあるカーネルのvxlan/geneveドライバーが作成する

    BPFはbpf_skb_set_tunnel_keyを呼び出し、トンネルデバイスのifindexへリダイレクトします。カプセル化はカーネルドライバーが行います。受信側ではカーネルがカプセル化を解除し、cil_from_overlayがトンネルキーを読み取ります。

  4. Cilium 1.20.2でroutingMode: tunnelとautoDirectNodeRoutes: trueを同時に設定すると、どうなりますか?

    • A) パケットをトンネルデバイス経由にする必要があるため、agentが致命的エラーで終了する
    • B) サブネット内では直接ルートを使い、サブネット間ではトンネルを使う
    • C) 警告を出してフラグを無視する
    • D) ネイティブルーティングにフォールバックする
    回答を表示

    回答: A) パケットをトンネルデバイス経由にする必要があるため、agentが致命的エラーで終了する

    daemon_main.goではTunnelingEnabled() && EnableAutoDirectRoutingを検査します。サブネット単位のフォールバックはありません。v1.21.0-pre.3のメッセージは「requires native routing mode」と表現されていますが、やはり致命的エラーになります。

MTU、マスカレード、ホストルーティング ​

  1. IPv4のアンダーレイが1500バイトで、VXLANとWireGuardを両方有効にした場合、Podから見えるルートMTUはいくつですか?

    • A) 1450
    • B) 1405
    • C) 1373
    • D) 1355
    回答を表示

    回答: D) 1355

    ルートMTUはベースMTUから(WireGuard 95 + トンネル 50)を差し引いた値です。1450はVXLANのみ、1405はWireGuardを使うネイティブルーティング、1373はIPsecを使うVXLAN(50 + 77)の値です。

  2. routingMode: tunnelでDSRを使うために必要な設定はどれですか?

    • A) dsrDispatch: optを使うVXLAN
    • B) tunnelProtocol: geneveとloadBalancer.dsrDispatch: geneve
    • C) loadBalancer.mode: hybridを使うVXLAN
    • D) dsrDispatch: ipipを使い、他には何も変更せずに任意のトンネルプロトコルを使う
    回答を表示

    回答: B) tunnelProtocol: geneveとloadBalancer.dsrDispatch: geneve

    agentはVXLANトンネルでのdsr/hybridを拒否します。トンネルモードのDSRではGeneve dispatchが必要で、Geneve dispatchを使うにはGeneveトンネルプロトコルが必要です。

  3. netkitに対応していないカーネルのノードでbpf.datapathMode: autoを設定するとどうなりますか?

    • A) agentが起動に失敗する
    • B) agentがnetkit-l2に切り替える
    • C) agentがvethにフォールバックし、警告を記録する。明示的にnetkitを指定した場合は致命的エラーになる
    • D) agentはnetkitを再試行し続け、Podの作成が止まる
    回答を表示

    回答: C) agentがvethにフォールバックし、警告を記録する。明示的にnetkitを指定した場合は致命的エラーになる

    1.20で追加されたautoは機能をプローブして、ログに「datapath autodiscovery failed, reverting from netkit to veth」と記録しながら降格します。netkitにはBPFマスカレードとKPRが必要で、従来のホストルーティングは使えません。

  4. BPFホストルーティングがデフォルトですが、kube-proxy replacementを有効にしたままiptablesマスカレードを使っています。agentはどう動作しますか?

    • A) BPFホストルーティングにはBPFマスカレードが必要だと記録し、従来のホストルーティングにフォールバックする
    • B) 起動を拒否する
    • C) BPFマスカレードを自動的に有効にする
    • D) kube-proxy replacementを無効にする
    回答を表示

    回答: A) BPFホストルーティングにはBPFマスカレードが必要だと記録し、従来のホストルーティングにフォールバックする

    ホストルーティングはベストエフォートです。netkit、Pod向けBBR、BIG TCPなど、明示的に有効化され、ホストルーティングを必要とする機能は致命的エラーになります。cilium-dbg statusのRouting:行にあるHost:フィールド(Host: Legacy)で確認してください。

  5. バンド幅マネージャーを有効にした状態で、kubernetes.io/egress-bandwidth: "10M"を設定すると、Podの何を制限しますか?

    • A) 10 MB/秒
    • B) ReplicaSetごとに10 Mbit/秒
    • C) BBRも有効にしない限り何も制限しない
    • D) 10 Mbit/秒
    回答を表示

    回答: D) 10 Mbit/秒

    この値はビット単位のKubernetes Quantityです。PodごとのegressはEDTとFQで制御され、BBRは任意です。IPsecを使うと、マネージャーは警告なく無効になります。

  6. BPFマスカレードをデフォルト設定で使った場合、Podからリモートノードへのトラフィックはどのように扱われますか?

    • A) 常にマスカレードされる
    • B) マスカレードされない
    • C) ネイティブルーティングではマスカレードされず、トンネルモードでは(ipcacheエントリにskip_tunnelがない限り)マスカレードされる
    • D) 宛先がRFC1918範囲外の場合だけマスカレードされる
    回答を表示

    回答: C) ネイティブルーティングではマスカレードされず、トンネルモードでは(ipcacheエントリにskip_tunnelがない限り)マスカレードされる

    これはbpf/lib/nat.hにある判定順序のステップ5です。enable-remote-node-masquerade=true(1.19以降、extraConfigで設定)にすると、どちらのモードでもマスカレードされます。

ドキュメントに質問する

Enter で送信、Shift+Enter で改行します。