Introduction
控制平面设计很多路由的算法, 然后计算出路由表给数据平面转发跟路由的, 传统方式的控制平面是每一个路由器都有一个控制平面, SDN方式的话通常是集中的remote管理, 一个控制平面控制多个本地代理CA - (Control Agent)
路由选择算法
路由route的概念
按照某种指标(传输延迟, 经过的站点数目等)找到一天从源节点到目标节点的较好路径, 也就是计算网络如何走的问题
网络的图的抽象
路由器为node
链接的路由器为edge
路由算法分类
- 全局 (所有的路由器拥有完整的拓扑) - link state
- 分布式 (路由器只知道它有物理链接关系的邻居路由器) - distance vector
Link State 算法
- 各点通过各种渠道获得整个网络拓扑, 网络中所有链路 代价等信息
- 使用LS路由算法,通过Dijkstra算法计算本站点到其它站点的最优路径
- 发现相邻的节点, 告知对方网络地址
- 测量到相邻节点的代价
- 将分组通过扩散的方法发送到其他路由器
- 通过Dijkstra算法找出最短路径 (这里才是路由算法)
Distance Vector 算法
- 各路由器维护一张路由表
- 各路由器与相邻路由器交换路由表
- 根据获得的路由信息, 跟新路由表
这里用到了Bellman-Ford方程(动态规划)
dx(y) = min{x(x, v) + dv(y)}
Internet自治系统内部的路由选择 - OSPF
OSPF (Open Shortest Path First)
- 使用的是Dijkstra算法
- 通过信息通过泛洪传遍整个内部系统
ISP之间的路由选择 - BGP
层次路由
将互联网分层一个个AS(路由器自治区域)
BGP会话
两个BGP路由器在一个半永久的TCP连接上发送BGP报文
比如AS3想AS2网关路由器2c通过路径 AS3, X
- 3a参与AS内部路由运算, 知道本AS所有的子网x信息
- AS3向AS2承诺, 他可以向子网x转发数据报
- 3a是2c关于x的下一跳 (next hop)
当AS2接收到AS3的通过时候, 会使用输入策略选择接收或者过滤
路径选择
路由器可能获得一个网络前缀的多个路径,路由 器必须进行路径的选择,路由选择可以基于:
- 偏好属性 - 自己设置的
- 最短AS-PATH - Distance Vector
- 最近的路由 - 热土豆
对比内部routing以及外部routing
内部: 关注性能
外部: 策略可能比性能更重要, 所以在路径选择上先满足偏好属性
总结
内部routing使用OSPF, 外部routing使用BGP
SDN的Control Pane
SDN bottom up的layer
- a communication layer: SDN控制器和SDN交换机之间通信, 也叫南向接口
- a network-wide state-management layer: 是SDN控制平面控制的地方, 比如flow tables, load balancing
- The interface to the newwork-control application: 也叫北向接口, 给newtork application使用
communication layer
- 数据平面交换机
- 流表被控制器计算和安装
- 基于南向API
- 定义了控制器的协议 (e.g. OpenFlow)
SDN controler
- 维护网络状态信息
- 通过北向API和网络控制器应用交互
- 通过南向API和网络交互及交互
- 逻辑集中, 但是在实现上通常采用分布式的方法
SDN Application
- 可以实现防火墙, 负载均衡
- 可以是第三方的application
OpenFlow协议
- S1经历链路失败, 采用OpenFlow通告
- SDN控制器收到报文, 跟新链路状态信息
- Application中Dijkstra算法应用被调用
- Application中Dijkstra访问网络的states计算路最短路径
- Application与flow table manager交互, update流表
- 采用OpenFlow在交换机上安装流表
ICMP
ICMP是host跟router的Protocol
Traceroute and ICMP
- host给目标host发送一系列的UDP, 然后端口号不可达
- 第一个: TTL=1
- 第二个: TTL=2, ect
- 当nth数据达到nth路由器
- 路由器抛弃数据报
- 然后发送ICMP(type11, code 0)
- 报文包括了路由器的名字和IP地址
- 当ICMP报文到达, host可以测算RTT
- 停止的判据
- UDP段最终达到目标主机
- 返回IMCP(type3, code3)
网络管理
Protocol包括了SNMP, NETCONF/YANG
协议报文
GetRequest: 给我数据
InformRequest: 给你MIB(Management Information Base)值
SetRequest: set MIB
Response: 对请求的响应
Trap: 代理-实体: 异常事件的报告
总结
这章讲了控制平面, 设计到了路由选择算法, 还有路由的层次(AS), 讲了SDN的架构以及怎么做控制, 包括OpenFlow协议, 讲了ICMP协议, 还有网络管理