问题描述
我的电脑上部署了一个模拟的5G核心网(项目是Free5GC)。我需要生成不同类型的流量(我从一个简单的 Http 获取给定 URL 开始)。该流量将被发送到本地 IP 地址,即模拟的 UE(用户设备)。然后这个 UE 会继续将流量路由到网络之外,它也会将响应返回给我。这部分过程对我来说是透明的(我可以用 Wireshark 观察)。 我现在只有项目给出的测试ping的代码,如下:
// ping IP(tunnel IP) from 60.60.0.2(127.0.0.1) to 60.60.0.20(127.0.0.8)
gtpHdr,err := hex.DecodeString("32ff00340000000100000000")
assert.Nil(t,err)
icmpData,err := hex.DecodeString("8c870d0000000000101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637")
assert.Nil(t,err)
ipv4hdr := ipv4.Header{
Version: 4,Len: 20,Protocol: 1,Flags: 0,TotalLen: 48,TTL: 64,Src: net.ParseIP("60.60.0.1").To4(),Dst: net.ParseIP("60.60.0.101").To4(),ID: 1,}
checksum := test.CalculateIpv4HeaderChecksum(&ipv4hdr)
ipv4hdr.Checksum = int(checksum)
v4HdrBuf,err := ipv4hdr.Marshal()
assert.Nil(t,err)
tt := append(gtpHdr,v4HdrBuf...)
m := icmp.Message{
Type: ipv4.ICMPTypeEcho,Code: 0,Body: &icmp.Echo{
ID: 12394,Seq: 1,Data: icmpData,},}
b,err := m.Marshal(nil)
assert.Nil(t,err)
b[2] = 0xaf
b[3] = 0x88
_,err = upfConn.Write(append(tt,b...))
assert.Nil(t,err)
老实说,我不太清楚我必须做什么。我知道我可以使用 http get 请求:
resp,err := http.Get(url)
但是由于我必须将其发送到一个具有 GTP 隧道的 IP 地址,我不知道该怎么做。 我应该创建一个 ipv4 消息吗?我如何将信息放入 http get 请求中? 抱歉,我不能说得更具体了,但我对这个主题有点迷茫,我找不到有关它的有用信息。 等待你的答复。 问候,维克多。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)