upgw-traffic-process 节点

upgw-traffic-process 节点承接 dpdk-input 节点分过来的流量,并按收包的端口角色做区分处理:

  • upgw_user 角色:

    • 若非 gtpu 报文,去匹配 traffic-rule,若能 match,则修改转发端口为 lbp,修改目的 maclbp 对端的 mac,否则按默认转发。

    • 若为 gtpu 报文,去匹配 traffic-rule,若能 match,则修改转发端口为 lbp,剥去 gtpu 头,修改目的 maclbp 对端的 mac,否则按默认转发。

  • upgw_network 角色:

    • 若非 gtpu 报文,则根据目的 ip 计算 hash,去创建或者更新 learning 表项,此表项只存储五元组信息。

    • 若为带扩展头的 gtpu 报文,则根据 ue ip 计算 hash,去创建或者更新 learning 表项,此表项存储外层的五元组信息、gtpu 头信息和扩展头的信息。

    • 若为不带扩展头的 gtpu 报文,则根据 ue ip 计算 hash,去创建或者更新 learning 表项,此表项存储外层的五元组信息和 gtpu 头信息。

  • upgw_local_break_out 角色:

    到该端口角色的都是非 gtpuip 报文,根据目的 ip 去查询 learning 表项:

    • 若查询到的表项是非 gtpu 的,则去修改报文源 mac 和 转发端口。

    • 若查询到的表项是带扩展头 gtpu 的,则去封装带扩展头的 gtpu,同时封装外层 udpipmac 头。

    • 若查询到的表项是不带扩展头 gtpu 的,则去封装带不扩展头的 gtpu,同时封装外层 udpipmac 头。

处理流程

upgw_traffic_process

命令行介绍

五元组分流命令

增加 traffic-rule

/* 需指定 rule_id、要分流的五元组信息、协议类型、优先级和要转发的 lbp 口 */
upgw traffic-rule add rule_id <value> ue_ip <value> server_ip <value> [ue_port <value>] [server_port <value>] proto <ip|gtpu> prio <value> dst_lbp_port <value>

eg:
upgw traffic-rule add rule_id 1 ue_ip 1.2.3.4/24 server_ip 4.3.2.1/24 ue_port 123 server_port 456 proto ip prio 0 dst_lbp_port GigabitEthernet0/a/0

查询 traffic-rule

/* 可以根据协议查询全部 acl,也可查询指定 rule_id 下的 acl */
show upgw traffic-rule [rule_id <value>] proto <ip|gtpu>

eg:
upgw traffic-rule show proto ip

upgw_ip_traffic_rule count = 1
rule_id: 1 prio: 0 dst_lbp_port 4
mask_string: mask l3 ip4 src/24 dst/24 l4 src_port dst_port match_string: match l3 ip4 src 1.2.3.4 dst 4.3.2.1 l4 src_port 123 dst_port 456

upgw traffic-rule show rule_id 1 proto ip

upgw_ip_traffic_rule count = 1
rule_id: 1 prio: 0 dst_lbp_port 4
mask_string: mask l3 ip4 src/24 dst/24 l4 src_port dst_port match_string: match l3 ip4 src 1.2.3.4 dst 4.3.2.1 l4 src_port 123 dst_port 456

删除 traffic-rule

/* 可以根据协议删除全部 acl,也可删除指定 rule_id 下的 acl */
upgw traffic-rule del [rule_id <value>] proto <ip|gtpu>

eg:
upgw traffic-rule del proto ip

upgw traffic-rule del rule_id 1 proto ip

查询 learning 表命令

/* 查询指定 ue/src ip 下的 learning 表项 */
show upgw learning table <ipv4_address>

eg:
show upgw learning table 172.20.231.1

Encap_type: GTPU WHIT EXTENSION PDU SESSION
Ue IP: 172.20.231.1
User IP: 192.168.30.100
Network IP: 192.168.30.99
Teid: 1299
Qfi: 1
Default tx interface: TenGigabitEthernet0/a/0
User Mac:3c:ec:ef:1d:63:42
Network Mac:52:54:00:9b:29:cb