趣谈网络协议(九):动态路由

大千世界的网络,若是用静态路由的话,无疑会带来很大的不变,效率也很是低下算法

咱们NAT路由器的网关下一跳通常来讲会有2个或以上,那咱们怎么经过最短的距离到达目标网络了。网络

每个网关都会各自维护一个路由表,根据路由算法,标记到达各个达到网络的最短路径。spa

路由表规则记录着三个信息:ip

    目标网络(这个包去哪)路由

    出口设备(将包从哪一个口扔出去)io

    下一跳网关(下一个路由器的地址)table

如何配置路由

    咱们能够经过ip route add 10.176.32.0/24 via 10.173.32.1/20 dev eth0class

    说明要去10.176.32.0/24这个目标网络的,都要从网卡eth0端口出去,通过10.173.21.1/24(即下一跳)test

如何配置策略路由

    在真实的复杂网络环境中,除了能够根据目的ip地址配置路由外。还能够根据多个参数来配置路由,同城为策略路由效率

    能够配置多个路由表,根据源IP地址、入口设备、TOS等选择路由表,而后再路由表中查找路由,这样可使得来自不通来源的包走不一样的路由

    假如咱们设置

    ip rule add from 192.168.1.0/24 table 10

    ip rule add from 192.168.2.0/24 table 20

表示两个ip分别走table十、20这两个路由表

固然,同一个网络能够走多个路由表,根据权重weight来负载分流

ip route ad  defaule scope global nexthop via 100.100.1.1 weight 1 nexthop via 100.100.2.1 weight 2

下一跳有两个地方,分别是100.100.1.1和100.100.2.1.权重比分别是1比2

动态路由算法

使用动态路由路由器,能够根据路由协议算法生成动态路由表,随网络运行情况的变化而变化。

路由算法有两种

1.距离矢量路由算法

    这一类的算法成为距离矢量路由(distance vector routing)。它是基于bellman-ford算法的

当新增一个路由,便会通知全部邻居,直到通知全部网络的路由,每一个路由都有全局信息的。

例如路由A与路由B的距离1,而B与路由C的距离2,则路由C标记到路由A的距离3.

这里有个问题就是当A挂了,B找不到A,可是C到A为3,因而B设置到A为5,而后C发现A设为5拿本身就设为6,直到超出阈值才认定A挂了。

还有另外一问题,当网络规模庞大起来,那路由表得有多复杂.复杂就算了,若是有新加入的路由,吱吱吱..

2.链路状态路由算法

    链路状态路由(link state routing),基于Dijkstra算法。

    基本思路是:当一个路由启动的时候,首先是发现邻居.想邻居say hello,邻居都回复。而后计算和邻居的距离,发送一个echo,要求立刻返回,除以二就是距离。而后将本身和邻居之间的链路状态包广播出去,发送到整个网络的每一个路由器。这样每一个路由器都可以收到它和邻居之间的关系的信息,于是,么个路由器都能在本身本地构建一个完整的图,而后针对这个图使用dijkstra算法,找到亮点之间的最短路径。

    不想距离矢量路由协议那样,更新时发送整个路由表。链路状态路由协议只广播更新的或改变的网络拓扑,这使得更新信息更小,节省了宽带和CPU利用率。并且一旦一个路由器挂了,它的邻居队徽广播这个消息,可使得坏消息,可使得坏消息迅速收敛

动态路由协议

    1.基于链路状态路由算法的OSPF(Open 收入testOathFirst,开放式最短路径优先)就是这样一个基于链路状态路由协议,普遍应用在数据中心的协议,因为只要用在数据中心内部,用于路由决策,于是成为内部网关协议(InteriorGatewayProtocol,简称IGP)

2.基于距离矢量路由算法的BGP 

    外网,国家之间的。咱们称为外网路由协议(Border Gateway Protocol,简称BGP)

相关文章
相关标签/搜索