allow the not allowed

Hello My friends..!
so please anyone know why this invalid entry allow in winbox…???
i spent an hour looking for the problem in my pppoe configuration to realize in the end that i put 0 instead of 1 in my eth-4 port setup.
so why Mikrotik allow such entry in first place despite its invalid ..???
why i didn’t get a pop up error message saying this is invalid entry…?
invalid ip.PNG

Advantage AND disadvantage of Mikrotik. You can do A LOT but you can also make BIG mistakes without any warning.
Please don’t take this wrong but it is not MT’s job to indicate you made a user error.

Zero as last part in a devices IP address? It changed over the years and implementations.

In the 70´s IP with zero in the end for a host was garanteed to deliver problems. (Some?) UNIX defined the 0 address as the broadcast address, others defined 255 as the broadcast address.
Combining UNIX and others in the same LAN, gave ugly “broadcast storms”. That UNIX definition of broadcast address disappeared.

Maybe like the OS/2 IP stack, where OS/2 192.168.2.4 was totally different from 192.168.002.004, which was the others 192.168.2.4 .

In the 90`s Cisco IOS used the zero address as an extension to the 1-254 range. Making it 0-254 range, and for the smaller subnets, this was a very important extension, .e.g. from 2 to 3 host addresses in a /30 subnet. Not everyone followed this extension, since then it seems to remain rather a vague definition, not explicitly cleared out in the RFC’s.
https://serverfault.com/questions/451238/why-cant-all-zeros-in-the-host-portion-of-ip-address-be-used-for-a-host

Is it just an old limitation, that people avoid to be on the safe side? Is it still a real invalid IP address? I don’t know, it seems to depend on software releases.
It is a valid IP address, but documentation advices not to use it as a host address, as it is reserved to indicate the network.

I recently saw some initiative to recognize first address in subnet (which is now just wasted network address; .0 for /24) as valid address, but I don’t remember details. I think they were pretty far with Linux and some other open-source OSes. Of course it would still take some time before it would become universally usable.

I’d prefer not.
All 0’s = subnet
All 1’s = broadcast.

Otherwise I need to relearn that stuff :laughing:

@holvoetn: Are you ready for some fun/nightmares? :wink:

https://github.com/schoen/unicast-extensions

Oh dear…
Wouldn’t it be simpler to move to ip6 then instead of squeezing every possible address out of ip4 ?

Well, as you can see, some people feel differently. I’m not completely against it myself. For example, making first address in subnet usable is not bad idea. Interoperability will be limited, pretty much forever, but you could use it when everything in your network supports it. So it would save you some addresses without affecting anyone else.

In fact, it seems much better than I thought. I did very quick test with 192.168.80.0/24 set on ROS (7.6) and it was able to communicate with Linux (5.15) and Windows all the way down to XP (W2k didn’t like it). ROSv6 didn’t like it either. So it seems relatively usable.

But the other ideas about re-using currently reserved subnets, that’s problematic. Get new public address from those ranges and you can spend next ten years dealing with someone not being able to access it.

Nightmare? I didn’t sleep :slight_smile:. Just history for me, when using Cisco IOS 9, I saw this ‘solution’ announced.
Now just used Google and Cisco.com to see if it was just dreaming at that time.

Subnet zero I do remember, the all-ones I probably supressed in my (young) head. Cisco IP definitions were my “defacto standards” about IP.

““This practice (of excluding all-zeros and all-ones subnets) is obsolete. Modern software will be able to utilize all definable networks.” Today, the use of subnet zero and the all-ones subnet is generally accepted and most vendors support their use. However, on certain networks, particularly the ones using legacy software, the use of subnet zero and the all-ones subnet can lead to problems.”

https://www.cisco.com/c/en/us/support/docs/ip/dynamic-address-allocation-resolution/13711-40.html

My OS/2 experience was quit limited. I did buy and play with OS/2 Warp, but primarily to play with the protected mode DOS. This was probably early 1997, and at the time I think I was still using dial-up internet and a 28.8 kbit/s V.34 modem.

What did OS/2 interpret 192.168.002.004 as?

Cisco and MikroTik are the only two internet OS I know of that treat 010.010.010.010 the same as 10.10.10.10. I know that at least windows and linux treat 010.010.010.010 as 8.8.8.8 (the leading 0 is an indicator that the octet is in octal notation).

Here is output from Windows 10 and Raspbian (Debian Buster)

Win 10 Pro 21H2

C:\Downloads\mturoute>ping 010.010.010.010

Pinging 8.8.8.8 with 32 bytes of data:
Reply from 8.8.8.8: bytes=32 time=23ms TTL=114
Reply from 8.8.8.8: bytes=32 time=17ms TTL=114
Reply from 8.8.8.8: bytes=32 time=17ms TTL=114
Reply from 8.8.8.8: bytes=32 time=17ms TTL=114

Ping statistics for 8.8.8.8:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 17ms, Maximum = 23ms, Average = 18ms

C:\Downloads\mturoute>

Raspberry Pi 4 with Raspbian Buster

pi@JonRPi4B4-1:~ $ uname -a
Linux JonRPi4B4-1 5.10.103-v7l+ #1529 SMP Tue Mar 8 12:24:00 GMT 2022 armv7l GNU/Linux
pi@JonRPi4B4-1:~ $ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description:    Raspbian GNU/Linux 10 (buster)
Release:        10
Codename:       buster
pi@JonRPi4B4-1:~ $ ping -c 4 010.010.010.010
PING 010.010.010.010 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=114 time=18.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=114 time=17.3 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=114 time=20.9 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=114 time=18.3 ms

--- 010.010.010.010 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 7ms
rtt min/avg/max/mdev = 17.310/18.701/20.933/1.348 ms
pi@JonRPi4B4-1:~ $

was seen as 192.168.2.4 (normal parsing , not octal, as 009 would not be accepted). But OS/2 IP stack insisted on having leading zero’s. Entering 192.168.2.4 did not give the expected outcome.
That’s about a very long time ago, so could have been somewhat different in reality.

Learning again, more fancy tricks with data entry. (Octal, yet another way to masquerade the IP you use)
https://superuser.com/questions/857603/are-ip-addresses-with-and-without-leading-zeroes-the-same

Now I won’t sleep. I bashed my head because of this octal thing few times, when it surprised me in PHP. And now I learn that it’s lurking even in places where normal people can encounter it?! Yikes! :smiley:

Regarding subnet zero and the all-ones subnet, no to that too. It seems to be related to former classes, and those were already history when I discovered internet.

But this zero/lowest address (https://datatracker.ietf.org/doc/draft-schoen-intarea-unicast-lowest-address/) is not bad, I actually like that.

I think first noticed this when I created an excel spread sheet (a long time ago) with ip addresses and macros to generate ipsec/gre tunnel and ospf configs for Cisco IOS, and used three digits for each octet so excel sorting the ip addresses would work without complicated tricks. This worked fine when loaded into Cisco IOS but later I tried copy/pasting into windows to ping some of the addresses, and I got unexpected results.

Evidently octal isn’t the only format that’s problematic, but octal is a troubling one because not all things interpret the same string in the same way. 010.010.010.010 on MikroTik (and Cisco) gets treated as 10.10.10.10, but not by Windows and Linux, which do octal to decimal conversion “implicitly”. At least with ping it at least gives you a hint that it has done the conversion, but there may be applications on Windows or Linux that process the addresses without using the standard libraries, and may therefore interpret 010.010.010.010 as 10.10.10.10.

I was already using computers (not yet internet as we know it) since I was 12 in 1980.
And no, not for gaming (basic, assembler, … so I learned to use binary, octal, hexadecimal notation by necessity).
I’m therefor from the time there was no problem with IP4 addresses being depleted. And yes, that makes me officially old too :confused:

@Buckeye
I didn’t know Windows had that behavior when using 3-digit octets with leading 0.
Another thing learned :sunglasses:

@holvoetn old is relative. In 1980 I was twice as old as you were at the time.

My first computer had whole eight bits, so I guess that’s why octal always seemed kind of pointless to me. :slight_smile:

The first time I was exposed to octal in programming was on a PDP-11, which was 16 bits, but used the “unnatural” octal representation because the architecture had 8 registers, and dumping in octal made determining what registers were involved more obvious. I say unnatural because 16 isn’t divisible by 3, so 16 bit words took 4 octal digits, but the most significant digit was always 0 or 1. The first microprocessor I worked on with assembly language was the 8 bit motorola 6800 (SWTPC 6800) and generally I used hex or decimal with that.

I started with 6500- series.
Good times…

Otherwise I need to relearn that stuff :laughing: