Network programming vlan+;单以太网接口和单ip地址上的正常流量

Network programming vlan+;单以太网接口和单ip地址上的正常流量,network-programming,iptables,network-protocols,vlan,Network Programming,Iptables,Network Protocols,Vlan,vlan+单个以太网接口和单个ip地址上的正常流量 背景资料: 具有两个不同处理器(A和B)的嵌入式平台 每个处理器都有一个以太网接口(eth0) 这些处理器通过车载BCM开关(L2开关)互连 两个处理器都运行linux 这两个处理器之间的以太网接口工作正常。(ssh、scp、ping、套接字通信) 要求-VLAN: 除了普通以太网数据包外,还应支持以下所述的用于套接字通信的vlan: 要在两个处理器上创建的vlan id 2 eth接口 处理器A将使用vlan id 2接口(eth0.2)绑定

vlan+单个以太网接口和单个ip地址上的正常流量 背景资料:

  • 具有两个不同处理器(A和B)的嵌入式平台
  • 每个处理器都有一个以太网接口(eth0)
  • 这些处理器通过车载BCM开关(L2开关)互连
  • 两个处理器都运行linux
  • 这两个处理器之间的以太网接口工作正常。(ssh、scp、ping、套接字通信)
  • 要求-VLAN: 除了普通以太网数据包外,还应支持以下所述的用于套接字通信的vlan:

  • 要在两个处理器上创建的vlan id 2 eth接口
  • 处理器A将使用vlan id 2接口(eth0.2)绑定服务器TCP套接字(端口xxyy)
  • 处理器B将使用vlan id 2接口(eth0.2)创建客户端套接字并尝试连接到服务器
  • 我们能够通过以下方式满足上述要求:

  • 使用ip链接命令(eth0.2接口)创建vlan接口
  • 为此eth0.2接口分配不同的ip地址
  • 为这些ip地址设置静态arp条目
  • 服务器套接字程序(在处理器A上运行)将绑定到eth0.2的ip地址
  • 客户端套接字程序(在处理器B上运行)将连接到处理器A的eth0.2的ip地址
  • tcpdump显示vlan数据包已正确发送和接收
  • 除上述要求外,我们还必须确保处理器A为eth0以及vlan接口(eth0.2)使用单个公共ip地址 为满足此要求,在处理器A上尝试了如下DNAT: iptables-tnat-A预路由-ptcp-dportxxyy-jdnat-到目的地aaa.bbb.ccc.ddd:xxyy iptables-tnat-A后路由-j伪装

    aaa.bbb.ccc.ddd->eth0.2 ip地址 xxyy->服务器tcp端口

    从处理器B,尝试将客户端程序连接到处理器A,服务器程序连接到处理器A的公共ip地址

    这是行不通的

    服务器套接字程序(处理器A)的说明:

  • 创建套接字
  • 将serveraddr设置为eth0.2 ip地址
  • 将套接字绑定到此ip地址
  • 监听插座
  • 在套接字上接受
  • 客户端套接字程序(处理器B)的说明:

  • 创建套接字
  • 将serveraddr设置为处理器A的“公共”ip地址
  • 连接到服务器地址
  • 总之: 要求在处理器a上有一个单一的物理接口和单一的公共ip地址。 处理器A应该能够处理正常数据包和vlan标记的数据包。 vlan标记的数据包将由普通tcp套接字使用/生成

    注: 在上述试验中,处理器B仅用于模拟测试用例。(用作vlan客户端套接字程序)

    任何意见都将不胜感激