On Thu, Oct 12, 2006 at 01:41:49AM +0100, Stuart Henderson wrote:
> On 2006/10/12 01:15, ropers wrote:
> > Neither do I understand what really goes on during IP forwarding as
> > opposed to bridging
> 
> with forwarding(routing) tcp/ip packets have a destination IP address
> which isn't bound to an interface on the router but the MAC address _is_
> the address of the routers (destination address is not ARP'd for because
> the previous router knows it's not a directly-connected destination).
> 
> with bridging, the MAC address is of the final destination, and is
> learned by the previous router by ARPing for it (ethernet broadcasts
> cross the bridge unaltered).
> 
> see "tcpdump -e"
Stuart,

        I read and reread the previous paragraph but I am not able to 
understand it.

        Let me try to express my understanding. Please point out the holes in 
that( I am sure there are many).

        I am especially confused since you have mentioned "forwarding(routing)".
        Routing protocols have two phases or components called building the 
routing table and actual forwarding of IP packets. It is the building of 
routing tables that happen over TCP(BGP),UDP(RIP) or IP(OSPF). This happens 
independently or real packet forwarding which is the primary job of a router.

        Now, once an IP packet arrives thro' an interface of a router, its 
destination IP address is looked up in the routing table, its TTL value checked 
and decremented, its IP checksum recomputed since we modified the TTL,
        and then finally(and most importantly), the destination MAC address of 
the packet modified to match the longest prefix match of the routing table 
lookup.

        Thus, if you see actually it is the destination MAC address stored in 
the ethernet header that is actually modified at every hop of the router. The 
IP header is largely untouched.

        Am I making sense or talking rubbish?


        Now, briding is actually the job of a layer 2 device like a switch/hub 
and mostly happens in hardware since it is a dumb function.

        What OpenBSD hopes to achieve thro' providing briding in software is to 
do that same job intelligently. The man page clearly says that. If you add pf 
to briding then voila!, you have a marvellous way to filter packets 
transparently without actually modifying the routing topology of the network.

        And since pf can do much much more than mere filtering, the convenience 
of not modifying your routing topology is a marvellous gift to sysadmins...


> 
> > or, for that matter, why I needed to enable
> > net.inet.ip.forwarding=1 in /etc/sysctl.conf for the bridge to work.
> 
> I'm not sure you do, but I think you need it for PF. If it was a
> bit more sensible time of day I'd double-check (-:
                I guess this is more of a security measure. Since bridging 
involves lower layer handling, the user has to explicitly state his intent.

                I find no confusion here.

                You need to do the same if you are using IPsec as well.
Best,
Girish

Reply via email to