Skip to the content.

背景介绍

net/ipv4/ip_gre.c 中有相关的代码:

static const struct net_device_ops erspan_netdev_ops = {
	.ndo_init		= erspan_tunnel_init,
	.ndo_uninit		= ip_tunnel_uninit,
	.ndo_start_xmit		= erspan_xmit,
	.ndo_set_mac_address	= eth_mac_addr,
	.ndo_validate_addr	= eth_validate_addr,
	.ndo_change_mtu		= ip_tunnel_change_mtu,
	.ndo_get_stats64	= dev_get_tstats64,
	.ndo_get_iflink		= ip_tunnel_get_iflink,
	.ndo_fill_metadata_dst	= gre_fill_metadata_dst,
};

[!NOTE] 参考神奇海螺的意见,有待验证

ERSPAN(Enhanced Remote Switched Port Analyzer)是一种网络流量监控协议,主要用于在 Cisco 等厂商的交换机和路由器中远程镜像流量,将指定端口或 VLAN 的流量封装后,通过 IP 网络(通常是 GRE 隧道)发送到远程监控设备(如抓包分析器、IDS 等)。

在 Linux 内核中,erspan 是一种 基于 GRE(Generic Routing Encapsulation)的隧道设备类型,用于支持接收或发送符合 ERSAN 协议格式的封包。它的主要特点包括:

典型使用场景:

总结:ERSPAN 是一种用于远程网络流量镜像的隧道协议,Linux 内核通过 erspan 虚拟网卡支持其收发功能,便于构建网络监控基础设施。

本站所有文章转发 CSDN 将按侵权追究法律责任,其它情况随意。