计算机网络——网络层:控制层面

计算机网络——网络层:控制层面

路由方式

在控制层面中,路由器的路由方式有两种:

  • 预路由。通过已知的网络拓扑信息以及每个线路的传输开销,路由器将通过算法进行预路由,选择开销最小的路线。
  • 逻辑中心控制。所有的路由器的路由表由一个逻辑中心控制,由逻辑中心控制数据包的流向。

路由需要路由算法提供和计算转发表,我们将网络拓扑结构抽象为一个无向图,每个节点代表一个路由器,每个边代表一个物理链接,边权代表开销,因此我们最终目的是要寻找一条最小开销路线。

路由算法分为两种,一种是中心化路由算法,指的是每个路由器都知道网络的拓扑结构,每个路由都可以单独执行一次路由算法。另一种则是去中心路由算法,即每个路由只知道和他相连的线路的延迟并不知道整个网络的拓扑信息,在这种情况下进行路由。

除此之外,还可以根据二十年后了拓扑结构改变的速率分为静态路由算法和动态路由算法,静态路由算法在网络结构是固定的情况下能很好工作一般由人们手动配置,动态路由算法通过发送链接状态包侦测网络的拓扑结构,动态维护网络的拓扑结构。以及按照开销对网络的影响分为负载敏感和负载不敏感算法,负载敏感算法遇到网络开销有较大变化的时候,造成网络堵塞的几率更大。

LS 路由算法

LS 路由算法指的是指的是每个路由器都知道网络的拓扑结构,每个路由都可以单独执行一次路由算法。常用的算法是 Dijkstra 最短路算法。

遇到开销动态变化的时候,可以使得路由器更新 Dijkstra 算法的时间随机化,这样可以保证所有的路由器不会发生自同步现象。

DV 路由算法

DV 路由算法指的是路由器只和直接相连的路由器进行交互,路由器在不知道整个网络拓扑结构的情况下选择开销最小的路线。

DV 路由算法基于 Bellman-Ford 等式,也就是说:

d x ( y ) = min ⁡ v ∈ V ( c ( x , y ) + d x ( y ) ) d_x(y) = \min_{v \in V}(c(x,y)+d_x(y)) dx(y)=vVmin(c(x,y)+dx(y))

因此,在每个路由器维护一个 D ( y ) D(y) D(y) 列表即可,当更新列表的时候,将新的列表发送到邻居路由器,根据 Bellman-Ford 等式更新自己的 D ( y ) D(y) D(y) ,当网络中没有列表交换的时候,则进入静默状态,此时路由表完全收敛。因此 DV 算法具有自动停止、自动开始、异步的特性。

DV

但是 DV 算法也具备一些缺点,例如路由死循环,当一个路线的开销增加的时候,那么交换表将交换非常多次才能收敛,可以使用阻止反向的技巧解决小部分的这个问题,但是无法解决一般的路由死循环问题。

对于两个算法的比较:

  • 消息复杂程度:LS 算法需要知道整个网络的拓扑信息而 DV 只需要和相邻的节点进行交互即可。
  • 时间复杂度:LS 算法是 O ( n 2 ) O(n^2) O(n2) 的,而 DV 是 O ( N E ) O(NE) O(NE) 的。
  • 鲁棒性:LS 算法鲁棒性较好,如果出现错误节点也不会影响太多,而 DV 如果出现错误节点,将导致错误继续传播,以至于最坏情况整个网络都是错误的。

AS 网络:OSPF 协议

实际上,不可能将互联网上的所有路由器都视为一个路由网络,维护整个互联网的拓扑信息。我们使用 AS 网络来将一些路由器看成是一个子网路由,这些子网路由器只维护子网内的路由器和网络拓扑结构,OSPF 协议广泛适用于 AS 网络。

AS 网络之间:BGP 协议

BGP 协议是 AS 与 AS 网络之间的路由协议。正如其他路由协议一样,BGP 也同样做两件事情:

  • 通过 IP 前缀维护可达的子网。BGP 允许通过广播消息,告知各个 AS 网络,可以达到的子网。
  • 决定最佳路线。BGP 通过一些转发策略决定最佳的转发路线。

BGP 广播

考虑多个 AS 网络,路由器无非就是两个类型,一种是外部路由器,连接其他的 AS 网络,一种是内部路由器,只连接自身 AS 网络的路由器。

BGP 使用 TCP 协议,在每个路由器直接都会建立一条长链接称为 BGP 链接。内部路由器之间的链接称为内部链接,外部路由器直接的链接称为外部链接。

BGP 链接

在这个图中,3d 会想外部广播子网 x 的存在,在 AS1 中的路由器都会收到 “AS2 AS3 x” 的路由路径信息。

BGP 路由算法

实际上,一个 BGP 路由表中的表项由 BGP 属性和 IP/子网掩码 组成,其中两个最重要的 BGP 属性是 AS-PATH 称为路由路径,NEXT-HOP 是下一个 AS 网络外部路由器的 IP 地址。

BGP

BGP 使用热土豆算法,1c 如果要传输一个数据到 x ,那么他会在所有的可达路线中,选择距离它最近的那个下一跳地址,在这里是 2a,因此他会选择路线 “AS2 AS3 x” 而不是 “AS3 x” 。

热土豆算法是不公平的算法,因为他只想快速的将数据包传出 AS 网络,而不考虑整体开销。

实际上,BGP 网络使用的路由算法无非也就是和热土豆算法进行结合。

  • 一个路由器都会被赋予一个 local preference 值作为一个 BGP 的属性和路由优先级。BGP 选择优先级较大的路由器进行路由。
  • 如果可选路线的优先级都相同,则会选择一个 AS-PATH 开销最小的线路。
  • 如果还存在多个可用的路线,那么使用热土豆算法。
  • 如果还剩余,使用 BGP 标志符决定。

这样 BGP 的路由算法就是公平的了。

IP 多播

实际上 BGP 还可以用于 IP 多播,在 CDN 服务器的网关路由器添加一个和主服务器相同的 IP 地址进行广播,这样 BGP 网络会决定最近的那个 CDN 服务器。

CDN

大部分 CDN 服务器并不使用 BGP 协议进行搭建 CDN 网络,这并不适合 TCP 链接,因为来自同一个客户端的数据包可能会达到多个不同的 CDN 服务器。而 DNS 缓存服务器使用 BGP 网络作为负载均衡。

SDN 控制

SDN 网络中有四个关键的特性:

  • 基于流控制的转发。路由器能够通过检查各个层的协议头的数据,决定该数据包该如何匹配和操作。
  • 分离数据层面和控制层面。数据层面只进行匹配-操作。控制层面决定网络的转发表。
  • 网络控制函数:对于数据层面交换器是外部的。SDN 网络由软件控制,通过软件识别和操控网络中的路由器。这部分由两个子部分组成,其中是 SDN 控制器,和网络控制应用。控制器进行维护网络中的各种信息,而控制应用则通过控制器中收集的信息计算转发表。
  • 可编程的网络。通过网络控制应用,整个网络是可编程的,SDN 控制器通过提供 API 我们能轻松编写出网络控制应用。

SDN

SDN 控制器和控制应用

SDN 控制器和控制应用具有如下的层次:

  • 一个交流层:SDN 控制器和被控制路由器交通过交流层进行传输数据。控制器通过发送指令,被控制路由器进行更改或者路由器发送通知给控制器。OpenFlow 就是一个交流层协议,也称为南桥协议。
  • 网络状态管理层:收集网络中的各种信息。
  • 网络控制应用接口:定义了网络控制函数如何和控制层进行交互。通常称为北桥协议。

SDN 控制

ICMP

ICMP 是网络控制消息协议,一般用于网络层路由器和消息主机进行交互。最常见的应用是错误检测。ICMP 通常被视为 IP 协议的一部分,但是ICMP 承载于 IP 协议之上,这和 UDP 和 TCP 是一样的。ICMP 的协议号是 1。ICMP 只有类型和代码字段。

ICMP

(0,0) 和 (8,0) 用于 Ping 操作,从第二行到第七行用于错误侦测。(4,0) 原意是用于网络拥堵控制,但是几乎被 TCP 的拥堵控制代替。(11,0) 在 TTL 过期时会发送至发送者。

网络管理

在网络管理中,有四个关键的角色参与:

  • 管理服务器:管理服务器运行网络管理服务,例如 SDN 网络中的控制器和控制应用,网络管理员能够直接操作这一部分。
  • 被控制设备。一般包括路由器和各种中间组件。
  • 数据。配置数据是管理服务器显式用于控制设备的数据。操作数据,是设备处理某个事件使用的数据。设备数据,是设备自身的状态数据。
  • 网络管理代理。网络管理代理是运行在被控设备上的软件,通过接收管理服务器的数据,实际地控制设备。
  • 网络管理协议。

网络管理通过三种方式进行:

  • CLI 。命令行接口,其中图形化界面是这个方式的变种。
  • SNMP / MIB 。通过发送 SNMP 数据包来管理网络。
  • NETCONF / YANG 。YANG 语言这使得数据更加模型化,NETCONF 通过远程 RPC 调用的方式进行管理网络。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值