收发包过程分析"/>
PPPoE收发包过程分析
1. ppp0设备
路由器中的LAN/WAN口都是通过以太网(ether)设备来收发包的,而在WAN口进行了PPPoE拨号后,ifconfig会发现多出一个ppp0,这个设备是干什么用的呢?
实际上,这个设备是内核的ppp模块为方便pppoe等协议收发包用的,有了这个设备,你就可以将路由表改一改,将发往WAN口的数据包从ppp0(而不是eth1)发出去,内核协议栈会按照PPP协议相关的设置将这个包发出去。
1.1 创建ppp0
创建ppp设备是在内核的drivers/net/ppp_generic.c中:
ppp_create_interface(struct net *net, int unit, int *retp);
函数里根据第二个参数unit来决定ppp%d如何赋值。
而相应的,在用户程序pppd的sys-linux.c中,make_ppp_unit()函数通过ioctl进入内核来调用ppp_create_interface():
... ...
ioctl(ppp_dev_fd, PPPIOCNEWUNIT, &ifunit);
更多推荐
PPPoE收发包过程分析
发布评论