Implemented GTPU and GENEVE layer in packet module.
Packet module only supports limited tunneling layers like VxLAN,
GRE. New packet types are required in recent DPDK releases and
GTPU and GENEVE are required to be added.
Signed-off-by: Ke Xu <ke1.xu@intel.com>
---
framework/packet.py | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
@@ -17,6 +17,8 @@ import time
from importlib import import_module
from socket import AF_INET6
+from scapy.contrib.geneve import GENEVE
+from scapy.contrib.gtp import GTP_U_Header, GTPPDUSessionContainer
from scapy.contrib.lldp import LLDPDU, LLDPDUManagementAddress
from scapy.contrib.mpls import MPLS
from scapy.contrib.nsh import NSH
@@ -51,6 +53,7 @@ scapy_modules_required = {
"GTPEchoRequest",
"GTPEchoResponse",
],
+ "scapy.contrib.geneve": ["GENEVE"],
"scapy.contrib.lldp": ["LLDPDU", "LLDPDUManagementAddress"],
"scapy.contrib.pfcp": ["PFCP"],
"scapy.contrib.nsh": ["NSH"],
@@ -90,7 +93,7 @@ LayersTypes = {
# <'ether type'=0x0800 'version'=4, 'protocol'=17 'destination port'=4789>
# or
# <'ether type'=0x86DD 'version'=6, 'next header'=17 'destination port'=4789>
- "TUNNEL": ["ip", "gre", "vxlan", "nvgre", "geneve", "grenat"],
+ "TUNNEL": ["ip", "gre", "vxlan", "nvgre", "gtpu", "geneve", "grenat"],
"INNER L2": ["inner_mac", "inner_vlan"],
# inner_ipv4_unknown, inner_ipv6_unknown
"INNER L3": ["inner_ipv4", "inner_ipv4_ext", "inner_ipv6", "inner_ipv6_ext"],
@@ -167,7 +170,8 @@ class scapy(object):
"ipv6_in_ip": IP() / IPv6(src="::1"),
"ipv6_frag_in_ip": IP() / IPv6(src="::1", nh=44) / IPv6ExtHdrFragment(),
"nvgre": GRE(key_present=1, proto=0x6558, key=0x00000100),
- "geneve": "Not Implement",
+ "gtpu": GTP_U_Header(gtp_type=255, teid=0x123456),
+ "geneve": GENEVE(),
}
def __init__(self):