1.连接方式

[1]连接1
ACL测试(1)
但接通外网的网关192.168.50.1处没有主机192.168.206.0网段的回程路由
[2]连接2
ACL测试(1)
设备数量受限,只有一个设备但设备接口足够,可以用设备的一个接口连接vpp中绑定的接口来充当另一个主机
[3]连接3
ACL测试(1)
若设备受限,只有一个设备且设备接口不足,创建tap口(tap口物理上是不存在的,使用 TAP 设备的应用程序相当于另外一台计算机,TAP 设备是本机的一个网卡,他们之间相互连接。应用程序通过 read()/write()操作,和本机网络核心进行通讯)
主机通过vpp与设备系统进行通信
tap口创建好之后要在设备系统中添加回程路由
tap设备:https://www.cnblogs.com/yml435/p/5917628.html

2.acl命令行

[1]设置acl
set acl-plugin acl <permit|deny> src dst proto X sport X-Y dport X-Y [tag FOO] {use comma separated list for multiple rules}
ACL测试(1)
[2]查看acl
show acl-plugin acl
ACL测试(1)
[3]将acl绑在接口上
set acl-plugin interface <input|output> [del]
ACL测试(1)
[4]查看接口acl
show acl-plugin interface
ACL测试(1)

3.acl api接口

[1]获取acl插件版本
acl_plugin_get_version
ACL测试(1)
[2]增加或替换ACL规则
acl_add_replace <permit|permit+reflect|deny|action N> [src IP/plen] [dst IP/plen] [sport X-Y] [dport X-Y] [proto P] [tcpflags FL MASK]
增加
ACL测试(1)
替换
ACL测试(1)
[3]查看acl规则
acl_dump
ACL测试(1)
[4]删除acl规则
acl_del index
ACL测试(1)
[5]acl规则绑定、解绑接口
acl_interface_add_del sw_if_index [add|del] [input|output] acl
绑定:
ACL测试(1)

acl_interface_set_acl_list :给指定端口设置输入输出控制方式
ACL测试(1)

解绑:
ACL测试(1)
[6]acl规则绑定接口查看
acl_interface_list_dump
ACL测试(1)

4.acl测试

[1]在vpp中配置规则
acl 0:source ip 192.168.206.0/24网段的报文permit
acl 2:source ip 2.2.2.0/24网段的报文deny
acl 3:source ip 192.168.206.3/32 的报文permit
acl 4:dst ip 2.2.2.0/24 网段的报文permit
ACL测试(1)

[2]acl规则绑定接口
将acl 4绑在GigabitEthernet4/0/0接口 acl 0绑在tap0接口
ACL测试(1)

[3]trace查看报文走过的节点流程
192.168.206.3-2.2.2.2
ACL测试(1)

dpdk-input:收包节点
ethernet-input:区分ip4还是ipv6
ip4-input-no-checksum:ip头的校验
acl-plugin-in-ip4-fa:acl节点
ip4-lookup:查路由
ip4-rewrite:重新组包
tap0-output:接口出方向节点
ACL测试(1)

2.2.2.2-192.168.206.3
收包节点不再是dpdk-input而是virtio-input,ip4-input节点需要做校验和计算,ip4-input-no-checksum因为之前的网卡已经做过校验和计算,在ip4-input-no-checksum这个节点不需要再做校验和
ACL测试(1)

virtio-input:收包节点
ethernet-input:区分ipv4还是ipv6
ip4-input:ip头的校验
ip4-lookup:查路由
ip4-rewrite:重新组包
GigabitEthernet4/0/0-output:接口出方向节点
GigabitEthernet4/0/0-tx:接口发包
ACL测试(1)

[4]show run查看走过的节点
ACL测试(1)

[5]show error查看
ACL测试(1)

相关文章: