「Firewall」- 会话表(Session Table)

  CREATED BY JENKINSBOT

会话表是用来记录 TCP、UDP、ICMP 等协议连接状态的表项,是防火墙转发报文的重要依据;

防火墙采用基于“状态”的报文控制机制:只对首包或者少量报文进行检测就确定一条连接的状态,大量报文直接根据所属连接的状态进行控制。这种状态检测机制迅速提高了防火墙的检测和转发效率。会话表就是为了记录连接的状态而存在的。设备在转发 TCP、UDP 和 ICMP 报文时都需要查询会话表,来判断该报文所属的连接并采取相应的处理措施;

本例中 PC1 向 PC2 发起 HTTP 连接,所以在防火墙会话表中标示出“http”协议和连接信息,并识别出此流量在公共路由表中被转发(图中 VPN:public);

会话表的创建和包处理过程

防火墙状态检测开启情况下,仅流量的首包会创建会话表项,后续包即可直接匹配会话表项;

本流程只是一个示意图,展示华为防火墙各个模块的基本处理顺序。实际不同的报文处理并非严格按照此流程图依次进行(若无对应配置),且与具体产品实现相关,更多详细信息建议参考指定型号防火墙产品文档的“报文转发流程”章节;

会话表的老化时间与长连接

防火墙为各种协议设定了会话老化机制。当一条会话在老化时间内没有被任何报文匹配,则会被从会话表中删除。这种机制可以避免防火墙的设备资源被大量无用、陈旧的会话表项消耗;

但是对于某些特殊业务中,一条会话的两个连续报文可能间隔时间很长。例如:
1)用户通过 FTP 下载大文件,需要间隔很长时间才会在控制通道继续发送控制报文;
2)用户需要查询数据库服务器上的数据,这些查询操作的时间间隔远大于 TCP 的会话老化时间;
3)此时如果其会话表项被删除,则该业务会中断;

长连接(Long Link)机制可以给部分连接设定超长的老化时间,有效解决这个问题;

在华为设备中:
1)查看各协议会话的失效时间:display firewall session aging-time
2)