OSPF(Open Shortest Path First开放式最短路径优先)是一个内部网关协议(Interior Gateway Protocol,简称IGP),用于在单一自治系统(autonomous system,AS)内决策路由。是对链路状态路由协议的一种实现,隶属内部网关协议(IGP),故运作于自治系统内部。著名的迪克斯加算法(Dijkstra)被用来计算最短路径树。OSPF分为OSPFv2和OSPFv3两个版本,其中OSPFv2用在IPv4网络,OSPFv3用在IPv6网络。OSPFv2是由RFC 2328定义的,OSPFv3是由RFC 5340定义的。与RIP相比,OSPF是链路状态协议,而RIP是距离矢量协议。 1.OSPF协议的基本原理:
一:邻居子系统概述 邻居子系统是从物理来说是指在同一个局域网内的终端。从网络拓扑的结构来说,是指他们之间相隔的距离仅为一跳,他们属于同一个突冲域 邻居子系统的作用:它为第三层协议与第二层协议提供地址映射关系。提供邻居头部缓存,加速发包的速度 二:邻居子系统在整个协议栈的地位 发送数据的时候,要在本机进行路由查找,如果有到目的地地址的路径,查看arp缓存中是否存在相应的映射关系,如果没有,则新建邻居项。判断邻居项是否为可用状态。如果不可用。把skb 存至邻居发送对列中,然后将发送arp请求。如果接收到arp应答。则将对应邻居项置为可用。如果在指定时间内末收到响应包,则将对应邻居项置为无效状态。如果邻居更改为可用状态,则把邻居项对应的skb对列中的数据包发送出去 三:流程概述; 发包流程。下面以包送udp数据为例,看看是怎么与邻居子系统相关联的Sendmsg() à ip_route_output()(到路由缓存中查找目的出口)à ip_route_output_slow( 如果缓存中不存在目的项,则到路由表中查找) à ip_build_xmit() à output_maybe_reroute à skb->dst->output()如果至时找到了路由,则根据路由信息分配个dst_entry,并调用arp_bind_neighbour为之绑定邻居 output指针赋值为ip_output 转到执行ip_output ip_output à __ip_finish_output() -à ip_finish_output2() à dst->neighbour->output()现在就转至邻居项的出口函数了。
控制GPIO的目录/sys/class/gpio /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号 /sys/class/gpio/unexport 用于通知系统取消导出 /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的操作步骤 direction文件,定义输入输入方向,可以通过下面命令定义为输出。direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0 value文件是端口的数值,为1或0
Traffic Control ,简称TC,主要是在输出端口处建立一个队列进行流量控制,控制的方式是基于路由,亦即基于目的IP地址或目的子网的网络号的流量控制。流量控制器TC, 其基本的功能模块为队列、分类和过滤器。Linux内核中支持的队列有,Class Based Queue ,Token Bucket Flow ,CSZ ,First In First Out ,Priority ,TEQL ,SFQ ,ATM ,RED。这里我们讨论的队列与分类都是基于CBQ(Class Based Queue)的,而过滤器是基于路由(Route)的。