路由
路由是在一个网络中,或多个网络之间,或跨网络的数据传输选择路径的过程。从广义上讲,路由可在许多不同类型的网络中执行,包括电路交换网络,比如公共交换电话网络,和计算机网络,比如Internet。
在分组交换网络中,路由是更高级别的决策,它通过特定的分组转发机制,通过中间网络节点,将网络分组从其源头导向其目的地。数据包转发是网络数据包从一个网络接口到另一个网络接口的传输。中间节点通常是网络硬件设备,例如路由器、网关、防火墙或交换机。通用计算机也转发数据包并执行路由,尽管它们没有专门针对该任务优化的硬件。
路由过程通常根据路由表进行转发。路由表维护到各种网络目的地的路由记录。路由表可以由管理员指定,通过观察网络流量学习或在路由协议的帮助下构建。
狭义的路由通常是指 IP 路由,与桥接相对。 IP 路由假定网络地址是结构化的,并且类似的地址意味着网络内的邻近性。结构化地址允许单个路由表条目表示到一组设备的路由。在大型网络中,结构化寻址(狭义的路由)优于非结构化寻址(桥接)。路由已成为 Internet 上寻址的主要形式。桥接仍然在局域网中广泛使用。
路由方案在传递消息的方式上有所不同:
- 单播使用发送方和目的地之间的一对一关联将消息传送到单个特定节点:每个目的地地址唯一标识单个接收方端点。
- 广播使用一对多关联向网络中的所有节点传递消息;来自一个发送者的单个数据报被路由到与广播地址相关联的所有可能的多个端点。网络根据需要自动复制数据报,以到达广播范围内的所有接收者,广播范围通常是整个网络子网。
- 多播将消息传递给一组已表示有兴趣使用一对多或多对多关联接收消息的节点;数据报在一次传输中同时路由到许多接收者。多播与广播的不同之处在于,目标地址指定可访问节点的子集,而不是全部。
- Anycast 将消息传递给一组节点中的任何一个,通常是使用一对多关联的离源最近的一个,其中数据报被路由到一组潜在接收者中的任何一个成员,由相同的目标地址标识。路由算法根据某种距离度量,从基于哪个最近的组中选择单个接收器。
- Geocast 根据地理位置向网络中的一组节点传递消息。它是移动自组织网络的一些路由协议使用的一种特殊形式的多播寻址。
单播是 Internet 上消息传递的主要形式。本文重点介绍单播路由算法。
网络复杂拓扑与路由算法
静态路由,小型网络可以使用手动配置的路由表。较大的网络具有可以快速变化的复杂拓扑,使得手动构建路由表变得不可行。尽管如此,大多数公共交换电话网 (PSTN) 使用预先计算的路由表,如果最直接的路由被阻塞,则使用回退路由。
动态路由,试图通过基于路由协议携带的信息,自动构建路由表来解决这个问题,从而使网络能够近乎自主地采取行动,避免网络故障和阻塞。动态路由在 Internet 中占主导地位。动态路由协议和算法的示例包括路由信息协议 (RIP)、开放最短路径优先 (OSPF) 和增强型内部网关路由协议 (EIGRP)。
距离向量算法
距离向量算法使用 Bellman-Ford 算法。这种方法为网络中每个节点之间的每个链接分配一个成本编号。节点通过导致最低总成本(即所用节点之间链接的成本之和)的路径,将信息从 A 点发送到 B 点。
当一个节点第一次启动时,它只知道它的直接邻居,以及到达它们所涉及的直接成本。目的地列表、每个目的地的总成本,以及发送数据到达目的地的下一跳,这些信息构成了路由表或距离表。每个节点定期向每个邻居节点发送数据,它自己对到达它知道的所有目的地的总成本的当前评估。相邻节点检查此信息,并将其与他们已知的信息进行比较;任何代表他们已有的改进的东西,他们都会插入到他们自己的表中。随着时间的推移,网络中的所有节点都会发现所有目的地的最佳下一跳和总成本。
当网络节点出现故障时,任何将其用作下一跳的节点,都会丢弃该条目,并将更新的路由信息??传送给所有相邻节点,这些节点依次重复该过程。最终,网络中的所有节点都会收到更新并发现不涉及故障节点的所有目的地的新路径。
链路状态算法
在应用链路状态算法时,网络图是用于每个节点的基本数据。为了生成它的图,每个节点用它可以连接的其他节点的信息来描述整个网络。然后,每个节点独立地将这些信息组合成一个图。使用此图,每个路由器使用标准最短路径算法(例如 Dijkstra 算法),独立确定从自身到每个其他节点的最低成本路径。结果是一个以当前节点为根的树图,这样从根到任何其他节点通过树的路径是到该节点的最低成本路径。然后,该树用于构建路由表,该表指定从当前节点到任何其他节点的最佳下一跳。
优化的链路状态路由算法
针对移动自组织网络,优化的链路状态路由算法是优化的链路状态路由协议 (OLSR)。OLSR 是主动的;它使用 Hello 和拓扑控制 (TC) 消息,通过移动自组织网络发现和传播链路状态信息。使用 Hello 消息,每个节点发现 2 跳邻居信息并选择一组多点中继 (MPR)。 MPR 将 OLSR 与其他链路状态路由协议区分开来。
路径向量协议
距离向量和链路状态路由都是域内路由协议。它们在自治系统内部使用,但不在自治系统之间使用。这两种路由协议在大型网络中变得难以处理,不能用于域间路由。如果域中的跳数多于几个,距离矢量路由就会不稳定。链路状态路由需要大量资源来计算路由表。它还因信息漫流而造成交通拥堵。
路径向量路由用于域间路由。它类似于距离矢量路由。路径向量路由假设每个自治系统中的一个节点(可以有多个)代表整个自治系统。该节点称为发言人节点。扬声器节点创建路由表,并将其通告给相邻自治系统中的相邻发言人节点。这个想法与距离向量路由相同,只是每个自治系统中只有发言人节点可以相互通信。发言人节点向其自治系统,或其他自治系统通告节点的路径。
路径向量路由算法与距离向量算法类似,因为每个边界路由器都会向其相邻路由器,通告它可以到达的目的地。然而,不是根据目的地和到该目的地的距离来通告网络,而是将网络作为目的地地址和到达这些目的地的路径描述来通告。以迄今为止所经过的域(或联盟)表示的路径,承载在一个特殊的路径属性中,该属性记录了可达性信息通过的路由域的顺序。路由被定义为目的地和到达该目的地的路径属性之间的配对,因此得名,路径向量路由;路由器接收一个向量,其中包含到一组目的地的路径。
边界网关协议(BGP)
自治系统 (AS) 是一个连接的互联网协议 (IP) 路由前缀的集合,它由一个或多个网路管理员控制。这些管理员代表单个管理实体或域,该实体或域要向互联网提供通用的、明确定义的路由策略。
边界网关协议 (BGP) 是一种标准化的外部网关协议,其目的是,在Internet上的自治系统 (AS) 之间,交换路由和可达性信息。BGP被归类为路径向量路由协议,它根据路径、网络策略或网络管理员配置的规则集,做出路由决策。
BGP邻居,称为同伴,是通过路由器之间的手动配置建立的,以在端口179上创建TCP会话。BGP发言人每 60 秒发送 19 字节的保持活动消息,以维持连接。在路由协议中,BGP的独特之处在于使用TCP作为其传输协议。
当BGP在同一自治系统 (AS) 中的两个同伴之间运行时,它被称为内部 BGP,i-BGP或内部边界网关协议。当它在不同的自治系统之间运行时,它被称为外部 BGP,eBGP 或外部边界网关协议。在一个AS边界上与另一个 AS 交换信息的路由器,称为边界或边缘路由器或简称 eBGP同伴,通常直接连接,而 i-BGP同伴可以通过其他中间路由器互连。其他部署拓扑也是可能的,例如在VPN隧道内运行eBGP对等互连,允许两个远程站点以安全和隔离的方式交换路由信息。
iBGP 和 eBGP 对等体之间的主要区别在于从一个对等体接收的路由传播到其他对等体的方式。例如,从 eBGP 对等体获知的新路由通常会重新分配给所有 iBGP同伴以及所有其他 eBGP同伴(如果路由器上启用了传输模式)。但是,如果在 iBGP同伴上获知新路由,则它们只会重新通告给所有 eBGP同伴。这些路由传播规则有效地要求 AS 内的所有 iBGP同伴在全网状网络中互连。
路由的传播方式可以通过路由图机制进行详细控制。该机制由一组规则组成。每条规则都描述了对于匹配某些给定标准的路由,应该采取什么行动。操作可能是删除路由,也可能是在将路由插入路由表之前,修改路由的某些属性。
桥接
网桥是一种计算机网络设备,它从多个通信网络或网段创建一个单一的聚合网络。此功能称为网络桥接。桥接不同于路由。路由允许多个网络独立通信,但仍保持独立,而桥接连接两个独立的网络,就好像它们是一个网络一样。在 OSI 模型中,桥接是在数据链路层(第 2 层)中执行的。如果桥接网络的一个或多个网段是无线的,则该设备称为无线网桥。
网络桥接技术的主要类型
透明桥接
透明桥接使用称为转发信息库的表,控制网段之间帧的转发。该表开始时为空,并在网桥接收帧时添加条目。如果在表中没有找到目标地址条目,则该帧将被发送到网桥的所有其他端口,将帧发送到所有段,但接收该帧的段除外。通过这些发送出去的帧,目标网络上的主机将做出响应,并创建转发数据库条目。在此过程中,同时使用源地址和目标地址:源地址记录在表的条目中,而目标地址可以在表中查到,匹配到正确的段,并将帧发送到该段。
在双端口网桥上,转发信息库可以看作是一个过滤数据库。网桥读取帧的目标地址,并决定转发或过滤。如果网桥确定目标主机在网络上的另一个网段上,则将帧转发到该网段。如果目标地址与源地址属于同一段,网桥将过滤该帧。
透明桥接也可以有两个以上端口。例如,考虑连接到三个主机 A、B 和 C 的网桥。网桥有三个端口。 A 连接到网桥端口 1,B 连接到网桥端口 2,C 连接到网桥端口 3。
- A 向网桥发送一个寻址到 B 的帧。网桥检查帧的源地址,并在其转发表中为主机 A 创建地址和端口号条目。
- 网桥检查帧的目标地址,但在其转发表中没有找到它,因此它将它发送(广播)到所有其他端口:2 和 3。
- 该帧由主机 B 和 C 接收。主机 C 检查目标地址,并忽略该帧,因为它与其地址不匹配。
- 主机 B 识别出目标地址匹配,并生成对 A 的响应。在返回路径上,网桥将 B 的地址和端口号条目添加到其转发表中。
- 网桥在它的转发表中已经有 A 的地址,所以它只将响应转发到端口 1。主机 C 或端口 3 上的任何其他主机不承担响应的负担。
- 现在可以在 A 和 B 之间进行双向通信,而无需进一步向网络泛洪。现在,如果 A 发送一个寻址到 C 的帧,将使用相同的过程,但这次网桥不会为 A 的地址/端口创建新的转发表条目,因为它已经这样做了。
当帧格式及其寻址没有实质性改变时,桥接被称为透明。当桥接两侧的帧寻址方案彼此不兼容时,需要非透明桥接,例如在具有本地寻址的 ARCNET 和使用 IEEE MAC 地址的以太网之间,需要转换。然而,大多数情况下,这种不兼容的网络是通过路由器连接,而不是桥接。
一个网桥连接两个以上网段,通过透明操作,并逐帧决定是否从一个网络转发到另一个网络。通常使用存储和转发技术,以便作为转发的一部分,在源网络上验证帧完整性,并在目标网络上提供 CSMA/CD 延迟。与简单地扩展段的最大跨度的中继器相比,桥接仅需要跨越桥接的前向帧。所以,通过合理地分段,桥接能减少总线网路的包冲突,提高网路的流量。
iptables
iptables 是一个用户空间实用程序,它允许系统管理员配置 Linux 内核防火墙的 IP 包过滤规则,它是一个不同的 Netfilter 模块。
过滤器分布在不同的表中,其中包括如何处理数据包的规则链。目前,不同的内核模块和应用程序用于不同的协议; iptables用于 IPv4,ip6tables用于IPv6,arptables用于ARP,ebtables用于以太网帧。
iptables需要提升权限才能执行,必须以root用户执行,否则无法运行。
VLAN
虚拟 LAN (VLAN) 是在数据链路层(OSI 第 2 层)的计算机网络中划分和隔离的任何广播域。LAN 是局域网的缩写,在这种情况下,虚拟是指通过附加逻辑重新创建和更改的物理对象。
分割物理网路
VLAN 的工作原理是,在网络帧中加标签,并在网络系统中处理这些标签。通过这样的方法,使物理上位于单个网络上的网络传输的外观和功能,看起来就像运行在相互独立的网络上。通过这种方式,尽管 VLAN 连接到同一个物理网络,但应用程序能够在不需要部署多组布线和增加网络设备情况下,保持独立地运行。
联合不同的物理网路
即使主机没有直接连接到同一网络交换机,VLAN也允许网络管理员将主机组合在一起。由于可以通过软件配置 VLAN 成员资格,因此可以大大简化网络设计和部署。在没有 VLAN 的情况下,根据资源对主机进行分组,需要重新定位节点或重新布线数据链路的工作。
VLAN允许必须保持分离的设备,共享物理网络的布线,而且,它们还不会直接相互访问。
VLAN可以根据单个用户或用户组或其角色(例如网络管理员)或基于流量特征(例如防止低优先级流量影响其余的网络运行),将一个商业内部的数据传输分割开来。
许多 Internet 托管服务使用 VLAN,将客户的私有区域彼此分开,允许将每个客户的多个服务器分组到单个网段中,而忽略单个服务器位于数据中心的什么位置。
要将网络细分为VLAN,需要配置网络设备。比较简单的设备可能只对每个物理端口进行分区,在这种情况下,每个 VLAN 都通过专用网络电缆运行。更复杂的设备可以通过 VLAN 标记来标记帧,以便单个中继可用于为多个 VLAN 传输数据。由于 VLAN 共享带宽,因此 VLAN 中继可以使用链路聚合、服务质量优先级或两者来有效地路由数据。
配置VLAN
VLAN 在 OSI 模型的数据链路层运行。管理员经常将 VLAN 配置为直接映射到IP网络或子网,这看起来像是涉及网络层。通常,同一组织内的 VLAN 会被分配不同的,非重叠网络地址范围。这不是 VLAN 的要求。使用相同重叠地址范围的单独 VLAN 没有问题(例如,两个 VLAN 各自使用专用网络 192.168.0.0/16)。但是,如果没有专门的IP重新映射,就不可能在具有重叠地址的两个网络之间路由数据包。因此,如果 VLAN 的目标是分割更大的整个组织网络,则必须在每个单独的 VLAN 中使用非重叠地址。
一个没有配置VLAN的基本交换机禁用VLAN,或永久启用默认VLAN 功能, 这个VLAN 包含设备上的所有端口。默认 VLAN 通常使用 1作为VLAN 标识符。连接到其端口之一的每个设备都可以将数据包发送到任何其他端口。
IEEE 802.1Q
最常用于支持 VLAN 的协议是 IEEE 802.1Q。
根据 IEEE 802.1Q,给定以太网网络上的最大 VLAN 数为 4,094(12 位 VID 字段提供的 4,096 个值减去范围两端的保留值 0 和 4,095)。这不会对此类网络中的 IP 子网数量施加相同的限制,因为单个 VLAN 可以包含多个 IP 子网。 IEEE 802.1ad 通过添加对多个嵌套 VLAN 标记的支持来扩展所支持的 VLAN 数量。 IEEE 802.1aq将 VLAN 限制扩展到 1600 万。这两项改进均已纳入 IEEE 802.1Q 标准。
|