【理解云容器网络】3-基础篇-路由介绍

举报
可以交个朋友 发表于 2024/02/18 09:14:53 2024/02/18
【摘要】 介绍路由与路由策略

路由

路由是指设备从一个接口上收到数据,根据数据包的目的地址进行定向转发到另一个接口的过程。
路由表是一个网络设备(如路由器、交换机、主机等)中存储的表格,包含了该设备可到达其他网络的信息和如何到达这些网络的路径。
我们可以在linux系统上执行route -n查看路由表:
image.png

  • 第一条记录表示:如果目的地址在路由表中未匹配到其他记录则从eth0网卡出去
  • 第二条记录表示:目的地址属于10.247.0.0/8网段的数据包统一从veth1网卡出去
    注意:如果有多条记录与目的地址匹配,则掩码越精确优先级越高

路由策略

传统路由只能根据目的地址进行转发,为了使路由规则更加灵活,linux内核增加了路由策略,它使网络管理员不仅能够根据目的地址而且能够根据报文大小,应用或IP源地址等属性来选择转发路径。
路由策略由策略和多个路由表组成,数据包先根据策略选择一个路由表,然后根据路由表的记录进行转发
可以使用命令ip rule查看路由策略:
image.png

  • 策略优先级列:冒号之前的数字,表示策略被匹配的优先顺序,数字越小,越早被匹配,范围是0~32767。默认0、32766、32767三个优先级别已被占用。如果在添加规则时没有定义优先级别,那么默认的优先级别会从32766开始递减,可以通过prio ID参数在设置路由表时添加优先级。
  • 匹配规则列:
    from,这里显示的是匹配规则,当前表示的是从哪里来的数据包
    to – 目的地址(这里是选择规则时使用,查找路由表时也使用)
    tos – IP包头的TOS(type of sevice)域
    dev – 物理接口
    fwmark – 防火墙参数
  • 路由表名:loacl/main/default, 这些都是路由表名称,表示数据包要根据那个路由表送出去。local表包含本机路由及广播信息,main表就是我们route -n看到的内容(main表默认路由策略优先级为32766),default表默认为空。

ip rule命令使用示例

  • 根据源ip不同指定相应的路由表100/200,并通过pref参数指定优先级,table 后只能指定数字作为表名id

    ip rule add from 192.168.0.0/24 table 100 pref 1000
    ip rule add from 192.168.1.0/24 table 200 pref 1001
    
  • 使用ip rule命令查看新增路由策略
    image.png

  • 通过修改rt_tables文件修改表id,如果路由表id记不住,可以修改文件/etc/iproute2/rt_tables进行表名和表id的映射
    image.png
    再次查看,查询结果显示表名
    image.png

  • 为路由表100/200添加默认路由

    ip route add default via 192.168.0.1 dev eth0 table table100
    ip route add default via 192.168.1.1 dev eth1 table table200
    
  • 查看路由表信息

    ~]# ip route show table table100
    default via 192.168.0.1 dev eth0
    ~]# ip route show table table200
    default via 192.168.1.1 dev eth1
    

路由(route -n)和路由策略(ip rule)关系

route -n 查看的是默认main路由表内容,对应的路由策略优先级为32766,属于低优先级路由策略,可以通过ip rule插入指定优先级的路由策略。

CCE Turbo集群路由策略分析

下图为Turbo集群容器访问ClusterIP场景的走线图
image.png

  1. 容器根据路由表让数据包从veth1网卡出去,直接到达节点上虚拟设备对的另一端veth_1ce586bb
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 eth0
    10.247.0.0      169.254.1.1     255.255.0.0     UG    0      0        0 veth1
    100.64.0.0      169.254.1.1     255.192.0.0     UG    0      0        0 veth1
    
  2. 数据包到达节点网络命名空间,匹配防火墙OUTPUT链规则,首先将数据包打标机,然后将目的地址转换成后端实例IP
    -A YANGTSE-ENI-MARK -i veth_e01d21eb -j CONNMARK --set-xmark 0x3f20000/0xffff0000
    -A YANGTSE-ENI-MARK -i veth_a3f98cc5 -j CONNMARK --set-xmark 0x3f30000/0xffff0000
    -A YANGTSE-ENI-MARK -i veth_8824be4c -j CONNMARK --set-xmark 0x42a0000/0xffff0000
    -A YANGTSE-ENI-MARK -i veth_1ce586bb -j CONNMARK --set-xmark 0x4360000/0xffff0000
    
  3. 从OUTPUT链出来,匹配路由策略,根据默认路由将数据包返回给veth_1ce586bb
    ~]# ip rule show
    0:      from all lookup local
    #匹配这条策略,从上一步分析知道OUTPUT链规则为报文打上标签0x4360000/0xffff0000
    10000:  from all fwmark 0x4360000/0xffff0000 lookup 1078
    10000:  from 169.254.1.1 to 192.168.2.86 lookup 1078
    32766:  from all lookup main
    32767:  from all lookup default
    
    ~]# ip route show table 1078
    default via 192.168.2.86 dev veth_1ce586bb onlink 
    100.64.0.0/10 via 192.168.1.1 dev eth0 onlink 
    198.19.32.0/19 via 192.168.1.1 dev eth0 onlink 
    
  4. 数据包回到容器内,由于数据包目的地址变为192.168.2.86,此时走默认路由经由eth0网卡出去直达节点上的ENI弹性网卡eth1(不会经过节点网络命名空间)
    Kernel IP routing table
    Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
    0.0.0.0         192.168.2.1     0.0.0.0         UG    0      0        0 eth0
    10.247.0.0      169.254.1.1     255.255.0.0     UG    0      0        0 veth1
    100.64.0.0      169.254.1.1     255.192.0.0     UG    0      0        0 veth1
    
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。