A rock cannoli is only appropriate where there is a slow weep coming out of the soil and under a road, that you need to keep from building up. (You can use several at intervals if needed.) If there is an actual surface stream, you need a culvert. A cannoli will catch too much leaf trash etc if there is a real stream, and also it will block passage of fish etc. A cannoli can freeze and heave, but generally not as much as a culvert. It works very well where appropriate to keep water seepage from building up and saturating the road, and it's cheap because you can use local rocks to fill it.