У меня один интерфейс на устройстве, и мне нужно отправлять трафик с этого интерфейса одновременно. С ниже требования
адрес src, адрес назначения, порт источника, порт назначения и протокол должны быть одинаковыми
Итак, в моей виртуальной машине Linux я использую пространства имен, и у меня настроено это, как показано ниже
ip netns eng51 ifconfig
eth1.51 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3
inet addr:51.51.1.10 Bcast:51.51.1.255 Mask:255.255.255.0
ip netns exec eng52 ifconfig
eth1.52 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3
inet addr:51.51.2.10 Bcast:51.51.2.255 Mask:255.255.255.0
ip netns exec eng522 ifconfig
eth1.522 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3
inet addr:51.51.2.10 Bcast:51.51.2.255 Mask:255.255.255.0
ip netns exec eng511 ifconfig
eth1.511 Link encap:Ethernet HWaddr 52:54:00:bd:68:c3
inet addr:51.51.1.10 Bcast:51.51.1.255 Mask:255.255.255.0
так что у меня есть один скрипт, который пытается отправить несколько сообщений в пространство имен назначения. Я запускаю python SimpleHTTPServer в пространстве имен назначения и в пространстве имен источника, использую сокет python и привязываю любой адрес к порту 63999
sock.bind(('0.0.0.0',63999))
таким образом, я могу контролировать свой порт-источник всегда равным 63999. и теперь я запускаю этот скрипт в пространствах имен источника, таких как
ip netns eng51 abc_client.py 51.51.2.10
ip netns eng511 abc_client.py 51.51.2.10
но проблема, с которой я сталкиваюсь, заключается в том, что, хотя я запускаю сеанс tcp в двух отдельных пространствах имен, порт 63999 не считается уникальным. Когда сеанс tcp выполняется в пространстве имен eng51, и я запускаю eng522, сеанс eng51 останавливается, сообщая об установлении соединения другим узлом.