Linux ip xfrm:tmpl的目的是什么?

如果我们以Linux ip xfrm命令为例:

  ip xfrm policy add src $LOCAL dst $REMOTE dir out tmpl src $SRC dst $DST proto esp reqid $ID mode tunnel 

tmpl做什么的?


更新 :当然,我知道我们需要指定$SRC$DST 。 但是,由于这些已经在SA中指定,通过ip xfrm state命令,为什么我们需要在tmpl重复它们呢? 叫它“模板”是什么意思? 对我来说,它似乎只是一个指向已有的SA( state )的指针。

它告诉内核如何处理数据包(用于out策略),或数据包必须来自( in策略中)当通信量与此策略匹配时( fwd策略有点特殊,因为它们可能适用于两个方向,具体取决于select器,请参阅这个答案 )。 在你的例子中,策略将通过带有端点IP地址$SRC$DST以及reqid $ID的ESP隧道模式SA发送stream量。

为什么我们需要在tmpl中重复它们?

要真正findSA /状态。 这些存储在散列表中,地址(特别是目标地址)是散列值的一部分。 对于隧道模式SA,与出站策略匹配的数据包地址不一定与SA的地址匹配(对于传输模式,您可能不需要将地址添加到模板中)。

叫它“模板”是什么意思?

不确定,但可能与获取有关,也就是说,如果尚未build立匹配的SA,则在创build新的SA时,该信息充当密钥守护进程的模板。