ipvsadm命令详解
ipvsadm是ipvs的管理器,需要yum安装。
程序包:ipvsadm Unit File: ipvsadm.rvice
主程序:/usr/sbin/ipvsadm
规则保存工具:/usr/sbin/ipvsadm-save
规则重载工具:/usr/sbin/ipvsadm-restore
配置文件:/etc/sysconfig/ipvsadm-config
ipvs调度规则文件:/etc/sysconfig/ipvsadm
ipvsadm核心功能:
管理集群服务:增、改、删 增、修改:
删除:
管理集群上的RS:增、改、删 增、改:
删:
清空定义的所有内容:
清空计数器:
查看:
ipvs规则:
ipvs连接:
保存:建议保存至/etc/sysconfig/ipvsadm
重载:
防火墙标记
FWM:FireWall Mark MARK target 可用于给特定的报文打标记 --t-mark value 其中:value 可为0xffff格式,表示十六进制数字 借助于防火墙标记来分类报文,而后基于标记定义集群服务;可将多个不同的应用使用同一个集群服务 进行调度 实现方法: 在Director主机打标记:
在Director主机基于标记定义集群服务:
范例:
范例:
ssion 绑定:对共享同一组RS的多个集群服务,需要统一进行绑定,lvs sh算法无法实现 持久连接( lvs persistence )模板:实现无论使用任何调度算法,在一段时间内(默认360s ),能够 实现将来自同一个地址的请求始终发往同一个RS
ipvsadm -A|E -t|u|f rvice-address [-s scheduler] [-p [timeout]]
持久连接实现方式:
范例:
如何查看ipvsadm表中内容
对ipvsadm 的命令参考,并根据自己使用的经验,进行了一个简单的翻译,希望
对ipvsadm 的使用者有一定的帮助。
为了更好的让大家理解这份命令手册,将手册里面用到的几个术语先简单的介绍
一下:
1,virtual-rvice-address:是指虚拟服务器的ip 地址
2,real-rvice-address:是指真实服务器的ip 地址
3,scheduler:调度方法
命令选项解释:
有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可
以。
-A --add-rvice 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也
就是增加一台新的虚拟服务器。
-E --edit-rvice 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-rvice 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear 清除内核虚拟服务器表中的所有记录。
-R --restore 恢复虚拟服务器规则
-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-rver 在内核虚拟服务器表的一条记录里添加一条新的真实服务器
记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-rver 编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-rver 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list 显示内核虚拟服务器表
-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
--t tcp tcpfin udp 设置连接超时值
--start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说
明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的
VRRP 功能。
--stop-daemon 停止同步守护进程
-h --help 显示帮助信息
其他的选项:
-t --tcp-rvice rvice-address 说明虚拟服务器提供的是tcp 的服务
[vip:port] or [real-rver-ip:port]
-u --udp-rvice rvice-address 说明虚拟服务器提供的是udp 的服务
[vip:port] or [real-rver-ip:port]
-f --fwmark-rvice fwmark 说明是经过iptables 标记过的服务类型。
-s --scheduler scheduler 使用的调度算法,有这样几个选项
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|d|nq,
默认的调度算法是: wlc.
-p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客
户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M --netmask netmask persistent granularity mask
-r --real-rver rver-address 真实的服务器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip 指定LVS 的工作模式为隧道模式
-m --masquerading 指定LVS 的工作模式为NAT 模式
-w --weight weight 真实服务器的权值
--mcast-interface interface 指定组播的同步接口
-c --connection 显示LVS 目前的连接 如:ipvsadm -L -c
--timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon 显示同步守护进程状态
--stats 显示统计信息
--rate 显示速率信息
--sort 对虚拟服务器和真实服务器排序输出
--numeric -n 输出IP 地址和端口的数字形式。
通过rpm包安装的ipvsadm怎么设置
检查是否支持
# modprobe -l|grep ipvs
或#lsmod |grep ip_vs
如果在/lib/modules/2.6.18-128.el5/kernel/net/ipv4/ipvs下有很多ip_vs*这样的文件说明,ipvs模块已经加入。
软件安装
一、RPM安装:
1、根据内核安装相应版本的lvs
下载地址http://www.linuxvirtualrver.org/software
我下载的是ipvsadm-1.24-6.src.rpm
2、修改打包文件
#rpmbuild -bb /usr/src/redhat/SPECS/ipvsadm.spec出现:
error: Legacy syntax is unsupported: copyright等错误信息时,修改ipvsadm.spec,
将其中的Copyright:标签改成Licen:即可。
3、创建链接文件
#ln -s /usr/src/kernels/2.6.18-128.el5-i686 /usr/src/linux
不创建链接会出现:libipvs.h:14:23: net/ip_vs.h: No such file or directory等编译错误。
4、#rpmbuild -bb /usr/src/redhat/SPECS/ipvsadm.spec
二、TAR安装:
#下载软件
#wget http://www.linuxvirtualrver.org/software/kernel-2.6/ipvsadm-1.24.tar.gz
#解压缩
#tar -zxvf ipvsadm-1.24.tar.gz
#cd ipvsadm-1.24
#建立编译时必须的一个软链接
#ln -s /usr/src/kernels/2.6.9-42.EL-i686/ /usr/src/linux
#编译安装
#make && make install
#确认安装成功
#whereis ipvsadm
lvs-dr模式:
配置vip rver
#vi /usr/local/vip.sh
#!/bin/bash
# description: start LVS of DirectorServer
GW=192.168.1.250
# website director vip.
SNS_VIP=192.168.1.244
SNS_RIP1=192.168.1.223
SNS_RIP2=192.168.1.224
. /etc/rc.d/init.d/functions
logger $0 called with $1
ca "$1" in
start)
# t squid vip
#/sbin/ipvsadm --t 30 5 60
/sbin/ifconfig eth0:0 $SNS_VIP broadcast $SNS_VIP netmask 255.255.255.255 up
/sbin/route add -host $SNS_VIP dev eth0:0
/sbin/ipvsadm -C
/sbin/ipvsadm -A -t $SNS_VIP:80 -s wrr -p 1
#/sbin/ipvsadm -A -t $SNS_VIP:80 -s rr
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1:80 -g -w 1
#/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP1 -g
/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2:80 -g -w 1
#/sbin/ipvsadm -a -t $SNS_VIP:80 -r $SNS_RIP2 -g
/sbin/ipvsadm
touch /var/lock/subsys/ipvsadm >/dev/null 2>&1
;;
stop)
/sbin/ipvsadm -C
/sbin/ipvsadm -Z
ifconfig eth0:0 down
ifconfig eth0:1 down
route del $SNS_VIP
#route del $SS_VIP
rm -rf /var/lock/subsys/ipvsadm >/dev/null 2>&1
echo "ipvsadm stoped"
;;
status)
if [ ! -e /var/lock/subsys/ipvsadm ];then
echo "ipvsadm stoped"
exit 1
el
echo "ipvsadm OK"
fi
;;
*)
echo "Usage: $0 {start|stop|status}"
exit 1
esac
exit 0
启动ipvsadm服务
#chmod 777 /usr/local/vip.sh
#/usr/local/vip.sh start
出现:
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP localhost:http wrr persistent 1
-> localhost:http Route 1 0 0
-> localhost:http Route 1 0 0
表明ipvsadm已经启动并正常工作,用#ipvsadm -L也可查询ipvsadm状态。
配置两个realrver,配置相同
#vi /usr/local/realrver.sh
#!/bin/bash
# description: Config realrver lo and apply noarp
SNS_VIP=192.168.1.244
. /etc/rc.d/init.d/functions
ca "$1" in
start)
ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP up
/sbin/route add -host $SNS_VIP dev lo:0
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
echo "RealServer Start OK"
;;
stop)
ifconfig lo:0 down
route del $SNS_VIP >/dev/null 2>&1
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
echo "RealServer Stoped"
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit 0
启动realrver
#chmod 777 /usr/local/realrver.sh
#/usr/local/realrver.sh start
出现:
RealServer Start OK
apache配置:
在两个realrver服务器的apache首页设置分别为:11111111111、2222222222
测试
用浏览器打开:http://192.168.1.244,即可看到1111111111或22222222222
#ipvsadm -lcn
查看负载链接状况,在测试中发现:
设置tcp超时时间#ipvsadm --t 200 200 20
查看tcp超时时间#ipvsadm -L --timeout
Timeout (tcp tcpfin udp): 200 200 20
但实际在轮叫时,timeout时间总为60秒,一直不明白为什么,郁闷。
--------------------------------------------------------------------------
ipvsadm 的命令参考:
1,virtual-rvice-address:是指虚拟服务器的ip 地址
2,real-rvice-address:是指真实服务器的ip 地址
3,scheduler:调度方法
(lna@networksba.com 翻译 ipvsadm v1.21 2004 年4 月)
ipvsadm 的用法和格式如下:
ipvsadm -A|E -t|u|f virutal-rvice-address:port [-s scheduler] [-p
[timeout]] [-M netmask]
ipvsadm -D -t|u|f virtual-rvice-address
ipvsadm -C
ipvsadm -R
ipvsadm -S [-n]
ipvsadm -a|e -t|u|f rvice-address:port -r real-rver-address:port
[-g|i|m] [-w weight]
ipvsadm -d -t|u|f rvice-address -r rver-address
ipvsadm -L|l [options]
ipvsadm -Z [-t|u|f rvice-address]
ipvsadm --t tcp tcpfin udp
ipvsadm --start-daemon state [--mcast-interface interface]
ipvsadm --stop-daemon
ipvsadm -h
命令选项解释:
有两种命令选项格式,长的和短的,具有相同的意思。在实际使用时,两种都可
以。
-A --add-rvice 在内核的虚拟服务器表中添加一条新的虚拟服务器记录。也
就是增加一台新的虚拟服务器。
-E --edit-rvice 编辑内核虚拟服务器表中的一条虚拟服务器记录。
-D --delete-rvice 删除内核虚拟服务器表中的一条虚拟服务器记录。
-C --clear 清除内核虚拟服务器表中的所有记录。
-R --restore 恢复虚拟服务器规则
-S --save 保存虚拟服务器规则,输出为-R 选项可读的格式
-a --add-rver 在内核虚拟服务器表的一条记录里添加一条新的真实服务器
记录。也就是在一个虚拟服务器中增加一台新的真实服务器
-e --edit-rver 编辑一条虚拟服务器记录中的某条真实服务器记录
-d --delete-rver 删除一条虚拟服务器记录中的某条真实服务器记录
-L|-l --list 显示内核虚拟服务器表
-Z --zero 虚拟服务表计数器清零(清空当前的连接数量等)
--t tcp tcpfin udp 设置连接超时值
--start-daemon 启动同步守护进程。他后面可以是master 或backup,用来说
明LVS Router 是master 或是backup。在这个功能上也可以采用keepalived 的
VRRP 功能。
--stop-daemon 停止同步守护进程
-h --help 显示帮助信息
其他的选项:
-t --tcp-rvice rvice-address 说明虚拟服务器提供的是tcp 的服务
[vip:port] or [real-rver-ip:port]
-u --udp-rvice rvice-address 说明虚拟服务器提供的是udp 的服务
[vip:port] or [real-rver-ip:port]
-f --fwmark-rvice fwmark 说明是经过iptables 标记过的服务类型。
-s --scheduler scheduler 使用的调度算法,有这样几个选项
rr|wrr|lc|wlc|lblc|lblcr|dh|sh|d|nq,
默认的调度算法是: wlc.
-p --persistent [timeout] 持久稳固的服务。这个选项的意思是来自同一个客
户的多次请求,将被同一台真实的服务器处理。timeout 的默认值为300 秒。
-M --netmask netmask persistent granularity mask
-r --real-rver rver-address 真实的服务器[Real-Server:port]
-g --gatewaying 指定LVS 的工作模式为直接路由模式(也是LVS 默认的模式)
-i --ipip 指定LVS 的工作模式为隧道模式
-m --masquerading 指定LVS 的工作模式为NAT 模式
-w --weight weight 真实服务器的权值
--mcast-interface interface 指定组播的同步接口
-c --connection 显示LVS 目前的连接 如:ipvsadm -L -c
--timeout 显示tcp tcpfin udp 的timeout 值 如:ipvsadm -L --timeout
--daemon 显示同步守护进程状态
--stats 显示统计信息
--rate 显示速率信息
--sort 对虚拟服务器和真实服务器排序输出
--numeric -n 输出IP 地址和端口的数字形式
安装ipvsadm时出现下面所示错误,请问该如何解决
在ipvsadm安装过程中出现以下错误,导致一直无法安装,在网上搜索了很久也没找到解决方法。
# make
make -C libipvs
make[1]: Entering directory `/var/tmp/ipvsadm-1.24/libipvs'
gcc -Wall -Wunud -Wstrict-prototypes -g -O2 -I/usr/src/linux/include -DHAVE_NET_IP_VS_H -c -o libipvs.c:79: error: dereferencing pointer to incomplete type
。。。
。。。。
libipvs.c:309: error: dereferencing pointer to incomplete type
libipvs.c:315: error: `IP_VS_SO_GET_DAEMON' undeclared (first u in this function)
libipvs.c: At top level:
libipvs.c:33: error: storage size of `ipvs_info' isn't known
libipvs.c:132: error: `IP_VS_SO_SET_DELDEST' undeclared (first u in this function)make[1]: *** [libipvs.o] Error 1make[1]: Leaving directory `/var/tmp/ipvsadm-1.24/libipvs'make: *** [libs] Error 2
最后在官网的wiki上发现原来是无法在/usr/src/linux下找到内核源码,所以无法安装。
[root@localhost /]# cd /usr/src
[root@localhost src]# mkdir linux
[root@localhost src]# rpm -ivh kernel-devel-2.6.18-164.el5.i686.rpm #/usr/src目录下出现kernels目录
[root@localhost src]# cd kernels
[root@localhost kernels]# ls
2.6.18-164.el5-i686这个目录就是源码的位置,下边做一个链接
[root@localhost kernels]# ln -s /usr/src/kernels/2.6.18-164.el5-i686 /usr/src/linux
2. LVS命令使用
ipvsadm核心功能:
集群服务管理:增、删、改
集群服务的RS管理:增、删、改
查看
ipvsadm工具的使用:
ipvsadm安装
命令帮助
管理集群服务:增、改、删
增、修改:
删除:
管理集群上的RS:增、改、删
增、改:
删:
选项:
lvs类型:
-w weight:权重
创建一个LVS集群
查看集群
向集群添加Real Server
删除RS
删除集群
修改集群
保存规则
清空集群中的规则
加载保存的ipvsadm规则
将规则保存到能开启服务自动加载的文件里 /etc/sysconfig/ipvsadm
/etc/sysconfig/ipvsadm默认是不存在的, 因此无法直接启动服务, 因为ipvsadm的rvice文件, 启动时会读取该文件内容
因此, 需要手动创建该文件, 并且, 即使该文件内容为空, 也无所谓, 只不过是启动服务后是没有任何规则的
将先前保存到/data/ipvsadm.rule文件中的规则导入内存中
停止ipvsadm服务, 测试加载的规则会被自动保存到/etc/sysconfig/ipvsadm.rvice文件中
停止服务后, 内存中的规则也会被清空
注意:
再次启动ipvsadm, 验证ipvsadm会从/etc/sysconfig/ipvsadm文件中读取规则
验证服务开机自动启动会加载规则
补充:
加载到内存的ipvsadm的规则会存在 /proc/net/ip_vs 文件里, 以16进制数字显示
清空定义的所有内容
清空计数器
查看
centos7如何保存ipvsadm规则
一、部署环境
keepalived:10.10.10.30(CentOS 7)
lvs1:10.10.10.140(CentOS 6.4)
lvs2:10.10.10.150(CentOS 6.4)
二、在lvs1:10.10.10.140上配置
[root@LVS1 ~]# yum install -y httpd
[root@LVS1 ~]# /etc/init.d/httpd start
[root@LVS1 ~]# cd /var/www/html/
[root@LVS1 html]# echo "ok" > keep.html
[root@LVS1 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:15:B7:DC
TYPE=Ethernet
UUID=93f4695a-8641-4360-9fce-5e3af0e32fc9
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=10.10.10.140
NETMASK=255.255.255.0
GATEWAY=10.10.10.30
[root@LVS1 ~]#/etc/init.d/network restart
[root@LVS1 ~]#/sbin/ifconfig eth0:0 10.10.10.140 broadcast 10.10.10.255 netmask 255.255.255.255 up
三、在lvs2:10.10.10.150上配置
[root@LVS2 ~]# yum install -y httpd
[root@LVS2 ~]# /etc/init.d/httpd start
[root@LVS2 ~]# cd /var/www/html/
[root@LVS2 html]# echo "ok" > keep.html
[root@LVS2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
HWADDR=00:0C:29:0D:33:AC
TYPE=Ethernet
UUID=e04f57dc-ef9d-4563-bfa4-9c8c1e8fc870
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.10.10.150
NETMASK=255.255.255.0
GATEWAY=10.10.10.30
[root@LVS2 ~]#/etc/init.d/network restart
[root@LVS2 ~]#/sbin/ifconfig eth0:0 10.10.10.140 broadcast 10.10.10.255 netmask 255.255.255.255 up
四、在keepalived:10.10.10.30上配置
[root@KEEP ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno33554984
HWADDR=00:0C:29:DC:FE:1B
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
#IPV6INIT=yes
#IPV6_AUTOCONF=yes
#IPV6_DEFROUTE=yes
#IPV6_PEERDNS=yes
#IPV6_PEERROUTES=yes
#IPV6_FAILURE_FATAL=no
NAME=eno33554984
#UUID=56cae8b8-235f-471d-9051-2508ee149e48
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=10.10.10.30
NETMASK=255.255.255.0
[root@KEEP ~]# /etc/init.d/network restart
[root@KEEP ~]# cd /data/keepalived/
[root@KEEP keepalived]# tar zxvf keepalived-1.2.12.tar.gz
[root@KEEP keepalived]# cd keepalived-1.2.12/
[root@KEEP keepalived-1.2.12]# ./configure --prefix=/usr/local/keepalived
[root@KEEP keepalived-1.2.12]# make
[root@KEEP keepalived-1.2.12]# make install
[root@KEEP keepalived-1.2.2]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[root@KEEP keepalived-1.2.2]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[root@KEEP keepalived-1.2.2]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[root@KEEP keepalived-1.2.2]# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin/
[root@KEEP keepalived-1.2.12]# cd
##keepalived健康检查 HTTP_GET
[root@KEEP ~]# /usr/local/keepalived/bin/genhash -s 10.10.10.140 -p 80 -u /keep.html
MD5SUM = eff5bc1ef8ec9d03e640fc4370f5eacd
[root@KEEP ~]# /usr/local/keepalived/bin/genhash -s 10.10.10.150 -p 80 -u /keep.html
MD5SUM = eff5bc1ef8ec9d03e640fc4370f5eacd
[root@KEEP ~]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eno33554984
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
10.10.10.250
}
}
virtual_rver 10.10.10.250 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 50
protocol TCP
real_rver 10.10.10.140 80 {
weight 1
HTTP_GET {
url {
path /keep.html
digest eff5bc1ef8ec9d03e640fc4370f5eacd
}
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
real_rver 10.10.10.150 80 {
weight 1
HTTP_GET {
url {
path /keep.html
digest eff5bc1ef8ec9d03e640fc4370f5eacd
}
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
[root@KEEP ~]# /etc/init.d/keepalived restart
五、在keepalived:10.10.10.30上用ipvsadm 命令测试
[root@KEEP ~]# yum install -y ipvsadm
[root@KEEP ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.250:80 wrr persistent 50
-> 10.10.10.140:80 Route 1 0 0
-> 10.10.10.150:80 Route 1 0 0
在10.10.10.140执行
[root@LVS1 html]# echo "" > keep.html
[root@KEEP ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.250:80 wrr persistent 50
-> 10.10.10.150:80 Route 1 0 0
再在10.10.10.140执行
[root@LVS1 html]# echo "ok" > keep.html
[root@KEEP ~]# ipvsadm -Ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.10.10.250:80 wrr persistent 50
-> 10.10.10.140:80 Route 1 0 0
-> 10.10.10.150:80 Route 1 0 0