Infrastructures.Org | ISconf.Org TerraLuna Projects

By default, isconf 4.2.6 (specifically, isconf/Cache.py) has this behavior on the net:

message typetx to|rx from
whohasudp 255.255.255.255udp any
ihaveudp 255.255.255.255udp any
sendmehttp to ihave srchttp from any
hereishttp clienthttp server

If the IS_NETS file is used, then 4.2.6 has this behavior:

message typetx to|rx from
whohasudp 255.255.255.255 and nets file membersudp any
ihaveudp 255.255.255.255 and nets file membersudp any
sendmehttp to ihave srchttp from any
hereishttp clienthttp server

...in other words, all the 4.2.6 nets file does is add addresses to the broadcast list. We need a way to restrict participation to only members of the nets file, like this:

message typetx to|rx from
whohasudp nets file membersudp nets file members
ihaveudp nets file membersudp nets file members
sendmehttp to ihave srchttp from nets file members
hereishttp clienthttp server

We can do this simply by adding an IS_NOBROADCAST environment variable which shuts off the 255.255.255.255 sendto, and causes checks after recvfrom, and before serving HTTP content, to ensure that the src is also in the nets file (doing netmask arithmetic). We can implement master/slave relationships, even tiered heirarchies, by setting IS_NETS to different files for different hosts in main.cf.

I explored several other alternatives, such as designating master nodes now (rather than later, for quorum counting), and all were more complicated and threatened to create code which would later conflict with the TCP mesh plan.

The only thing this plan doesn't do is allow for certain slaves to be write-only; you'll still be able to check in changes from any host that's listed in any nets file. I think that's a good thing; if you disallow checkins from production then there's always going to be that emergency change that someone had to make which has to somehow get back into the rest of the branch, and can't. The intent of this plan is to constrain network traffic, not to act as a major security measure (though it does help with the latter). For real security and change control workflow we need to be using HMAC and GPG.

XXX TODO: