How to force multicast packet to go via different interface?


 
Thread Tools Search this Thread
Operating Systems Solaris How to force multicast packet to go via different interface?
# 1  
Old 02-20-2020
How to force multicast packet to go via different interface?

Hi folks,

I am working on a Solaris-10 global server, which is hosting 7 non-global zones. There are two kind of network interfaces on our servers, admin and prod. There is one route, which is going via admin interface, I want to delete that and have that from prod interface.
e1000g0 is admin interface
e1000g3 is prod interface
Code:
# ifconfig e1000g0
e1000g0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
        inet 192.168.244.20 netmask ffffff80 broadcast 192.168.244.127
        ether 0:14:4f:78:f8:84
# ifconfig e1000g3
e1000g3: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 4
        inet 216.221.133.250 netmask ffffffc0 broadcast 216.221.133.255
        ether 0:14:4f:78:f8:87
#

If I check route of all zones, I see that multicast packets are going via e1000g0 (excep first one). I want it to go with prod interface e1000g3.
Code:
# for i in `cat /var/tmp/all_zones.out`; do zlogin $i netstat -nrv | grep 224.0.0.0; done
224.0.0.0            240.0.0.0       192.168.241.21       e1000g1:1  1500*    0   1 U        0      0
224.0.0.0            240.0.0.0       192.168.244.24       e1000g0:5  1500*    0   1 U        0      0
224.0.0.0            240.0.0.0       192.168.244.22       e1000g0:4  1500*    0   1 U        0      0
224.0.0.0            240.0.0.0       192.168.244.23       e1000g0:2  1500*    0   1 U        0      0
224.0.0.0            240.0.0.0       192.168.244.25       e1000g0:3  1500*    0   1 U        0      0
224.0.0.0            240.0.0.0       192.168.244.32       e1000g0:6  1500*    0   1 U        0      0
224.0.0.0            240.0.0.0       192.168.244.33       e1000g0:7  1500*    0   1 U        0      0
#

That means, I want to delete above routes and add route going via gw 216.221.133.193 and e1000g3. I am not sure, how to change this. I assumed that it is coming from static_routes file. I commented one line (see below) and rebooted server, still no luck.
Code:
# cat /etc/inet/static_routes
# File generated by route(1M) - do not edit.
default 192.168.241.1
-net 192.168.110.0/24 192.168.244.1
-net 192.168.201.0/24 192.168.244.1
-net 192.168.202.0/24 192.168.244.1
-net 192.168.246.64 -netmask 255.255.255.224 192.168.244.1
-net 172.16.0.0/16 192.168.244.1
10.0.0.0/8 192.168.244.1
192.168.64.0/22 192.168.244.1
192.168.78.0/24 192.168.244.1
192.168.69.0/24 192.168.244.1
net 192.168.244.0 -netmask 255.255.252.0 192.168.244.1
224.0.0.0/4 216.221.133.251 -ifp e1000g3:5
#224.0.0.0/4 192.168.244.20 -ifp e1000g0
host 192.168.244.22 216.221.133.193
#

Please suggest, how can it be done. Network team already enabled multicast for that VLAN. By suggestion on one of the forum, I changed index number of e1000g0 from 2 to 5 (e1000g3 is index 4)and then test, but seems like, this wrkaround doesn't work.
How I tested ? I took two sessions of zone-1. On one session I issued mcSend command
Code:
# mcSend -a 239.93.97.0 -p 9700 -t 6 
multicastIP: 239.93.97.0 
multicastIF: 0.0.0.0 
multicastPort: 9700 
TTL:  6 
loopback enabled: 0

On another session, I ran snoop command on e1000g0 and then e1000g3. It still doesn't show packets on e1000g3
Code:
# snoop -d e1000g3 -x0 host 239.93.97.0 
Using device e1000g3 (promiscuous mode) 
^C 
# 
# snoop -d e1000g0 -x0 host 239.93.97.0 
Using device e1000g0 (promiscuous mode) 
zone-1 -> 239.93.97.0  UDP D=9700 S=51392 LEN=136 
 
           0: 0100 5e5d 6100 0014 4f78 f884 0800 4500    ..^]a...Ox....E. 
          16: 009c 3153 0000 0611 0000 c0a8 f416 ef5d    ..1S...........] 
          32: 6100 c8c0 25e4 0088 05b7 4865 6c6c 6f2c    a...%.....Hello, 
          48: 2057 6f72 6c64 2100 0000 0000 0000 0000     World!......... 
          64: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
          80: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
          96: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
         112: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
         128: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
         144: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
         160: 0000 0000 0000 0000 0000                   .......... 
 
zone-1 -> 239.93.97.0  UDP D=9700 S=51392 LEN=136 
 
           0: 0100 5e5d 6100 0014 4f78 f884 0800 4500    ..^]a...Ox....E. 
          16: 009c 3154 0000 0611 0000 c0a8 f416 ef5d    ..1T...........] 
          32: 6100 c8c0 25e4 0088 05b7 4865 6c6c 6f2c    a...%.....Hello, 
          48: 2057 6f72 6c64 2100 0000 0000 0000 0000     World!......... 
          64: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
          80: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
          96: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
         112: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
         128: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
         144: 0000 0000 0000 0000 0000 0000 0000 0000    ................ 
         160: 0000 0000 0000 0000 0000                   .......... 
 
^C 
#

Thanks in advance.

Last edited by solaris_1977; 02-20-2020 at 03:47 AM..
# 2  
Old 02-20-2020
You did not mention, are you running a dynamic routing protocol like OSPF, RIP, EIGRP or IS-IS in your network?
# 3  
Old 02-20-2020
I've read your post a number of times but I still don't understand exactly what you are trying to do.

This is all Solaris 10? One global zone (Solaris 10) and seven non-global zones (all Solaris 10)?

One of the non-global zones you want to change its routing? The other six zones are routing okay?

To start with, what default gateways are these zones configured to and reading at boot time?

Please post the configuration of one working zone and the faulty routing zone.
Code:
# cat /etc/defaultrouter

(This, of course, assumes that you haven't executed commands to change the routing since boot-time, but it's somewhere to start.)
# 4  
Old 02-20-2020
Global and all zones are Solaris 10.

I want multicast packets to go with prod interface (e1000g3), instead of current admin interface (e1000g0) on all zones.

I don't have defaultrouter file, but can see it here for global server and zones

Code:
# cat /etc/defaultrouter
cat: cannot open /etc/defaultrouter
# netstat -nr | grep default
default              192.168.241.1        UG        1       1442
default              216.221.133.193      UG        1      17358 e1000g3
# for i in `cat /var/tmp/zones.out`; do zlogin $i netstat -nrv | grep default; done
default              0.0.0.0         192.168.241.1                1500*    0   1 UG    1442      0
default              0.0.0.0         216.221.133.193      e1000g3  1500*    0   1 UG   17359      0
default              0.0.0.0         216.221.133.193      e1000g3  1500*    0   1 UG   17359      0
default              0.0.0.0         216.221.133.193      e1000g3  1500*    0   1 UG   17359      0
default              0.0.0.0         216.221.133.193      e1000g3  1500*    0   1 UG   17359      0
default              0.0.0.0         216.221.133.193      e1000g3  1500*    0   1 UG   17359      0
default              0.0.0.0         216.221.133.193      e1000g3  1500*    0   1 UG   17359      0
#

Neo : I am not sure, if we have dynamic routing protocol in our setup. Still checking it.

Last edited by solaris_1977; 02-20-2020 at 02:24 PM..
# 5  
Old 02-25-2020
I found the issue, it was tricky.

Multicast packets are going through admin interface because it is managed by /lib/svc/method/net-svc configuration. One of its parameter says
Code:
if [ "$_INIT_NET_STRATEGY" = "dhcp" ]; then 
        mcastif=`/sbin/dhcpinfo Yiaddr` || mcastif=$_INIT_UTS_NODENAME 
else 
        mcastif=$_INIT_UTS_NODENAME 
fi

It says multicast should go via NODENAME. That means, whatever is hostname and uname -n returns. By default hostname is set to admin interface. Two changes I made :

-Changed hostname and zonename in /etc/hosts, so at zonemanager level, it look to pubic IP
-In zonecfg, I moved up the public interface, so it goes FIRST in zone description file.
These 2 Users Gave Thanks to solaris_1977 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. IP Networking

Packet going out of wrong interface due to OS automatically added cache route with lower metric

RHEL 7.0, IPV6 Scenario: I have routed specific network using network scripts. 1. "ip -6 route show" shows that route has been added. ( with metric 1024) 2. Ping of the specific IP through that route is successful. 3. Now after few days, for some reason, we see that cache route appears for... (3 Replies)
Discussion started by: msr1981
3 Replies

2. AIX

Packet loss coming with big packet size ping

(5 Replies)
Discussion started by: Vishal_dba
5 Replies

3. Solaris

Packet loss on ce interface.

Hi, I am using the ce interface on my Solaris 9 server and there is significant packet loss when transmitting large packets. Does anyone have a fix for this? ----10.1.0.0 PING Statistics---- 51 packets transmitted, 42 packets received, 17% packet loss round-trip (ms) min/avg/max =... (12 Replies)
Discussion started by: sparcman
12 Replies

4. HP-UX

How to determine network interface that will be used to send a packet for an IP

Hello, I'm writing to you because I encountered the following problem. My program displayes all network interfaces that are available in the system, but I would like to add a functionality in which a user can enter a destination address IP (ex. the IP address of the Google search engine) and will... (1 Reply)
Discussion started by: foxrafi
1 Replies

5. Solaris

how to force e1000g0 interface in solaris 10

Hi all, I encounter some problem with my e1000g interface running on sol 10. I can't permanently change the auto-nego to disable, if i use ndd commands, it will only stay until the next reboot. But i can't change the link speed either is set to /etc/init.d/nddconfig or using ndd commands. ... (1 Reply)
Discussion started by: mailbox80
1 Replies

6. Solaris

How to force the LAN interface running on 10M

Hi all, I would like to force the LAN card to use 10MB instead of 100MB in UNIX enviroment, please help. thanks! :) (3 Replies)
Discussion started by: Felixkoo
3 Replies

7. Solaris

Reboot, System is Frozen at setting interface for multicast HELP

I'm not an advanced user by any strech, that being said here is my problem: I ran "reboot" on a sun blade 2500 When loading up it runs through the usual routine, checking disks, filesystems and then it locks up after the following message: ***** starting rpc services: rpcbind... (6 Replies)
Discussion started by: eyukins
6 Replies

8. UNIX for Advanced & Expert Users

Double question: Apache mod_proxy and force connection over specific interface

Double question here ... Running on Debian Etch and Apache 2.0 1) Using mod_proxy and/or mod_proxy_http in apache 2.0. The basics of using mod_proxy are pretty simple so long as you're using a static config. I'm trying to figure out how to do it dynamically - that is, allow the entry of a... (4 Replies)
Discussion started by: Halfwalker
4 Replies

9. Programming

Joining multicast group on IPADDR_ANY - which interface?

Hello all, I have the following question: if you join a multicast group (with setsockopt() and IP_ADD_MEMBERSHIP) and specify INADDR_ANY as network interface to join on, the kernel is supposed to choose which interface to use (if there are multiple network interfaces, of course). Does... (2 Replies)
Discussion started by: AlexI
2 Replies
Login or Register to Ask a Question