View previous topic :: View next topic |
Author |
Message |
orion777 Apprentice
Joined: 15 Mar 2017 Posts: 207 Location: Riga, Latvia
|
Posted: Wed Mar 15, 2017 12:14 pm Post subject: [Solved] Two Huawei 3372h simultaneous operation |
|
|
I'm a newbee in gentoo, so sorry for stupid questions if exist.
The problem what I want to solve is that 3G/4G modem works fine only if: 1) cell tower signal strength is sufficient 2) cell is not overloaded.
To overcome these problems I want to try to use 2 dongles Huawei 3372h simultaneously with different cellular network operators SIM cards.
Now I need tot use both dongles in parallel by sending similar packets thru both dongles. Google answer me that PRP (Parallel Redundancy Protocol) actually do what I want. The software solution were found at zhaw university: they provide software based PRP Open Source Stack. It work under linux only, so here am. There are no problem to build it, but now I have a number of problems.
1. Problem.
Both Huawei 3372h works in HILINK mode and are reprogrammed manually. Both have same MAC. The MobileBrServ was successfully installed and works fine with one dongle inserted. Internet also is accessible. But when two dongles are inserted, one of them is left inactive. If I bring it up by choosing tham in Networkmanager Applet 1.4.2 under available, the second one goes down.
Code: | ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:1c:23:25:60:49 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 0c:5b:8f:27:9a:64 txqueuelen 1000 (Ethernet)
RX packets 24 bytes 8893 (8.6 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.8.100 netmask 255.255.255.0 broadcast 192.168.8.255
inet6 fe80::69a:c53c:2cd2:485d prefixlen 64 scopeid 0x20<link>
ether 0c:5b:8f:27:9a:64 txqueuelen 1000 (Ethernet)
RX packets 37 bytes 5496 (5.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 49 bytes 4605 (4.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 56 bytes 4088 (3.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56 bytes 4088 (3.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.117 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::5939:1e60:e5e2:aa04 prefixlen 64 scopeid 0x20<link>
ether 00:1c:bf:4a:7b:9d txqueuelen 1000 (Ethernet)
RX packets 33716 bytes 29749519 (28.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28812 bytes 4309356 (4.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
where eth1 and eth2 are these dongles.
Now I suppose that it does not work because of identical MAC address. Ok, try to change it
Code: | ifconfig eth1 down
ifconfig eth1 hw ether 02:01:02:03:04:05
ifconfig eth1 up
|
The result looks fine: eth1 now has different MAC.
Code: | eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:1c:23:25:60:49 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 02:01:02:03:04:05 txqueuelen 1000 (Ethernet)
RX packets 68 bytes 29841 (29.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.8.100 netmask 255.255.255.0 broadcast 192.168.8.255
inet6 fe80::69a:c53c:2cd2:485d prefixlen 64 scopeid 0x20<link>
ether 0c:5b:8f:27:9a:64 txqueuelen 1000 (Ethernet)
RX packets 93 bytes 31709 (30.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 53 bytes 4845 (4.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 56 bytes 4088 (3.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56 bytes 4088 (3.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.117 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::5939:1e60:e5e2:aa04 prefixlen 64 scopeid 0x20<link>
ether 00:1c:bf:4a:7b:9d txqueuelen 1000 (Ethernet)
RX packets 33797 bytes 29784693 (28.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28813 bytes 4309420 (4.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
Unfortunately, eth1 still has no IP and is down. The NetworkManager Applet still give a possibility to select only one of them. I'm really confused, please help!
2. Problem
Ok, lets imagine that both dongles are now operating. Now lets start virtual PRP (for the given example I use eth2 and wlan0 as they are active)
Code: | ./prp_pcap_tap_userspace wlan0 eth2 |
Now ifconfig reports that new network interface prp1 is available:
Code: | Gentoo-Punkts ~ # ifconfig
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:1c:23:25:60:49 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 02:01:02:03:04:05 txqueuelen 1000 (Ethernet)
RX packets 112 bytes 50789 (49.5 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: flags=5059<UP,BROADCAST,RUNNING,NOARP,PROMISC,ALLMULTI,MULTICAST> mtu 1500
inet 192.168.8.100 netmask 255.255.255.0 broadcast 192.168.8.255
ether 02:1c:bf:4a:7b:9d txqueuelen 1000 (Ethernet)
RX packets 138 bytes 52685 (51.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 108 bytes 8744 (8.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 56 bytes 4088 (3.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 56 bytes 4088 (3.9 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
prp1: flags=4675<UP,BROADCAST,RUNNING,ALLMULTI,MULTICAST> mtu 1494
inet6 fe80::21c:bfff:fe4a:7b9d prefixlen 64 scopeid 0x20<link>
ether 00:1c:bf:4a:7b:9d txqueuelen 1000 (Ethernet)
RX packets 28 bytes 2019 (1.9 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9 bytes 758 (758.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4995<UP,BROADCAST,NOARP,PROMISC,ALLMULTI,MULTICAST> mtu 1500
inet 192.168.1.117 netmask 255.255.255.0 broadcast 192.168.1.255
ether 02:1c:bf:4a:7b:9d txqueuelen 1000 (Ethernet)
RX packets 33886 bytes 29819407 (28.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28815 bytes 4309544 (4.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
|
But the NetworkManager Applet reports that there are NO any prp1 available. This problem were checked on PCLinuxOS_2011 and its network manages is able to show prp1 as available choice. What is the solution for gentoo?
Also, maybe I am completely wrong, maybe I have to use something like BONDING feature in gentoo (was founded it in gentoo handbook)? Just to remember: the task is to develop extremely stable connection. Active - Reserved networks solutions cannot be used because these network switching takes some time, but the time delays are not allowed. That why I was taken PRP as a reference..
Please note: I am not a network engineer, I don't receive any money for this (this is my university project which is a possible solution for the problem), also I am a newbee in gentoo (I know only some basics in linux).
Thanks for Your time!
Last edited by orion777 on Mon Apr 10, 2017 7:50 am; edited 2 times in total |
|
Back to top |
|
|
khayyam Watchman
Joined: 07 Jun 2012 Posts: 6227 Location: Room 101
|
Posted: Wed Mar 15, 2017 12:54 pm Post subject: |
|
|
orion777 ...
I expect NetworkManager is the issue here, it's designed with "usability" in mind (which equates to doing what it thinks needs to happen). I don't use it, so can't make any suggestions.
I don't know about PRP Open Source Stack, but you might be interested in MultipathTCP (a kernel patch).
best ... khay |
|
Back to top |
|
|
orion777 Apprentice
Joined: 15 Mar 2017 Posts: 207 Location: Riga, Latvia
|
Posted: Wed Mar 15, 2017 2:41 pm Post subject: |
|
|
Thank You about MPTCP. After a brief reading its looks to me as something similar to bonding active-backup (from gentoo handbook) (as I understood from the webpage attached video: one network interface is disabled - then second goes on and so). Maybe I am wrong?..
What network manager do You suggest? I need some manager to work with wifi, or maybe nmtui is sufficient?
How to select desired interface what should to be used from already up interfaces? In windows I was modified IP tables by using command route https://technet.microsoft.com/ru-ru/library/bb490991.aspx : first delete all routes, than add route with wanted network card IP and it will use only this specified network card to transmit something (all cards still are capable to receive). Maybe same must be done in gentoo? |
|
Back to top |
|
|
orion777 Apprentice
Joined: 15 Mar 2017 Posts: 207 Location: Riga, Latvia
|
Posted: Thu Mar 16, 2017 3:19 pm Post subject: |
|
|
Actually, I don't know what is happening... now I specify
fconfig eth2 hw ether 0c:5b:8f:27:7a:64
instead of hw ether 02:01:02:03:04:05 which was specified in the previous example..
and now both dongles (eth1 and eth2) are working!
But, when I enable PRP software emulation of the network card (prp1 in ifconfig), it cannot be added into NetworkManager 1.4.2. I was trying to use Edit connections - wired and so.. but there are no prp1 option.. Also I was trying to /etc/init.d/NetworkManager restart , but still no prp1 option
Code: | eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 00:1c:23:25:60:49 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
device interrupt 17
eth1: flags=5059<UP,BROADCAST,RUNNING,NOARP,PROMISC,ALLMULTI,MULTICAST> mtu 1500
inet 192.168.8.101 netmask 255.255.255.0 broadcast 192.168.8.255
inet6 fe80::c5b:8fff:fe27:9a64 prefixlen 64 scopeid 0x20<link>
ether 0e:5b:8f:27:9a:64 txqueuelen 1000 (Ethernet)
RX packets 388 bytes 140289 (137.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 620 bytes 60731 (59.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth2: flags=5059<UP,BROADCAST,RUNNING,NOARP,PROMISC,ALLMULTI,MULTICAST> mtu 1500
inet 192.168.8.102 netmask 255.255.255.0 broadcast 192.168.8.255
inet6 fe80::bb03:5c8a:881c:d3ea prefixlen 64 scopeid 0x20<link>
inet6 fe80::c5b:8fff:fe27:9a64 prefixlen 64 scopeid 0x20<link>
ether 0e:5b:8f:27:9a:64 txqueuelen 1000 (Ethernet)
RX packets 290 bytes 132582 (129.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 299 bytes 23274 (22.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 72 bytes 5256 (5.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 72 bytes 5256 (5.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
prp1: flags=4675<UP,BROADCAST,RUNNING,ALLMULTI,MULTICAST> mtu 1494
inet 192.168.8.100 netmask 255.255.255.0 broadcast 192.168.8.255
inet6 fe80::e5b:8fff:fe27:9a64 prefixlen 64 scopeid 0x20<link>
ether 0c:5b:8f:27:9a:64 txqueuelen 1000 (Ethernet)
RX packets 582 bytes 201424 (196.7 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16 bytes 1751 (1.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.117 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::5939:1e60:e5e2:aa04 prefixlen 64 scopeid 0x20<link>
ether 00:1c:bf:4a:7b:9d txqueuelen 1000 (Ethernet)
RX packets 12703 bytes 10276972 (9.8 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 9634 bytes 1567915 (1.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 |
|
|
Back to top |
|
|
orion777 Apprentice
Joined: 15 Mar 2017 Posts: 207 Location: Riga, Latvia
|
Posted: Mon Apr 10, 2017 7:47 am Post subject: |
|
|
Problem is solved.
Both Huawei 3372H in HiLINK mode (default mode) operates as a NAT and DHCP servers.Both dongles has same settings. One dongle settings should be changed: different dongle IP address should be entered (NOT 192.168.8.1 because this IP will becomes gateway address, but two identical gateways is bad idea) and different DHCP range (to get different learned IP for both dongles). This allows both active dongles simultaneous operation. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|