如果我们以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时,该信息充当密钥守护进程的模板。