以下字段只存在于IPv4中,在IPv6中不允许
分片/重新组装
首部检验和
选项
建隧道:
假设发送端与接收端均使用IPv6,中间路由器有IPv6与IPv4的,把经过IPv4路由器当做隧道,隧道两段则是两台IPv6路由器,隧道发送方路由器将IPv6数据报放进IPv4数据报中,中间的路由器则只将其当成普通的IPv4数据报处理,当到达隧道接收方时,路由器再将其拆分出IPv6路由器,再进行转发,其间由IPv4数据报的协议号字段值为 41 指出
匹配 + 动作
匹配加动作转发表在OpenFlow中称为流表(因为性能与成本,一个流表由多个流表实现)
首部字段值的集合
计数器集合
分组匹配流表项采取的动作集合
现已增加到41个
最重要的有:
两种方式计算、维护、安装转发表和流表:
控制器经过一种定义良好的协议与每台路由器中的一个控制代理CA交互,来配置和管理该路由器的转发表
CA一般具有最少的功能,任务是与控制器通信并且按控制器命令行事,CA并不能主动参与计算转发表,这是两种方式的关键差异
目的:发送方到接收方的过程中确定一条通过路由器网络好的路径
通常好的路径指具有最低开销的路径
某个规则:属于组织Y的路由器X不应该转发任何来源于组织Z所属的网络的分组
通常使用图来抽象路由选择问题
路由器 --> 节点
物理链路 --> 边
开销 --> 权重
无向图
给定任意两个节点,必有一条或多条最低开销路径
若路径所有开销路径相同,最低开销路径必然也是最短路径,即经过的链路数量最少
路由选择算法分类:
根据集中式还是分散式:
根据静态还是动态进行分类
根据负载是否敏感分类:
此算法网络拓扑和所有链路开销都是已知的,实践中是通过让每个节点向网络所有其他节点广播链路状态分组来完成的,分组包含它所连接的链路的标识和开销
由链路状态广播算法来完成
广播结果是所有节点都具有该网络的统一、完整的视图
Dijkstra算法
现实的解决方案是确保不是所有的路由器都在同时运行LS
而网络上的路由器会发生自同步,避免的方法是发送链路通告的时间随机化
Bellman-Ford方程:
每个节点不时向每个邻居发送它的距离向量,然后使用此方程更新它的距离向量:
如果节点x的距离向量改变了,则向每个邻居发送更新后的距离向量,当所有节点异步方式交换距离向量,开销估计会收敛到实际的最低开销路径的开销
当节点 x 发现它的直接相连的链路开销变化或从某个邻居接收到一个距离向量的更新时,它就更新其距离向量估计值。但是为了一个给定的目的地 y 而更新它的转发表,节点 x 真正需要知道的不是到 y 的最短路径距离,而是沿着最短路径到y的下一跳路由器邻居节点
此变化不断继续,直到无更新报文为止,进入静止状态,进行等待,找到链路开销改变
在上述例子中,z 通过 y 到达 x ,则向 y 通过 z 到 x 的距离是无限大,因此在 y 直接到达 x 的开销改变后 y 也不会选择通过 z 的方式到达 x
毒性逆转对于 3 个或更多的节点无法检测
上述讲述的方式为简单化,实际不可能如此运行,以下两个原因:
自治系统AS来解决,通常每个AS 由一组处在相同管理控制下的路由器组成
一个 ISP 可将其路由器及互联的链路组成一个 AS,或者划分为多个 AS
一个AS 由其全局唯一的 AS 号所标识
在相同的 AS 中的路由器都运行相同的路由选择算法并有彼此的信息,此路由选择算法被称自治系统内部路由选择协议
OSPF 及其关系密切的IS-IS都被广泛用于因特网内部的AS 内部路由选择
OSPF是链路状态协议,使用洪泛链路状态信息和Dijkstra算法
一台路由器构建了一副关于整个 AS 的完成拓扑图,构建了以自身为根节点到所有子网的最短路径树
OSPF中,路由器向 AS 内的所有其他路由器广播路由选择信息,当链路状态发生变化则广播,即使没有也在 30 min 广播一次
优点:
BGP:自治系统间路由选择协议,协调 AS
AS 外部的目的地由 BGP 负责
BGP 使分组不是路由到特定地址,而是到 CIDR 前缀,前缀表示一个子网或者子网的集合
BGP 的手段
网关路由器:AS 边缘路由器,连接到其他 AS 中一台或多台路由器
内部路由器:仅连接在 AS 内部的主机和路由器
例如图中的 1a 是内部路由器,1c 是网关路由器
例如:向图中所有路由器通告对于前缀 x 的可达性信息
实际上是路由器在发送报文,每对路由器通过使用 179 端口的半永久 TCP 连接交换路由信息
每条直接连接以及通过该路由器发送的BGP报文,称为 BGP 连接
跨越两个 AS 的 BGP 连接称为外部 BGP 连接eBGP,相同 AS 中的两台路由器之间的BGP会话称为内部 BGP 连接iBGP
iBGP连接并不总是和物理链路对应
BGP通告时还包括一些属性,前缀及属性被称为路由
两个重要的属性是:
AS-PATH
包含了通告已经通过的 AS 列表,通过某 AS 时则加入其 ASN
来检测和防止通告环路
路由器在路径列表上看到包含了自身的 AS,则拒绝该通告
NXET-PATH
BGP路由选择算法:
在转发表中添加 AS 向外前缀时,BGP 和 OSPF 都需要用到
实践中使用了更为复杂的算法,但却结合了热土豆的特点
当有多条路由时,使用一下规则消除直到剩余一条:
BGP还被使用在 IP 任播服务中,而 IP 任播服务常用于 DNS 中
CDN可能会使用 IP 任播服务,多台服务器指派相同的IP地址。并使用 BGP 来通告
当某 BGP 服务器收到该 IP 地址的多个路由通告,则将这些通告处理为对相同的物理位置提供不同的路径
当客户请求某个视频时,CDN 向客户返回由地理上分散的服务器使用的同一个 IP 地址,再由因特网路由器向“最近的”服务器转发请求分组
W、X、Y是 ISP,X 是多宿接入 ISP
X 应该是进入/离开 X(...)的源 /目的地,不应该转发 B 与 C 之间的流量
使用 BGP 路由的通告方式,例如 X 知道路径 XCY 到达 Y,但不会把这路径通告 B,C也同理
为什么 AS 之间和 AS 之内使用不同的路由选择协议呢?
- 策略
- AS 之间策略起主导作用。一个给定的 AS 产生的流量不能穿过另一个特定的 AS,或者想很好地控制它承载的其他 AS 之间穿越的流量,这在 AS 内部之间是没有必要的
- 规模
- 扩展路由选择算法能处理大量网络是 AS 之间的关键问题
- AS 之内不是关注的焦点
- 假如 ISP 变得太大,总是分成两个 AS,并在 AS 之间执行 AS 路由选择
- 性能
- AS 之间路由选择是面向策略的,性能不是主要关心的问题
- 路径更长或者开销更高的路径,但其满足策略条件被采用了,相反的却没被使用
- AS 之间,没有路由相关的开销(除了 AS 跳计数)
SDN体系结构具有 4 个关键特征
基于流的转发
数据平面与控制平面分离
网络控制功能
可编程的网络
SDN 控制器功能大体组织为 3 个层次
通信层
网络范围状态管理层
对于网络控制应用程序层的接口
SDN 控制器被认为是“逻辑上集中”的,即该控制器可以被外部视为单一、整体的服务,但实际上出于故障容忍、高可用性或性能方面的考虑,在实践中实际上是通过分布式服务器集合实现
运行在 SDN 控制器和 SDN 控制的交换机或其他实现 OpenFlow API 的设备
运行在 TCP 之上,使用 6653 默认端口
从控制器到受控报文交换机流动的重要报文有下列:
从受控交换机到控制器流动的重要报文有
被主机和路由器用来彼此沟通网络层信息
最典型用途是差错报告
ICMP 实际上位于 IP 之上,承载在 IP 分组中,即作为有效载荷
当上层协议编码为 1 时,主机则将 IP 数据报的内容给 ICMP
有一个类型报文字段和编码字段,并包含引起该 ICMP 报文首次生成的 IP 数据报的首部和前 8 个字节,以便发送发能确定引发该差错的数据报
ICMP 是源抑制报文
网络管理定义:
管理服务器:
被管设备
管理信息库MIB
网络管理代理
网络管理协议
应用层协议
管理服务器和代表管理服务器执行的代理之间传递网络管理控制和信息报文
最常使用的是请求响应模式
请求通常用于查询或修改与某被管设备管理的 MIB 对象值
第二个常被使用是代理向管理服务器发送一种非请求报文,陷阱报文,通知管理服务器异常情况导致 MIB 对象值的改变
7种类型的报文,被称为协议数据单元PDU
前三种PDU 都是管理服务器向代理发送的,请求代理所在的被管设备一个或多个 MIB 对象值
Get:任意集合
GetNext顺序读取列表或表格
GetBulk:允许读取大块数据,避免发送多个数据的开销
三种情况下,代理对象用对象标识符和相关值对 Response PDU 进行响应
InformRequest:通知另一个 MIB 信息管理服务器,此对于接收服务器是远程的
Response PDU:通常是被管设备发送给管理服务器,响应请求报文,返回请求信息
陷阱报文:异步产生,不是响应请求,而是响应管理服务器要求通知的事件而产生的
+
PDU格式
原文:https://www.cnblogs.com/zephxu/p/14855434.html